var LR=Object.defineProperty;var DR=(t,e,n)=>e in t?LR(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Ue=(t,e,n)=>DR(t,typeof e!="symbol"?e+"":e,n);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const l of s)if(l.type==="childList")for(const c of l.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&r(c)}).observe(document,{childList:!0,subtree:!0});function n(s){const l={};return s.integrity&&(l.integrity=s.integrity),s.referrerPolicy&&(l.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?l.credentials="include":s.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(s){if(s.ep)return;s.ep=!0;const l=n(s);fetch(s.href,l)}})();try{}catch(t){console.error("[wxt] Failed to initialize plugins",t)}function cs(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function RR(t){if(Object.prototype.hasOwnProperty.call(t,"__esModule"))return t;var e=t.default;if(typeof e=="function"){var n=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};n.prototype=e.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(t).forEach(function(r){var s=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(n,r,s.get?s:{enumerable:!0,get:function(){return t[r]}})}),n}var Ep={exports:{}},Ql={};/**
 * @license React
 * react-jsx-runtime.production.js
 *
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var mE;function UR(){if(mE)return Ql;mE=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(r,s,l){var c=null;if(l!==void 0&&(c=""+l),s.key!==void 0&&(c=""+s.key),"key"in s){l={};for(var m in s)m!=="key"&&(l[m]=s[m])}else l=s;return s=l.ref,{$$typeof:t,type:r,key:c,ref:s!==void 0?s:null,props:l}}return Ql.Fragment=e,Ql.jsx=n,Ql.jsxs=n,Ql}var gE;function MR(){return gE||(gE=1,Ep.exports=UR()),Ep.exports}var d=MR(),bp={exports:{}},Kl={},vp={exports:{}},wp={};/**
 * @license React
 * scheduler.production.js
 *
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var pE;function _R(){return pE||(pE=1,function(t){function e(X,te){var ce=X.length;X.push(te);e:for(;0<ce;){var oe=ce-1>>>1,F=X[oe];if(0<s(F,te))X[oe]=te,X[ce]=F,ce=oe;else break e}}function n(X){return X.length===0?null:X[0]}function r(X){if(X.length===0)return null;var te=X[0],ce=X.pop();if(ce!==te){X[0]=ce;e:for(var oe=0,F=X.length,J=F>>>1;oe<J;){var W=2*(oe+1)-1,ie=X[W],we=W+1,le=X[we];if(0>s(ie,ce))we<F&&0>s(le,ie)?(X[oe]=le,X[we]=ce,oe=we):(X[oe]=ie,X[W]=ce,oe=W);else if(we<F&&0>s(le,ce))X[oe]=le,X[we]=ce,oe=we;else break e}}return te}function s(X,te){var ce=X.sortIndex-te.sortIndex;return ce!==0?ce:X.id-te.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var l=performance;t.unstable_now=function(){return l.now()}}else{var c=Date,m=c.now();t.unstable_now=function(){return c.now()-m}}var p=[],g=[],A=1,f=null,v=3,w=!1,S=!1,T=!1,k=!1,L=typeof setTimeout=="function"?setTimeout:null,R=typeof clearTimeout=="function"?clearTimeout:null,x=typeof setImmediate<"u"?setImmediate:null;function O(X){for(var te=n(g);te!==null;){if(te.callback===null)r(g);else if(te.startTime<=X)r(g),te.sortIndex=te.expirationTime,e(p,te);else break;te=n(g)}}function _(X){if(T=!1,O(X),!S)if(n(p)!==null)S=!0,j||(j=!0,ae());else{var te=n(g);te!==null&&fe(_,te.startTime-X)}}var j=!1,G=-1,P=5,B=-1;function z(){return k?!0:!(t.unstable_now()-B<P)}function Q(){if(k=!1,j){var X=t.unstable_now();B=X;var te=!0;try{e:{S=!1,T&&(T=!1,R(G),G=-1),w=!0;var ce=v;try{t:{for(O(X),f=n(p);f!==null&&!(f.expirationTime>X&&z());){var oe=f.callback;if(typeof oe=="function"){f.callback=null,v=f.priorityLevel;var F=oe(f.expirationTime<=X);if(X=t.unstable_now(),typeof F=="function"){f.callback=F,O(X),te=!0;break t}f===n(p)&&r(p),O(X)}else r(p);f=n(p)}if(f!==null)te=!0;else{var J=n(g);J!==null&&fe(_,J.startTime-X),te=!1}}break e}finally{f=null,v=ce,w=!1}te=void 0}}finally{te?ae():j=!1}}}var ae;if(typeof x=="function")ae=function(){x(Q)};else if(typeof MessageChannel<"u"){var Y=new MessageChannel,ne=Y.port2;Y.port1.onmessage=Q,ae=function(){ne.postMessage(null)}}else ae=function(){L(Q,0)};function fe(X,te){G=L(function(){X(t.unstable_now())},te)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(X){X.callback=null},t.unstable_forceFrameRate=function(X){0>X||125<X?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):P=0<X?Math.floor(1e3/X):5},t.unstable_getCurrentPriorityLevel=function(){return v},t.unstable_next=function(X){switch(v){case 1:case 2:case 3:var te=3;break;default:te=v}var ce=v;v=te;try{return X()}finally{v=ce}},t.unstable_requestPaint=function(){k=!0},t.unstable_runWithPriority=function(X,te){switch(X){case 1:case 2:case 3:case 4:case 5:break;default:X=3}var ce=v;v=X;try{return te()}finally{v=ce}},t.unstable_scheduleCallback=function(X,te,ce){var oe=t.unstable_now();switch(typeof ce=="object"&&ce!==null?(ce=ce.delay,ce=typeof ce=="number"&&0<ce?oe+ce:oe):ce=oe,X){case 1:var F=-1;break;case 2:F=250;break;case 5:F=1073741823;break;case 4:F=1e4;break;default:F=5e3}return F=ce+F,X={id:A++,callback:te,priorityLevel:X,startTime:ce,expirationTime:F,sortIndex:-1},ce>oe?(X.sortIndex=ce,e(g,X),n(p)===null&&X===n(g)&&(T?(R(G),G=-1):T=!0,fe(_,ce-oe))):(X.sortIndex=F,e(p,X),S||w||(S=!0,j||(j=!0,ae()))),X},t.unstable_shouldYield=z,t.unstable_wrapCallback=function(X){var te=v;return function(){var ce=v;v=te;try{return X.apply(this,arguments)}finally{v=ce}}}}(wp)),wp}var hE;function FR(){return hE||(hE=1,vp.exports=_R()),vp.exports}var Ip={exports:{}},Nt={};/**
 * @license React
 * react.production.js
 *
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var fE;function BR(){if(fE)return Nt;fE=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),c=Symbol.for("react.context"),m=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),g=Symbol.for("react.memo"),A=Symbol.for("react.lazy"),f=Symbol.iterator;function v(F){return F===null||typeof F!="object"?null:(F=f&&F[f]||F["@@iterator"],typeof F=="function"?F:null)}var w={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},S=Object.assign,T={};function k(F,J,W){this.props=F,this.context=J,this.refs=T,this.updater=W||w}k.prototype.isReactComponent={},k.prototype.setState=function(F,J){if(typeof F!="object"&&typeof F!="function"&&F!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,F,J,"setState")},k.prototype.forceUpdate=function(F){this.updater.enqueueForceUpdate(this,F,"forceUpdate")};function L(){}L.prototype=k.prototype;function R(F,J,W){this.props=F,this.context=J,this.refs=T,this.updater=W||w}var x=R.prototype=new L;x.constructor=R,S(x,k.prototype),x.isPureReactComponent=!0;var O=Array.isArray,_={H:null,A:null,T:null,S:null,V:null},j=Object.prototype.hasOwnProperty;function G(F,J,W,ie,we,le){return W=le.ref,{$$typeof:t,type:F,key:J,ref:W!==void 0?W:null,props:le}}function P(F,J){return G(F.type,J,void 0,void 0,void 0,F.props)}function B(F){return typeof F=="object"&&F!==null&&F.$$typeof===t}function z(F){var J={"=":"=0",":":"=2"};return"$"+F.replace(/[=:]/g,function(W){return J[W]})}var Q=/\/+/g;function ae(F,J){return typeof F=="object"&&F!==null&&F.key!=null?z(""+F.key):J.toString(36)}function Y(){}function ne(F){switch(F.status){case"fulfilled":return F.value;case"rejected":throw F.reason;default:switch(typeof F.status=="string"?F.then(Y,Y):(F.status="pending",F.then(function(J){F.status==="pending"&&(F.status="fulfilled",F.value=J)},function(J){F.status==="pending"&&(F.status="rejected",F.reason=J)})),F.status){case"fulfilled":return F.value;case"rejected":throw F.reason}}throw F}function fe(F,J,W,ie,we){var le=typeof F;(le==="undefined"||le==="boolean")&&(F=null);var ve=!1;if(F===null)ve=!0;else switch(le){case"bigint":case"string":case"number":ve=!0;break;case"object":switch(F.$$typeof){case t:case e:ve=!0;break;case A:return ve=F._init,fe(ve(F._payload),J,W,ie,we)}}if(ve)return we=we(F),ve=ie===""?"."+ae(F,0):ie,O(we)?(W="",ve!=null&&(W=ve.replace(Q,"$&/")+"/"),fe(we,J,W,"",function(Ke){return Ke})):we!=null&&(B(we)&&(we=P(we,W+(we.key==null||F&&F.key===we.key?"":(""+we.key).replace(Q,"$&/")+"/")+ve)),J.push(we)),1;ve=0;var Pe=ie===""?".":ie+":";if(O(F))for(var _e=0;_e<F.length;_e++)ie=F[_e],le=Pe+ae(ie,_e),ve+=fe(ie,J,W,le,we);else if(_e=v(F),typeof _e=="function")for(F=_e.call(F),_e=0;!(ie=F.next()).done;)ie=ie.value,le=Pe+ae(ie,_e++),ve+=fe(ie,J,W,le,we);else if(le==="object"){if(typeof F.then=="function")return fe(ne(F),J,W,ie,we);throw J=String(F),Error("Objects are not valid as a React child (found: "+(J==="[object Object]"?"object with keys {"+Object.keys(F).join(", ")+"}":J)+"). If you meant to render a collection of children, use an array instead.")}return ve}function X(F,J,W){if(F==null)return F;var ie=[],we=0;return fe(F,ie,"","",function(le){return J.call(W,le,we++)}),ie}function te(F){if(F._status===-1){var J=F._result;J=J(),J.then(function(W){(F._status===0||F._status===-1)&&(F._status=1,F._result=W)},function(W){(F._status===0||F._status===-1)&&(F._status=2,F._result=W)}),F._status===-1&&(F._status=0,F._result=J)}if(F._status===1)return F._result.default;throw F._result}var ce=typeof reportError=="function"?reportError:function(F){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var J=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof F=="object"&&F!==null&&typeof F.message=="string"?String(F.message):String(F),error:F});if(!window.dispatchEvent(J))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",F);return}console.error(F)};function oe(){}return Nt.Children={map:X,forEach:function(F,J,W){X(F,function(){J.apply(this,arguments)},W)},count:function(F){var J=0;return X(F,function(){J++}),J},toArray:function(F){return X(F,function(J){return J})||[]},only:function(F){if(!B(F))throw Error("React.Children.only expected to receive a single React element child.");return F}},Nt.Component=k,Nt.Fragment=n,Nt.Profiler=s,Nt.PureComponent=R,Nt.StrictMode=r,Nt.Suspense=p,Nt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=_,Nt.__COMPILER_RUNTIME={__proto__:null,c:function(F){return _.H.useMemoCache(F)}},Nt.cache=function(F){return function(){return F.apply(null,arguments)}},Nt.cloneElement=function(F,J,W){if(F==null)throw Error("The argument must be a React element, but you passed "+F+".");var ie=S({},F.props),we=F.key,le=void 0;if(J!=null)for(ve in J.ref!==void 0&&(le=void 0),J.key!==void 0&&(we=""+J.key),J)!j.call(J,ve)||ve==="key"||ve==="__self"||ve==="__source"||ve==="ref"&&J.ref===void 0||(ie[ve]=J[ve]);var ve=arguments.length-2;if(ve===1)ie.children=W;else if(1<ve){for(var Pe=Array(ve),_e=0;_e<ve;_e++)Pe[_e]=arguments[_e+2];ie.children=Pe}return G(F.type,we,void 0,void 0,le,ie)},Nt.createContext=function(F){return F={$$typeof:c,_currentValue:F,_currentValue2:F,_threadCount:0,Provider:null,Consumer:null},F.Provider=F,F.Consumer={$$typeof:l,_context:F},F},Nt.createElement=function(F,J,W){var ie,we={},le=null;if(J!=null)for(ie in J.key!==void 0&&(le=""+J.key),J)j.call(J,ie)&&ie!=="key"&&ie!=="__self"&&ie!=="__source"&&(we[ie]=J[ie]);var ve=arguments.length-2;if(ve===1)we.children=W;else if(1<ve){for(var Pe=Array(ve),_e=0;_e<ve;_e++)Pe[_e]=arguments[_e+2];we.children=Pe}if(F&&F.defaultProps)for(ie in ve=F.defaultProps,ve)we[ie]===void 0&&(we[ie]=ve[ie]);return G(F,le,void 0,void 0,null,we)},Nt.createRef=function(){return{current:null}},Nt.forwardRef=function(F){return{$$typeof:m,render:F}},Nt.isValidElement=B,Nt.lazy=function(F){return{$$typeof:A,_payload:{_status:-1,_result:F},_init:te}},Nt.memo=function(F,J){return{$$typeof:g,type:F,compare:J===void 0?null:J}},Nt.startTransition=function(F){var J=_.T,W={};_.T=W;try{var ie=F(),we=_.S;we!==null&&we(W,ie),typeof ie=="object"&&ie!==null&&typeof ie.then=="function"&&ie.then(oe,ce)}catch(le){ce(le)}finally{_.T=J}},Nt.unstable_useCacheRefresh=function(){return _.H.useCacheRefresh()},Nt.use=function(F){return _.H.use(F)},Nt.useActionState=function(F,J,W){return _.H.useActionState(F,J,W)},Nt.useCallback=function(F,J){return _.H.useCallback(F,J)},Nt.useContext=function(F){return _.H.useContext(F)},Nt.useDebugValue=function(){},Nt.useDeferredValue=function(F,J){return _.H.useDeferredValue(F,J)},Nt.useEffect=function(F,J,W){var ie=_.H;if(typeof W=="function")throw Error("useEffect CRUD overload is not enabled in this build of React.");return ie.useEffect(F,J)},Nt.useId=function(){return _.H.useId()},Nt.useImperativeHandle=function(F,J,W){return _.H.useImperativeHandle(F,J,W)},Nt.useInsertionEffect=function(F,J){return _.H.useInsertionEffect(F,J)},Nt.useLayoutEffect=function(F,J){return _.H.useLayoutEffect(F,J)},Nt.useMemo=function(F,J){return _.H.useMemo(F,J)},Nt.useOptimistic=function(F,J){return _.H.useOptimistic(F,J)},Nt.useReducer=function(F,J,W){return _.H.useReducer(F,J,W)},Nt.useRef=function(F){return _.H.useRef(F)},Nt.useState=function(F){return _.H.useState(F)},Nt.useSyncExternalStore=function(F,J,W){return _.H.useSyncExternalStore(F,J,W)},Nt.useTransition=function(){return _.H.useTransition()},Nt.version="19.1.0",Nt}var AE;function cf(){return AE||(AE=1,Ip.exports=BR()),Ip.exports}var Cp={exports:{}},An={};/**
 * @license React
 * react-dom.production.js
 *
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var yE;function PR(){if(yE)return An;yE=1;var t=cf();function e(p){var g="https://react.dev/errors/"+p;if(1<arguments.length){g+="?args[]="+encodeURIComponent(arguments[1]);for(var A=2;A<arguments.length;A++)g+="&args[]="+encodeURIComponent(arguments[A])}return"Minified React error #"+p+"; visit "+g+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var r={d:{f:n,r:function(){throw Error(e(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},s=Symbol.for("react.portal");function l(p,g,A){var f=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:s,key:f==null?null:""+f,children:p,containerInfo:g,implementation:A}}var c=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function m(p,g){if(p==="font")return"";if(typeof g=="string")return g==="use-credentials"?g:""}return An.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=r,An.createPortal=function(p,g){var A=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!g||g.nodeType!==1&&g.nodeType!==9&&g.nodeType!==11)throw Error(e(299));return l(p,g,null,A)},An.flushSync=function(p){var g=c.T,A=r.p;try{if(c.T=null,r.p=2,p)return p()}finally{c.T=g,r.p=A,r.d.f()}},An.preconnect=function(p,g){typeof p=="string"&&(g?(g=g.crossOrigin,g=typeof g=="string"?g==="use-credentials"?g:"":void 0):g=null,r.d.C(p,g))},An.prefetchDNS=function(p){typeof p=="string"&&r.d.D(p)},An.preinit=function(p,g){if(typeof p=="string"&&g&&typeof g.as=="string"){var A=g.as,f=m(A,g.crossOrigin),v=typeof g.integrity=="string"?g.integrity:void 0,w=typeof g.fetchPriority=="string"?g.fetchPriority:void 0;A==="style"?r.d.S(p,typeof g.precedence=="string"?g.precedence:void 0,{crossOrigin:f,integrity:v,fetchPriority:w}):A==="script"&&r.d.X(p,{crossOrigin:f,integrity:v,fetchPriority:w,nonce:typeof g.nonce=="string"?g.nonce:void 0})}},An.preinitModule=function(p,g){if(typeof p=="string")if(typeof g=="object"&&g!==null){if(g.as==null||g.as==="script"){var A=m(g.as,g.crossOrigin);r.d.M(p,{crossOrigin:A,integrity:typeof g.integrity=="string"?g.integrity:void 0,nonce:typeof g.nonce=="string"?g.nonce:void 0})}}else g==null&&r.d.M(p)},An.preload=function(p,g){if(typeof p=="string"&&typeof g=="object"&&g!==null&&typeof g.as=="string"){var A=g.as,f=m(A,g.crossOrigin);r.d.L(p,A,{crossOrigin:f,integrity:typeof g.integrity=="string"?g.integrity:void 0,nonce:typeof g.nonce=="string"?g.nonce:void 0,type:typeof g.type=="string"?g.type:void 0,fetchPriority:typeof g.fetchPriority=="string"?g.fetchPriority:void 0,referrerPolicy:typeof g.referrerPolicy=="string"?g.referrerPolicy:void 0,imageSrcSet:typeof g.imageSrcSet=="string"?g.imageSrcSet:void 0,imageSizes:typeof g.imageSizes=="string"?g.imageSizes:void 0,media:typeof g.media=="string"?g.media:void 0})}},An.preloadModule=function(p,g){if(typeof p=="string")if(g){var A=m(g.as,g.crossOrigin);r.d.m(p,{as:typeof g.as=="string"&&g.as!=="script"?g.as:void 0,crossOrigin:A,integrity:typeof g.integrity=="string"?g.integrity:void 0})}else r.d.m(p)},An.requestFormReset=function(p){r.d.r(p)},An.unstable_batchedUpdates=function(p,g){return p(g)},An.useFormState=function(p,g,A){return c.H.useFormState(p,g,A)},An.useFormStatus=function(){return c.H.useHostTransitionStatus()},An.version="19.1.0",An}var EE;function Xv(){if(EE)return Cp.exports;EE=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),Cp.exports=PR(),Cp.exports}/**
 * @license React
 * react-dom-client.production.js
 *
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var bE;function OR(){if(bE)return Kl;bE=1;var t=FR(),e=cf(),n=Xv();function r(a){var i="https://react.dev/errors/"+a;if(1<arguments.length){i+="?args[]="+encodeURIComponent(arguments[1]);for(var o=2;o<arguments.length;o++)i+="&args[]="+encodeURIComponent(arguments[o])}return"Minified React error #"+a+"; visit "+i+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function s(a){return!(!a||a.nodeType!==1&&a.nodeType!==9&&a.nodeType!==11)}function l(a){var i=a,o=a;if(a.alternate)for(;i.return;)i=i.return;else{a=i;do i=a,(i.flags&4098)!==0&&(o=i.return),a=i.return;while(a)}return i.tag===3?o:null}function c(a){if(a.tag===13){var i=a.memoizedState;if(i===null&&(a=a.alternate,a!==null&&(i=a.memoizedState)),i!==null)return i.dehydrated}return null}function m(a){if(l(a)!==a)throw Error(r(188))}function p(a){var i=a.alternate;if(!i){if(i=l(a),i===null)throw Error(r(188));return i!==a?null:a}for(var o=a,u=i;;){var h=o.return;if(h===null)break;var E=h.alternate;if(E===null){if(u=h.return,u!==null){o=u;continue}break}if(h.child===E.child){for(E=h.child;E;){if(E===o)return m(h),a;if(E===u)return m(h),i;E=E.sibling}throw Error(r(188))}if(o.return!==u.return)o=h,u=E;else{for(var D=!1,H=h.child;H;){if(H===o){D=!0,o=h,u=E;break}if(H===u){D=!0,u=h,o=E;break}H=H.sibling}if(!D){for(H=E.child;H;){if(H===o){D=!0,o=E,u=h;break}if(H===u){D=!0,u=E,o=h;break}H=H.sibling}if(!D)throw Error(r(189))}}if(o.alternate!==u)throw Error(r(190))}if(o.tag!==3)throw Error(r(188));return o.stateNode.current===o?a:i}function g(a){var i=a.tag;if(i===5||i===26||i===27||i===6)return a;for(a=a.child;a!==null;){if(i=g(a),i!==null)return i;a=a.sibling}return null}var A=Object.assign,f=Symbol.for("react.element"),v=Symbol.for("react.transitional.element"),w=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),T=Symbol.for("react.strict_mode"),k=Symbol.for("react.profiler"),L=Symbol.for("react.provider"),R=Symbol.for("react.consumer"),x=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),_=Symbol.for("react.suspense"),j=Symbol.for("react.suspense_list"),G=Symbol.for("react.memo"),P=Symbol.for("react.lazy"),B=Symbol.for("react.activity"),z=Symbol.for("react.memo_cache_sentinel"),Q=Symbol.iterator;function ae(a){return a===null||typeof a!="object"?null:(a=Q&&a[Q]||a["@@iterator"],typeof a=="function"?a:null)}var Y=Symbol.for("react.client.reference");function ne(a){if(a==null)return null;if(typeof a=="function")return a.$$typeof===Y?null:a.displayName||a.name||null;if(typeof a=="string")return a;switch(a){case S:return"Fragment";case k:return"Profiler";case T:return"StrictMode";case _:return"Suspense";case j:return"SuspenseList";case B:return"Activity"}if(typeof a=="object")switch(a.$$typeof){case w:return"Portal";case x:return(a.displayName||"Context")+".Provider";case R:return(a._context.displayName||"Context")+".Consumer";case O:var i=a.render;return a=a.displayName,a||(a=i.displayName||i.name||"",a=a!==""?"ForwardRef("+a+")":"ForwardRef"),a;case G:return i=a.displayName||null,i!==null?i:ne(a.type)||"Memo";case P:i=a._payload,a=a._init;try{return ne(a(i))}catch{}}return null}var fe=Array.isArray,X=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,te=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ce={pending:!1,data:null,method:null,action:null},oe=[],F=-1;function J(a){return{current:a}}function W(a){0>F||(a.current=oe[F],oe[F]=null,F--)}function ie(a,i){F++,oe[F]=a.current,a.current=i}var we=J(null),le=J(null),ve=J(null),Pe=J(null);function _e(a,i){switch(ie(ve,i),ie(le,a),ie(we,null),i.nodeType){case 9:case 11:a=(a=i.documentElement)&&(a=a.namespaceURI)?j0(a):0;break;default:if(a=i.tagName,i=i.namespaceURI)i=j0(i),a=H0(i,a);else switch(a){case"svg":a=1;break;case"math":a=2;break;default:a=0}}W(we),ie(we,a)}function Ke(){W(we),W(le),W(ve)}function Ye(a){a.memoizedState!==null&&ie(Pe,a);var i=we.current,o=H0(i,a.type);i!==o&&(ie(le,a),ie(we,o))}function Ot(a){le.current===a&&(W(we),W(le)),Pe.current===a&&(W(Pe),Ol._currentValue=ce)}var Ve=Object.prototype.hasOwnProperty,Me=t.unstable_scheduleCallback,Qe=t.unstable_cancelCallback,ht=t.unstable_shouldYield,Ie=t.unstable_requestPaint,Be=t.unstable_now,Ge=t.unstable_getCurrentPriorityLevel,qe=t.unstable_ImmediatePriority,nt=t.unstable_UserBlockingPriority,We=t.unstable_NormalPriority,Ee=t.unstable_LowPriority,je=t.unstable_IdlePriority,Je=t.log,ut=t.unstable_setDisableYieldValue,Dt=null,M=null;function C(a){if(typeof Je=="function"&&ut(a),M&&typeof M.setStrictMode=="function")try{M.setStrictMode(Dt,a)}catch{}}var N=Math.clz32?Math.clz32:pe,K=Math.log,ee=Math.LN2;function pe(a){return a>>>=0,a===0?32:31-(K(a)/ee|0)|0}var Se=256,Oe=4194304;function lt(a){var i=a&42;if(i!==0)return i;switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return a&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return a}}function wt(a,i,o){var u=a.pendingLanes;if(u===0)return 0;var h=0,E=a.suspendedLanes,D=a.pingedLanes;a=a.warmLanes;var H=u&134217727;return H!==0?(u=H&~E,u!==0?h=lt(u):(D&=H,D!==0?h=lt(D):o||(o=H&~a,o!==0&&(h=lt(o))))):(H=u&~E,H!==0?h=lt(H):D!==0?h=lt(D):o||(o=u&~a,o!==0&&(h=lt(o)))),h===0?0:i!==0&&i!==h&&(i&E)===0&&(E=h&-h,o=i&-i,E>=o||E===32&&(o&4194048)!==0)?i:h}function kt(a,i){return(a.pendingLanes&~(a.suspendedLanes&~a.pingedLanes)&i)===0}function ft(a,i){switch(a){case 1:case 2:case 4:case 8:case 64:return i+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return i+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function bi(){var a=Se;return Se<<=1,(Se&4194048)===0&&(Se=256),a}function La(){var a=Oe;return Oe<<=1,(Oe&62914560)===0&&(Oe=4194304),a}function gn(a){for(var i=[],o=0;31>o;o++)i.push(a);return i}function jt(a,i){a.pendingLanes|=i,i!==268435456&&(a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0)}function na(a,i,o,u,h,E){var D=a.pendingLanes;a.pendingLanes=o,a.suspendedLanes=0,a.pingedLanes=0,a.warmLanes=0,a.expiredLanes&=o,a.entangledLanes&=o,a.errorRecoveryDisabledLanes&=o,a.shellSuspendCounter=0;var H=a.entanglements,$=a.expirationTimes,he=a.hiddenUpdates;for(o=D&~o;0<o;){var Ne=31-N(o),xe=1<<Ne;H[Ne]=0,$[Ne]=-1;var ye=he[Ne];if(ye!==null)for(he[Ne]=null,Ne=0;Ne<ye.length;Ne++){var be=ye[Ne];be!==null&&(be.lane&=-536870913)}o&=~xe}u!==0&&De(a,u,0),E!==0&&h===0&&a.tag!==0&&(a.suspendedLanes|=E&~(D&~i))}function De(a,i,o){a.pendingLanes|=i,a.suspendedLanes&=~i;var u=31-N(i);a.entangledLanes|=i,a.entanglements[u]=a.entanglements[u]|1073741824|o&4194090}function Oa(a,i){var o=a.entangledLanes|=i;for(a=a.entanglements;o;){var u=31-N(o),h=1<<u;h&i|a[u]&i&&(a[u]|=i),o&=~h}}function xt(a){switch(a){case 2:a=1;break;case 8:a=4;break;case 32:a=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:a=128;break;case 268435456:a=134217728;break;default:a=0}return a}function Rt(a){return a&=-a,2<a?8<a?(a&134217727)!==0?32:268435456:8:2}function Da(){var a=te.p;return a!==0?a:(a=window.event,a===void 0?32:sE(a.type))}function sn(a,i){var o=te.p;try{return te.p=a,i()}finally{te.p=o}}var Ht=Math.random().toString(36).slice(2),Mt="__reactFiber$"+Ht,Kt="__reactProps$"+Ht,Vt="__reactContainer$"+Ht,da="__reactEvents$"+Ht,pa="__reactListeners$"+Ht,Xa="__reactHandles$"+Ht,pn="__reactResources$"+Ht,Ta="__reactMarker$"+Ht;function ha(a){delete a[Mt],delete a[Kt],delete a[da],delete a[pa],delete a[Xa]}function Ra(a){var i=a[Mt];if(i)return i;for(var o=a.parentNode;o;){if(i=o[Vt]||o[Mt]){if(o=i.alternate,i.child!==null||o!==null&&o.child!==null)for(a=K0(a);a!==null;){if(o=a[Mt])return o;a=K0(a)}return i}a=o,o=a.parentNode}return null}function jn(a){if(a=a[Mt]||a[Vt]){var i=a.tag;if(i===5||i===6||i===13||i===26||i===27||i===3)return a}return null}function de(a){var i=a.tag;if(i===5||i===26||i===27||i===6)return a.stateNode;throw Error(r(33))}function He(a){var i=a[pn];return i||(i=a[pn]={hoistableStyles:new Map,hoistableScripts:new Map}),i}function ze(a){a[Ta]=!0}var yt=new Set,Re={};function q(a,i){Ae(a,i),Ae(a+"Capture",i)}function Ae(a,i){for(Re[a]=i,a=0;a<i.length;a++)yt.add(i[a])}var Fe=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Tt={},It={};function Yt(a){return Ve.call(It,a)?!0:Ve.call(Tt,a)?!1:Fe.test(a)?It[a]=!0:(Tt[a]=!0,!1)}function Zt(a,i,o){if(Yt(i))if(o===null)a.removeAttribute(i);else{switch(typeof o){case"undefined":case"function":case"symbol":a.removeAttribute(i);return;case"boolean":var u=i.toLowerCase().slice(0,5);if(u!=="data-"&&u!=="aria-"){a.removeAttribute(i);return}}a.setAttribute(i,""+o)}}function wa(a,i,o){if(o===null)a.removeAttribute(i);else{switch(typeof o){case"undefined":case"function":case"symbol":case"boolean":a.removeAttribute(i);return}a.setAttribute(i,""+o)}}function ma(a,i,o,u){if(u===null)a.removeAttribute(o);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":a.removeAttribute(o);return}a.setAttributeNS(i,o,""+u)}}var ii,ca;function Hn(a){if(ii===void 0)try{throw Error()}catch(o){var i=o.stack.trim().match(/\n( *(at )?)/);ii=i&&i[1]||"",ca=-1<o.stack.indexOf(`
    at`)?" (<anonymous>)":-1<o.stack.indexOf("@")?"@unknown:0:0":""}return`
`+ii+a+ca}var Wi=!1;function Vs(a,i){if(!a||Wi)return"";Wi=!0;var o=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var u={DetermineComponentFrameRoot:function(){try{if(i){var xe=function(){throw Error()};if(Object.defineProperty(xe.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(xe,[])}catch(be){var ye=be}Reflect.construct(a,[],xe)}else{try{xe.call()}catch(be){ye=be}a.call(xe.prototype)}}else{try{throw Error()}catch(be){ye=be}(xe=a())&&typeof xe.catch=="function"&&xe.catch(function(){})}}catch(be){if(be&&ye&&typeof be.stack=="string")return[be.stack,ye.stack]}return[null,null]}};u.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var h=Object.getOwnPropertyDescriptor(u.DetermineComponentFrameRoot,"name");h&&h.configurable&&Object.defineProperty(u.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var E=u.DetermineComponentFrameRoot(),D=E[0],H=E[1];if(D&&H){var $=D.split(`
`),he=H.split(`
`);for(h=u=0;u<$.length&&!$[u].includes("DetermineComponentFrameRoot");)u++;for(;h<he.length&&!he[h].includes("DetermineComponentFrameRoot");)h++;if(u===$.length||h===he.length)for(u=$.length-1,h=he.length-1;1<=u&&0<=h&&$[u]!==he[h];)h--;for(;1<=u&&0<=h;u--,h--)if($[u]!==he[h]){if(u!==1||h!==1)do if(u--,h--,0>h||$[u]!==he[h]){var Ne=`
`+$[u].replace(" at new "," at ");return a.displayName&&Ne.includes("<anonymous>")&&(Ne=Ne.replace("<anonymous>",a.displayName)),Ne}while(1<=u&&0<=h);break}}}finally{Wi=!1,Error.prepareStackTrace=o}return(o=a?a.displayName||a.name:"")?Hn(o):""}function jd(a){switch(a.tag){case 26:case 27:case 5:return Hn(a.type);case 16:return Hn("Lazy");case 13:return Hn("Suspense");case 19:return Hn("SuspenseList");case 0:case 15:return Vs(a.type,!1);case 11:return Vs(a.type.render,!1);case 1:return Vs(a.type,!0);case 31:return Hn("Activity");default:return""}}function Hd(a){try{var i="";do i+=jd(a),a=a.return;while(a);return i}catch(o){return`
Error generating stack: `+o.message+`
`+o.stack}}function Ua(a){switch(typeof a){case"bigint":case"boolean":case"number":case"string":case"undefined":return a;case"object":return a;default:return""}}function ia(a){var i=a.type;return(a=a.nodeName)&&a.toLowerCase()==="input"&&(i==="checkbox"||i==="radio")}function qi(a){var i=ia(a)?"checked":"value",o=Object.getOwnPropertyDescriptor(a.constructor.prototype,i),u=""+a[i];if(!a.hasOwnProperty(i)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var h=o.get,E=o.set;return Object.defineProperty(a,i,{configurable:!0,get:function(){return h.call(this)},set:function(D){u=""+D,E.call(this,D)}}),Object.defineProperty(a,i,{enumerable:o.enumerable}),{getValue:function(){return u},setValue:function(D){u=""+D},stopTracking:function(){a._valueTracker=null,delete a[i]}}}}function Yi(a){a._valueTracker||(a._valueTracker=qi(a))}function us(a){if(!a)return!1;var i=a._valueTracker;if(!i)return!0;var o=i.getValue(),u="";return a&&(u=ia(a)?a.checked?"true":"false":a.value),a=u,a!==o?(i.setValue(a),!0):!1}function Ji(a){if(a=a||(typeof document<"u"?document:void 0),typeof a>"u")return null;try{return a.activeElement||a.body}catch{return a.body}}var Yo=/[\n"\\]/g;function Nn(a){return a.replace(Yo,function(i){return"\\"+i.charCodeAt(0).toString(16)+" "})}function Jo(a,i,o,u,h,E,D,H){a.name="",D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"?a.type=D:a.removeAttribute("type"),i!=null?D==="number"?(i===0&&a.value===""||a.value!=i)&&(a.value=""+Ua(i)):a.value!==""+Ua(i)&&(a.value=""+Ua(i)):D!=="submit"&&D!=="reset"||a.removeAttribute("value"),i!=null?zs(a,D,Ua(i)):o!=null?zs(a,D,Ua(o)):u!=null&&a.removeAttribute("value"),h==null&&E!=null&&(a.defaultChecked=!!E),h!=null&&(a.checked=h&&typeof h!="function"&&typeof h!="symbol"),H!=null&&typeof H!="function"&&typeof H!="symbol"&&typeof H!="boolean"?a.name=""+Ua(H):a.removeAttribute("name")}function Ir(a,i,o,u,h,E,D,H){if(E!=null&&typeof E!="function"&&typeof E!="symbol"&&typeof E!="boolean"&&(a.type=E),i!=null||o!=null){if(!(E!=="submit"&&E!=="reset"||i!=null))return;o=o!=null?""+Ua(o):"",i=i!=null?""+Ua(i):o,H||i===a.value||(a.value=i),a.defaultValue=i}u=u??h,u=typeof u!="function"&&typeof u!="symbol"&&!!u,a.checked=H?a.checked:!!u,a.defaultChecked=!!u,D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"&&(a.name=D)}function zs(a,i,o){i==="number"&&Ji(a.ownerDocument)===a||a.defaultValue===""+o||(a.defaultValue=""+o)}function Cr(a,i,o,u){if(a=a.options,i){i={};for(var h=0;h<o.length;h++)i["$"+o[h]]=!0;for(o=0;o<a.length;o++)h=i.hasOwnProperty("$"+a[o].value),a[o].selected!==h&&(a[o].selected=h),h&&u&&(a[o].defaultSelected=!0)}else{for(o=""+Ua(o),i=null,h=0;h<a.length;h++){if(a[h].value===o){a[h].selected=!0,u&&(a[h].defaultSelected=!0);return}i!==null||a[h].disabled||(i=a[h])}i!==null&&(i.selected=!0)}}function Qs(a,i,o){if(i!=null&&(i=""+Ua(i),i!==a.value&&(a.value=i),o==null)){a.defaultValue!==i&&(a.defaultValue=i);return}a.defaultValue=o!=null?""+Ua(o):""}function Xo(a,i,o,u){if(i==null){if(u!=null){if(o!=null)throw Error(r(92));if(fe(u)){if(1<u.length)throw Error(r(93));u=u[0]}o=u}o==null&&(o=""),i=o}o=Ua(i),a.defaultValue=o,u=a.textContent,u===o&&u!==""&&u!==null&&(a.value=u)}function Di(a,i){if(i){var o=a.firstChild;if(o&&o===a.lastChild&&o.nodeType===3){o.nodeValue=i;return}}a.textContent=i}var $o=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Vd(a,i,o){var u=i.indexOf("--")===0;o==null||typeof o=="boolean"||o===""?u?a.setProperty(i,""):i==="float"?a.cssFloat="":a[i]="":u?a.setProperty(i,o):typeof o!="number"||o===0||$o.has(i)?i==="float"?a.cssFloat=o:a[i]=(""+o).trim():a[i]=o+"px"}function ms(a,i,o){if(i!=null&&typeof i!="object")throw Error(r(62));if(a=a.style,o!=null){for(var u in o)!o.hasOwnProperty(u)||i!=null&&i.hasOwnProperty(u)||(u.indexOf("--")===0?a.setProperty(u,""):u==="float"?a.cssFloat="":a[u]="");for(var h in i)u=i[h],i.hasOwnProperty(h)&&o[h]!==u&&Vd(a,h,u)}else for(var E in i)i.hasOwnProperty(E)&&Vd(a,E,i[E])}function Sr(a){if(a.indexOf("-")===-1)return!1;switch(a){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Xi=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Zo=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function kn(a){return Zo.test(""+a)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":a}var ri=null;function $i(a){return a=a.target||a.srcElement||window,a.correspondingUseElement&&(a=a.correspondingUseElement),a.nodeType===3?a.parentNode:a}var Tr=null,at=null;function Ks(a){var i=jn(a);if(i&&(a=i.stateNode)){var o=a[Kt]||null;e:switch(a=i.stateNode,i.type){case"input":if(Jo(a,o.value,o.defaultValue,o.defaultValue,o.checked,o.defaultChecked,o.type,o.name),i=o.name,o.type==="radio"&&i!=null){for(o=a;o.parentNode;)o=o.parentNode;for(o=o.querySelectorAll('input[name="'+Nn(""+i)+'"][type="radio"]'),i=0;i<o.length;i++){var u=o[i];if(u!==a&&u.form===a.form){var h=u[Kt]||null;if(!h)throw Error(r(90));Jo(u,h.value,h.defaultValue,h.defaultValue,h.checked,h.defaultChecked,h.type,h.name)}}for(i=0;i<o.length;i++)u=o[i],u.form===a.form&&us(u)}break e;case"textarea":Qs(a,o.value,o.defaultValue);break e;case"select":i=o.value,i!=null&&Cr(a,!!o.multiple,i,!1)}}}var Nr=!1;function el(a,i,o){if(Nr)return a(i,o);Nr=!0;try{var u=a(i);return u}finally{if(Nr=!1,(Tr!==null||at!==null)&&(kc(),Tr&&(i=Tr,a=at,at=Tr=null,Ks(i),a)))for(i=0;i<a.length;i++)Ks(a[i])}}function kr(a,i){var o=a.stateNode;if(o===null)return null;var u=o[Kt]||null;if(u===null)return null;o=u[i];e:switch(i){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(u=!u.disabled)||(a=a.type,u=!(a==="button"||a==="input"||a==="select"||a==="textarea")),a=!u;break e;default:a=!1}if(a)return null;if(o&&typeof o!="function")throw Error(r(231,i,typeof o));return o}var wn=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),si=!1;if(wn)try{var vi={};Object.defineProperty(vi,"passive",{get:function(){si=!0}}),window.addEventListener("test",vi,vi),window.removeEventListener("test",vi,vi)}catch{si=!1}var oi=null,y=null,I=null;function U(){if(I)return I;var a,i=y,o=i.length,u,h="value"in oi?oi.value:oi.textContent,E=h.length;for(a=0;a<o&&i[a]===h[a];a++);var D=o-a;for(u=1;u<=D&&i[o-u]===h[E-u];u++);return I=h.slice(a,1<u?1-u:void 0)}function V(a){var i=a.keyCode;return"charCode"in a?(a=a.charCode,a===0&&i===13&&(a=13)):a=i,a===10&&(a=13),32<=a||a===13?a:0}function Z(){return!0}function me(){return!1}function Ce(a){function i(o,u,h,E,D){this._reactName=o,this._targetInst=h,this.type=u,this.nativeEvent=E,this.target=D,this.currentTarget=null;for(var H in a)a.hasOwnProperty(H)&&(o=a[H],this[H]=o?o(E):E[H]);return this.isDefaultPrevented=(E.defaultPrevented!=null?E.defaultPrevented:E.returnValue===!1)?Z:me,this.isPropagationStopped=me,this}return A(i.prototype,{preventDefault:function(){this.defaultPrevented=!0;var o=this.nativeEvent;o&&(o.preventDefault?o.preventDefault():typeof o.returnValue!="unknown"&&(o.returnValue=!1),this.isDefaultPrevented=Z)},stopPropagation:function(){var o=this.nativeEvent;o&&(o.stopPropagation?o.stopPropagation():typeof o.cancelBubble!="unknown"&&(o.cancelBubble=!0),this.isPropagationStopped=Z)},persist:function(){},isPersistent:Z}),i}var Xe={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ct=Ce(Xe),bt=A({},Xe,{view:0,detail:0}),Aa=Ce(bt),$a,Gs,gs,ps=A({},bt,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:nl,button:0,buttons:0,relatedTarget:function(a){return a.relatedTarget===void 0?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){return"movementX"in a?a.movementX:(a!==gs&&(gs&&a.type==="mousemove"?($a=a.screenX-gs.screenX,Gs=a.screenY-gs.screenY):Gs=$a=0,gs=a),$a)},movementY:function(a){return"movementY"in a?a.movementY:Gs}}),zd=Ce(ps),Qd=A({},ps,{dataTransfer:0}),om=Ce(Qd),lm=A({},bt,{relatedTarget:0}),tl=Ce(lm),dm=A({},Xe,{animationName:0,elapsedTime:0,pseudoElement:0}),cm=Ce(dm),um=A({},Xe,{clipboardData:function(a){return"clipboardData"in a?a.clipboardData:window.clipboardData}}),mm=Ce(um),gm=A({},Xe,{data:0}),al=Ce(gm),pm={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},hm={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},fm={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Am(a){var i=this.nativeEvent;return i.getModifierState?i.getModifierState(a):(a=fm[a])?!!i[a]:!1}function nl(){return Am}var ym=A({},bt,{key:function(a){if(a.key){var i=pm[a.key]||a.key;if(i!=="Unidentified")return i}return a.type==="keypress"?(a=V(a),a===13?"Enter":String.fromCharCode(a)):a.type==="keydown"||a.type==="keyup"?hm[a.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:nl,charCode:function(a){return a.type==="keypress"?V(a):0},keyCode:function(a){return a.type==="keydown"||a.type==="keyup"?a.keyCode:0},which:function(a){return a.type==="keypress"?V(a):a.type==="keydown"||a.type==="keyup"?a.keyCode:0}}),Em=Ce(ym),Kd=A({},ps,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Gd=Ce(Kd),bm=A({},bt,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:nl}),vm=Ce(bm),wm=A({},Xe,{propertyName:0,elapsedTime:0,pseudoElement:0}),Im=Ce(wm),Cm=A({},ps,{deltaX:function(a){return"deltaX"in a?a.deltaX:"wheelDeltaX"in a?-a.wheelDeltaX:0},deltaY:function(a){return"deltaY"in a?a.deltaY:"wheelDeltaY"in a?-a.wheelDeltaY:"wheelDelta"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Wd=Ce(Cm),Sm=A({},Xe,{newState:0,oldState:0}),Tm=Ce(Sm),Nm=[9,13,27,32],xr=wn&&"CompositionEvent"in window,Lr=null;wn&&"documentMode"in document&&(Lr=document.documentMode);var qd=wn&&"TextEvent"in window&&!Lr,il=wn&&(!xr||Lr&&8<Lr&&11>=Lr),ue=" ",Le=!1;function $e(a,i){switch(a){case"keyup":return Nm.indexOf(i.keyCode)!==-1;case"keydown":return i.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ot(a){return a=a.detail,typeof a=="object"&&"data"in a?a.data:null}var mt=!1;function Jt(a,i){switch(a){case"compositionend":return ot(i);case"keypress":return i.which!==32?null:(Le=!0,ue);case"textInput":return a=i.data,a===ue&&Le?null:a;default:return null}}function Vn(a,i){if(mt)return a==="compositionend"||!xr&&$e(a,i)?(a=U(),I=y=oi=null,mt=!1,a):null;switch(a){case"paste":return null;case"keypress":if(!(i.ctrlKey||i.altKey||i.metaKey)||i.ctrlKey&&i.altKey){if(i.char&&1<i.char.length)return i.char;if(i.which)return String.fromCharCode(i.which)}return null;case"compositionend":return il&&i.locale!=="ko"?null:i.data;default:return null}}var xn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function hn(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i==="input"?!!xn[a.type]:i==="textarea"}function Ln(a,i,o,u){Tr?at?at.push(u):at=[u]:Tr=u,i=Mc(i,"onChange"),0<i.length&&(o=new Ct("onChange","change",null,o,u),a.push({event:o,listeners:i}))}var Zi=null,zn=null;function km(a){_0(a,0)}function Yd(a){var i=de(a);if(us(i))return a}function aA(a,i){if(a==="change")return i}var nA=!1;if(wn){var xm;if(wn){var Lm="oninput"in document;if(!Lm){var iA=document.createElement("div");iA.setAttribute("oninput","return;"),Lm=typeof iA.oninput=="function"}xm=Lm}else xm=!1;nA=xm&&(!document.documentMode||9<document.documentMode)}function rA(){Zi&&(Zi.detachEvent("onpropertychange",sA),zn=Zi=null)}function sA(a){if(a.propertyName==="value"&&Yd(zn)){var i=[];Ln(i,zn,a,$i(a)),el(km,i)}}function sD(a,i,o){a==="focusin"?(rA(),Zi=i,zn=o,Zi.attachEvent("onpropertychange",sA)):a==="focusout"&&rA()}function oD(a){if(a==="selectionchange"||a==="keyup"||a==="keydown")return Yd(zn)}function lD(a,i){if(a==="click")return Yd(i)}function dD(a,i){if(a==="input"||a==="change")return Yd(i)}function cD(a,i){return a===i&&(a!==0||1/a===1/i)||a!==a&&i!==i}var Qn=typeof Object.is=="function"?Object.is:cD;function rl(a,i){if(Qn(a,i))return!0;if(typeof a!="object"||a===null||typeof i!="object"||i===null)return!1;var o=Object.keys(a),u=Object.keys(i);if(o.length!==u.length)return!1;for(u=0;u<o.length;u++){var h=o[u];if(!Ve.call(i,h)||!Qn(a[h],i[h]))return!1}return!0}function oA(a){for(;a&&a.firstChild;)a=a.firstChild;return a}function lA(a,i){var o=oA(a);a=0;for(var u;o;){if(o.nodeType===3){if(u=a+o.textContent.length,a<=i&&u>=i)return{node:o,offset:i-a};a=u}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=oA(o)}}function dA(a,i){return a&&i?a===i?!0:a&&a.nodeType===3?!1:i&&i.nodeType===3?dA(a,i.parentNode):"contains"in a?a.contains(i):a.compareDocumentPosition?!!(a.compareDocumentPosition(i)&16):!1:!1}function cA(a){a=a!=null&&a.ownerDocument!=null&&a.ownerDocument.defaultView!=null?a.ownerDocument.defaultView:window;for(var i=Ji(a.document);i instanceof a.HTMLIFrameElement;){try{var o=typeof i.contentWindow.location.href=="string"}catch{o=!1}if(o)a=i.contentWindow;else break;i=Ji(a.document)}return i}function Dm(a){var i=a&&a.nodeName&&a.nodeName.toLowerCase();return i&&(i==="input"&&(a.type==="text"||a.type==="search"||a.type==="tel"||a.type==="url"||a.type==="password")||i==="textarea"||a.contentEditable==="true")}var uD=wn&&"documentMode"in document&&11>=document.documentMode,Ws=null,Rm=null,sl=null,Um=!1;function uA(a,i,o){var u=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;Um||Ws==null||Ws!==Ji(u)||(u=Ws,"selectionStart"in u&&Dm(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),sl&&rl(sl,u)||(sl=u,u=Mc(Rm,"onSelect"),0<u.length&&(i=new Ct("onSelect","select",null,i,o),a.push({event:i,listeners:u}),i.target=Ws)))}function hs(a,i){var o={};return o[a.toLowerCase()]=i.toLowerCase(),o["Webkit"+a]="webkit"+i,o["Moz"+a]="moz"+i,o}var qs={animationend:hs("Animation","AnimationEnd"),animationiteration:hs("Animation","AnimationIteration"),animationstart:hs("Animation","AnimationStart"),transitionrun:hs("Transition","TransitionRun"),transitionstart:hs("Transition","TransitionStart"),transitioncancel:hs("Transition","TransitionCancel"),transitionend:hs("Transition","TransitionEnd")},Mm={},mA={};wn&&(mA=document.createElement("div").style,"AnimationEvent"in window||(delete qs.animationend.animation,delete qs.animationiteration.animation,delete qs.animationstart.animation),"TransitionEvent"in window||delete qs.transitionend.transition);function fs(a){if(Mm[a])return Mm[a];if(!qs[a])return a;var i=qs[a],o;for(o in i)if(i.hasOwnProperty(o)&&o in mA)return Mm[a]=i[o];return a}var gA=fs("animationend"),pA=fs("animationiteration"),hA=fs("animationstart"),mD=fs("transitionrun"),gD=fs("transitionstart"),pD=fs("transitioncancel"),fA=fs("transitionend"),AA=new Map,_m="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");_m.push("scrollEnd");function wi(a,i){AA.set(a,i),q(i,[a])}var yA=new WeakMap;function li(a,i){if(typeof a=="object"&&a!==null){var o=yA.get(a);return o!==void 0?o:(i={value:a,source:i,stack:Hd(i)},yA.set(a,i),i)}return{value:a,source:i,stack:Hd(i)}}var di=[],Ys=0,Fm=0;function Jd(){for(var a=Ys,i=Fm=Ys=0;i<a;){var o=di[i];di[i++]=null;var u=di[i];di[i++]=null;var h=di[i];di[i++]=null;var E=di[i];if(di[i++]=null,u!==null&&h!==null){var D=u.pending;D===null?h.next=h:(h.next=D.next,D.next=h),u.pending=h}E!==0&&EA(o,h,E)}}function Xd(a,i,o,u){di[Ys++]=a,di[Ys++]=i,di[Ys++]=o,di[Ys++]=u,Fm|=u,a.lanes|=u,a=a.alternate,a!==null&&(a.lanes|=u)}function Bm(a,i,o,u){return Xd(a,i,o,u),$d(a)}function Js(a,i){return Xd(a,null,null,i),$d(a)}function EA(a,i,o){a.lanes|=o;var u=a.alternate;u!==null&&(u.lanes|=o);for(var h=!1,E=a.return;E!==null;)E.childLanes|=o,u=E.alternate,u!==null&&(u.childLanes|=o),E.tag===22&&(a=E.stateNode,a===null||a._visibility&1||(h=!0)),a=E,E=E.return;return a.tag===3?(E=a.stateNode,h&&i!==null&&(h=31-N(o),a=E.hiddenUpdates,u=a[h],u===null?a[h]=[i]:u.push(i),i.lane=o|536870912),E):null}function $d(a){if(50<Dl)throw Dl=0,zg=null,Error(r(185));for(var i=a.return;i!==null;)a=i,i=a.return;return a.tag===3?a.stateNode:null}var Xs={};function hD(a,i,o,u){this.tag=a,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=i,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=u,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Kn(a,i,o,u){return new hD(a,i,o,u)}function Pm(a){return a=a.prototype,!(!a||!a.isReactComponent)}function er(a,i){var o=a.alternate;return o===null?(o=Kn(a.tag,i,a.key,a.mode),o.elementType=a.elementType,o.type=a.type,o.stateNode=a.stateNode,o.alternate=a,a.alternate=o):(o.pendingProps=i,o.type=a.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=a.flags&65011712,o.childLanes=a.childLanes,o.lanes=a.lanes,o.child=a.child,o.memoizedProps=a.memoizedProps,o.memoizedState=a.memoizedState,o.updateQueue=a.updateQueue,i=a.dependencies,o.dependencies=i===null?null:{lanes:i.lanes,firstContext:i.firstContext},o.sibling=a.sibling,o.index=a.index,o.ref=a.ref,o.refCleanup=a.refCleanup,o}function bA(a,i){a.flags&=65011714;var o=a.alternate;return o===null?(a.childLanes=0,a.lanes=i,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=o.childLanes,a.lanes=o.lanes,a.child=o.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=o.memoizedProps,a.memoizedState=o.memoizedState,a.updateQueue=o.updateQueue,a.type=o.type,i=o.dependencies,a.dependencies=i===null?null:{lanes:i.lanes,firstContext:i.firstContext}),a}function Zd(a,i,o,u,h,E){var D=0;if(u=a,typeof a=="function")Pm(a)&&(D=1);else if(typeof a=="string")D=AR(a,o,we.current)?26:a==="html"||a==="head"||a==="body"?27:5;else e:switch(a){case B:return a=Kn(31,o,i,h),a.elementType=B,a.lanes=E,a;case S:return As(o.children,h,E,i);case T:D=8,h|=24;break;case k:return a=Kn(12,o,i,h|2),a.elementType=k,a.lanes=E,a;case _:return a=Kn(13,o,i,h),a.elementType=_,a.lanes=E,a;case j:return a=Kn(19,o,i,h),a.elementType=j,a.lanes=E,a;default:if(typeof a=="object"&&a!==null)switch(a.$$typeof){case L:case x:D=10;break e;case R:D=9;break e;case O:D=11;break e;case G:D=14;break e;case P:D=16,u=null;break e}D=29,o=Error(r(130,a===null?"null":typeof a,"")),u=null}return i=Kn(D,o,i,h),i.elementType=a,i.type=u,i.lanes=E,i}function As(a,i,o,u){return a=Kn(7,a,u,i),a.lanes=o,a}function Om(a,i,o){return a=Kn(6,a,null,i),a.lanes=o,a}function jm(a,i,o){return i=Kn(4,a.children!==null?a.children:[],a.key,i),i.lanes=o,i.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation},i}var $s=[],Zs=0,ec=null,tc=0,ci=[],ui=0,ys=null,tr=1,ar="";function Es(a,i){$s[Zs++]=tc,$s[Zs++]=ec,ec=a,tc=i}function vA(a,i,o){ci[ui++]=tr,ci[ui++]=ar,ci[ui++]=ys,ys=a;var u=tr;a=ar;var h=32-N(u)-1;u&=~(1<<h),o+=1;var E=32-N(i)+h;if(30<E){var D=h-h%5;E=(u&(1<<D)-1).toString(32),u>>=D,h-=D,tr=1<<32-N(i)+h|o<<h|u,ar=E+a}else tr=1<<E|o<<h|u,ar=a}function Hm(a){a.return!==null&&(Es(a,1),vA(a,1,0))}function Vm(a){for(;a===ec;)ec=$s[--Zs],$s[Zs]=null,tc=$s[--Zs],$s[Zs]=null;for(;a===ys;)ys=ci[--ui],ci[ui]=null,ar=ci[--ui],ci[ui]=null,tr=ci[--ui],ci[ui]=null}var In=null,Na=null,Xt=!1,bs=null,Ri=!1,zm=Error(r(519));function vs(a){var i=Error(r(418,""));throw dl(li(i,a)),zm}function wA(a){var i=a.stateNode,o=a.type,u=a.memoizedProps;switch(i[Mt]=a,i[Kt]=u,o){case"dialog":Pt("cancel",i),Pt("close",i);break;case"iframe":case"object":case"embed":Pt("load",i);break;case"video":case"audio":for(o=0;o<Ul.length;o++)Pt(Ul[o],i);break;case"source":Pt("error",i);break;case"img":case"image":case"link":Pt("error",i),Pt("load",i);break;case"details":Pt("toggle",i);break;case"input":Pt("invalid",i),Ir(i,u.value,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name,!0),Yi(i);break;case"select":Pt("invalid",i);break;case"textarea":Pt("invalid",i),Xo(i,u.value,u.defaultValue,u.children),Yi(i)}o=u.children,typeof o!="string"&&typeof o!="number"&&typeof o!="bigint"||i.textContent===""+o||u.suppressHydrationWarning===!0||O0(i.textContent,o)?(u.popover!=null&&(Pt("beforetoggle",i),Pt("toggle",i)),u.onScroll!=null&&Pt("scroll",i),u.onScrollEnd!=null&&Pt("scrollend",i),u.onClick!=null&&(i.onclick=_c),i=!0):i=!1,i||vs(a)}function IA(a){for(In=a.return;In;)switch(In.tag){case 5:case 13:Ri=!1;return;case 27:case 3:Ri=!0;return;default:In=In.return}}function ol(a){if(a!==In)return!1;if(!Xt)return IA(a),Xt=!0,!1;var i=a.tag,o;if((o=i!==3&&i!==27)&&((o=i===5)&&(o=a.type,o=!(o!=="form"&&o!=="button")||rp(a.type,a.memoizedProps)),o=!o),o&&Na&&vs(a),IA(a),i===13){if(a=a.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(r(317));e:{for(a=a.nextSibling,i=0;a;){if(a.nodeType===8)if(o=a.data,o==="/$"){if(i===0){Na=Ci(a.nextSibling);break e}i--}else o!=="$"&&o!=="$!"&&o!=="$?"||i++;a=a.nextSibling}Na=null}}else i===27?(i=Na,Gr(a.type)?(a=dp,dp=null,Na=a):Na=i):Na=In?Ci(a.stateNode.nextSibling):null;return!0}function ll(){Na=In=null,Xt=!1}function CA(){var a=bs;return a!==null&&(Un===null?Un=a:Un.push.apply(Un,a),bs=null),a}function dl(a){bs===null?bs=[a]:bs.push(a)}var Qm=J(null),ws=null,nr=null;function Dr(a,i,o){ie(Qm,i._currentValue),i._currentValue=o}function ir(a){a._currentValue=Qm.current,W(Qm)}function Km(a,i,o){for(;a!==null;){var u=a.alternate;if((a.childLanes&i)!==i?(a.childLanes|=i,u!==null&&(u.childLanes|=i)):u!==null&&(u.childLanes&i)!==i&&(u.childLanes|=i),a===o)break;a=a.return}}function Gm(a,i,o,u){var h=a.child;for(h!==null&&(h.return=a);h!==null;){var E=h.dependencies;if(E!==null){var D=h.child;E=E.firstContext;e:for(;E!==null;){var H=E;E=h;for(var $=0;$<i.length;$++)if(H.context===i[$]){E.lanes|=o,H=E.alternate,H!==null&&(H.lanes|=o),Km(E.return,o,a),u||(D=null);break e}E=H.next}}else if(h.tag===18){if(D=h.return,D===null)throw Error(r(341));D.lanes|=o,E=D.alternate,E!==null&&(E.lanes|=o),Km(D,o,a),D=null}else D=h.child;if(D!==null)D.return=h;else for(D=h;D!==null;){if(D===a){D=null;break}if(h=D.sibling,h!==null){h.return=D.return,D=h;break}D=D.return}h=D}}function cl(a,i,o,u){a=null;for(var h=i,E=!1;h!==null;){if(!E){if((h.flags&524288)!==0)E=!0;else if((h.flags&262144)!==0)break}if(h.tag===10){var D=h.alternate;if(D===null)throw Error(r(387));if(D=D.memoizedProps,D!==null){var H=h.type;Qn(h.pendingProps.value,D.value)||(a!==null?a.push(H):a=[H])}}else if(h===Pe.current){if(D=h.alternate,D===null)throw Error(r(387));D.memoizedState.memoizedState!==h.memoizedState.memoizedState&&(a!==null?a.push(Ol):a=[Ol])}h=h.return}a!==null&&Gm(i,a,o,u),i.flags|=262144}function ac(a){for(a=a.firstContext;a!==null;){if(!Qn(a.context._currentValue,a.memoizedValue))return!0;a=a.next}return!1}function Is(a){ws=a,nr=null,a=a.dependencies,a!==null&&(a.firstContext=null)}function fn(a){return SA(ws,a)}function nc(a,i){return ws===null&&Is(a),SA(a,i)}function SA(a,i){var o=i._currentValue;if(i={context:i,memoizedValue:o,next:null},nr===null){if(a===null)throw Error(r(308));nr=i,a.dependencies={lanes:0,firstContext:i},a.flags|=524288}else nr=nr.next=i;return o}var fD=typeof AbortController<"u"?AbortController:function(){var a=[],i=this.signal={aborted:!1,addEventListener:function(o,u){a.push(u)}};this.abort=function(){i.aborted=!0,a.forEach(function(o){return o()})}},AD=t.unstable_scheduleCallback,yD=t.unstable_NormalPriority,Qa={$$typeof:x,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Wm(){return{controller:new fD,data:new Map,refCount:0}}function ul(a){a.refCount--,a.refCount===0&&AD(yD,function(){a.controller.abort()})}var ml=null,qm=0,eo=0,to=null;function ED(a,i){if(ml===null){var o=ml=[];qm=0,eo=Jg(),to={status:"pending",value:void 0,then:function(u){o.push(u)}}}return qm++,i.then(TA,TA),i}function TA(){if(--qm===0&&ml!==null){to!==null&&(to.status="fulfilled");var a=ml;ml=null,eo=0,to=null;for(var i=0;i<a.length;i++)(0,a[i])()}}function bD(a,i){var o=[],u={status:"pending",value:null,reason:null,then:function(h){o.push(h)}};return a.then(function(){u.status="fulfilled",u.value=i;for(var h=0;h<o.length;h++)(0,o[h])(i)},function(h){for(u.status="rejected",u.reason=h,h=0;h<o.length;h++)(0,o[h])(void 0)}),u}var NA=X.S;X.S=function(a,i){typeof i=="object"&&i!==null&&typeof i.then=="function"&&ED(a,i),NA!==null&&NA(a,i)};var Cs=J(null);function Ym(){var a=Cs.current;return a!==null?a:ga.pooledCache}function ic(a,i){i===null?ie(Cs,Cs.current):ie(Cs,i.pool)}function kA(){var a=Ym();return a===null?null:{parent:Qa._currentValue,pool:a}}var gl=Error(r(460)),xA=Error(r(474)),rc=Error(r(542)),Jm={then:function(){}};function LA(a){return a=a.status,a==="fulfilled"||a==="rejected"}function sc(){}function DA(a,i,o){switch(o=a[o],o===void 0?a.push(i):o!==i&&(i.then(sc,sc),i=o),i.status){case"fulfilled":return i.value;case"rejected":throw a=i.reason,UA(a),a;default:if(typeof i.status=="string")i.then(sc,sc);else{if(a=ga,a!==null&&100<a.shellSuspendCounter)throw Error(r(482));a=i,a.status="pending",a.then(function(u){if(i.status==="pending"){var h=i;h.status="fulfilled",h.value=u}},function(u){if(i.status==="pending"){var h=i;h.status="rejected",h.reason=u}})}switch(i.status){case"fulfilled":return i.value;case"rejected":throw a=i.reason,UA(a),a}throw pl=i,gl}}var pl=null;function RA(){if(pl===null)throw Error(r(459));var a=pl;return pl=null,a}function UA(a){if(a===gl||a===rc)throw Error(r(483))}var Rr=!1;function Xm(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function $m(a,i){a=a.updateQueue,i.updateQueue===a&&(i.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,callbacks:null})}function Ur(a){return{lane:a,tag:0,payload:null,callback:null,next:null}}function Mr(a,i,o){var u=a.updateQueue;if(u===null)return null;if(u=u.shared,(ta&2)!==0){var h=u.pending;return h===null?i.next=i:(i.next=h.next,h.next=i),u.pending=i,i=$d(a),EA(a,null,o),i}return Xd(a,u,i,o),$d(a)}function hl(a,i,o){if(i=i.updateQueue,i!==null&&(i=i.shared,(o&4194048)!==0)){var u=i.lanes;u&=a.pendingLanes,o|=u,i.lanes=o,Oa(a,o)}}function Zm(a,i){var o=a.updateQueue,u=a.alternate;if(u!==null&&(u=u.updateQueue,o===u)){var h=null,E=null;if(o=o.firstBaseUpdate,o!==null){do{var D={lane:o.lane,tag:o.tag,payload:o.payload,callback:null,next:null};E===null?h=E=D:E=E.next=D,o=o.next}while(o!==null);E===null?h=E=i:E=E.next=i}else h=E=i;o={baseState:u.baseState,firstBaseUpdate:h,lastBaseUpdate:E,shared:u.shared,callbacks:u.callbacks},a.updateQueue=o;return}a=o.lastBaseUpdate,a===null?o.firstBaseUpdate=i:a.next=i,o.lastBaseUpdate=i}var eg=!1;function fl(){if(eg){var a=to;if(a!==null)throw a}}function Al(a,i,o,u){eg=!1;var h=a.updateQueue;Rr=!1;var E=h.firstBaseUpdate,D=h.lastBaseUpdate,H=h.shared.pending;if(H!==null){h.shared.pending=null;var $=H,he=$.next;$.next=null,D===null?E=he:D.next=he,D=$;var Ne=a.alternate;Ne!==null&&(Ne=Ne.updateQueue,H=Ne.lastBaseUpdate,H!==D&&(H===null?Ne.firstBaseUpdate=he:H.next=he,Ne.lastBaseUpdate=$))}if(E!==null){var xe=h.baseState;D=0,Ne=he=$=null,H=E;do{var ye=H.lane&-536870913,be=ye!==H.lane;if(be?(Qt&ye)===ye:(u&ye)===ye){ye!==0&&ye===eo&&(eg=!0),Ne!==null&&(Ne=Ne.next={lane:0,tag:H.tag,payload:H.payload,callback:null,next:null});e:{var At=a,dt=H;ye=i;var oa=o;switch(dt.tag){case 1:if(At=dt.payload,typeof At=="function"){xe=At.call(oa,xe,ye);break e}xe=At;break e;case 3:At.flags=At.flags&-65537|128;case 0:if(At=dt.payload,ye=typeof At=="function"?At.call(oa,xe,ye):At,ye==null)break e;xe=A({},xe,ye);break e;case 2:Rr=!0}}ye=H.callback,ye!==null&&(a.flags|=64,be&&(a.flags|=8192),be=h.callbacks,be===null?h.callbacks=[ye]:be.push(ye))}else be={lane:ye,tag:H.tag,payload:H.payload,callback:H.callback,next:null},Ne===null?(he=Ne=be,$=xe):Ne=Ne.next=be,D|=ye;if(H=H.next,H===null){if(H=h.shared.pending,H===null)break;be=H,H=be.next,be.next=null,h.lastBaseUpdate=be,h.shared.pending=null}}while(!0);Ne===null&&($=xe),h.baseState=$,h.firstBaseUpdate=he,h.lastBaseUpdate=Ne,E===null&&(h.shared.lanes=0),Vr|=D,a.lanes=D,a.memoizedState=xe}}function MA(a,i){if(typeof a!="function")throw Error(r(191,a));a.call(i)}function _A(a,i){var o=a.callbacks;if(o!==null)for(a.callbacks=null,a=0;a<o.length;a++)MA(o[a],i)}var ao=J(null),oc=J(0);function FA(a,i){a=ur,ie(oc,a),ie(ao,i),ur=a|i.baseLanes}function tg(){ie(oc,ur),ie(ao,ao.current)}function ag(){ur=oc.current,W(ao),W(oc)}var _r=0,Ut=null,ra=null,ja=null,lc=!1,no=!1,Ss=!1,dc=0,yl=0,io=null,vD=0;function Ma(){throw Error(r(321))}function ng(a,i){if(i===null)return!1;for(var o=0;o<i.length&&o<a.length;o++)if(!Qn(a[o],i[o]))return!1;return!0}function ig(a,i,o,u,h,E){return _r=E,Ut=i,i.memoizedState=null,i.updateQueue=null,i.lanes=0,X.H=a===null||a.memoizedState===null?Ey:by,Ss=!1,E=o(u,h),Ss=!1,no&&(E=PA(i,o,u,h)),BA(a),E}function BA(a){X.H=hc;var i=ra!==null&&ra.next!==null;if(_r=0,ja=ra=Ut=null,lc=!1,yl=0,io=null,i)throw Error(r(300));a===null||Za||(a=a.dependencies,a!==null&&ac(a)&&(Za=!0))}function PA(a,i,o,u){Ut=a;var h=0;do{if(no&&(io=null),yl=0,no=!1,25<=h)throw Error(r(301));if(h+=1,ja=ra=null,a.updateQueue!=null){var E=a.updateQueue;E.lastEffect=null,E.events=null,E.stores=null,E.memoCache!=null&&(E.memoCache.index=0)}X.H=kD,E=i(o,u)}while(no);return E}function wD(){var a=X.H,i=a.useState()[0];return i=typeof i.then=="function"?El(i):i,a=a.useState()[0],(ra!==null?ra.memoizedState:null)!==a&&(Ut.flags|=1024),i}function rg(){var a=dc!==0;return dc=0,a}function sg(a,i,o){i.updateQueue=a.updateQueue,i.flags&=-2053,a.lanes&=~o}function og(a){if(lc){for(a=a.memoizedState;a!==null;){var i=a.queue;i!==null&&(i.pending=null),a=a.next}lc=!1}_r=0,ja=ra=Ut=null,no=!1,yl=dc=0,io=null}function Dn(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return ja===null?Ut.memoizedState=ja=a:ja=ja.next=a,ja}function Ha(){if(ra===null){var a=Ut.alternate;a=a!==null?a.memoizedState:null}else a=ra.next;var i=ja===null?Ut.memoizedState:ja.next;if(i!==null)ja=i,ra=a;else{if(a===null)throw Ut.alternate===null?Error(r(467)):Error(r(310));ra=a,a={memoizedState:ra.memoizedState,baseState:ra.baseState,baseQueue:ra.baseQueue,queue:ra.queue,next:null},ja===null?Ut.memoizedState=ja=a:ja=ja.next=a}return ja}function lg(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function El(a){var i=yl;return yl+=1,io===null&&(io=[]),a=DA(io,a,i),i=Ut,(ja===null?i.memoizedState:ja.next)===null&&(i=i.alternate,X.H=i===null||i.memoizedState===null?Ey:by),a}function cc(a){if(a!==null&&typeof a=="object"){if(typeof a.then=="function")return El(a);if(a.$$typeof===x)return fn(a)}throw Error(r(438,String(a)))}function dg(a){var i=null,o=Ut.updateQueue;if(o!==null&&(i=o.memoCache),i==null){var u=Ut.alternate;u!==null&&(u=u.updateQueue,u!==null&&(u=u.memoCache,u!=null&&(i={data:u.data.map(function(h){return h.slice()}),index:0})))}if(i==null&&(i={data:[],index:0}),o===null&&(o=lg(),Ut.updateQueue=o),o.memoCache=i,o=i.data[i.index],o===void 0)for(o=i.data[i.index]=Array(a),u=0;u<a;u++)o[u]=z;return i.index++,o}function rr(a,i){return typeof i=="function"?i(a):i}function uc(a){var i=Ha();return cg(i,ra,a)}function cg(a,i,o){var u=a.queue;if(u===null)throw Error(r(311));u.lastRenderedReducer=o;var h=a.baseQueue,E=u.pending;if(E!==null){if(h!==null){var D=h.next;h.next=E.next,E.next=D}i.baseQueue=h=E,u.pending=null}if(E=a.baseState,h===null)a.memoizedState=E;else{i=h.next;var H=D=null,$=null,he=i,Ne=!1;do{var xe=he.lane&-536870913;if(xe!==he.lane?(Qt&xe)===xe:(_r&xe)===xe){var ye=he.revertLane;if(ye===0)$!==null&&($=$.next={lane:0,revertLane:0,action:he.action,hasEagerState:he.hasEagerState,eagerState:he.eagerState,next:null}),xe===eo&&(Ne=!0);else if((_r&ye)===ye){he=he.next,ye===eo&&(Ne=!0);continue}else xe={lane:0,revertLane:he.revertLane,action:he.action,hasEagerState:he.hasEagerState,eagerState:he.eagerState,next:null},$===null?(H=$=xe,D=E):$=$.next=xe,Ut.lanes|=ye,Vr|=ye;xe=he.action,Ss&&o(E,xe),E=he.hasEagerState?he.eagerState:o(E,xe)}else ye={lane:xe,revertLane:he.revertLane,action:he.action,hasEagerState:he.hasEagerState,eagerState:he.eagerState,next:null},$===null?(H=$=ye,D=E):$=$.next=ye,Ut.lanes|=xe,Vr|=xe;he=he.next}while(he!==null&&he!==i);if($===null?D=E:$.next=H,!Qn(E,a.memoizedState)&&(Za=!0,Ne&&(o=to,o!==null)))throw o;a.memoizedState=E,a.baseState=D,a.baseQueue=$,u.lastRenderedState=E}return h===null&&(u.lanes=0),[a.memoizedState,u.dispatch]}function ug(a){var i=Ha(),o=i.queue;if(o===null)throw Error(r(311));o.lastRenderedReducer=a;var u=o.dispatch,h=o.pending,E=i.memoizedState;if(h!==null){o.pending=null;var D=h=h.next;do E=a(E,D.action),D=D.next;while(D!==h);Qn(E,i.memoizedState)||(Za=!0),i.memoizedState=E,i.baseQueue===null&&(i.baseState=E),o.lastRenderedState=E}return[E,u]}function OA(a,i,o){var u=Ut,h=Ha(),E=Xt;if(E){if(o===void 0)throw Error(r(407));o=o()}else o=i();var D=!Qn((ra||h).memoizedState,o);D&&(h.memoizedState=o,Za=!0),h=h.queue;var H=VA.bind(null,u,h,a);if(bl(2048,8,H,[a]),h.getSnapshot!==i||D||ja!==null&&ja.memoizedState.tag&1){if(u.flags|=2048,ro(9,mc(),HA.bind(null,u,h,o,i),null),ga===null)throw Error(r(349));E||(_r&124)!==0||jA(u,i,o)}return o}function jA(a,i,o){a.flags|=16384,a={getSnapshot:i,value:o},i=Ut.updateQueue,i===null?(i=lg(),Ut.updateQueue=i,i.stores=[a]):(o=i.stores,o===null?i.stores=[a]:o.push(a))}function HA(a,i,o,u){i.value=o,i.getSnapshot=u,zA(i)&&QA(a)}function VA(a,i,o){return o(function(){zA(i)&&QA(a)})}function zA(a){var i=a.getSnapshot;a=a.value;try{var o=i();return!Qn(a,o)}catch{return!0}}function QA(a){var i=Js(a,2);i!==null&&Jn(i,a,2)}function mg(a){var i=Dn();if(typeof a=="function"){var o=a;if(a=o(),Ss){C(!0);try{o()}finally{C(!1)}}}return i.memoizedState=i.baseState=a,i.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:rr,lastRenderedState:a},i}function KA(a,i,o,u){return a.baseState=o,cg(a,ra,typeof u=="function"?u:rr)}function ID(a,i,o,u,h){if(pc(a))throw Error(r(485));if(a=i.action,a!==null){var E={payload:h,action:a,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(D){E.listeners.push(D)}};X.T!==null?o(!0):E.isTransition=!1,u(E),o=i.pending,o===null?(E.next=i.pending=E,GA(i,E)):(E.next=o.next,i.pending=o.next=E)}}function GA(a,i){var o=i.action,u=i.payload,h=a.state;if(i.isTransition){var E=X.T,D={};X.T=D;try{var H=o(h,u),$=X.S;$!==null&&$(D,H),WA(a,i,H)}catch(he){gg(a,i,he)}finally{X.T=E}}else try{E=o(h,u),WA(a,i,E)}catch(he){gg(a,i,he)}}function WA(a,i,o){o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(function(u){qA(a,i,u)},function(u){return gg(a,i,u)}):qA(a,i,o)}function qA(a,i,o){i.status="fulfilled",i.value=o,YA(i),a.state=o,i=a.pending,i!==null&&(o=i.next,o===i?a.pending=null:(o=o.next,i.next=o,GA(a,o)))}function gg(a,i,o){var u=a.pending;if(a.pending=null,u!==null){u=u.next;do i.status="rejected",i.reason=o,YA(i),i=i.next;while(i!==u)}a.action=null}function YA(a){a=a.listeners;for(var i=0;i<a.length;i++)(0,a[i])()}function JA(a,i){return i}function XA(a,i){if(Xt){var o=ga.formState;if(o!==null){e:{var u=Ut;if(Xt){if(Na){t:{for(var h=Na,E=Ri;h.nodeType!==8;){if(!E){h=null;break t}if(h=Ci(h.nextSibling),h===null){h=null;break t}}E=h.data,h=E==="F!"||E==="F"?h:null}if(h){Na=Ci(h.nextSibling),u=h.data==="F!";break e}}vs(u)}u=!1}u&&(i=o[0])}}return o=Dn(),o.memoizedState=o.baseState=i,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:JA,lastRenderedState:i},o.queue=u,o=fy.bind(null,Ut,u),u.dispatch=o,u=mg(!1),E=yg.bind(null,Ut,!1,u.queue),u=Dn(),h={state:i,dispatch:null,action:a,pending:null},u.queue=h,o=ID.bind(null,Ut,h,E,o),h.dispatch=o,u.memoizedState=a,[i,o,!1]}function $A(a){var i=Ha();return ZA(i,ra,a)}function ZA(a,i,o){if(i=cg(a,i,JA)[0],a=uc(rr)[0],typeof i=="object"&&i!==null&&typeof i.then=="function")try{var u=El(i)}catch(D){throw D===gl?rc:D}else u=i;i=Ha();var h=i.queue,E=h.dispatch;return o!==i.memoizedState&&(Ut.flags|=2048,ro(9,mc(),CD.bind(null,h,o),null)),[u,E,a]}function CD(a,i){a.action=i}function ey(a){var i=Ha(),o=ra;if(o!==null)return ZA(i,o,a);Ha(),i=i.memoizedState,o=Ha();var u=o.queue.dispatch;return o.memoizedState=a,[i,u,!1]}function ro(a,i,o,u){return a={tag:a,create:o,deps:u,inst:i,next:null},i=Ut.updateQueue,i===null&&(i=lg(),Ut.updateQueue=i),o=i.lastEffect,o===null?i.lastEffect=a.next=a:(u=o.next,o.next=a,a.next=u,i.lastEffect=a),a}function mc(){return{destroy:void 0,resource:void 0}}function ty(){return Ha().memoizedState}function gc(a,i,o,u){var h=Dn();u=u===void 0?null:u,Ut.flags|=a,h.memoizedState=ro(1|i,mc(),o,u)}function bl(a,i,o,u){var h=Ha();u=u===void 0?null:u;var E=h.memoizedState.inst;ra!==null&&u!==null&&ng(u,ra.memoizedState.deps)?h.memoizedState=ro(i,E,o,u):(Ut.flags|=a,h.memoizedState=ro(1|i,E,o,u))}function ay(a,i){gc(8390656,8,a,i)}function ny(a,i){bl(2048,8,a,i)}function iy(a,i){return bl(4,2,a,i)}function ry(a,i){return bl(4,4,a,i)}function sy(a,i){if(typeof i=="function"){a=a();var o=i(a);return function(){typeof o=="function"?o():i(null)}}if(i!=null)return a=a(),i.current=a,function(){i.current=null}}function oy(a,i,o){o=o!=null?o.concat([a]):null,bl(4,4,sy.bind(null,i,a),o)}function pg(){}function ly(a,i){var o=Ha();i=i===void 0?null:i;var u=o.memoizedState;return i!==null&&ng(i,u[1])?u[0]:(o.memoizedState=[a,i],a)}function dy(a,i){var o=Ha();i=i===void 0?null:i;var u=o.memoizedState;if(i!==null&&ng(i,u[1]))return u[0];if(u=a(),Ss){C(!0);try{a()}finally{C(!1)}}return o.memoizedState=[u,i],u}function hg(a,i,o){return o===void 0||(_r&1073741824)!==0?a.memoizedState=i:(a.memoizedState=o,a=m0(),Ut.lanes|=a,Vr|=a,o)}function cy(a,i,o,u){return Qn(o,i)?o:ao.current!==null?(a=hg(a,o,u),Qn(a,i)||(Za=!0),a):(_r&42)===0?(Za=!0,a.memoizedState=o):(a=m0(),Ut.lanes|=a,Vr|=a,i)}function uy(a,i,o,u,h){var E=te.p;te.p=E!==0&&8>E?E:8;var D=X.T,H={};X.T=H,yg(a,!1,i,o);try{var $=h(),he=X.S;if(he!==null&&he(H,$),$!==null&&typeof $=="object"&&typeof $.then=="function"){var Ne=bD($,u);vl(a,i,Ne,Yn(a))}else vl(a,i,u,Yn(a))}catch(xe){vl(a,i,{then:function(){},status:"rejected",reason:xe},Yn())}finally{te.p=E,X.T=D}}function SD(){}function fg(a,i,o,u){if(a.tag!==5)throw Error(r(476));var h=my(a).queue;uy(a,h,i,ce,o===null?SD:function(){return gy(a),o(u)})}function my(a){var i=a.memoizedState;if(i!==null)return i;i={memoizedState:ce,baseState:ce,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rr,lastRenderedState:ce},next:null};var o={};return i.next={memoizedState:o,baseState:o,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rr,lastRenderedState:o},next:null},a.memoizedState=i,a=a.alternate,a!==null&&(a.memoizedState=i),i}function gy(a){var i=my(a).next.queue;vl(a,i,{},Yn())}function Ag(){return fn(Ol)}function py(){return Ha().memoizedState}function hy(){return Ha().memoizedState}function TD(a){for(var i=a.return;i!==null;){switch(i.tag){case 24:case 3:var o=Yn();a=Ur(o);var u=Mr(i,a,o);u!==null&&(Jn(u,i,o),hl(u,i,o)),i={cache:Wm()},a.payload=i;return}i=i.return}}function ND(a,i,o){var u=Yn();o={lane:u,revertLane:0,action:o,hasEagerState:!1,eagerState:null,next:null},pc(a)?Ay(i,o):(o=Bm(a,i,o,u),o!==null&&(Jn(o,a,u),yy(o,i,u)))}function fy(a,i,o){var u=Yn();vl(a,i,o,u)}function vl(a,i,o,u){var h={lane:u,revertLane:0,action:o,hasEagerState:!1,eagerState:null,next:null};if(pc(a))Ay(i,h);else{var E=a.alternate;if(a.lanes===0&&(E===null||E.lanes===0)&&(E=i.lastRenderedReducer,E!==null))try{var D=i.lastRenderedState,H=E(D,o);if(h.hasEagerState=!0,h.eagerState=H,Qn(H,D))return Xd(a,i,h,0),ga===null&&Jd(),!1}catch{}finally{}if(o=Bm(a,i,h,u),o!==null)return Jn(o,a,u),yy(o,i,u),!0}return!1}function yg(a,i,o,u){if(u={lane:2,revertLane:Jg(),action:u,hasEagerState:!1,eagerState:null,next:null},pc(a)){if(i)throw Error(r(479))}else i=Bm(a,o,u,2),i!==null&&Jn(i,a,2)}function pc(a){var i=a.alternate;return a===Ut||i!==null&&i===Ut}function Ay(a,i){no=lc=!0;var o=a.pending;o===null?i.next=i:(i.next=o.next,o.next=i),a.pending=i}function yy(a,i,o){if((o&4194048)!==0){var u=i.lanes;u&=a.pendingLanes,o|=u,i.lanes=o,Oa(a,o)}}var hc={readContext:fn,use:cc,useCallback:Ma,useContext:Ma,useEffect:Ma,useImperativeHandle:Ma,useLayoutEffect:Ma,useInsertionEffect:Ma,useMemo:Ma,useReducer:Ma,useRef:Ma,useState:Ma,useDebugValue:Ma,useDeferredValue:Ma,useTransition:Ma,useSyncExternalStore:Ma,useId:Ma,useHostTransitionStatus:Ma,useFormState:Ma,useActionState:Ma,useOptimistic:Ma,useMemoCache:Ma,useCacheRefresh:Ma},Ey={readContext:fn,use:cc,useCallback:function(a,i){return Dn().memoizedState=[a,i===void 0?null:i],a},useContext:fn,useEffect:ay,useImperativeHandle:function(a,i,o){o=o!=null?o.concat([a]):null,gc(4194308,4,sy.bind(null,i,a),o)},useLayoutEffect:function(a,i){return gc(4194308,4,a,i)},useInsertionEffect:function(a,i){gc(4,2,a,i)},useMemo:function(a,i){var o=Dn();i=i===void 0?null:i;var u=a();if(Ss){C(!0);try{a()}finally{C(!1)}}return o.memoizedState=[u,i],u},useReducer:function(a,i,o){var u=Dn();if(o!==void 0){var h=o(i);if(Ss){C(!0);try{o(i)}finally{C(!1)}}}else h=i;return u.memoizedState=u.baseState=h,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:h},u.queue=a,a=a.dispatch=ND.bind(null,Ut,a),[u.memoizedState,a]},useRef:function(a){var i=Dn();return a={current:a},i.memoizedState=a},useState:function(a){a=mg(a);var i=a.queue,o=fy.bind(null,Ut,i);return i.dispatch=o,[a.memoizedState,o]},useDebugValue:pg,useDeferredValue:function(a,i){var o=Dn();return hg(o,a,i)},useTransition:function(){var a=mg(!1);return a=uy.bind(null,Ut,a.queue,!0,!1),Dn().memoizedState=a,[!1,a]},useSyncExternalStore:function(a,i,o){var u=Ut,h=Dn();if(Xt){if(o===void 0)throw Error(r(407));o=o()}else{if(o=i(),ga===null)throw Error(r(349));(Qt&124)!==0||jA(u,i,o)}h.memoizedState=o;var E={value:o,getSnapshot:i};return h.queue=E,ay(VA.bind(null,u,E,a),[a]),u.flags|=2048,ro(9,mc(),HA.bind(null,u,E,o,i),null),o},useId:function(){var a=Dn(),i=ga.identifierPrefix;if(Xt){var o=ar,u=tr;o=(u&~(1<<32-N(u)-1)).toString(32)+o,i="«"+i+"R"+o,o=dc++,0<o&&(i+="H"+o.toString(32)),i+="»"}else o=vD++,i="«"+i+"r"+o.toString(32)+"»";return a.memoizedState=i},useHostTransitionStatus:Ag,useFormState:XA,useActionState:XA,useOptimistic:function(a){var i=Dn();i.memoizedState=i.baseState=a;var o={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return i.queue=o,i=yg.bind(null,Ut,!0,o),o.dispatch=i,[a,i]},useMemoCache:dg,useCacheRefresh:function(){return Dn().memoizedState=TD.bind(null,Ut)}},by={readContext:fn,use:cc,useCallback:ly,useContext:fn,useEffect:ny,useImperativeHandle:oy,useInsertionEffect:iy,useLayoutEffect:ry,useMemo:dy,useReducer:uc,useRef:ty,useState:function(){return uc(rr)},useDebugValue:pg,useDeferredValue:function(a,i){var o=Ha();return cy(o,ra.memoizedState,a,i)},useTransition:function(){var a=uc(rr)[0],i=Ha().memoizedState;return[typeof a=="boolean"?a:El(a),i]},useSyncExternalStore:OA,useId:py,useHostTransitionStatus:Ag,useFormState:$A,useActionState:$A,useOptimistic:function(a,i){var o=Ha();return KA(o,ra,a,i)},useMemoCache:dg,useCacheRefresh:hy},kD={readContext:fn,use:cc,useCallback:ly,useContext:fn,useEffect:ny,useImperativeHandle:oy,useInsertionEffect:iy,useLayoutEffect:ry,useMemo:dy,useReducer:ug,useRef:ty,useState:function(){return ug(rr)},useDebugValue:pg,useDeferredValue:function(a,i){var o=Ha();return ra===null?hg(o,a,i):cy(o,ra.memoizedState,a,i)},useTransition:function(){var a=ug(rr)[0],i=Ha().memoizedState;return[typeof a=="boolean"?a:El(a),i]},useSyncExternalStore:OA,useId:py,useHostTransitionStatus:Ag,useFormState:ey,useActionState:ey,useOptimistic:function(a,i){var o=Ha();return ra!==null?KA(o,ra,a,i):(o.baseState=a,[a,o.queue.dispatch])},useMemoCache:dg,useCacheRefresh:hy},so=null,wl=0;function fc(a){var i=wl;return wl+=1,so===null&&(so=[]),DA(so,a,i)}function Il(a,i){i=i.props.ref,a.ref=i!==void 0?i:null}function Ac(a,i){throw i.$$typeof===f?Error(r(525)):(a=Object.prototype.toString.call(i),Error(r(31,a==="[object Object]"?"object with keys {"+Object.keys(i).join(", ")+"}":a)))}function vy(a){var i=a._init;return i(a._payload)}function wy(a){function i(se,re){if(a){var ge=se.deletions;ge===null?(se.deletions=[re],se.flags|=16):ge.push(re)}}function o(se,re){if(!a)return null;for(;re!==null;)i(se,re),re=re.sibling;return null}function u(se){for(var re=new Map;se!==null;)se.key!==null?re.set(se.key,se):re.set(se.index,se),se=se.sibling;return re}function h(se,re){return se=er(se,re),se.index=0,se.sibling=null,se}function E(se,re,ge){return se.index=ge,a?(ge=se.alternate,ge!==null?(ge=ge.index,ge<re?(se.flags|=67108866,re):ge):(se.flags|=67108866,re)):(se.flags|=1048576,re)}function D(se){return a&&se.alternate===null&&(se.flags|=67108866),se}function H(se,re,ge,ke){return re===null||re.tag!==6?(re=Om(ge,se.mode,ke),re.return=se,re):(re=h(re,ge),re.return=se,re)}function $(se,re,ge,ke){var Ze=ge.type;return Ze===S?Ne(se,re,ge.props.children,ke,ge.key):re!==null&&(re.elementType===Ze||typeof Ze=="object"&&Ze!==null&&Ze.$$typeof===P&&vy(Ze)===re.type)?(re=h(re,ge.props),Il(re,ge),re.return=se,re):(re=Zd(ge.type,ge.key,ge.props,null,se.mode,ke),Il(re,ge),re.return=se,re)}function he(se,re,ge,ke){return re===null||re.tag!==4||re.stateNode.containerInfo!==ge.containerInfo||re.stateNode.implementation!==ge.implementation?(re=jm(ge,se.mode,ke),re.return=se,re):(re=h(re,ge.children||[]),re.return=se,re)}function Ne(se,re,ge,ke,Ze){return re===null||re.tag!==7?(re=As(ge,se.mode,ke,Ze),re.return=se,re):(re=h(re,ge),re.return=se,re)}function xe(se,re,ge){if(typeof re=="string"&&re!==""||typeof re=="number"||typeof re=="bigint")return re=Om(""+re,se.mode,ge),re.return=se,re;if(typeof re=="object"&&re!==null){switch(re.$$typeof){case v:return ge=Zd(re.type,re.key,re.props,null,se.mode,ge),Il(ge,re),ge.return=se,ge;case w:return re=jm(re,se.mode,ge),re.return=se,re;case P:var ke=re._init;return re=ke(re._payload),xe(se,re,ge)}if(fe(re)||ae(re))return re=As(re,se.mode,ge,null),re.return=se,re;if(typeof re.then=="function")return xe(se,fc(re),ge);if(re.$$typeof===x)return xe(se,nc(se,re),ge);Ac(se,re)}return null}function ye(se,re,ge,ke){var Ze=re!==null?re.key:null;if(typeof ge=="string"&&ge!==""||typeof ge=="number"||typeof ge=="bigint")return Ze!==null?null:H(se,re,""+ge,ke);if(typeof ge=="object"&&ge!==null){switch(ge.$$typeof){case v:return ge.key===Ze?$(se,re,ge,ke):null;case w:return ge.key===Ze?he(se,re,ge,ke):null;case P:return Ze=ge._init,ge=Ze(ge._payload),ye(se,re,ge,ke)}if(fe(ge)||ae(ge))return Ze!==null?null:Ne(se,re,ge,ke,null);if(typeof ge.then=="function")return ye(se,re,fc(ge),ke);if(ge.$$typeof===x)return ye(se,re,nc(se,ge),ke);Ac(se,ge)}return null}function be(se,re,ge,ke,Ze){if(typeof ke=="string"&&ke!==""||typeof ke=="number"||typeof ke=="bigint")return se=se.get(ge)||null,H(re,se,""+ke,Ze);if(typeof ke=="object"&&ke!==null){switch(ke.$$typeof){case v:return se=se.get(ke.key===null?ge:ke.key)||null,$(re,se,ke,Ze);case w:return se=se.get(ke.key===null?ge:ke.key)||null,he(re,se,ke,Ze);case P:var _t=ke._init;return ke=_t(ke._payload),be(se,re,ge,ke,Ze)}if(fe(ke)||ae(ke))return se=se.get(ge)||null,Ne(re,se,ke,Ze,null);if(typeof ke.then=="function")return be(se,re,ge,fc(ke),Ze);if(ke.$$typeof===x)return be(se,re,ge,nc(re,ke),Ze);Ac(re,ke)}return null}function At(se,re,ge,ke){for(var Ze=null,_t=null,st=re,gt=re=0,tn=null;st!==null&&gt<ge.length;gt++){st.index>gt?(tn=st,st=null):tn=st.sibling;var Wt=ye(se,st,ge[gt],ke);if(Wt===null){st===null&&(st=tn);break}a&&st&&Wt.alternate===null&&i(se,st),re=E(Wt,re,gt),_t===null?Ze=Wt:_t.sibling=Wt,_t=Wt,st=tn}if(gt===ge.length)return o(se,st),Xt&&Es(se,gt),Ze;if(st===null){for(;gt<ge.length;gt++)st=xe(se,ge[gt],ke),st!==null&&(re=E(st,re,gt),_t===null?Ze=st:_t.sibling=st,_t=st);return Xt&&Es(se,gt),Ze}for(st=u(st);gt<ge.length;gt++)tn=be(st,se,gt,ge[gt],ke),tn!==null&&(a&&tn.alternate!==null&&st.delete(tn.key===null?gt:tn.key),re=E(tn,re,gt),_t===null?Ze=tn:_t.sibling=tn,_t=tn);return a&&st.forEach(function(Xr){return i(se,Xr)}),Xt&&Es(se,gt),Ze}function dt(se,re,ge,ke){if(ge==null)throw Error(r(151));for(var Ze=null,_t=null,st=re,gt=re=0,tn=null,Wt=ge.next();st!==null&&!Wt.done;gt++,Wt=ge.next()){st.index>gt?(tn=st,st=null):tn=st.sibling;var Xr=ye(se,st,Wt.value,ke);if(Xr===null){st===null&&(st=tn);break}a&&st&&Xr.alternate===null&&i(se,st),re=E(Xr,re,gt),_t===null?Ze=Xr:_t.sibling=Xr,_t=Xr,st=tn}if(Wt.done)return o(se,st),Xt&&Es(se,gt),Ze;if(st===null){for(;!Wt.done;gt++,Wt=ge.next())Wt=xe(se,Wt.value,ke),Wt!==null&&(re=E(Wt,re,gt),_t===null?Ze=Wt:_t.sibling=Wt,_t=Wt);return Xt&&Es(se,gt),Ze}for(st=u(st);!Wt.done;gt++,Wt=ge.next())Wt=be(st,se,gt,Wt.value,ke),Wt!==null&&(a&&Wt.alternate!==null&&st.delete(Wt.key===null?gt:Wt.key),re=E(Wt,re,gt),_t===null?Ze=Wt:_t.sibling=Wt,_t=Wt);return a&&st.forEach(function(xR){return i(se,xR)}),Xt&&Es(se,gt),Ze}function oa(se,re,ge,ke){if(typeof ge=="object"&&ge!==null&&ge.type===S&&ge.key===null&&(ge=ge.props.children),typeof ge=="object"&&ge!==null){switch(ge.$$typeof){case v:e:{for(var Ze=ge.key;re!==null;){if(re.key===Ze){if(Ze=ge.type,Ze===S){if(re.tag===7){o(se,re.sibling),ke=h(re,ge.props.children),ke.return=se,se=ke;break e}}else if(re.elementType===Ze||typeof Ze=="object"&&Ze!==null&&Ze.$$typeof===P&&vy(Ze)===re.type){o(se,re.sibling),ke=h(re,ge.props),Il(ke,ge),ke.return=se,se=ke;break e}o(se,re);break}else i(se,re);re=re.sibling}ge.type===S?(ke=As(ge.props.children,se.mode,ke,ge.key),ke.return=se,se=ke):(ke=Zd(ge.type,ge.key,ge.props,null,se.mode,ke),Il(ke,ge),ke.return=se,se=ke)}return D(se);case w:e:{for(Ze=ge.key;re!==null;){if(re.key===Ze)if(re.tag===4&&re.stateNode.containerInfo===ge.containerInfo&&re.stateNode.implementation===ge.implementation){o(se,re.sibling),ke=h(re,ge.children||[]),ke.return=se,se=ke;break e}else{o(se,re);break}else i(se,re);re=re.sibling}ke=jm(ge,se.mode,ke),ke.return=se,se=ke}return D(se);case P:return Ze=ge._init,ge=Ze(ge._payload),oa(se,re,ge,ke)}if(fe(ge))return At(se,re,ge,ke);if(ae(ge)){if(Ze=ae(ge),typeof Ze!="function")throw Error(r(150));return ge=Ze.call(ge),dt(se,re,ge,ke)}if(typeof ge.then=="function")return oa(se,re,fc(ge),ke);if(ge.$$typeof===x)return oa(se,re,nc(se,ge),ke);Ac(se,ge)}return typeof ge=="string"&&ge!==""||typeof ge=="number"||typeof ge=="bigint"?(ge=""+ge,re!==null&&re.tag===6?(o(se,re.sibling),ke=h(re,ge),ke.return=se,se=ke):(o(se,re),ke=Om(ge,se.mode,ke),ke.return=se,se=ke),D(se)):o(se,re)}return function(se,re,ge,ke){try{wl=0;var Ze=oa(se,re,ge,ke);return so=null,Ze}catch(st){if(st===gl||st===rc)throw st;var _t=Kn(29,st,null,se.mode);return _t.lanes=ke,_t.return=se,_t}finally{}}}var oo=wy(!0),Iy=wy(!1),mi=J(null),Ui=null;function Fr(a){var i=a.alternate;ie(Ka,Ka.current&1),ie(mi,a),Ui===null&&(i===null||ao.current!==null||i.memoizedState!==null)&&(Ui=a)}function Cy(a){if(a.tag===22){if(ie(Ka,Ka.current),ie(mi,a),Ui===null){var i=a.alternate;i!==null&&i.memoizedState!==null&&(Ui=a)}}else Br()}function Br(){ie(Ka,Ka.current),ie(mi,mi.current)}function sr(a){W(mi),Ui===a&&(Ui=null),W(Ka)}var Ka=J(0);function yc(a){for(var i=a;i!==null;){if(i.tag===13){var o=i.memoizedState;if(o!==null&&(o=o.dehydrated,o===null||o.data==="$?"||lp(o)))return i}else if(i.tag===19&&i.memoizedProps.revealOrder!==void 0){if((i.flags&128)!==0)return i}else if(i.child!==null){i.child.return=i,i=i.child;continue}if(i===a)break;for(;i.sibling===null;){if(i.return===null||i.return===a)return null;i=i.return}i.sibling.return=i.return,i=i.sibling}return null}function Eg(a,i,o,u){i=a.memoizedState,o=o(u,i),o=o==null?i:A({},i,o),a.memoizedState=o,a.lanes===0&&(a.updateQueue.baseState=o)}var bg={enqueueSetState:function(a,i,o){a=a._reactInternals;var u=Yn(),h=Ur(u);h.payload=i,o!=null&&(h.callback=o),i=Mr(a,h,u),i!==null&&(Jn(i,a,u),hl(i,a,u))},enqueueReplaceState:function(a,i,o){a=a._reactInternals;var u=Yn(),h=Ur(u);h.tag=1,h.payload=i,o!=null&&(h.callback=o),i=Mr(a,h,u),i!==null&&(Jn(i,a,u),hl(i,a,u))},enqueueForceUpdate:function(a,i){a=a._reactInternals;var o=Yn(),u=Ur(o);u.tag=2,i!=null&&(u.callback=i),i=Mr(a,u,o),i!==null&&(Jn(i,a,o),hl(i,a,o))}};function Sy(a,i,o,u,h,E,D){return a=a.stateNode,typeof a.shouldComponentUpdate=="function"?a.shouldComponentUpdate(u,E,D):i.prototype&&i.prototype.isPureReactComponent?!rl(o,u)||!rl(h,E):!0}function Ty(a,i,o,u){a=i.state,typeof i.componentWillReceiveProps=="function"&&i.componentWillReceiveProps(o,u),typeof i.UNSAFE_componentWillReceiveProps=="function"&&i.UNSAFE_componentWillReceiveProps(o,u),i.state!==a&&bg.enqueueReplaceState(i,i.state,null)}function Ts(a,i){var o=i;if("ref"in i){o={};for(var u in i)u!=="ref"&&(o[u]=i[u])}if(a=a.defaultProps){o===i&&(o=A({},o));for(var h in a)o[h]===void 0&&(o[h]=a[h])}return o}var Ec=typeof reportError=="function"?reportError:function(a){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var i=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof a=="object"&&a!==null&&typeof a.message=="string"?String(a.message):String(a),error:a});if(!window.dispatchEvent(i))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",a);return}console.error(a)};function Ny(a){Ec(a)}function ky(a){console.error(a)}function xy(a){Ec(a)}function bc(a,i){try{var o=a.onUncaughtError;o(i.value,{componentStack:i.stack})}catch(u){setTimeout(function(){throw u})}}function Ly(a,i,o){try{var u=a.onCaughtError;u(o.value,{componentStack:o.stack,errorBoundary:i.tag===1?i.stateNode:null})}catch(h){setTimeout(function(){throw h})}}function vg(a,i,o){return o=Ur(o),o.tag=3,o.payload={element:null},o.callback=function(){bc(a,i)},o}function Dy(a){return a=Ur(a),a.tag=3,a}function Ry(a,i,o,u){var h=o.type.getDerivedStateFromError;if(typeof h=="function"){var E=u.value;a.payload=function(){return h(E)},a.callback=function(){Ly(i,o,u)}}var D=o.stateNode;D!==null&&typeof D.componentDidCatch=="function"&&(a.callback=function(){Ly(i,o,u),typeof h!="function"&&(zr===null?zr=new Set([this]):zr.add(this));var H=u.stack;this.componentDidCatch(u.value,{componentStack:H!==null?H:""})})}function xD(a,i,o,u,h){if(o.flags|=32768,u!==null&&typeof u=="object"&&typeof u.then=="function"){if(i=o.alternate,i!==null&&cl(i,o,h,!0),o=mi.current,o!==null){switch(o.tag){case 13:return Ui===null?Kg():o.alternate===null&&ka===0&&(ka=3),o.flags&=-257,o.flags|=65536,o.lanes=h,u===Jm?o.flags|=16384:(i=o.updateQueue,i===null?o.updateQueue=new Set([u]):i.add(u),Wg(a,u,h)),!1;case 22:return o.flags|=65536,u===Jm?o.flags|=16384:(i=o.updateQueue,i===null?(i={transitions:null,markerInstances:null,retryQueue:new Set([u])},o.updateQueue=i):(o=i.retryQueue,o===null?i.retryQueue=new Set([u]):o.add(u)),Wg(a,u,h)),!1}throw Error(r(435,o.tag))}return Wg(a,u,h),Kg(),!1}if(Xt)return i=mi.current,i!==null?((i.flags&65536)===0&&(i.flags|=256),i.flags|=65536,i.lanes=h,u!==zm&&(a=Error(r(422),{cause:u}),dl(li(a,o)))):(u!==zm&&(i=Error(r(423),{cause:u}),dl(li(i,o))),a=a.current.alternate,a.flags|=65536,h&=-h,a.lanes|=h,u=li(u,o),h=vg(a.stateNode,u,h),Zm(a,h),ka!==4&&(ka=2)),!1;var E=Error(r(520),{cause:u});if(E=li(E,o),Ll===null?Ll=[E]:Ll.push(E),ka!==4&&(ka=2),i===null)return!0;u=li(u,o),o=i;do{switch(o.tag){case 3:return o.flags|=65536,a=h&-h,o.lanes|=a,a=vg(o.stateNode,u,a),Zm(o,a),!1;case 1:if(i=o.type,E=o.stateNode,(o.flags&128)===0&&(typeof i.getDerivedStateFromError=="function"||E!==null&&typeof E.componentDidCatch=="function"&&(zr===null||!zr.has(E))))return o.flags|=65536,h&=-h,o.lanes|=h,h=Dy(h),Ry(h,a,o,u),Zm(o,h),!1}o=o.return}while(o!==null);return!1}var Uy=Error(r(461)),Za=!1;function on(a,i,o,u){i.child=a===null?Iy(i,null,o,u):oo(i,a.child,o,u)}function My(a,i,o,u,h){o=o.render;var E=i.ref;if("ref"in u){var D={};for(var H in u)H!=="ref"&&(D[H]=u[H])}else D=u;return Is(i),u=ig(a,i,o,D,E,h),H=rg(),a!==null&&!Za?(sg(a,i,h),or(a,i,h)):(Xt&&H&&Hm(i),i.flags|=1,on(a,i,u,h),i.child)}function _y(a,i,o,u,h){if(a===null){var E=o.type;return typeof E=="function"&&!Pm(E)&&E.defaultProps===void 0&&o.compare===null?(i.tag=15,i.type=E,Fy(a,i,E,u,h)):(a=Zd(o.type,null,u,i,i.mode,h),a.ref=i.ref,a.return=i,i.child=a)}if(E=a.child,!xg(a,h)){var D=E.memoizedProps;if(o=o.compare,o=o!==null?o:rl,o(D,u)&&a.ref===i.ref)return or(a,i,h)}return i.flags|=1,a=er(E,u),a.ref=i.ref,a.return=i,i.child=a}function Fy(a,i,o,u,h){if(a!==null){var E=a.memoizedProps;if(rl(E,u)&&a.ref===i.ref)if(Za=!1,i.pendingProps=u=E,xg(a,h))(a.flags&131072)!==0&&(Za=!0);else return i.lanes=a.lanes,or(a,i,h)}return wg(a,i,o,u,h)}function By(a,i,o){var u=i.pendingProps,h=u.children,E=a!==null?a.memoizedState:null;if(u.mode==="hidden"){if((i.flags&128)!==0){if(u=E!==null?E.baseLanes|o:o,a!==null){for(h=i.child=a.child,E=0;h!==null;)E=E|h.lanes|h.childLanes,h=h.sibling;i.childLanes=E&~u}else i.childLanes=0,i.child=null;return Py(a,i,u,o)}if((o&536870912)!==0)i.memoizedState={baseLanes:0,cachePool:null},a!==null&&ic(i,E!==null?E.cachePool:null),E!==null?FA(i,E):tg(),Cy(i);else return i.lanes=i.childLanes=536870912,Py(a,i,E!==null?E.baseLanes|o:o,o)}else E!==null?(ic(i,E.cachePool),FA(i,E),Br(),i.memoizedState=null):(a!==null&&ic(i,null),tg(),Br());return on(a,i,h,o),i.child}function Py(a,i,o,u){var h=Ym();return h=h===null?null:{parent:Qa._currentValue,pool:h},i.memoizedState={baseLanes:o,cachePool:h},a!==null&&ic(i,null),tg(),Cy(i),a!==null&&cl(a,i,u,!0),null}function vc(a,i){var o=i.ref;if(o===null)a!==null&&a.ref!==null&&(i.flags|=4194816);else{if(typeof o!="function"&&typeof o!="object")throw Error(r(284));(a===null||a.ref!==o)&&(i.flags|=4194816)}}function wg(a,i,o,u,h){return Is(i),o=ig(a,i,o,u,void 0,h),u=rg(),a!==null&&!Za?(sg(a,i,h),or(a,i,h)):(Xt&&u&&Hm(i),i.flags|=1,on(a,i,o,h),i.child)}function Oy(a,i,o,u,h,E){return Is(i),i.updateQueue=null,o=PA(i,u,o,h),BA(a),u=rg(),a!==null&&!Za?(sg(a,i,E),or(a,i,E)):(Xt&&u&&Hm(i),i.flags|=1,on(a,i,o,E),i.child)}function jy(a,i,o,u,h){if(Is(i),i.stateNode===null){var E=Xs,D=o.contextType;typeof D=="object"&&D!==null&&(E=fn(D)),E=new o(u,E),i.memoizedState=E.state!==null&&E.state!==void 0?E.state:null,E.updater=bg,i.stateNode=E,E._reactInternals=i,E=i.stateNode,E.props=u,E.state=i.memoizedState,E.refs={},Xm(i),D=o.contextType,E.context=typeof D=="object"&&D!==null?fn(D):Xs,E.state=i.memoizedState,D=o.getDerivedStateFromProps,typeof D=="function"&&(Eg(i,o,D,u),E.state=i.memoizedState),typeof o.getDerivedStateFromProps=="function"||typeof E.getSnapshotBeforeUpdate=="function"||typeof E.UNSAFE_componentWillMount!="function"&&typeof E.componentWillMount!="function"||(D=E.state,typeof E.componentWillMount=="function"&&E.componentWillMount(),typeof E.UNSAFE_componentWillMount=="function"&&E.UNSAFE_componentWillMount(),D!==E.state&&bg.enqueueReplaceState(E,E.state,null),Al(i,u,E,h),fl(),E.state=i.memoizedState),typeof E.componentDidMount=="function"&&(i.flags|=4194308),u=!0}else if(a===null){E=i.stateNode;var H=i.memoizedProps,$=Ts(o,H);E.props=$;var he=E.context,Ne=o.contextType;D=Xs,typeof Ne=="object"&&Ne!==null&&(D=fn(Ne));var xe=o.getDerivedStateFromProps;Ne=typeof xe=="function"||typeof E.getSnapshotBeforeUpdate=="function",H=i.pendingProps!==H,Ne||typeof E.UNSAFE_componentWillReceiveProps!="function"&&typeof E.componentWillReceiveProps!="function"||(H||he!==D)&&Ty(i,E,u,D),Rr=!1;var ye=i.memoizedState;E.state=ye,Al(i,u,E,h),fl(),he=i.memoizedState,H||ye!==he||Rr?(typeof xe=="function"&&(Eg(i,o,xe,u),he=i.memoizedState),($=Rr||Sy(i,o,$,u,ye,he,D))?(Ne||typeof E.UNSAFE_componentWillMount!="function"&&typeof E.componentWillMount!="function"||(typeof E.componentWillMount=="function"&&E.componentWillMount(),typeof E.UNSAFE_componentWillMount=="function"&&E.UNSAFE_componentWillMount()),typeof E.componentDidMount=="function"&&(i.flags|=4194308)):(typeof E.componentDidMount=="function"&&(i.flags|=4194308),i.memoizedProps=u,i.memoizedState=he),E.props=u,E.state=he,E.context=D,u=$):(typeof E.componentDidMount=="function"&&(i.flags|=4194308),u=!1)}else{E=i.stateNode,$m(a,i),D=i.memoizedProps,Ne=Ts(o,D),E.props=Ne,xe=i.pendingProps,ye=E.context,he=o.contextType,$=Xs,typeof he=="object"&&he!==null&&($=fn(he)),H=o.getDerivedStateFromProps,(he=typeof H=="function"||typeof E.getSnapshotBeforeUpdate=="function")||typeof E.UNSAFE_componentWillReceiveProps!="function"&&typeof E.componentWillReceiveProps!="function"||(D!==xe||ye!==$)&&Ty(i,E,u,$),Rr=!1,ye=i.memoizedState,E.state=ye,Al(i,u,E,h),fl();var be=i.memoizedState;D!==xe||ye!==be||Rr||a!==null&&a.dependencies!==null&&ac(a.dependencies)?(typeof H=="function"&&(Eg(i,o,H,u),be=i.memoizedState),(Ne=Rr||Sy(i,o,Ne,u,ye,be,$)||a!==null&&a.dependencies!==null&&ac(a.dependencies))?(he||typeof E.UNSAFE_componentWillUpdate!="function"&&typeof E.componentWillUpdate!="function"||(typeof E.componentWillUpdate=="function"&&E.componentWillUpdate(u,be,$),typeof E.UNSAFE_componentWillUpdate=="function"&&E.UNSAFE_componentWillUpdate(u,be,$)),typeof E.componentDidUpdate=="function"&&(i.flags|=4),typeof E.getSnapshotBeforeUpdate=="function"&&(i.flags|=1024)):(typeof E.componentDidUpdate!="function"||D===a.memoizedProps&&ye===a.memoizedState||(i.flags|=4),typeof E.getSnapshotBeforeUpdate!="function"||D===a.memoizedProps&&ye===a.memoizedState||(i.flags|=1024),i.memoizedProps=u,i.memoizedState=be),E.props=u,E.state=be,E.context=$,u=Ne):(typeof E.componentDidUpdate!="function"||D===a.memoizedProps&&ye===a.memoizedState||(i.flags|=4),typeof E.getSnapshotBeforeUpdate!="function"||D===a.memoizedProps&&ye===a.memoizedState||(i.flags|=1024),u=!1)}return E=u,vc(a,i),u=(i.flags&128)!==0,E||u?(E=i.stateNode,o=u&&typeof o.getDerivedStateFromError!="function"?null:E.render(),i.flags|=1,a!==null&&u?(i.child=oo(i,a.child,null,h),i.child=oo(i,null,o,h)):on(a,i,o,h),i.memoizedState=E.state,a=i.child):a=or(a,i,h),a}function Hy(a,i,o,u){return ll(),i.flags|=256,on(a,i,o,u),i.child}var Ig={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Cg(a){return{baseLanes:a,cachePool:kA()}}function Sg(a,i,o){return a=a!==null?a.childLanes&~o:0,i&&(a|=gi),a}function Vy(a,i,o){var u=i.pendingProps,h=!1,E=(i.flags&128)!==0,D;if((D=E)||(D=a!==null&&a.memoizedState===null?!1:(Ka.current&2)!==0),D&&(h=!0,i.flags&=-129),D=(i.flags&32)!==0,i.flags&=-33,a===null){if(Xt){if(h?Fr(i):Br(),Xt){var H=Na,$;if($=H){e:{for($=H,H=Ri;$.nodeType!==8;){if(!H){H=null;break e}if($=Ci($.nextSibling),$===null){H=null;break e}}H=$}H!==null?(i.memoizedState={dehydrated:H,treeContext:ys!==null?{id:tr,overflow:ar}:null,retryLane:536870912,hydrationErrors:null},$=Kn(18,null,null,0),$.stateNode=H,$.return=i,i.child=$,In=i,Na=null,$=!0):$=!1}$||vs(i)}if(H=i.memoizedState,H!==null&&(H=H.dehydrated,H!==null))return lp(H)?i.lanes=32:i.lanes=536870912,null;sr(i)}return H=u.children,u=u.fallback,h?(Br(),h=i.mode,H=wc({mode:"hidden",children:H},h),u=As(u,h,o,null),H.return=i,u.return=i,H.sibling=u,i.child=H,h=i.child,h.memoizedState=Cg(o),h.childLanes=Sg(a,D,o),i.memoizedState=Ig,u):(Fr(i),Tg(i,H))}if($=a.memoizedState,$!==null&&(H=$.dehydrated,H!==null)){if(E)i.flags&256?(Fr(i),i.flags&=-257,i=Ng(a,i,o)):i.memoizedState!==null?(Br(),i.child=a.child,i.flags|=128,i=null):(Br(),h=u.fallback,H=i.mode,u=wc({mode:"visible",children:u.children},H),h=As(h,H,o,null),h.flags|=2,u.return=i,h.return=i,u.sibling=h,i.child=u,oo(i,a.child,null,o),u=i.child,u.memoizedState=Cg(o),u.childLanes=Sg(a,D,o),i.memoizedState=Ig,i=h);else if(Fr(i),lp(H)){if(D=H.nextSibling&&H.nextSibling.dataset,D)var he=D.dgst;D=he,u=Error(r(419)),u.stack="",u.digest=D,dl({value:u,source:null,stack:null}),i=Ng(a,i,o)}else if(Za||cl(a,i,o,!1),D=(o&a.childLanes)!==0,Za||D){if(D=ga,D!==null&&(u=o&-o,u=(u&42)!==0?1:xt(u),u=(u&(D.suspendedLanes|o))!==0?0:u,u!==0&&u!==$.retryLane))throw $.retryLane=u,Js(a,u),Jn(D,a,u),Uy;H.data==="$?"||Kg(),i=Ng(a,i,o)}else H.data==="$?"?(i.flags|=192,i.child=a.child,i=null):(a=$.treeContext,Na=Ci(H.nextSibling),In=i,Xt=!0,bs=null,Ri=!1,a!==null&&(ci[ui++]=tr,ci[ui++]=ar,ci[ui++]=ys,tr=a.id,ar=a.overflow,ys=i),i=Tg(i,u.children),i.flags|=4096);return i}return h?(Br(),h=u.fallback,H=i.mode,$=a.child,he=$.sibling,u=er($,{mode:"hidden",children:u.children}),u.subtreeFlags=$.subtreeFlags&65011712,he!==null?h=er(he,h):(h=As(h,H,o,null),h.flags|=2),h.return=i,u.return=i,u.sibling=h,i.child=u,u=h,h=i.child,H=a.child.memoizedState,H===null?H=Cg(o):($=H.cachePool,$!==null?(he=Qa._currentValue,$=$.parent!==he?{parent:he,pool:he}:$):$=kA(),H={baseLanes:H.baseLanes|o,cachePool:$}),h.memoizedState=H,h.childLanes=Sg(a,D,o),i.memoizedState=Ig,u):(Fr(i),o=a.child,a=o.sibling,o=er(o,{mode:"visible",children:u.children}),o.return=i,o.sibling=null,a!==null&&(D=i.deletions,D===null?(i.deletions=[a],i.flags|=16):D.push(a)),i.child=o,i.memoizedState=null,o)}function Tg(a,i){return i=wc({mode:"visible",children:i},a.mode),i.return=a,a.child=i}function wc(a,i){return a=Kn(22,a,null,i),a.lanes=0,a.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},a}function Ng(a,i,o){return oo(i,a.child,null,o),a=Tg(i,i.pendingProps.children),a.flags|=2,i.memoizedState=null,a}function zy(a,i,o){a.lanes|=i;var u=a.alternate;u!==null&&(u.lanes|=i),Km(a.return,i,o)}function kg(a,i,o,u,h){var E=a.memoizedState;E===null?a.memoizedState={isBackwards:i,rendering:null,renderingStartTime:0,last:u,tail:o,tailMode:h}:(E.isBackwards=i,E.rendering=null,E.renderingStartTime=0,E.last=u,E.tail=o,E.tailMode=h)}function Qy(a,i,o){var u=i.pendingProps,h=u.revealOrder,E=u.tail;if(on(a,i,u.children,o),u=Ka.current,(u&2)!==0)u=u&1|2,i.flags|=128;else{if(a!==null&&(a.flags&128)!==0)e:for(a=i.child;a!==null;){if(a.tag===13)a.memoizedState!==null&&zy(a,o,i);else if(a.tag===19)zy(a,o,i);else if(a.child!==null){a.child.return=a,a=a.child;continue}if(a===i)break e;for(;a.sibling===null;){if(a.return===null||a.return===i)break e;a=a.return}a.sibling.return=a.return,a=a.sibling}u&=1}switch(ie(Ka,u),h){case"forwards":for(o=i.child,h=null;o!==null;)a=o.alternate,a!==null&&yc(a)===null&&(h=o),o=o.sibling;o=h,o===null?(h=i.child,i.child=null):(h=o.sibling,o.sibling=null),kg(i,!1,h,o,E);break;case"backwards":for(o=null,h=i.child,i.child=null;h!==null;){if(a=h.alternate,a!==null&&yc(a)===null){i.child=h;break}a=h.sibling,h.sibling=o,o=h,h=a}kg(i,!0,o,null,E);break;case"together":kg(i,!1,null,null,void 0);break;default:i.memoizedState=null}return i.child}function or(a,i,o){if(a!==null&&(i.dependencies=a.dependencies),Vr|=i.lanes,(o&i.childLanes)===0)if(a!==null){if(cl(a,i,o,!1),(o&i.childLanes)===0)return null}else return null;if(a!==null&&i.child!==a.child)throw Error(r(153));if(i.child!==null){for(a=i.child,o=er(a,a.pendingProps),i.child=o,o.return=i;a.sibling!==null;)a=a.sibling,o=o.sibling=er(a,a.pendingProps),o.return=i;o.sibling=null}return i.child}function xg(a,i){return(a.lanes&i)!==0?!0:(a=a.dependencies,!!(a!==null&&ac(a)))}function LD(a,i,o){switch(i.tag){case 3:_e(i,i.stateNode.containerInfo),Dr(i,Qa,a.memoizedState.cache),ll();break;case 27:case 5:Ye(i);break;case 4:_e(i,i.stateNode.containerInfo);break;case 10:Dr(i,i.type,i.memoizedProps.value);break;case 13:var u=i.memoizedState;if(u!==null)return u.dehydrated!==null?(Fr(i),i.flags|=128,null):(o&i.child.childLanes)!==0?Vy(a,i,o):(Fr(i),a=or(a,i,o),a!==null?a.sibling:null);Fr(i);break;case 19:var h=(a.flags&128)!==0;if(u=(o&i.childLanes)!==0,u||(cl(a,i,o,!1),u=(o&i.childLanes)!==0),h){if(u)return Qy(a,i,o);i.flags|=128}if(h=i.memoizedState,h!==null&&(h.rendering=null,h.tail=null,h.lastEffect=null),ie(Ka,Ka.current),u)break;return null;case 22:case 23:return i.lanes=0,By(a,i,o);case 24:Dr(i,Qa,a.memoizedState.cache)}return or(a,i,o)}function Ky(a,i,o){if(a!==null)if(a.memoizedProps!==i.pendingProps)Za=!0;else{if(!xg(a,o)&&(i.flags&128)===0)return Za=!1,LD(a,i,o);Za=(a.flags&131072)!==0}else Za=!1,Xt&&(i.flags&1048576)!==0&&vA(i,tc,i.index);switch(i.lanes=0,i.tag){case 16:e:{a=i.pendingProps;var u=i.elementType,h=u._init;if(u=h(u._payload),i.type=u,typeof u=="function")Pm(u)?(a=Ts(u,a),i.tag=1,i=jy(null,i,u,a,o)):(i.tag=0,i=wg(null,i,u,a,o));else{if(u!=null){if(h=u.$$typeof,h===O){i.tag=11,i=My(null,i,u,a,o);break e}else if(h===G){i.tag=14,i=_y(null,i,u,a,o);break e}}throw i=ne(u)||u,Error(r(306,i,""))}}return i;case 0:return wg(a,i,i.type,i.pendingProps,o);case 1:return u=i.type,h=Ts(u,i.pendingProps),jy(a,i,u,h,o);case 3:e:{if(_e(i,i.stateNode.containerInfo),a===null)throw Error(r(387));u=i.pendingProps;var E=i.memoizedState;h=E.element,$m(a,i),Al(i,u,null,o);var D=i.memoizedState;if(u=D.cache,Dr(i,Qa,u),u!==E.cache&&Gm(i,[Qa],o,!0),fl(),u=D.element,E.isDehydrated)if(E={element:u,isDehydrated:!1,cache:D.cache},i.updateQueue.baseState=E,i.memoizedState=E,i.flags&256){i=Hy(a,i,u,o);break e}else if(u!==h){h=li(Error(r(424)),i),dl(h),i=Hy(a,i,u,o);break e}else{switch(a=i.stateNode.containerInfo,a.nodeType){case 9:a=a.body;break;default:a=a.nodeName==="HTML"?a.ownerDocument.body:a}for(Na=Ci(a.firstChild),In=i,Xt=!0,bs=null,Ri=!0,o=Iy(i,null,u,o),i.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling}else{if(ll(),u===h){i=or(a,i,o);break e}on(a,i,u,o)}i=i.child}return i;case 26:return vc(a,i),a===null?(o=Y0(i.type,null,i.pendingProps,null))?i.memoizedState=o:Xt||(o=i.type,a=i.pendingProps,u=Fc(ve.current).createElement(o),u[Mt]=i,u[Kt]=a,dn(u,o,a),ze(u),i.stateNode=u):i.memoizedState=Y0(i.type,a.memoizedProps,i.pendingProps,a.memoizedState),null;case 27:return Ye(i),a===null&&Xt&&(u=i.stateNode=G0(i.type,i.pendingProps,ve.current),In=i,Ri=!0,h=Na,Gr(i.type)?(dp=h,Na=Ci(u.firstChild)):Na=h),on(a,i,i.pendingProps.children,o),vc(a,i),a===null&&(i.flags|=4194304),i.child;case 5:return a===null&&Xt&&((h=u=Na)&&(u=iR(u,i.type,i.pendingProps,Ri),u!==null?(i.stateNode=u,In=i,Na=Ci(u.firstChild),Ri=!1,h=!0):h=!1),h||vs(i)),Ye(i),h=i.type,E=i.pendingProps,D=a!==null?a.memoizedProps:null,u=E.children,rp(h,E)?u=null:D!==null&&rp(h,D)&&(i.flags|=32),i.memoizedState!==null&&(h=ig(a,i,wD,null,null,o),Ol._currentValue=h),vc(a,i),on(a,i,u,o),i.child;case 6:return a===null&&Xt&&((a=o=Na)&&(o=rR(o,i.pendingProps,Ri),o!==null?(i.stateNode=o,In=i,Na=null,a=!0):a=!1),a||vs(i)),null;case 13:return Vy(a,i,o);case 4:return _e(i,i.stateNode.containerInfo),u=i.pendingProps,a===null?i.child=oo(i,null,u,o):on(a,i,u,o),i.child;case 11:return My(a,i,i.type,i.pendingProps,o);case 7:return on(a,i,i.pendingProps,o),i.child;case 8:return on(a,i,i.pendingProps.children,o),i.child;case 12:return on(a,i,i.pendingProps.children,o),i.child;case 10:return u=i.pendingProps,Dr(i,i.type,u.value),on(a,i,u.children,o),i.child;case 9:return h=i.type._context,u=i.pendingProps.children,Is(i),h=fn(h),u=u(h),i.flags|=1,on(a,i,u,o),i.child;case 14:return _y(a,i,i.type,i.pendingProps,o);case 15:return Fy(a,i,i.type,i.pendingProps,o);case 19:return Qy(a,i,o);case 31:return u=i.pendingProps,o=i.mode,u={mode:u.mode,children:u.children},a===null?(o=wc(u,o),o.ref=i.ref,i.child=o,o.return=i,i=o):(o=er(a.child,u),o.ref=i.ref,i.child=o,o.return=i,i=o),i;case 22:return By(a,i,o);case 24:return Is(i),u=fn(Qa),a===null?(h=Ym(),h===null&&(h=ga,E=Wm(),h.pooledCache=E,E.refCount++,E!==null&&(h.pooledCacheLanes|=o),h=E),i.memoizedState={parent:u,cache:h},Xm(i),Dr(i,Qa,h)):((a.lanes&o)!==0&&($m(a,i),Al(i,null,null,o),fl()),h=a.memoizedState,E=i.memoizedState,h.parent!==u?(h={parent:u,cache:u},i.memoizedState=h,i.lanes===0&&(i.memoizedState=i.updateQueue.baseState=h),Dr(i,Qa,u)):(u=E.cache,Dr(i,Qa,u),u!==h.cache&&Gm(i,[Qa],o,!0))),on(a,i,i.pendingProps.children,o),i.child;case 29:throw i.pendingProps}throw Error(r(156,i.tag))}function lr(a){a.flags|=4}function Gy(a,i){if(i.type!=="stylesheet"||(i.state.loading&4)!==0)a.flags&=-16777217;else if(a.flags|=16777216,!eE(i)){if(i=mi.current,i!==null&&((Qt&4194048)===Qt?Ui!==null:(Qt&62914560)!==Qt&&(Qt&536870912)===0||i!==Ui))throw pl=Jm,xA;a.flags|=8192}}function Ic(a,i){i!==null&&(a.flags|=4),a.flags&16384&&(i=a.tag!==22?La():536870912,a.lanes|=i,mo|=i)}function Cl(a,i){if(!Xt)switch(a.tailMode){case"hidden":i=a.tail;for(var o=null;i!==null;)i.alternate!==null&&(o=i),i=i.sibling;o===null?a.tail=null:o.sibling=null;break;case"collapsed":o=a.tail;for(var u=null;o!==null;)o.alternate!==null&&(u=o),o=o.sibling;u===null?i||a.tail===null?a.tail=null:a.tail.sibling=null:u.sibling=null}}function Ia(a){var i=a.alternate!==null&&a.alternate.child===a.child,o=0,u=0;if(i)for(var h=a.child;h!==null;)o|=h.lanes|h.childLanes,u|=h.subtreeFlags&65011712,u|=h.flags&65011712,h.return=a,h=h.sibling;else for(h=a.child;h!==null;)o|=h.lanes|h.childLanes,u|=h.subtreeFlags,u|=h.flags,h.return=a,h=h.sibling;return a.subtreeFlags|=u,a.childLanes=o,i}function DD(a,i,o){var u=i.pendingProps;switch(Vm(i),i.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Ia(i),null;case 1:return Ia(i),null;case 3:return o=i.stateNode,u=null,a!==null&&(u=a.memoizedState.cache),i.memoizedState.cache!==u&&(i.flags|=2048),ir(Qa),Ke(),o.pendingContext&&(o.context=o.pendingContext,o.pendingContext=null),(a===null||a.child===null)&&(ol(i)?lr(i):a===null||a.memoizedState.isDehydrated&&(i.flags&256)===0||(i.flags|=1024,CA())),Ia(i),null;case 26:return o=i.memoizedState,a===null?(lr(i),o!==null?(Ia(i),Gy(i,o)):(Ia(i),i.flags&=-16777217)):o?o!==a.memoizedState?(lr(i),Ia(i),Gy(i,o)):(Ia(i),i.flags&=-16777217):(a.memoizedProps!==u&&lr(i),Ia(i),i.flags&=-16777217),null;case 27:Ot(i),o=ve.current;var h=i.type;if(a!==null&&i.stateNode!=null)a.memoizedProps!==u&&lr(i);else{if(!u){if(i.stateNode===null)throw Error(r(166));return Ia(i),null}a=we.current,ol(i)?wA(i):(a=G0(h,u,o),i.stateNode=a,lr(i))}return Ia(i),null;case 5:if(Ot(i),o=i.type,a!==null&&i.stateNode!=null)a.memoizedProps!==u&&lr(i);else{if(!u){if(i.stateNode===null)throw Error(r(166));return Ia(i),null}if(a=we.current,ol(i))wA(i);else{switch(h=Fc(ve.current),a){case 1:a=h.createElementNS("http://www.w3.org/2000/svg",o);break;case 2:a=h.createElementNS("http://www.w3.org/1998/Math/MathML",o);break;default:switch(o){case"svg":a=h.createElementNS("http://www.w3.org/2000/svg",o);break;case"math":a=h.createElementNS("http://www.w3.org/1998/Math/MathML",o);break;case"script":a=h.createElement("div"),a.innerHTML="<script><\/script>",a=a.removeChild(a.firstChild);break;case"select":a=typeof u.is=="string"?h.createElement("select",{is:u.is}):h.createElement("select"),u.multiple?a.multiple=!0:u.size&&(a.size=u.size);break;default:a=typeof u.is=="string"?h.createElement(o,{is:u.is}):h.createElement(o)}}a[Mt]=i,a[Kt]=u;e:for(h=i.child;h!==null;){if(h.tag===5||h.tag===6)a.appendChild(h.stateNode);else if(h.tag!==4&&h.tag!==27&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===i)break e;for(;h.sibling===null;){if(h.return===null||h.return===i)break e;h=h.return}h.sibling.return=h.return,h=h.sibling}i.stateNode=a;e:switch(dn(a,o,u),o){case"button":case"input":case"select":case"textarea":a=!!u.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&lr(i)}}return Ia(i),i.flags&=-16777217,null;case 6:if(a&&i.stateNode!=null)a.memoizedProps!==u&&lr(i);else{if(typeof u!="string"&&i.stateNode===null)throw Error(r(166));if(a=ve.current,ol(i)){if(a=i.stateNode,o=i.memoizedProps,u=null,h=In,h!==null)switch(h.tag){case 27:case 5:u=h.memoizedProps}a[Mt]=i,a=!!(a.nodeValue===o||u!==null&&u.suppressHydrationWarning===!0||O0(a.nodeValue,o)),a||vs(i)}else a=Fc(a).createTextNode(u),a[Mt]=i,i.stateNode=a}return Ia(i),null;case 13:if(u=i.memoizedState,a===null||a.memoizedState!==null&&a.memoizedState.dehydrated!==null){if(h=ol(i),u!==null&&u.dehydrated!==null){if(a===null){if(!h)throw Error(r(318));if(h=i.memoizedState,h=h!==null?h.dehydrated:null,!h)throw Error(r(317));h[Mt]=i}else ll(),(i.flags&128)===0&&(i.memoizedState=null),i.flags|=4;Ia(i),h=!1}else h=CA(),a!==null&&a.memoizedState!==null&&(a.memoizedState.hydrationErrors=h),h=!0;if(!h)return i.flags&256?(sr(i),i):(sr(i),null)}if(sr(i),(i.flags&128)!==0)return i.lanes=o,i;if(o=u!==null,a=a!==null&&a.memoizedState!==null,o){u=i.child,h=null,u.alternate!==null&&u.alternate.memoizedState!==null&&u.alternate.memoizedState.cachePool!==null&&(h=u.alternate.memoizedState.cachePool.pool);var E=null;u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(E=u.memoizedState.cachePool.pool),E!==h&&(u.flags|=2048)}return o!==a&&o&&(i.child.flags|=8192),Ic(i,i.updateQueue),Ia(i),null;case 4:return Ke(),a===null&&ep(i.stateNode.containerInfo),Ia(i),null;case 10:return ir(i.type),Ia(i),null;case 19:if(W(Ka),h=i.memoizedState,h===null)return Ia(i),null;if(u=(i.flags&128)!==0,E=h.rendering,E===null)if(u)Cl(h,!1);else{if(ka!==0||a!==null&&(a.flags&128)!==0)for(a=i.child;a!==null;){if(E=yc(a),E!==null){for(i.flags|=128,Cl(h,!1),a=E.updateQueue,i.updateQueue=a,Ic(i,a),i.subtreeFlags=0,a=o,o=i.child;o!==null;)bA(o,a),o=o.sibling;return ie(Ka,Ka.current&1|2),i.child}a=a.sibling}h.tail!==null&&Be()>Tc&&(i.flags|=128,u=!0,Cl(h,!1),i.lanes=4194304)}else{if(!u)if(a=yc(E),a!==null){if(i.flags|=128,u=!0,a=a.updateQueue,i.updateQueue=a,Ic(i,a),Cl(h,!0),h.tail===null&&h.tailMode==="hidden"&&!E.alternate&&!Xt)return Ia(i),null}else 2*Be()-h.renderingStartTime>Tc&&o!==536870912&&(i.flags|=128,u=!0,Cl(h,!1),i.lanes=4194304);h.isBackwards?(E.sibling=i.child,i.child=E):(a=h.last,a!==null?a.sibling=E:i.child=E,h.last=E)}return h.tail!==null?(i=h.tail,h.rendering=i,h.tail=i.sibling,h.renderingStartTime=Be(),i.sibling=null,a=Ka.current,ie(Ka,u?a&1|2:a&1),i):(Ia(i),null);case 22:case 23:return sr(i),ag(),u=i.memoizedState!==null,a!==null?a.memoizedState!==null!==u&&(i.flags|=8192):u&&(i.flags|=8192),u?(o&536870912)!==0&&(i.flags&128)===0&&(Ia(i),i.subtreeFlags&6&&(i.flags|=8192)):Ia(i),o=i.updateQueue,o!==null&&Ic(i,o.retryQueue),o=null,a!==null&&a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(o=a.memoizedState.cachePool.pool),u=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(u=i.memoizedState.cachePool.pool),u!==o&&(i.flags|=2048),a!==null&&W(Cs),null;case 24:return o=null,a!==null&&(o=a.memoizedState.cache),i.memoizedState.cache!==o&&(i.flags|=2048),ir(Qa),Ia(i),null;case 25:return null;case 30:return null}throw Error(r(156,i.tag))}function RD(a,i){switch(Vm(i),i.tag){case 1:return a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 3:return ir(Qa),Ke(),a=i.flags,(a&65536)!==0&&(a&128)===0?(i.flags=a&-65537|128,i):null;case 26:case 27:case 5:return Ot(i),null;case 13:if(sr(i),a=i.memoizedState,a!==null&&a.dehydrated!==null){if(i.alternate===null)throw Error(r(340));ll()}return a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 19:return W(Ka),null;case 4:return Ke(),null;case 10:return ir(i.type),null;case 22:case 23:return sr(i),ag(),a!==null&&W(Cs),a=i.flags,a&65536?(i.flags=a&-65537|128,i):null;case 24:return ir(Qa),null;case 25:return null;default:return null}}function Wy(a,i){switch(Vm(i),i.tag){case 3:ir(Qa),Ke();break;case 26:case 27:case 5:Ot(i);break;case 4:Ke();break;case 13:sr(i);break;case 19:W(Ka);break;case 10:ir(i.type);break;case 22:case 23:sr(i),ag(),a!==null&&W(Cs);break;case 24:ir(Qa)}}function Sl(a,i){try{var o=i.updateQueue,u=o!==null?o.lastEffect:null;if(u!==null){var h=u.next;o=h;do{if((o.tag&a)===a){u=void 0;var E=o.create,D=o.inst;u=E(),D.destroy=u}o=o.next}while(o!==h)}}catch(H){ua(i,i.return,H)}}function Pr(a,i,o){try{var u=i.updateQueue,h=u!==null?u.lastEffect:null;if(h!==null){var E=h.next;u=E;do{if((u.tag&a)===a){var D=u.inst,H=D.destroy;if(H!==void 0){D.destroy=void 0,h=i;var $=o,he=H;try{he()}catch(Ne){ua(h,$,Ne)}}}u=u.next}while(u!==E)}}catch(Ne){ua(i,i.return,Ne)}}function qy(a){var i=a.updateQueue;if(i!==null){var o=a.stateNode;try{_A(i,o)}catch(u){ua(a,a.return,u)}}}function Yy(a,i,o){o.props=Ts(a.type,a.memoizedProps),o.state=a.memoizedState;try{o.componentWillUnmount()}catch(u){ua(a,i,u)}}function Tl(a,i){try{var o=a.ref;if(o!==null){switch(a.tag){case 26:case 27:case 5:var u=a.stateNode;break;case 30:u=a.stateNode;break;default:u=a.stateNode}typeof o=="function"?a.refCleanup=o(u):o.current=u}}catch(h){ua(a,i,h)}}function Mi(a,i){var o=a.ref,u=a.refCleanup;if(o!==null)if(typeof u=="function")try{u()}catch(h){ua(a,i,h)}finally{a.refCleanup=null,a=a.alternate,a!=null&&(a.refCleanup=null)}else if(typeof o=="function")try{o(null)}catch(h){ua(a,i,h)}else o.current=null}function Jy(a){var i=a.type,o=a.memoizedProps,u=a.stateNode;try{e:switch(i){case"button":case"input":case"select":case"textarea":o.autoFocus&&u.focus();break e;case"img":o.src?u.src=o.src:o.srcSet&&(u.srcset=o.srcSet)}}catch(h){ua(a,a.return,h)}}function Lg(a,i,o){try{var u=a.stateNode;ZD(u,a.type,o,i),u[Kt]=i}catch(h){ua(a,a.return,h)}}function Xy(a){return a.tag===5||a.tag===3||a.tag===26||a.tag===27&&Gr(a.type)||a.tag===4}function Dg(a){e:for(;;){for(;a.sibling===null;){if(a.return===null||Xy(a.return))return null;a=a.return}for(a.sibling.return=a.return,a=a.sibling;a.tag!==5&&a.tag!==6&&a.tag!==18;){if(a.tag===27&&Gr(a.type)||a.flags&2||a.child===null||a.tag===4)continue e;a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}function Rg(a,i,o){var u=a.tag;if(u===5||u===6)a=a.stateNode,i?(o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o).insertBefore(a,i):(i=o.nodeType===9?o.body:o.nodeName==="HTML"?o.ownerDocument.body:o,i.appendChild(a),o=o._reactRootContainer,o!=null||i.onclick!==null||(i.onclick=_c));else if(u!==4&&(u===27&&Gr(a.type)&&(o=a.stateNode,i=null),a=a.child,a!==null))for(Rg(a,i,o),a=a.sibling;a!==null;)Rg(a,i,o),a=a.sibling}function Cc(a,i,o){var u=a.tag;if(u===5||u===6)a=a.stateNode,i?o.insertBefore(a,i):o.appendChild(a);else if(u!==4&&(u===27&&Gr(a.type)&&(o=a.stateNode),a=a.child,a!==null))for(Cc(a,i,o),a=a.sibling;a!==null;)Cc(a,i,o),a=a.sibling}function $y(a){var i=a.stateNode,o=a.memoizedProps;try{for(var u=a.type,h=i.attributes;h.length;)i.removeAttributeNode(h[0]);dn(i,u,o),i[Mt]=a,i[Kt]=o}catch(E){ua(a,a.return,E)}}var dr=!1,_a=!1,Ug=!1,Zy=typeof WeakSet=="function"?WeakSet:Set,en=null;function UD(a,i){if(a=a.containerInfo,np=Vc,a=cA(a),Dm(a)){if("selectionStart"in a)var o={start:a.selectionStart,end:a.selectionEnd};else e:{o=(o=a.ownerDocument)&&o.defaultView||window;var u=o.getSelection&&o.getSelection();if(u&&u.rangeCount!==0){o=u.anchorNode;var h=u.anchorOffset,E=u.focusNode;u=u.focusOffset;try{o.nodeType,E.nodeType}catch{o=null;break e}var D=0,H=-1,$=-1,he=0,Ne=0,xe=a,ye=null;t:for(;;){for(var be;xe!==o||h!==0&&xe.nodeType!==3||(H=D+h),xe!==E||u!==0&&xe.nodeType!==3||($=D+u),xe.nodeType===3&&(D+=xe.nodeValue.length),(be=xe.firstChild)!==null;)ye=xe,xe=be;for(;;){if(xe===a)break t;if(ye===o&&++he===h&&(H=D),ye===E&&++Ne===u&&($=D),(be=xe.nextSibling)!==null)break;xe=ye,ye=xe.parentNode}xe=be}o=H===-1||$===-1?null:{start:H,end:$}}else o=null}o=o||{start:0,end:0}}else o=null;for(ip={focusedElem:a,selectionRange:o},Vc=!1,en=i;en!==null;)if(i=en,a=i.child,(i.subtreeFlags&1024)!==0&&a!==null)a.return=i,en=a;else for(;en!==null;){switch(i=en,E=i.alternate,a=i.flags,i.tag){case 0:break;case 11:case 15:break;case 1:if((a&1024)!==0&&E!==null){a=void 0,o=i,h=E.memoizedProps,E=E.memoizedState,u=o.stateNode;try{var At=Ts(o.type,h,o.elementType===o.type);a=u.getSnapshotBeforeUpdate(At,E),u.__reactInternalSnapshotBeforeUpdate=a}catch(dt){ua(o,o.return,dt)}}break;case 3:if((a&1024)!==0){if(a=i.stateNode.containerInfo,o=a.nodeType,o===9)op(a);else if(o===1)switch(a.nodeName){case"HEAD":case"HTML":case"BODY":op(a);break;default:a.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((a&1024)!==0)throw Error(r(163))}if(a=i.sibling,a!==null){a.return=i.return,en=a;break}en=i.return}}function e0(a,i,o){var u=o.flags;switch(o.tag){case 0:case 11:case 15:Or(a,o),u&4&&Sl(5,o);break;case 1:if(Or(a,o),u&4)if(a=o.stateNode,i===null)try{a.componentDidMount()}catch(D){ua(o,o.return,D)}else{var h=Ts(o.type,i.memoizedProps);i=i.memoizedState;try{a.componentDidUpdate(h,i,a.__reactInternalSnapshotBeforeUpdate)}catch(D){ua(o,o.return,D)}}u&64&&qy(o),u&512&&Tl(o,o.return);break;case 3:if(Or(a,o),u&64&&(a=o.updateQueue,a!==null)){if(i=null,o.child!==null)switch(o.child.tag){case 27:case 5:i=o.child.stateNode;break;case 1:i=o.child.stateNode}try{_A(a,i)}catch(D){ua(o,o.return,D)}}break;case 27:i===null&&u&4&&$y(o);case 26:case 5:Or(a,o),i===null&&u&4&&Jy(o),u&512&&Tl(o,o.return);break;case 12:Or(a,o);break;case 13:Or(a,o),u&4&&n0(a,o),u&64&&(a=o.memoizedState,a!==null&&(a=a.dehydrated,a!==null&&(o=VD.bind(null,o),sR(a,o))));break;case 22:if(u=o.memoizedState!==null||dr,!u){i=i!==null&&i.memoizedState!==null||_a,h=dr;var E=_a;dr=u,(_a=i)&&!E?jr(a,o,(o.subtreeFlags&8772)!==0):Or(a,o),dr=h,_a=E}break;case 30:break;default:Or(a,o)}}function t0(a){var i=a.alternate;i!==null&&(a.alternate=null,t0(i)),a.child=null,a.deletions=null,a.sibling=null,a.tag===5&&(i=a.stateNode,i!==null&&ha(i)),a.stateNode=null,a.return=null,a.dependencies=null,a.memoizedProps=null,a.memoizedState=null,a.pendingProps=null,a.stateNode=null,a.updateQueue=null}var ya=null,Rn=!1;function cr(a,i,o){for(o=o.child;o!==null;)a0(a,i,o),o=o.sibling}function a0(a,i,o){if(M&&typeof M.onCommitFiberUnmount=="function")try{M.onCommitFiberUnmount(Dt,o)}catch{}switch(o.tag){case 26:_a||Mi(o,i),cr(a,i,o),o.memoizedState?o.memoizedState.count--:o.stateNode&&(o=o.stateNode,o.parentNode.removeChild(o));break;case 27:_a||Mi(o,i);var u=ya,h=Rn;Gr(o.type)&&(ya=o.stateNode,Rn=!1),cr(a,i,o),_l(o.stateNode),ya=u,Rn=h;break;case 5:_a||Mi(o,i);case 6:if(u=ya,h=Rn,ya=null,cr(a,i,o),ya=u,Rn=h,ya!==null)if(Rn)try{(ya.nodeType===9?ya.body:ya.nodeName==="HTML"?ya.ownerDocument.body:ya).removeChild(o.stateNode)}catch(E){ua(o,i,E)}else try{ya.removeChild(o.stateNode)}catch(E){ua(o,i,E)}break;case 18:ya!==null&&(Rn?(a=ya,Q0(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,o.stateNode),zl(a)):Q0(ya,o.stateNode));break;case 4:u=ya,h=Rn,ya=o.stateNode.containerInfo,Rn=!0,cr(a,i,o),ya=u,Rn=h;break;case 0:case 11:case 14:case 15:_a||Pr(2,o,i),_a||Pr(4,o,i),cr(a,i,o);break;case 1:_a||(Mi(o,i),u=o.stateNode,typeof u.componentWillUnmount=="function"&&Yy(o,i,u)),cr(a,i,o);break;case 21:cr(a,i,o);break;case 22:_a=(u=_a)||o.memoizedState!==null,cr(a,i,o),_a=u;break;default:cr(a,i,o)}}function n0(a,i){if(i.memoizedState===null&&(a=i.alternate,a!==null&&(a=a.memoizedState,a!==null&&(a=a.dehydrated,a!==null))))try{zl(a)}catch(o){ua(i,i.return,o)}}function MD(a){switch(a.tag){case 13:case 19:var i=a.stateNode;return i===null&&(i=a.stateNode=new Zy),i;case 22:return a=a.stateNode,i=a._retryCache,i===null&&(i=a._retryCache=new Zy),i;default:throw Error(r(435,a.tag))}}function Mg(a,i){var o=MD(a);i.forEach(function(u){var h=zD.bind(null,a,u);o.has(u)||(o.add(u),u.then(h,h))})}function Gn(a,i){var o=i.deletions;if(o!==null)for(var u=0;u<o.length;u++){var h=o[u],E=a,D=i,H=D;e:for(;H!==null;){switch(H.tag){case 27:if(Gr(H.type)){ya=H.stateNode,Rn=!1;break e}break;case 5:ya=H.stateNode,Rn=!1;break e;case 3:case 4:ya=H.stateNode.containerInfo,Rn=!0;break e}H=H.return}if(ya===null)throw Error(r(160));a0(E,D,h),ya=null,Rn=!1,E=h.alternate,E!==null&&(E.return=null),h.return=null}if(i.subtreeFlags&13878)for(i=i.child;i!==null;)i0(i,a),i=i.sibling}var Ii=null;function i0(a,i){var o=a.alternate,u=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:Gn(i,a),Wn(a),u&4&&(Pr(3,a,a.return),Sl(3,a),Pr(5,a,a.return));break;case 1:Gn(i,a),Wn(a),u&512&&(_a||o===null||Mi(o,o.return)),u&64&&dr&&(a=a.updateQueue,a!==null&&(u=a.callbacks,u!==null&&(o=a.shared.hiddenCallbacks,a.shared.hiddenCallbacks=o===null?u:o.concat(u))));break;case 26:var h=Ii;if(Gn(i,a),Wn(a),u&512&&(_a||o===null||Mi(o,o.return)),u&4){var E=o!==null?o.memoizedState:null;if(u=a.memoizedState,o===null)if(u===null)if(a.stateNode===null){e:{u=a.type,o=a.memoizedProps,h=h.ownerDocument||h;t:switch(u){case"title":E=h.getElementsByTagName("title")[0],(!E||E[Ta]||E[Mt]||E.namespaceURI==="http://www.w3.org/2000/svg"||E.hasAttribute("itemprop"))&&(E=h.createElement(u),h.head.insertBefore(E,h.querySelector("head > title"))),dn(E,u,o),E[Mt]=a,ze(E),u=E;break e;case"link":var D=$0("link","href",h).get(u+(o.href||""));if(D){for(var H=0;H<D.length;H++)if(E=D[H],E.getAttribute("href")===(o.href==null||o.href===""?null:o.href)&&E.getAttribute("rel")===(o.rel==null?null:o.rel)&&E.getAttribute("title")===(o.title==null?null:o.title)&&E.getAttribute("crossorigin")===(o.crossOrigin==null?null:o.crossOrigin)){D.splice(H,1);break t}}E=h.createElement(u),dn(E,u,o),h.head.appendChild(E);break;case"meta":if(D=$0("meta","content",h).get(u+(o.content||""))){for(H=0;H<D.length;H++)if(E=D[H],E.getAttribute("content")===(o.content==null?null:""+o.content)&&E.getAttribute("name")===(o.name==null?null:o.name)&&E.getAttribute("property")===(o.property==null?null:o.property)&&E.getAttribute("http-equiv")===(o.httpEquiv==null?null:o.httpEquiv)&&E.getAttribute("charset")===(o.charSet==null?null:o.charSet)){D.splice(H,1);break t}}E=h.createElement(u),dn(E,u,o),h.head.appendChild(E);break;default:throw Error(r(468,u))}E[Mt]=a,ze(E),u=E}a.stateNode=u}else Z0(h,a.type,a.stateNode);else a.stateNode=X0(h,u,a.memoizedProps);else E!==u?(E===null?o.stateNode!==null&&(o=o.stateNode,o.parentNode.removeChild(o)):E.count--,u===null?Z0(h,a.type,a.stateNode):X0(h,u,a.memoizedProps)):u===null&&a.stateNode!==null&&Lg(a,a.memoizedProps,o.memoizedProps)}break;case 27:Gn(i,a),Wn(a),u&512&&(_a||o===null||Mi(o,o.return)),o!==null&&u&4&&Lg(a,a.memoizedProps,o.memoizedProps);break;case 5:if(Gn(i,a),Wn(a),u&512&&(_a||o===null||Mi(o,o.return)),a.flags&32){h=a.stateNode;try{Di(h,"")}catch(be){ua(a,a.return,be)}}u&4&&a.stateNode!=null&&(h=a.memoizedProps,Lg(a,h,o!==null?o.memoizedProps:h)),u&1024&&(Ug=!0);break;case 6:if(Gn(i,a),Wn(a),u&4){if(a.stateNode===null)throw Error(r(162));u=a.memoizedProps,o=a.stateNode;try{o.nodeValue=u}catch(be){ua(a,a.return,be)}}break;case 3:if(Oc=null,h=Ii,Ii=Bc(i.containerInfo),Gn(i,a),Ii=h,Wn(a),u&4&&o!==null&&o.memoizedState.isDehydrated)try{zl(i.containerInfo)}catch(be){ua(a,a.return,be)}Ug&&(Ug=!1,r0(a));break;case 4:u=Ii,Ii=Bc(a.stateNode.containerInfo),Gn(i,a),Wn(a),Ii=u;break;case 12:Gn(i,a),Wn(a);break;case 13:Gn(i,a),Wn(a),a.child.flags&8192&&a.memoizedState!==null!=(o!==null&&o.memoizedState!==null)&&(jg=Be()),u&4&&(u=a.updateQueue,u!==null&&(a.updateQueue=null,Mg(a,u)));break;case 22:h=a.memoizedState!==null;var $=o!==null&&o.memoizedState!==null,he=dr,Ne=_a;if(dr=he||h,_a=Ne||$,Gn(i,a),_a=Ne,dr=he,Wn(a),u&8192)e:for(i=a.stateNode,i._visibility=h?i._visibility&-2:i._visibility|1,h&&(o===null||$||dr||_a||Ns(a)),o=null,i=a;;){if(i.tag===5||i.tag===26){if(o===null){$=o=i;try{if(E=$.stateNode,h)D=E.style,typeof D.setProperty=="function"?D.setProperty("display","none","important"):D.display="none";else{H=$.stateNode;var xe=$.memoizedProps.style,ye=xe!=null&&xe.hasOwnProperty("display")?xe.display:null;H.style.display=ye==null||typeof ye=="boolean"?"":(""+ye).trim()}}catch(be){ua($,$.return,be)}}}else if(i.tag===6){if(o===null){$=i;try{$.stateNode.nodeValue=h?"":$.memoizedProps}catch(be){ua($,$.return,be)}}}else if((i.tag!==22&&i.tag!==23||i.memoizedState===null||i===a)&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===a)break e;for(;i.sibling===null;){if(i.return===null||i.return===a)break e;o===i&&(o=null),i=i.return}o===i&&(o=null),i.sibling.return=i.return,i=i.sibling}u&4&&(u=a.updateQueue,u!==null&&(o=u.retryQueue,o!==null&&(u.retryQueue=null,Mg(a,o))));break;case 19:Gn(i,a),Wn(a),u&4&&(u=a.updateQueue,u!==null&&(a.updateQueue=null,Mg(a,u)));break;case 30:break;case 21:break;default:Gn(i,a),Wn(a)}}function Wn(a){var i=a.flags;if(i&2){try{for(var o,u=a.return;u!==null;){if(Xy(u)){o=u;break}u=u.return}if(o==null)throw Error(r(160));switch(o.tag){case 27:var h=o.stateNode,E=Dg(a);Cc(a,E,h);break;case 5:var D=o.stateNode;o.flags&32&&(Di(D,""),o.flags&=-33);var H=Dg(a);Cc(a,H,D);break;case 3:case 4:var $=o.stateNode.containerInfo,he=Dg(a);Rg(a,he,$);break;default:throw Error(r(161))}}catch(Ne){ua(a,a.return,Ne)}a.flags&=-3}i&4096&&(a.flags&=-4097)}function r0(a){if(a.subtreeFlags&1024)for(a=a.child;a!==null;){var i=a;r0(i),i.tag===5&&i.flags&1024&&i.stateNode.reset(),a=a.sibling}}function Or(a,i){if(i.subtreeFlags&8772)for(i=i.child;i!==null;)e0(a,i.alternate,i),i=i.sibling}function Ns(a){for(a=a.child;a!==null;){var i=a;switch(i.tag){case 0:case 11:case 14:case 15:Pr(4,i,i.return),Ns(i);break;case 1:Mi(i,i.return);var o=i.stateNode;typeof o.componentWillUnmount=="function"&&Yy(i,i.return,o),Ns(i);break;case 27:_l(i.stateNode);case 26:case 5:Mi(i,i.return),Ns(i);break;case 22:i.memoizedState===null&&Ns(i);break;case 30:Ns(i);break;default:Ns(i)}a=a.sibling}}function jr(a,i,o){for(o=o&&(i.subtreeFlags&8772)!==0,i=i.child;i!==null;){var u=i.alternate,h=a,E=i,D=E.flags;switch(E.tag){case 0:case 11:case 15:jr(h,E,o),Sl(4,E);break;case 1:if(jr(h,E,o),u=E,h=u.stateNode,typeof h.componentDidMount=="function")try{h.componentDidMount()}catch(he){ua(u,u.return,he)}if(u=E,h=u.updateQueue,h!==null){var H=u.stateNode;try{var $=h.shared.hiddenCallbacks;if($!==null)for(h.shared.hiddenCallbacks=null,h=0;h<$.length;h++)MA($[h],H)}catch(he){ua(u,u.return,he)}}o&&D&64&&qy(E),Tl(E,E.return);break;case 27:$y(E);case 26:case 5:jr(h,E,o),o&&u===null&&D&4&&Jy(E),Tl(E,E.return);break;case 12:jr(h,E,o);break;case 13:jr(h,E,o),o&&D&4&&n0(h,E);break;case 22:E.memoizedState===null&&jr(h,E,o),Tl(E,E.return);break;case 30:break;default:jr(h,E,o)}i=i.sibling}}function _g(a,i){var o=null;a!==null&&a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(o=a.memoizedState.cachePool.pool),a=null,i.memoizedState!==null&&i.memoizedState.cachePool!==null&&(a=i.memoizedState.cachePool.pool),a!==o&&(a!=null&&a.refCount++,o!=null&&ul(o))}function Fg(a,i){a=null,i.alternate!==null&&(a=i.alternate.memoizedState.cache),i=i.memoizedState.cache,i!==a&&(i.refCount++,a!=null&&ul(a))}function _i(a,i,o,u){if(i.subtreeFlags&10256)for(i=i.child;i!==null;)s0(a,i,o,u),i=i.sibling}function s0(a,i,o,u){var h=i.flags;switch(i.tag){case 0:case 11:case 15:_i(a,i,o,u),h&2048&&Sl(9,i);break;case 1:_i(a,i,o,u);break;case 3:_i(a,i,o,u),h&2048&&(a=null,i.alternate!==null&&(a=i.alternate.memoizedState.cache),i=i.memoizedState.cache,i!==a&&(i.refCount++,a!=null&&ul(a)));break;case 12:if(h&2048){_i(a,i,o,u),a=i.stateNode;try{var E=i.memoizedProps,D=E.id,H=E.onPostCommit;typeof H=="function"&&H(D,i.alternate===null?"mount":"update",a.passiveEffectDuration,-0)}catch($){ua(i,i.return,$)}}else _i(a,i,o,u);break;case 13:_i(a,i,o,u);break;case 23:break;case 22:E=i.stateNode,D=i.alternate,i.memoizedState!==null?E._visibility&2?_i(a,i,o,u):Nl(a,i):E._visibility&2?_i(a,i,o,u):(E._visibility|=2,lo(a,i,o,u,(i.subtreeFlags&10256)!==0)),h&2048&&_g(D,i);break;case 24:_i(a,i,o,u),h&2048&&Fg(i.alternate,i);break;default:_i(a,i,o,u)}}function lo(a,i,o,u,h){for(h=h&&(i.subtreeFlags&10256)!==0,i=i.child;i!==null;){var E=a,D=i,H=o,$=u,he=D.flags;switch(D.tag){case 0:case 11:case 15:lo(E,D,H,$,h),Sl(8,D);break;case 23:break;case 22:var Ne=D.stateNode;D.memoizedState!==null?Ne._visibility&2?lo(E,D,H,$,h):Nl(E,D):(Ne._visibility|=2,lo(E,D,H,$,h)),h&&he&2048&&_g(D.alternate,D);break;case 24:lo(E,D,H,$,h),h&&he&2048&&Fg(D.alternate,D);break;default:lo(E,D,H,$,h)}i=i.sibling}}function Nl(a,i){if(i.subtreeFlags&10256)for(i=i.child;i!==null;){var o=a,u=i,h=u.flags;switch(u.tag){case 22:Nl(o,u),h&2048&&_g(u.alternate,u);break;case 24:Nl(o,u),h&2048&&Fg(u.alternate,u);break;default:Nl(o,u)}i=i.sibling}}var kl=8192;function co(a){if(a.subtreeFlags&kl)for(a=a.child;a!==null;)o0(a),a=a.sibling}function o0(a){switch(a.tag){case 26:co(a),a.flags&kl&&a.memoizedState!==null&&ER(Ii,a.memoizedState,a.memoizedProps);break;case 5:co(a);break;case 3:case 4:var i=Ii;Ii=Bc(a.stateNode.containerInfo),co(a),Ii=i;break;case 22:a.memoizedState===null&&(i=a.alternate,i!==null&&i.memoizedState!==null?(i=kl,kl=16777216,co(a),kl=i):co(a));break;default:co(a)}}function l0(a){var i=a.alternate;if(i!==null&&(a=i.child,a!==null)){i.child=null;do i=a.sibling,a.sibling=null,a=i;while(a!==null)}}function xl(a){var i=a.deletions;if((a.flags&16)!==0){if(i!==null)for(var o=0;o<i.length;o++){var u=i[o];en=u,c0(u,a)}l0(a)}if(a.subtreeFlags&10256)for(a=a.child;a!==null;)d0(a),a=a.sibling}function d0(a){switch(a.tag){case 0:case 11:case 15:xl(a),a.flags&2048&&Pr(9,a,a.return);break;case 3:xl(a);break;case 12:xl(a);break;case 22:var i=a.stateNode;a.memoizedState!==null&&i._visibility&2&&(a.return===null||a.return.tag!==13)?(i._visibility&=-3,Sc(a)):xl(a);break;default:xl(a)}}function Sc(a){var i=a.deletions;if((a.flags&16)!==0){if(i!==null)for(var o=0;o<i.length;o++){var u=i[o];en=u,c0(u,a)}l0(a)}for(a=a.child;a!==null;){switch(i=a,i.tag){case 0:case 11:case 15:Pr(8,i,i.return),Sc(i);break;case 22:o=i.stateNode,o._visibility&2&&(o._visibility&=-3,Sc(i));break;default:Sc(i)}a=a.sibling}}function c0(a,i){for(;en!==null;){var o=en;switch(o.tag){case 0:case 11:case 15:Pr(8,o,i);break;case 23:case 22:if(o.memoizedState!==null&&o.memoizedState.cachePool!==null){var u=o.memoizedState.cachePool.pool;u!=null&&u.refCount++}break;case 24:ul(o.memoizedState.cache)}if(u=o.child,u!==null)u.return=o,en=u;else e:for(o=a;en!==null;){u=en;var h=u.sibling,E=u.return;if(t0(u),u===o){en=null;break e}if(h!==null){h.return=E,en=h;break e}en=E}}}var _D={getCacheForType:function(a){var i=fn(Qa),o=i.data.get(a);return o===void 0&&(o=a(),i.data.set(a,o)),o}},FD=typeof WeakMap=="function"?WeakMap:Map,ta=0,ga=null,Bt=null,Qt=0,aa=0,qn=null,Hr=!1,uo=!1,Bg=!1,ur=0,ka=0,Vr=0,ks=0,Pg=0,gi=0,mo=0,Ll=null,Un=null,Og=!1,jg=0,Tc=1/0,Nc=null,zr=null,ln=0,Qr=null,go=null,po=0,Hg=0,Vg=null,u0=null,Dl=0,zg=null;function Yn(){if((ta&2)!==0&&Qt!==0)return Qt&-Qt;if(X.T!==null){var a=eo;return a!==0?a:Jg()}return Da()}function m0(){gi===0&&(gi=(Qt&536870912)===0||Xt?bi():536870912);var a=mi.current;return a!==null&&(a.flags|=32),gi}function Jn(a,i,o){(a===ga&&(aa===2||aa===9)||a.cancelPendingCommit!==null)&&(ho(a,0),Kr(a,Qt,gi,!1)),jt(a,o),((ta&2)===0||a!==ga)&&(a===ga&&((ta&2)===0&&(ks|=o),ka===4&&Kr(a,Qt,gi,!1)),Fi(a))}function g0(a,i,o){if((ta&6)!==0)throw Error(r(327));var u=!o&&(i&124)===0&&(i&a.expiredLanes)===0||kt(a,i),h=u?OD(a,i):Gg(a,i,!0),E=u;do{if(h===0){uo&&!u&&Kr(a,i,0,!1);break}else{if(o=a.current.alternate,E&&!BD(o)){h=Gg(a,i,!1),E=!1;continue}if(h===2){if(E=i,a.errorRecoveryDisabledLanes&E)var D=0;else D=a.pendingLanes&-536870913,D=D!==0?D:D&536870912?536870912:0;if(D!==0){i=D;e:{var H=a;h=Ll;var $=H.current.memoizedState.isDehydrated;if($&&(ho(H,D).flags|=256),D=Gg(H,D,!1),D!==2){if(Bg&&!$){H.errorRecoveryDisabledLanes|=E,ks|=E,h=4;break e}E=Un,Un=h,E!==null&&(Un===null?Un=E:Un.push.apply(Un,E))}h=D}if(E=!1,h!==2)continue}}if(h===1){ho(a,0),Kr(a,i,0,!0);break}e:{switch(u=a,E=h,E){case 0:case 1:throw Error(r(345));case 4:if((i&4194048)!==i)break;case 6:Kr(u,i,gi,!Hr);break e;case 2:Un=null;break;case 3:case 5:break;default:throw Error(r(329))}if((i&62914560)===i&&(h=jg+300-Be(),10<h)){if(Kr(u,i,gi,!Hr),wt(u,0,!0)!==0)break e;u.timeoutHandle=V0(p0.bind(null,u,o,Un,Nc,Og,i,gi,ks,mo,Hr,E,2,-0,0),h);break e}p0(u,o,Un,Nc,Og,i,gi,ks,mo,Hr,E,0,-0,0)}}break}while(!0);Fi(a)}function p0(a,i,o,u,h,E,D,H,$,he,Ne,xe,ye,be){if(a.timeoutHandle=-1,xe=i.subtreeFlags,(xe&8192||(xe&16785408)===16785408)&&(Pl={stylesheets:null,count:0,unsuspend:yR},o0(i),xe=bR(),xe!==null)){a.cancelPendingCommit=xe(v0.bind(null,a,i,E,o,u,h,D,H,$,Ne,1,ye,be)),Kr(a,E,D,!he);return}v0(a,i,E,o,u,h,D,H,$)}function BD(a){for(var i=a;;){var o=i.tag;if((o===0||o===11||o===15)&&i.flags&16384&&(o=i.updateQueue,o!==null&&(o=o.stores,o!==null)))for(var u=0;u<o.length;u++){var h=o[u],E=h.getSnapshot;h=h.value;try{if(!Qn(E(),h))return!1}catch{return!1}}if(o=i.child,i.subtreeFlags&16384&&o!==null)o.return=i,i=o;else{if(i===a)break;for(;i.sibling===null;){if(i.return===null||i.return===a)return!0;i=i.return}i.sibling.return=i.return,i=i.sibling}}return!0}function Kr(a,i,o,u){i&=~Pg,i&=~ks,a.suspendedLanes|=i,a.pingedLanes&=~i,u&&(a.warmLanes|=i),u=a.expirationTimes;for(var h=i;0<h;){var E=31-N(h),D=1<<E;u[E]=-1,h&=~D}o!==0&&De(a,o,i)}function kc(){return(ta&6)===0?(Rl(0),!1):!0}function Qg(){if(Bt!==null){if(aa===0)var a=Bt.return;else a=Bt,nr=ws=null,og(a),so=null,wl=0,a=Bt;for(;a!==null;)Wy(a.alternate,a),a=a.return;Bt=null}}function ho(a,i){var o=a.timeoutHandle;o!==-1&&(a.timeoutHandle=-1,tR(o)),o=a.cancelPendingCommit,o!==null&&(a.cancelPendingCommit=null,o()),Qg(),ga=a,Bt=o=er(a.current,null),Qt=i,aa=0,qn=null,Hr=!1,uo=kt(a,i),Bg=!1,mo=gi=Pg=ks=Vr=ka=0,Un=Ll=null,Og=!1,(i&8)!==0&&(i|=i&32);var u=a.entangledLanes;if(u!==0)for(a=a.entanglements,u&=i;0<u;){var h=31-N(u),E=1<<h;i|=a[h],u&=~E}return ur=i,Jd(),o}function h0(a,i){Ut=null,X.H=hc,i===gl||i===rc?(i=RA(),aa=3):i===xA?(i=RA(),aa=4):aa=i===Uy?8:i!==null&&typeof i=="object"&&typeof i.then=="function"?6:1,qn=i,Bt===null&&(ka=1,bc(a,li(i,a.current)))}function f0(){var a=X.H;return X.H=hc,a===null?hc:a}function A0(){var a=X.A;return X.A=_D,a}function Kg(){ka=4,Hr||(Qt&4194048)!==Qt&&mi.current!==null||(uo=!0),(Vr&134217727)===0&&(ks&134217727)===0||ga===null||Kr(ga,Qt,gi,!1)}function Gg(a,i,o){var u=ta;ta|=2;var h=f0(),E=A0();(ga!==a||Qt!==i)&&(Nc=null,ho(a,i)),i=!1;var D=ka;e:do try{if(aa!==0&&Bt!==null){var H=Bt,$=qn;switch(aa){case 8:Qg(),D=6;break e;case 3:case 2:case 9:case 6:mi.current===null&&(i=!0);var he=aa;if(aa=0,qn=null,fo(a,H,$,he),o&&uo){D=0;break e}break;default:he=aa,aa=0,qn=null,fo(a,H,$,he)}}PD(),D=ka;break}catch(Ne){h0(a,Ne)}while(!0);return i&&a.shellSuspendCounter++,nr=ws=null,ta=u,X.H=h,X.A=E,Bt===null&&(ga=null,Qt=0,Jd()),D}function PD(){for(;Bt!==null;)y0(Bt)}function OD(a,i){var o=ta;ta|=2;var u=f0(),h=A0();ga!==a||Qt!==i?(Nc=null,Tc=Be()+500,ho(a,i)):uo=kt(a,i);e:do try{if(aa!==0&&Bt!==null){i=Bt;var E=qn;t:switch(aa){case 1:aa=0,qn=null,fo(a,i,E,1);break;case 2:case 9:if(LA(E)){aa=0,qn=null,E0(i);break}i=function(){aa!==2&&aa!==9||ga!==a||(aa=7),Fi(a)},E.then(i,i);break e;case 3:aa=7;break e;case 4:aa=5;break e;case 7:LA(E)?(aa=0,qn=null,E0(i)):(aa=0,qn=null,fo(a,i,E,7));break;case 5:var D=null;switch(Bt.tag){case 26:D=Bt.memoizedState;case 5:case 27:var H=Bt;if(!D||eE(D)){aa=0,qn=null;var $=H.sibling;if($!==null)Bt=$;else{var he=H.return;he!==null?(Bt=he,xc(he)):Bt=null}break t}}aa=0,qn=null,fo(a,i,E,5);break;case 6:aa=0,qn=null,fo(a,i,E,6);break;case 8:Qg(),ka=6;break e;default:throw Error(r(462))}}jD();break}catch(Ne){h0(a,Ne)}while(!0);return nr=ws=null,X.H=u,X.A=h,ta=o,Bt!==null?0:(ga=null,Qt=0,Jd(),ka)}function jD(){for(;Bt!==null&&!ht();)y0(Bt)}function y0(a){var i=Ky(a.alternate,a,ur);a.memoizedProps=a.pendingProps,i===null?xc(a):Bt=i}function E0(a){var i=a,o=i.alternate;switch(i.tag){case 15:case 0:i=Oy(o,i,i.pendingProps,i.type,void 0,Qt);break;case 11:i=Oy(o,i,i.pendingProps,i.type.render,i.ref,Qt);break;case 5:og(i);default:Wy(o,i),i=Bt=bA(i,ur),i=Ky(o,i,ur)}a.memoizedProps=a.pendingProps,i===null?xc(a):Bt=i}function fo(a,i,o,u){nr=ws=null,og(i),so=null,wl=0;var h=i.return;try{if(xD(a,h,i,o,Qt)){ka=1,bc(a,li(o,a.current)),Bt=null;return}}catch(E){if(h!==null)throw Bt=h,E;ka=1,bc(a,li(o,a.current)),Bt=null;return}i.flags&32768?(Xt||u===1?a=!0:uo||(Qt&536870912)!==0?a=!1:(Hr=a=!0,(u===2||u===9||u===3||u===6)&&(u=mi.current,u!==null&&u.tag===13&&(u.flags|=16384))),b0(i,a)):xc(i)}function xc(a){var i=a;do{if((i.flags&32768)!==0){b0(i,Hr);return}a=i.return;var o=DD(i.alternate,i,ur);if(o!==null){Bt=o;return}if(i=i.sibling,i!==null){Bt=i;return}Bt=i=a}while(i!==null);ka===0&&(ka=5)}function b0(a,i){do{var o=RD(a.alternate,a);if(o!==null){o.flags&=32767,Bt=o;return}if(o=a.return,o!==null&&(o.flags|=32768,o.subtreeFlags=0,o.deletions=null),!i&&(a=a.sibling,a!==null)){Bt=a;return}Bt=a=o}while(a!==null);ka=6,Bt=null}function v0(a,i,o,u,h,E,D,H,$){a.cancelPendingCommit=null;do Lc();while(ln!==0);if((ta&6)!==0)throw Error(r(327));if(i!==null){if(i===a.current)throw Error(r(177));if(E=i.lanes|i.childLanes,E|=Fm,na(a,o,E,D,H,$),a===ga&&(Bt=ga=null,Qt=0),go=i,Qr=a,po=o,Hg=E,Vg=h,u0=u,(i.subtreeFlags&10256)!==0||(i.flags&10256)!==0?(a.callbackNode=null,a.callbackPriority=0,QD(We,function(){return T0(),null})):(a.callbackNode=null,a.callbackPriority=0),u=(i.flags&13878)!==0,(i.subtreeFlags&13878)!==0||u){u=X.T,X.T=null,h=te.p,te.p=2,D=ta,ta|=4;try{UD(a,i,o)}finally{ta=D,te.p=h,X.T=u}}ln=1,w0(),I0(),C0()}}function w0(){if(ln===1){ln=0;var a=Qr,i=go,o=(i.flags&13878)!==0;if((i.subtreeFlags&13878)!==0||o){o=X.T,X.T=null;var u=te.p;te.p=2;var h=ta;ta|=4;try{i0(i,a);var E=ip,D=cA(a.containerInfo),H=E.focusedElem,$=E.selectionRange;if(D!==H&&H&&H.ownerDocument&&dA(H.ownerDocument.documentElement,H)){if($!==null&&Dm(H)){var he=$.start,Ne=$.end;if(Ne===void 0&&(Ne=he),"selectionStart"in H)H.selectionStart=he,H.selectionEnd=Math.min(Ne,H.value.length);else{var xe=H.ownerDocument||document,ye=xe&&xe.defaultView||window;if(ye.getSelection){var be=ye.getSelection(),At=H.textContent.length,dt=Math.min($.start,At),oa=$.end===void 0?dt:Math.min($.end,At);!be.extend&&dt>oa&&(D=oa,oa=dt,dt=D);var se=lA(H,dt),re=lA(H,oa);if(se&&re&&(be.rangeCount!==1||be.anchorNode!==se.node||be.anchorOffset!==se.offset||be.focusNode!==re.node||be.focusOffset!==re.offset)){var ge=xe.createRange();ge.setStart(se.node,se.offset),be.removeAllRanges(),dt>oa?(be.addRange(ge),be.extend(re.node,re.offset)):(ge.setEnd(re.node,re.offset),be.addRange(ge))}}}}for(xe=[],be=H;be=be.parentNode;)be.nodeType===1&&xe.push({element:be,left:be.scrollLeft,top:be.scrollTop});for(typeof H.focus=="function"&&H.focus(),H=0;H<xe.length;H++){var ke=xe[H];ke.element.scrollLeft=ke.left,ke.element.scrollTop=ke.top}}Vc=!!np,ip=np=null}finally{ta=h,te.p=u,X.T=o}}a.current=i,ln=2}}function I0(){if(ln===2){ln=0;var a=Qr,i=go,o=(i.flags&8772)!==0;if((i.subtreeFlags&8772)!==0||o){o=X.T,X.T=null;var u=te.p;te.p=2;var h=ta;ta|=4;try{e0(a,i.alternate,i)}finally{ta=h,te.p=u,X.T=o}}ln=3}}function C0(){if(ln===4||ln===3){ln=0,Ie();var a=Qr,i=go,o=po,u=u0;(i.subtreeFlags&10256)!==0||(i.flags&10256)!==0?ln=5:(ln=0,go=Qr=null,S0(a,a.pendingLanes));var h=a.pendingLanes;if(h===0&&(zr=null),Rt(o),i=i.stateNode,M&&typeof M.onCommitFiberRoot=="function")try{M.onCommitFiberRoot(Dt,i,void 0,(i.current.flags&128)===128)}catch{}if(u!==null){i=X.T,h=te.p,te.p=2,X.T=null;try{for(var E=a.onRecoverableError,D=0;D<u.length;D++){var H=u[D];E(H.value,{componentStack:H.stack})}}finally{X.T=i,te.p=h}}(po&3)!==0&&Lc(),Fi(a),h=a.pendingLanes,(o&4194090)!==0&&(h&42)!==0?a===zg?Dl++:(Dl=0,zg=a):Dl=0,Rl(0)}}function S0(a,i){(a.pooledCacheLanes&=i)===0&&(i=a.pooledCache,i!=null&&(a.pooledCache=null,ul(i)))}function Lc(a){return w0(),I0(),C0(),T0()}function T0(){if(ln!==5)return!1;var a=Qr,i=Hg;Hg=0;var o=Rt(po),u=X.T,h=te.p;try{te.p=32>o?32:o,X.T=null,o=Vg,Vg=null;var E=Qr,D=po;if(ln=0,go=Qr=null,po=0,(ta&6)!==0)throw Error(r(331));var H=ta;if(ta|=4,d0(E.current),s0(E,E.current,D,o),ta=H,Rl(0,!1),M&&typeof M.onPostCommitFiberRoot=="function")try{M.onPostCommitFiberRoot(Dt,E)}catch{}return!0}finally{te.p=h,X.T=u,S0(a,i)}}function N0(a,i,o){i=li(o,i),i=vg(a.stateNode,i,2),a=Mr(a,i,2),a!==null&&(jt(a,2),Fi(a))}function ua(a,i,o){if(a.tag===3)N0(a,a,o);else for(;i!==null;){if(i.tag===3){N0(i,a,o);break}else if(i.tag===1){var u=i.stateNode;if(typeof i.type.getDerivedStateFromError=="function"||typeof u.componentDidCatch=="function"&&(zr===null||!zr.has(u))){a=li(o,a),o=Dy(2),u=Mr(i,o,2),u!==null&&(Ry(o,u,i,a),jt(u,2),Fi(u));break}}i=i.return}}function Wg(a,i,o){var u=a.pingCache;if(u===null){u=a.pingCache=new FD;var h=new Set;u.set(i,h)}else h=u.get(i),h===void 0&&(h=new Set,u.set(i,h));h.has(o)||(Bg=!0,h.add(o),a=HD.bind(null,a,i,o),i.then(a,a))}function HD(a,i,o){var u=a.pingCache;u!==null&&u.delete(i),a.pingedLanes|=a.suspendedLanes&o,a.warmLanes&=~o,ga===a&&(Qt&o)===o&&(ka===4||ka===3&&(Qt&62914560)===Qt&&300>Be()-jg?(ta&2)===0&&ho(a,0):Pg|=o,mo===Qt&&(mo=0)),Fi(a)}function k0(a,i){i===0&&(i=La()),a=Js(a,i),a!==null&&(jt(a,i),Fi(a))}function VD(a){var i=a.memoizedState,o=0;i!==null&&(o=i.retryLane),k0(a,o)}function zD(a,i){var o=0;switch(a.tag){case 13:var u=a.stateNode,h=a.memoizedState;h!==null&&(o=h.retryLane);break;case 19:u=a.stateNode;break;case 22:u=a.stateNode._retryCache;break;default:throw Error(r(314))}u!==null&&u.delete(i),k0(a,o)}function QD(a,i){return Me(a,i)}var Dc=null,Ao=null,qg=!1,Rc=!1,Yg=!1,xs=0;function Fi(a){a!==Ao&&a.next===null&&(Ao===null?Dc=Ao=a:Ao=Ao.next=a),Rc=!0,qg||(qg=!0,GD())}function Rl(a,i){if(!Yg&&Rc){Yg=!0;do for(var o=!1,u=Dc;u!==null;){if(a!==0){var h=u.pendingLanes;if(h===0)var E=0;else{var D=u.suspendedLanes,H=u.pingedLanes;E=(1<<31-N(42|a)+1)-1,E&=h&~(D&~H),E=E&201326741?E&201326741|1:E?E|2:0}E!==0&&(o=!0,R0(u,E))}else E=Qt,E=wt(u,u===ga?E:0,u.cancelPendingCommit!==null||u.timeoutHandle!==-1),(E&3)===0||kt(u,E)||(o=!0,R0(u,E));u=u.next}while(o);Yg=!1}}function KD(){x0()}function x0(){Rc=qg=!1;var a=0;xs!==0&&(eR()&&(a=xs),xs=0);for(var i=Be(),o=null,u=Dc;u!==null;){var h=u.next,E=L0(u,i);E===0?(u.next=null,o===null?Dc=h:o.next=h,h===null&&(Ao=o)):(o=u,(a!==0||(E&3)!==0)&&(Rc=!0)),u=h}Rl(a)}function L0(a,i){for(var o=a.suspendedLanes,u=a.pingedLanes,h=a.expirationTimes,E=a.pendingLanes&-62914561;0<E;){var D=31-N(E),H=1<<D,$=h[D];$===-1?((H&o)===0||(H&u)!==0)&&(h[D]=ft(H,i)):$<=i&&(a.expiredLanes|=H),E&=~H}if(i=ga,o=Qt,o=wt(a,a===i?o:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),u=a.callbackNode,o===0||a===i&&(aa===2||aa===9)||a.cancelPendingCommit!==null)return u!==null&&u!==null&&Qe(u),a.callbackNode=null,a.callbackPriority=0;if((o&3)===0||kt(a,o)){if(i=o&-o,i===a.callbackPriority)return i;switch(u!==null&&Qe(u),Rt(o)){case 2:case 8:o=nt;break;case 32:o=We;break;case 268435456:o=je;break;default:o=We}return u=D0.bind(null,a),o=Me(o,u),a.callbackPriority=i,a.callbackNode=o,i}return u!==null&&u!==null&&Qe(u),a.callbackPriority=2,a.callbackNode=null,2}function D0(a,i){if(ln!==0&&ln!==5)return a.callbackNode=null,a.callbackPriority=0,null;var o=a.callbackNode;if(Lc()&&a.callbackNode!==o)return null;var u=Qt;return u=wt(a,a===ga?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),u===0?null:(g0(a,u,i),L0(a,Be()),a.callbackNode!=null&&a.callbackNode===o?D0.bind(null,a):null)}function R0(a,i){if(Lc())return null;g0(a,i,!0)}function GD(){aR(function(){(ta&6)!==0?Me(qe,KD):x0()})}function Jg(){return xs===0&&(xs=bi()),xs}function U0(a){return a==null||typeof a=="symbol"||typeof a=="boolean"?null:typeof a=="function"?a:kn(""+a)}function M0(a,i){var o=i.ownerDocument.createElement("input");return o.name=i.name,o.value=i.value,a.id&&o.setAttribute("form",a.id),i.parentNode.insertBefore(o,i),a=new FormData(a),o.parentNode.removeChild(o),a}function WD(a,i,o,u,h){if(i==="submit"&&o&&o.stateNode===h){var E=U0((h[Kt]||null).action),D=u.submitter;D&&(i=(i=D[Kt]||null)?U0(i.formAction):D.getAttribute("formAction"),i!==null&&(E=i,D=null));var H=new Ct("action","action",null,u,h);a.push({event:H,listeners:[{instance:null,listener:function(){if(u.defaultPrevented){if(xs!==0){var $=D?M0(h,D):new FormData(h);fg(o,{pending:!0,data:$,method:h.method,action:E},null,$)}}else typeof E=="function"&&(H.preventDefault(),$=D?M0(h,D):new FormData(h),fg(o,{pending:!0,data:$,method:h.method,action:E},E,$))},currentTarget:h}]})}}for(var Xg=0;Xg<_m.length;Xg++){var $g=_m[Xg],qD=$g.toLowerCase(),YD=$g[0].toUpperCase()+$g.slice(1);wi(qD,"on"+YD)}wi(gA,"onAnimationEnd"),wi(pA,"onAnimationIteration"),wi(hA,"onAnimationStart"),wi("dblclick","onDoubleClick"),wi("focusin","onFocus"),wi("focusout","onBlur"),wi(mD,"onTransitionRun"),wi(gD,"onTransitionStart"),wi(pD,"onTransitionCancel"),wi(fA,"onTransitionEnd"),Ae("onMouseEnter",["mouseout","mouseover"]),Ae("onMouseLeave",["mouseout","mouseover"]),Ae("onPointerEnter",["pointerout","pointerover"]),Ae("onPointerLeave",["pointerout","pointerover"]),q("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),q("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),q("onBeforeInput",["compositionend","keypress","textInput","paste"]),q("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),q("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),q("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ul="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),JD=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Ul));function _0(a,i){i=(i&4)!==0;for(var o=0;o<a.length;o++){var u=a[o],h=u.event;u=u.listeners;e:{var E=void 0;if(i)for(var D=u.length-1;0<=D;D--){var H=u[D],$=H.instance,he=H.currentTarget;if(H=H.listener,$!==E&&h.isPropagationStopped())break e;E=H,h.currentTarget=he;try{E(h)}catch(Ne){Ec(Ne)}h.currentTarget=null,E=$}else for(D=0;D<u.length;D++){if(H=u[D],$=H.instance,he=H.currentTarget,H=H.listener,$!==E&&h.isPropagationStopped())break e;E=H,h.currentTarget=he;try{E(h)}catch(Ne){Ec(Ne)}h.currentTarget=null,E=$}}}}function Pt(a,i){var o=i[da];o===void 0&&(o=i[da]=new Set);var u=a+"__bubble";o.has(u)||(F0(i,a,2,!1),o.add(u))}function Zg(a,i,o){var u=0;i&&(u|=4),F0(o,a,u,i)}var Uc="_reactListening"+Math.random().toString(36).slice(2);function ep(a){if(!a[Uc]){a[Uc]=!0,yt.forEach(function(o){o!=="selectionchange"&&(JD.has(o)||Zg(o,!1,a),Zg(o,!0,a))});var i=a.nodeType===9?a:a.ownerDocument;i===null||i[Uc]||(i[Uc]=!0,Zg("selectionchange",!1,i))}}function F0(a,i,o,u){switch(sE(i)){case 2:var h=IR;break;case 8:h=CR;break;default:h=pp}o=h.bind(null,i,o,a),h=void 0,!si||i!=="touchstart"&&i!=="touchmove"&&i!=="wheel"||(h=!0),u?h!==void 0?a.addEventListener(i,o,{capture:!0,passive:h}):a.addEventListener(i,o,!0):h!==void 0?a.addEventListener(i,o,{passive:h}):a.addEventListener(i,o,!1)}function tp(a,i,o,u,h){var E=u;if((i&1)===0&&(i&2)===0&&u!==null)e:for(;;){if(u===null)return;var D=u.tag;if(D===3||D===4){var H=u.stateNode.containerInfo;if(H===h)break;if(D===4)for(D=u.return;D!==null;){var $=D.tag;if(($===3||$===4)&&D.stateNode.containerInfo===h)return;D=D.return}for(;H!==null;){if(D=Ra(H),D===null)return;if($=D.tag,$===5||$===6||$===26||$===27){u=E=D;continue e}H=H.parentNode}}u=u.return}el(function(){var he=E,Ne=$i(o),xe=[];e:{var ye=AA.get(a);if(ye!==void 0){var be=Ct,At=a;switch(a){case"keypress":if(V(o)===0)break e;case"keydown":case"keyup":be=Em;break;case"focusin":At="focus",be=tl;break;case"focusout":At="blur",be=tl;break;case"beforeblur":case"afterblur":be=tl;break;case"click":if(o.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":be=zd;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":be=om;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":be=vm;break;case gA:case pA:case hA:be=cm;break;case fA:be=Im;break;case"scroll":case"scrollend":be=Aa;break;case"wheel":be=Wd;break;case"copy":case"cut":case"paste":be=mm;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":be=Gd;break;case"toggle":case"beforetoggle":be=Tm}var dt=(i&4)!==0,oa=!dt&&(a==="scroll"||a==="scrollend"),se=dt?ye!==null?ye+"Capture":null:ye;dt=[];for(var re=he,ge;re!==null;){var ke=re;if(ge=ke.stateNode,ke=ke.tag,ke!==5&&ke!==26&&ke!==27||ge===null||se===null||(ke=kr(re,se),ke!=null&&dt.push(Ml(re,ke,ge))),oa)break;re=re.return}0<dt.length&&(ye=new be(ye,At,null,o,Ne),xe.push({event:ye,listeners:dt}))}}if((i&7)===0){e:{if(ye=a==="mouseover"||a==="pointerover",be=a==="mouseout"||a==="pointerout",ye&&o!==ri&&(At=o.relatedTarget||o.fromElement)&&(Ra(At)||At[Vt]))break e;if((be||ye)&&(ye=Ne.window===Ne?Ne:(ye=Ne.ownerDocument)?ye.defaultView||ye.parentWindow:window,be?(At=o.relatedTarget||o.toElement,be=he,At=At?Ra(At):null,At!==null&&(oa=l(At),dt=At.tag,At!==oa||dt!==5&&dt!==27&&dt!==6)&&(At=null)):(be=null,At=he),be!==At)){if(dt=zd,ke="onMouseLeave",se="onMouseEnter",re="mouse",(a==="pointerout"||a==="pointerover")&&(dt=Gd,ke="onPointerLeave",se="onPointerEnter",re="pointer"),oa=be==null?ye:de(be),ge=At==null?ye:de(At),ye=new dt(ke,re+"leave",be,o,Ne),ye.target=oa,ye.relatedTarget=ge,ke=null,Ra(Ne)===he&&(dt=new dt(se,re+"enter",At,o,Ne),dt.target=ge,dt.relatedTarget=oa,ke=dt),oa=ke,be&&At)t:{for(dt=be,se=At,re=0,ge=dt;ge;ge=yo(ge))re++;for(ge=0,ke=se;ke;ke=yo(ke))ge++;for(;0<re-ge;)dt=yo(dt),re--;for(;0<ge-re;)se=yo(se),ge--;for(;re--;){if(dt===se||se!==null&&dt===se.alternate)break t;dt=yo(dt),se=yo(se)}dt=null}else dt=null;be!==null&&B0(xe,ye,be,dt,!1),At!==null&&oa!==null&&B0(xe,oa,At,dt,!0)}}e:{if(ye=he?de(he):window,be=ye.nodeName&&ye.nodeName.toLowerCase(),be==="select"||be==="input"&&ye.type==="file")var Ze=aA;else if(hn(ye))if(nA)Ze=dD;else{Ze=oD;var _t=sD}else be=ye.nodeName,!be||be.toLowerCase()!=="input"||ye.type!=="checkbox"&&ye.type!=="radio"?he&&Sr(he.elementType)&&(Ze=aA):Ze=lD;if(Ze&&(Ze=Ze(a,he))){Ln(xe,Ze,o,Ne);break e}_t&&_t(a,ye,he),a==="focusout"&&he&&ye.type==="number"&&he.memoizedProps.value!=null&&zs(ye,"number",ye.value)}switch(_t=he?de(he):window,a){case"focusin":(hn(_t)||_t.contentEditable==="true")&&(Ws=_t,Rm=he,sl=null);break;case"focusout":sl=Rm=Ws=null;break;case"mousedown":Um=!0;break;case"contextmenu":case"mouseup":case"dragend":Um=!1,uA(xe,o,Ne);break;case"selectionchange":if(uD)break;case"keydown":case"keyup":uA(xe,o,Ne)}var st;if(xr)e:{switch(a){case"compositionstart":var gt="onCompositionStart";break e;case"compositionend":gt="onCompositionEnd";break e;case"compositionupdate":gt="onCompositionUpdate";break e}gt=void 0}else mt?$e(a,o)&&(gt="onCompositionEnd"):a==="keydown"&&o.keyCode===229&&(gt="onCompositionStart");gt&&(il&&o.locale!=="ko"&&(mt||gt!=="onCompositionStart"?gt==="onCompositionEnd"&&mt&&(st=U()):(oi=Ne,y="value"in oi?oi.value:oi.textContent,mt=!0)),_t=Mc(he,gt),0<_t.length&&(gt=new al(gt,a,null,o,Ne),xe.push({event:gt,listeners:_t}),st?gt.data=st:(st=ot(o),st!==null&&(gt.data=st)))),(st=qd?Jt(a,o):Vn(a,o))&&(gt=Mc(he,"onBeforeInput"),0<gt.length&&(_t=new al("onBeforeInput","beforeinput",null,o,Ne),xe.push({event:_t,listeners:gt}),_t.data=st)),WD(xe,a,he,o,Ne)}_0(xe,i)})}function Ml(a,i,o){return{instance:a,listener:i,currentTarget:o}}function Mc(a,i){for(var o=i+"Capture",u=[];a!==null;){var h=a,E=h.stateNode;if(h=h.tag,h!==5&&h!==26&&h!==27||E===null||(h=kr(a,o),h!=null&&u.unshift(Ml(a,h,E)),h=kr(a,i),h!=null&&u.push(Ml(a,h,E))),a.tag===3)return u;a=a.return}return[]}function yo(a){if(a===null)return null;do a=a.return;while(a&&a.tag!==5&&a.tag!==27);return a||null}function B0(a,i,o,u,h){for(var E=i._reactName,D=[];o!==null&&o!==u;){var H=o,$=H.alternate,he=H.stateNode;if(H=H.tag,$!==null&&$===u)break;H!==5&&H!==26&&H!==27||he===null||($=he,h?(he=kr(o,E),he!=null&&D.unshift(Ml(o,he,$))):h||(he=kr(o,E),he!=null&&D.push(Ml(o,he,$)))),o=o.return}D.length!==0&&a.push({event:i,listeners:D})}var XD=/\r\n?/g,$D=/\u0000|\uFFFD/g;function P0(a){return(typeof a=="string"?a:""+a).replace(XD,`
`).replace($D,"")}function O0(a,i){return i=P0(i),P0(a)===i}function _c(){}function sa(a,i,o,u,h,E){switch(o){case"children":typeof u=="string"?i==="body"||i==="textarea"&&u===""||Di(a,u):(typeof u=="number"||typeof u=="bigint")&&i!=="body"&&Di(a,""+u);break;case"className":wa(a,"class",u);break;case"tabIndex":wa(a,"tabindex",u);break;case"dir":case"role":case"viewBox":case"width":case"height":wa(a,o,u);break;case"style":ms(a,u,E);break;case"data":if(i!=="object"){wa(a,"data",u);break}case"src":case"href":if(u===""&&(i!=="a"||o!=="href")){a.removeAttribute(o);break}if(u==null||typeof u=="function"||typeof u=="symbol"||typeof u=="boolean"){a.removeAttribute(o);break}u=kn(""+u),a.setAttribute(o,u);break;case"action":case"formAction":if(typeof u=="function"){a.setAttribute(o,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof E=="function"&&(o==="formAction"?(i!=="input"&&sa(a,i,"name",h.name,h,null),sa(a,i,"formEncType",h.formEncType,h,null),sa(a,i,"formMethod",h.formMethod,h,null),sa(a,i,"formTarget",h.formTarget,h,null)):(sa(a,i,"encType",h.encType,h,null),sa(a,i,"method",h.method,h,null),sa(a,i,"target",h.target,h,null)));if(u==null||typeof u=="symbol"||typeof u=="boolean"){a.removeAttribute(o);break}u=kn(""+u),a.setAttribute(o,u);break;case"onClick":u!=null&&(a.onclick=_c);break;case"onScroll":u!=null&&Pt("scroll",a);break;case"onScrollEnd":u!=null&&Pt("scrollend",a);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(r(61));if(o=u.__html,o!=null){if(h.children!=null)throw Error(r(60));a.innerHTML=o}}break;case"multiple":a.multiple=u&&typeof u!="function"&&typeof u!="symbol";break;case"muted":a.muted=u&&typeof u!="function"&&typeof u!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(u==null||typeof u=="function"||typeof u=="boolean"||typeof u=="symbol"){a.removeAttribute("xlink:href");break}o=kn(""+u),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":u!=null&&typeof u!="function"&&typeof u!="symbol"?a.setAttribute(o,""+u):a.removeAttribute(o);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":u&&typeof u!="function"&&typeof u!="symbol"?a.setAttribute(o,""):a.removeAttribute(o);break;case"capture":case"download":u===!0?a.setAttribute(o,""):u!==!1&&u!=null&&typeof u!="function"&&typeof u!="symbol"?a.setAttribute(o,u):a.removeAttribute(o);break;case"cols":case"rows":case"size":case"span":u!=null&&typeof u!="function"&&typeof u!="symbol"&&!isNaN(u)&&1<=u?a.setAttribute(o,u):a.removeAttribute(o);break;case"rowSpan":case"start":u==null||typeof u=="function"||typeof u=="symbol"||isNaN(u)?a.removeAttribute(o):a.setAttribute(o,u);break;case"popover":Pt("beforetoggle",a),Pt("toggle",a),Zt(a,"popover",u);break;case"xlinkActuate":ma(a,"http://www.w3.org/1999/xlink","xlink:actuate",u);break;case"xlinkArcrole":ma(a,"http://www.w3.org/1999/xlink","xlink:arcrole",u);break;case"xlinkRole":ma(a,"http://www.w3.org/1999/xlink","xlink:role",u);break;case"xlinkShow":ma(a,"http://www.w3.org/1999/xlink","xlink:show",u);break;case"xlinkTitle":ma(a,"http://www.w3.org/1999/xlink","xlink:title",u);break;case"xlinkType":ma(a,"http://www.w3.org/1999/xlink","xlink:type",u);break;case"xmlBase":ma(a,"http://www.w3.org/XML/1998/namespace","xml:base",u);break;case"xmlLang":ma(a,"http://www.w3.org/XML/1998/namespace","xml:lang",u);break;case"xmlSpace":ma(a,"http://www.w3.org/XML/1998/namespace","xml:space",u);break;case"is":Zt(a,"is",u);break;case"innerText":case"textContent":break;default:(!(2<o.length)||o[0]!=="o"&&o[0]!=="O"||o[1]!=="n"&&o[1]!=="N")&&(o=Xi.get(o)||o,Zt(a,o,u))}}function ap(a,i,o,u,h,E){switch(o){case"style":ms(a,u,E);break;case"dangerouslySetInnerHTML":if(u!=null){if(typeof u!="object"||!("__html"in u))throw Error(r(61));if(o=u.__html,o!=null){if(h.children!=null)throw Error(r(60));a.innerHTML=o}}break;case"children":typeof u=="string"?Di(a,u):(typeof u=="number"||typeof u=="bigint")&&Di(a,""+u);break;case"onScroll":u!=null&&Pt("scroll",a);break;case"onScrollEnd":u!=null&&Pt("scrollend",a);break;case"onClick":u!=null&&(a.onclick=_c);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Re.hasOwnProperty(o))e:{if(o[0]==="o"&&o[1]==="n"&&(h=o.endsWith("Capture"),i=o.slice(2,h?o.length-7:void 0),E=a[Kt]||null,E=E!=null?E[o]:null,typeof E=="function"&&a.removeEventListener(i,E,h),typeof u=="function")){typeof E!="function"&&E!==null&&(o in a?a[o]=null:a.hasAttribute(o)&&a.removeAttribute(o)),a.addEventListener(i,u,h);break e}o in a?a[o]=u:u===!0?a.setAttribute(o,""):Zt(a,o,u)}}}function dn(a,i,o){switch(i){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Pt("error",a),Pt("load",a);var u=!1,h=!1,E;for(E in o)if(o.hasOwnProperty(E)){var D=o[E];if(D!=null)switch(E){case"src":u=!0;break;case"srcSet":h=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(r(137,i));default:sa(a,i,E,D,o,null)}}h&&sa(a,i,"srcSet",o.srcSet,o,null),u&&sa(a,i,"src",o.src,o,null);return;case"input":Pt("invalid",a);var H=E=D=h=null,$=null,he=null;for(u in o)if(o.hasOwnProperty(u)){var Ne=o[u];if(Ne!=null)switch(u){case"name":h=Ne;break;case"type":D=Ne;break;case"checked":$=Ne;break;case"defaultChecked":he=Ne;break;case"value":E=Ne;break;case"defaultValue":H=Ne;break;case"children":case"dangerouslySetInnerHTML":if(Ne!=null)throw Error(r(137,i));break;default:sa(a,i,u,Ne,o,null)}}Ir(a,E,H,$,he,D,h,!1),Yi(a);return;case"select":Pt("invalid",a),u=D=E=null;for(h in o)if(o.hasOwnProperty(h)&&(H=o[h],H!=null))switch(h){case"value":E=H;break;case"defaultValue":D=H;break;case"multiple":u=H;default:sa(a,i,h,H,o,null)}i=E,o=D,a.multiple=!!u,i!=null?Cr(a,!!u,i,!1):o!=null&&Cr(a,!!u,o,!0);return;case"textarea":Pt("invalid",a),E=h=u=null;for(D in o)if(o.hasOwnProperty(D)&&(H=o[D],H!=null))switch(D){case"value":u=H;break;case"defaultValue":h=H;break;case"children":E=H;break;case"dangerouslySetInnerHTML":if(H!=null)throw Error(r(91));break;default:sa(a,i,D,H,o,null)}Xo(a,u,h,E),Yi(a);return;case"option":for($ in o)if(o.hasOwnProperty($)&&(u=o[$],u!=null))switch($){case"selected":a.selected=u&&typeof u!="function"&&typeof u!="symbol";break;default:sa(a,i,$,u,o,null)}return;case"dialog":Pt("beforetoggle",a),Pt("toggle",a),Pt("cancel",a),Pt("close",a);break;case"iframe":case"object":Pt("load",a);break;case"video":case"audio":for(u=0;u<Ul.length;u++)Pt(Ul[u],a);break;case"image":Pt("error",a),Pt("load",a);break;case"details":Pt("toggle",a);break;case"embed":case"source":case"link":Pt("error",a),Pt("load",a);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(he in o)if(o.hasOwnProperty(he)&&(u=o[he],u!=null))switch(he){case"children":case"dangerouslySetInnerHTML":throw Error(r(137,i));default:sa(a,i,he,u,o,null)}return;default:if(Sr(i)){for(Ne in o)o.hasOwnProperty(Ne)&&(u=o[Ne],u!==void 0&&ap(a,i,Ne,u,o,void 0));return}}for(H in o)o.hasOwnProperty(H)&&(u=o[H],u!=null&&sa(a,i,H,u,o,null))}function ZD(a,i,o,u){switch(i){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var h=null,E=null,D=null,H=null,$=null,he=null,Ne=null;for(be in o){var xe=o[be];if(o.hasOwnProperty(be)&&xe!=null)switch(be){case"checked":break;case"value":break;case"defaultValue":$=xe;default:u.hasOwnProperty(be)||sa(a,i,be,null,u,xe)}}for(var ye in u){var be=u[ye];if(xe=o[ye],u.hasOwnProperty(ye)&&(be!=null||xe!=null))switch(ye){case"type":E=be;break;case"name":h=be;break;case"checked":he=be;break;case"defaultChecked":Ne=be;break;case"value":D=be;break;case"defaultValue":H=be;break;case"children":case"dangerouslySetInnerHTML":if(be!=null)throw Error(r(137,i));break;default:be!==xe&&sa(a,i,ye,be,u,xe)}}Jo(a,D,H,$,he,Ne,E,h);return;case"select":be=D=H=ye=null;for(E in o)if($=o[E],o.hasOwnProperty(E)&&$!=null)switch(E){case"value":break;case"multiple":be=$;default:u.hasOwnProperty(E)||sa(a,i,E,null,u,$)}for(h in u)if(E=u[h],$=o[h],u.hasOwnProperty(h)&&(E!=null||$!=null))switch(h){case"value":ye=E;break;case"defaultValue":H=E;break;case"multiple":D=E;default:E!==$&&sa(a,i,h,E,u,$)}i=H,o=D,u=be,ye!=null?Cr(a,!!o,ye,!1):!!u!=!!o&&(i!=null?Cr(a,!!o,i,!0):Cr(a,!!o,o?[]:"",!1));return;case"textarea":be=ye=null;for(H in o)if(h=o[H],o.hasOwnProperty(H)&&h!=null&&!u.hasOwnProperty(H))switch(H){case"value":break;case"children":break;default:sa(a,i,H,null,u,h)}for(D in u)if(h=u[D],E=o[D],u.hasOwnProperty(D)&&(h!=null||E!=null))switch(D){case"value":ye=h;break;case"defaultValue":be=h;break;case"children":break;case"dangerouslySetInnerHTML":if(h!=null)throw Error(r(91));break;default:h!==E&&sa(a,i,D,h,u,E)}Qs(a,ye,be);return;case"option":for(var At in o)if(ye=o[At],o.hasOwnProperty(At)&&ye!=null&&!u.hasOwnProperty(At))switch(At){case"selected":a.selected=!1;break;default:sa(a,i,At,null,u,ye)}for($ in u)if(ye=u[$],be=o[$],u.hasOwnProperty($)&&ye!==be&&(ye!=null||be!=null))switch($){case"selected":a.selected=ye&&typeof ye!="function"&&typeof ye!="symbol";break;default:sa(a,i,$,ye,u,be)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var dt in o)ye=o[dt],o.hasOwnProperty(dt)&&ye!=null&&!u.hasOwnProperty(dt)&&sa(a,i,dt,null,u,ye);for(he in u)if(ye=u[he],be=o[he],u.hasOwnProperty(he)&&ye!==be&&(ye!=null||be!=null))switch(he){case"children":case"dangerouslySetInnerHTML":if(ye!=null)throw Error(r(137,i));break;default:sa(a,i,he,ye,u,be)}return;default:if(Sr(i)){for(var oa in o)ye=o[oa],o.hasOwnProperty(oa)&&ye!==void 0&&!u.hasOwnProperty(oa)&&ap(a,i,oa,void 0,u,ye);for(Ne in u)ye=u[Ne],be=o[Ne],!u.hasOwnProperty(Ne)||ye===be||ye===void 0&&be===void 0||ap(a,i,Ne,ye,u,be);return}}for(var se in o)ye=o[se],o.hasOwnProperty(se)&&ye!=null&&!u.hasOwnProperty(se)&&sa(a,i,se,null,u,ye);for(xe in u)ye=u[xe],be=o[xe],!u.hasOwnProperty(xe)||ye===be||ye==null&&be==null||sa(a,i,xe,ye,u,be)}var np=null,ip=null;function Fc(a){return a.nodeType===9?a:a.ownerDocument}function j0(a){switch(a){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function H0(a,i){if(a===0)switch(i){case"svg":return 1;case"math":return 2;default:return 0}return a===1&&i==="foreignObject"?0:a}function rp(a,i){return a==="textarea"||a==="noscript"||typeof i.children=="string"||typeof i.children=="number"||typeof i.children=="bigint"||typeof i.dangerouslySetInnerHTML=="object"&&i.dangerouslySetInnerHTML!==null&&i.dangerouslySetInnerHTML.__html!=null}var sp=null;function eR(){var a=window.event;return a&&a.type==="popstate"?a===sp?!1:(sp=a,!0):(sp=null,!1)}var V0=typeof setTimeout=="function"?setTimeout:void 0,tR=typeof clearTimeout=="function"?clearTimeout:void 0,z0=typeof Promise=="function"?Promise:void 0,aR=typeof queueMicrotask=="function"?queueMicrotask:typeof z0<"u"?function(a){return z0.resolve(null).then(a).catch(nR)}:V0;function nR(a){setTimeout(function(){throw a})}function Gr(a){return a==="head"}function Q0(a,i){var o=i,u=0,h=0;do{var E=o.nextSibling;if(a.removeChild(o),E&&E.nodeType===8)if(o=E.data,o==="/$"){if(0<u&&8>u){o=u;var D=a.ownerDocument;if(o&1&&_l(D.documentElement),o&2&&_l(D.body),o&4)for(o=D.head,_l(o),D=o.firstChild;D;){var H=D.nextSibling,$=D.nodeName;D[Ta]||$==="SCRIPT"||$==="STYLE"||$==="LINK"&&D.rel.toLowerCase()==="stylesheet"||o.removeChild(D),D=H}}if(h===0){a.removeChild(E),zl(i);return}h--}else o==="$"||o==="$?"||o==="$!"?h++:u=o.charCodeAt(0)-48;else u=0;o=E}while(o);zl(i)}function op(a){var i=a.firstChild;for(i&&i.nodeType===10&&(i=i.nextSibling);i;){var o=i;switch(i=i.nextSibling,o.nodeName){case"HTML":case"HEAD":case"BODY":op(o),ha(o);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(o.rel.toLowerCase()==="stylesheet")continue}a.removeChild(o)}}function iR(a,i,o,u){for(;a.nodeType===1;){var h=o;if(a.nodeName.toLowerCase()!==i.toLowerCase()){if(!u&&(a.nodeName!=="INPUT"||a.type!=="hidden"))break}else if(u){if(!a[Ta])switch(i){case"meta":if(!a.hasAttribute("itemprop"))break;return a;case"link":if(E=a.getAttribute("rel"),E==="stylesheet"&&a.hasAttribute("data-precedence"))break;if(E!==h.rel||a.getAttribute("href")!==(h.href==null||h.href===""?null:h.href)||a.getAttribute("crossorigin")!==(h.crossOrigin==null?null:h.crossOrigin)||a.getAttribute("title")!==(h.title==null?null:h.title))break;return a;case"style":if(a.hasAttribute("data-precedence"))break;return a;case"script":if(E=a.getAttribute("src"),(E!==(h.src==null?null:h.src)||a.getAttribute("type")!==(h.type==null?null:h.type)||a.getAttribute("crossorigin")!==(h.crossOrigin==null?null:h.crossOrigin))&&E&&a.hasAttribute("async")&&!a.hasAttribute("itemprop"))break;return a;default:return a}}else if(i==="input"&&a.type==="hidden"){var E=h.name==null?null:""+h.name;if(h.type==="hidden"&&a.getAttribute("name")===E)return a}else return a;if(a=Ci(a.nextSibling),a===null)break}return null}function rR(a,i,o){if(i==="")return null;for(;a.nodeType!==3;)if((a.nodeType!==1||a.nodeName!=="INPUT"||a.type!=="hidden")&&!o||(a=Ci(a.nextSibling),a===null))return null;return a}function lp(a){return a.data==="$!"||a.data==="$?"&&a.ownerDocument.readyState==="complete"}function sR(a,i){var o=a.ownerDocument;if(a.data!=="$?"||o.readyState==="complete")i();else{var u=function(){i(),o.removeEventListener("DOMContentLoaded",u)};o.addEventListener("DOMContentLoaded",u),a._reactRetry=u}}function Ci(a){for(;a!=null;a=a.nextSibling){var i=a.nodeType;if(i===1||i===3)break;if(i===8){if(i=a.data,i==="$"||i==="$!"||i==="$?"||i==="F!"||i==="F")break;if(i==="/$")return null}}return a}var dp=null;function K0(a){a=a.previousSibling;for(var i=0;a;){if(a.nodeType===8){var o=a.data;if(o==="$"||o==="$!"||o==="$?"){if(i===0)return a;i--}else o==="/$"&&i++}a=a.previousSibling}return null}function G0(a,i,o){switch(i=Fc(o),a){case"html":if(a=i.documentElement,!a)throw Error(r(452));return a;case"head":if(a=i.head,!a)throw Error(r(453));return a;case"body":if(a=i.body,!a)throw Error(r(454));return a;default:throw Error(r(451))}}function _l(a){for(var i=a.attributes;i.length;)a.removeAttributeNode(i[0]);ha(a)}var pi=new Map,W0=new Set;function Bc(a){return typeof a.getRootNode=="function"?a.getRootNode():a.nodeType===9?a:a.ownerDocument}var mr=te.d;te.d={f:oR,r:lR,D:dR,C:cR,L:uR,m:mR,X:pR,S:gR,M:hR};function oR(){var a=mr.f(),i=kc();return a||i}function lR(a){var i=jn(a);i!==null&&i.tag===5&&i.type==="form"?gy(i):mr.r(a)}var Eo=typeof document>"u"?null:document;function q0(a,i,o){var u=Eo;if(u&&typeof i=="string"&&i){var h=Nn(i);h='link[rel="'+a+'"][href="'+h+'"]',typeof o=="string"&&(h+='[crossorigin="'+o+'"]'),W0.has(h)||(W0.add(h),a={rel:a,crossOrigin:o,href:i},u.querySelector(h)===null&&(i=u.createElement("link"),dn(i,"link",a),ze(i),u.head.appendChild(i)))}}function dR(a){mr.D(a),q0("dns-prefetch",a,null)}function cR(a,i){mr.C(a,i),q0("preconnect",a,i)}function uR(a,i,o){mr.L(a,i,o);var u=Eo;if(u&&a&&i){var h='link[rel="preload"][as="'+Nn(i)+'"]';i==="image"&&o&&o.imageSrcSet?(h+='[imagesrcset="'+Nn(o.imageSrcSet)+'"]',typeof o.imageSizes=="string"&&(h+='[imagesizes="'+Nn(o.imageSizes)+'"]')):h+='[href="'+Nn(a)+'"]';var E=h;switch(i){case"style":E=bo(a);break;case"script":E=vo(a)}pi.has(E)||(a=A({rel:"preload",href:i==="image"&&o&&o.imageSrcSet?void 0:a,as:i},o),pi.set(E,a),u.querySelector(h)!==null||i==="style"&&u.querySelector(Fl(E))||i==="script"&&u.querySelector(Bl(E))||(i=u.createElement("link"),dn(i,"link",a),ze(i),u.head.appendChild(i)))}}function mR(a,i){mr.m(a,i);var o=Eo;if(o&&a){var u=i&&typeof i.as=="string"?i.as:"script",h='link[rel="modulepreload"][as="'+Nn(u)+'"][href="'+Nn(a)+'"]',E=h;switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":E=vo(a)}if(!pi.has(E)&&(a=A({rel:"modulepreload",href:a},i),pi.set(E,a),o.querySelector(h)===null)){switch(u){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(o.querySelector(Bl(E)))return}u=o.createElement("link"),dn(u,"link",a),ze(u),o.head.appendChild(u)}}}function gR(a,i,o){mr.S(a,i,o);var u=Eo;if(u&&a){var h=He(u).hoistableStyles,E=bo(a);i=i||"default";var D=h.get(E);if(!D){var H={loading:0,preload:null};if(D=u.querySelector(Fl(E)))H.loading=5;else{a=A({rel:"stylesheet",href:a,"data-precedence":i},o),(o=pi.get(E))&&cp(a,o);var $=D=u.createElement("link");ze($),dn($,"link",a),$._p=new Promise(function(he,Ne){$.onload=he,$.onerror=Ne}),$.addEventListener("load",function(){H.loading|=1}),$.addEventListener("error",function(){H.loading|=2}),H.loading|=4,Pc(D,i,u)}D={type:"stylesheet",instance:D,count:1,state:H},h.set(E,D)}}}function pR(a,i){mr.X(a,i);var o=Eo;if(o&&a){var u=He(o).hoistableScripts,h=vo(a),E=u.get(h);E||(E=o.querySelector(Bl(h)),E||(a=A({src:a,async:!0},i),(i=pi.get(h))&&up(a,i),E=o.createElement("script"),ze(E),dn(E,"link",a),o.head.appendChild(E)),E={type:"script",instance:E,count:1,state:null},u.set(h,E))}}function hR(a,i){mr.M(a,i);var o=Eo;if(o&&a){var u=He(o).hoistableScripts,h=vo(a),E=u.get(h);E||(E=o.querySelector(Bl(h)),E||(a=A({src:a,async:!0,type:"module"},i),(i=pi.get(h))&&up(a,i),E=o.createElement("script"),ze(E),dn(E,"link",a),o.head.appendChild(E)),E={type:"script",instance:E,count:1,state:null},u.set(h,E))}}function Y0(a,i,o,u){var h=(h=ve.current)?Bc(h):null;if(!h)throw Error(r(446));switch(a){case"meta":case"title":return null;case"style":return typeof o.precedence=="string"&&typeof o.href=="string"?(i=bo(o.href),o=He(h).hoistableStyles,u=o.get(i),u||(u={type:"style",instance:null,count:0,state:null},o.set(i,u)),u):{type:"void",instance:null,count:0,state:null};case"link":if(o.rel==="stylesheet"&&typeof o.href=="string"&&typeof o.precedence=="string"){a=bo(o.href);var E=He(h).hoistableStyles,D=E.get(a);if(D||(h=h.ownerDocument||h,D={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},E.set(a,D),(E=h.querySelector(Fl(a)))&&!E._p&&(D.instance=E,D.state.loading=5),pi.has(a)||(o={rel:"preload",as:"style",href:o.href,crossOrigin:o.crossOrigin,integrity:o.integrity,media:o.media,hrefLang:o.hrefLang,referrerPolicy:o.referrerPolicy},pi.set(a,o),E||fR(h,a,o,D.state))),i&&u===null)throw Error(r(528,""));return D}if(i&&u!==null)throw Error(r(529,""));return null;case"script":return i=o.async,o=o.src,typeof o=="string"&&i&&typeof i!="function"&&typeof i!="symbol"?(i=vo(o),o=He(h).hoistableScripts,u=o.get(i),u||(u={type:"script",instance:null,count:0,state:null},o.set(i,u)),u):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,a))}}function bo(a){return'href="'+Nn(a)+'"'}function Fl(a){return'link[rel="stylesheet"]['+a+"]"}function J0(a){return A({},a,{"data-precedence":a.precedence,precedence:null})}function fR(a,i,o,u){a.querySelector('link[rel="preload"][as="style"]['+i+"]")?u.loading=1:(i=a.createElement("link"),u.preload=i,i.addEventListener("load",function(){return u.loading|=1}),i.addEventListener("error",function(){return u.loading|=2}),dn(i,"link",o),ze(i),a.head.appendChild(i))}function vo(a){return'[src="'+Nn(a)+'"]'}function Bl(a){return"script[async]"+a}function X0(a,i,o){if(i.count++,i.instance===null)switch(i.type){case"style":var u=a.querySelector('style[data-href~="'+Nn(o.href)+'"]');if(u)return i.instance=u,ze(u),u;var h=A({},o,{"data-href":o.href,"data-precedence":o.precedence,href:null,precedence:null});return u=(a.ownerDocument||a).createElement("style"),ze(u),dn(u,"style",h),Pc(u,o.precedence,a),i.instance=u;case"stylesheet":h=bo(o.href);var E=a.querySelector(Fl(h));if(E)return i.state.loading|=4,i.instance=E,ze(E),E;u=J0(o),(h=pi.get(h))&&cp(u,h),E=(a.ownerDocument||a).createElement("link"),ze(E);var D=E;return D._p=new Promise(function(H,$){D.onload=H,D.onerror=$}),dn(E,"link",u),i.state.loading|=4,Pc(E,o.precedence,a),i.instance=E;case"script":return E=vo(o.src),(h=a.querySelector(Bl(E)))?(i.instance=h,ze(h),h):(u=o,(h=pi.get(E))&&(u=A({},o),up(u,h)),a=a.ownerDocument||a,h=a.createElement("script"),ze(h),dn(h,"link",u),a.head.appendChild(h),i.instance=h);case"void":return null;default:throw Error(r(443,i.type))}else i.type==="stylesheet"&&(i.state.loading&4)===0&&(u=i.instance,i.state.loading|=4,Pc(u,o.precedence,a));return i.instance}function Pc(a,i,o){for(var u=o.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),h=u.length?u[u.length-1]:null,E=h,D=0;D<u.length;D++){var H=u[D];if(H.dataset.precedence===i)E=H;else if(E!==h)break}E?E.parentNode.insertBefore(a,E.nextSibling):(i=o.nodeType===9?o.head:o,i.insertBefore(a,i.firstChild))}function cp(a,i){a.crossOrigin==null&&(a.crossOrigin=i.crossOrigin),a.referrerPolicy==null&&(a.referrerPolicy=i.referrerPolicy),a.title==null&&(a.title=i.title)}function up(a,i){a.crossOrigin==null&&(a.crossOrigin=i.crossOrigin),a.referrerPolicy==null&&(a.referrerPolicy=i.referrerPolicy),a.integrity==null&&(a.integrity=i.integrity)}var Oc=null;function $0(a,i,o){if(Oc===null){var u=new Map,h=Oc=new Map;h.set(o,u)}else h=Oc,u=h.get(o),u||(u=new Map,h.set(o,u));if(u.has(a))return u;for(u.set(a,null),o=o.getElementsByTagName(a),h=0;h<o.length;h++){var E=o[h];if(!(E[Ta]||E[Mt]||a==="link"&&E.getAttribute("rel")==="stylesheet")&&E.namespaceURI!=="http://www.w3.org/2000/svg"){var D=E.getAttribute(i)||"";D=a+D;var H=u.get(D);H?H.push(E):u.set(D,[E])}}return u}function Z0(a,i,o){a=a.ownerDocument||a,a.head.insertBefore(o,i==="title"?a.querySelector("head > title"):null)}function AR(a,i,o){if(o===1||i.itemProp!=null)return!1;switch(a){case"meta":case"title":return!0;case"style":if(typeof i.precedence!="string"||typeof i.href!="string"||i.href==="")break;return!0;case"link":if(typeof i.rel!="string"||typeof i.href!="string"||i.href===""||i.onLoad||i.onError)break;switch(i.rel){case"stylesheet":return a=i.disabled,typeof i.precedence=="string"&&a==null;default:return!0}case"script":if(i.async&&typeof i.async!="function"&&typeof i.async!="symbol"&&!i.onLoad&&!i.onError&&i.src&&typeof i.src=="string")return!0}return!1}function eE(a){return!(a.type==="stylesheet"&&(a.state.loading&3)===0)}var Pl=null;function yR(){}function ER(a,i,o){if(Pl===null)throw Error(r(475));var u=Pl;if(i.type==="stylesheet"&&(typeof o.media!="string"||matchMedia(o.media).matches!==!1)&&(i.state.loading&4)===0){if(i.instance===null){var h=bo(o.href),E=a.querySelector(Fl(h));if(E){a=E._p,a!==null&&typeof a=="object"&&typeof a.then=="function"&&(u.count++,u=jc.bind(u),a.then(u,u)),i.state.loading|=4,i.instance=E,ze(E);return}E=a.ownerDocument||a,o=J0(o),(h=pi.get(h))&&cp(o,h),E=E.createElement("link"),ze(E);var D=E;D._p=new Promise(function(H,$){D.onload=H,D.onerror=$}),dn(E,"link",o),i.instance=E}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(i,a),(a=i.state.preload)&&(i.state.loading&3)===0&&(u.count++,i=jc.bind(u),a.addEventListener("load",i),a.addEventListener("error",i))}}function bR(){if(Pl===null)throw Error(r(475));var a=Pl;return a.stylesheets&&a.count===0&&mp(a,a.stylesheets),0<a.count?function(i){var o=setTimeout(function(){if(a.stylesheets&&mp(a,a.stylesheets),a.unsuspend){var u=a.unsuspend;a.unsuspend=null,u()}},6e4);return a.unsuspend=i,function(){a.unsuspend=null,clearTimeout(o)}}:null}function jc(){if(this.count--,this.count===0){if(this.stylesheets)mp(this,this.stylesheets);else if(this.unsuspend){var a=this.unsuspend;this.unsuspend=null,a()}}}var Hc=null;function mp(a,i){a.stylesheets=null,a.unsuspend!==null&&(a.count++,Hc=new Map,i.forEach(vR,a),Hc=null,jc.call(a))}function vR(a,i){if(!(i.state.loading&4)){var o=Hc.get(a);if(o)var u=o.get(null);else{o=new Map,Hc.set(a,o);for(var h=a.querySelectorAll("link[data-precedence],style[data-precedence]"),E=0;E<h.length;E++){var D=h[E];(D.nodeName==="LINK"||D.getAttribute("media")!=="not all")&&(o.set(D.dataset.precedence,D),u=D)}u&&o.set(null,u)}h=i.instance,D=h.getAttribute("data-precedence"),E=o.get(D)||u,E===u&&o.set(null,h),o.set(D,h),this.count++,u=jc.bind(this),h.addEventListener("load",u),h.addEventListener("error",u),E?E.parentNode.insertBefore(h,E.nextSibling):(a=a.nodeType===9?a.head:a,a.insertBefore(h,a.firstChild)),i.state.loading|=4}}var Ol={$$typeof:x,Provider:null,Consumer:null,_currentValue:ce,_currentValue2:ce,_threadCount:0};function wR(a,i,o,u,h,E,D,H){this.tag=1,this.containerInfo=a,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=gn(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gn(0),this.hiddenUpdates=gn(null),this.identifierPrefix=u,this.onUncaughtError=h,this.onCaughtError=E,this.onRecoverableError=D,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=H,this.incompleteTransitions=new Map}function tE(a,i,o,u,h,E,D,H,$,he,Ne,xe){return a=new wR(a,i,o,D,H,$,he,xe),i=1,E===!0&&(i|=24),E=Kn(3,null,null,i),a.current=E,E.stateNode=a,i=Wm(),i.refCount++,a.pooledCache=i,i.refCount++,E.memoizedState={element:u,isDehydrated:o,cache:i},Xm(E),a}function aE(a){return a?(a=Xs,a):Xs}function nE(a,i,o,u,h,E){h=aE(h),u.context===null?u.context=h:u.pendingContext=h,u=Ur(i),u.payload={element:o},E=E===void 0?null:E,E!==null&&(u.callback=E),o=Mr(a,u,i),o!==null&&(Jn(o,a,i),hl(o,a,i))}function iE(a,i){if(a=a.memoizedState,a!==null&&a.dehydrated!==null){var o=a.retryLane;a.retryLane=o!==0&&o<i?o:i}}function gp(a,i){iE(a,i),(a=a.alternate)&&iE(a,i)}function rE(a){if(a.tag===13){var i=Js(a,67108864);i!==null&&Jn(i,a,67108864),gp(a,67108864)}}var Vc=!0;function IR(a,i,o,u){var h=X.T;X.T=null;var E=te.p;try{te.p=2,pp(a,i,o,u)}finally{te.p=E,X.T=h}}function CR(a,i,o,u){var h=X.T;X.T=null;var E=te.p;try{te.p=8,pp(a,i,o,u)}finally{te.p=E,X.T=h}}function pp(a,i,o,u){if(Vc){var h=hp(u);if(h===null)tp(a,i,u,zc,o),oE(a,u);else if(TR(h,a,i,o,u))u.stopPropagation();else if(oE(a,u),i&4&&-1<SR.indexOf(a)){for(;h!==null;){var E=jn(h);if(E!==null)switch(E.tag){case 3:if(E=E.stateNode,E.current.memoizedState.isDehydrated){var D=lt(E.pendingLanes);if(D!==0){var H=E;for(H.pendingLanes|=2,H.entangledLanes|=2;D;){var $=1<<31-N(D);H.entanglements[1]|=$,D&=~$}Fi(E),(ta&6)===0&&(Tc=Be()+500,Rl(0))}}break;case 13:H=Js(E,2),H!==null&&Jn(H,E,2),kc(),gp(E,2)}if(E=hp(u),E===null&&tp(a,i,u,zc,o),E===h)break;h=E}h!==null&&u.stopPropagation()}else tp(a,i,u,null,o)}}function hp(a){return a=$i(a),fp(a)}var zc=null;function fp(a){if(zc=null,a=Ra(a),a!==null){var i=l(a);if(i===null)a=null;else{var o=i.tag;if(o===13){if(a=c(i),a!==null)return a;a=null}else if(o===3){if(i.stateNode.current.memoizedState.isDehydrated)return i.tag===3?i.stateNode.containerInfo:null;a=null}else i!==a&&(a=null)}}return zc=a,null}function sE(a){switch(a){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Ge()){case qe:return 2;case nt:return 8;case We:case Ee:return 32;case je:return 268435456;default:return 32}default:return 32}}var Ap=!1,Wr=null,qr=null,Yr=null,jl=new Map,Hl=new Map,Jr=[],SR="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function oE(a,i){switch(a){case"focusin":case"focusout":Wr=null;break;case"dragenter":case"dragleave":qr=null;break;case"mouseover":case"mouseout":Yr=null;break;case"pointerover":case"pointerout":jl.delete(i.pointerId);break;case"gotpointercapture":case"lostpointercapture":Hl.delete(i.pointerId)}}function Vl(a,i,o,u,h,E){return a===null||a.nativeEvent!==E?(a={blockedOn:i,domEventName:o,eventSystemFlags:u,nativeEvent:E,targetContainers:[h]},i!==null&&(i=jn(i),i!==null&&rE(i)),a):(a.eventSystemFlags|=u,i=a.targetContainers,h!==null&&i.indexOf(h)===-1&&i.push(h),a)}function TR(a,i,o,u,h){switch(i){case"focusin":return Wr=Vl(Wr,a,i,o,u,h),!0;case"dragenter":return qr=Vl(qr,a,i,o,u,h),!0;case"mouseover":return Yr=Vl(Yr,a,i,o,u,h),!0;case"pointerover":var E=h.pointerId;return jl.set(E,Vl(jl.get(E)||null,a,i,o,u,h)),!0;case"gotpointercapture":return E=h.pointerId,Hl.set(E,Vl(Hl.get(E)||null,a,i,o,u,h)),!0}return!1}function lE(a){var i=Ra(a.target);if(i!==null){var o=l(i);if(o!==null){if(i=o.tag,i===13){if(i=c(o),i!==null){a.blockedOn=i,sn(a.priority,function(){if(o.tag===13){var u=Yn();u=xt(u);var h=Js(o,u);h!==null&&Jn(h,o,u),gp(o,u)}});return}}else if(i===3&&o.stateNode.current.memoizedState.isDehydrated){a.blockedOn=o.tag===3?o.stateNode.containerInfo:null;return}}}a.blockedOn=null}function Qc(a){if(a.blockedOn!==null)return!1;for(var i=a.targetContainers;0<i.length;){var o=hp(a.nativeEvent);if(o===null){o=a.nativeEvent;var u=new o.constructor(o.type,o);ri=u,o.target.dispatchEvent(u),ri=null}else return i=jn(o),i!==null&&rE(i),a.blockedOn=o,!1;i.shift()}return!0}function dE(a,i,o){Qc(a)&&o.delete(i)}function NR(){Ap=!1,Wr!==null&&Qc(Wr)&&(Wr=null),qr!==null&&Qc(qr)&&(qr=null),Yr!==null&&Qc(Yr)&&(Yr=null),jl.forEach(dE),Hl.forEach(dE)}function Kc(a,i){a.blockedOn===i&&(a.blockedOn=null,Ap||(Ap=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,NR)))}var Gc=null;function cE(a){Gc!==a&&(Gc=a,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Gc===a&&(Gc=null);for(var i=0;i<a.length;i+=3){var o=a[i],u=a[i+1],h=a[i+2];if(typeof u!="function"){if(fp(u||o)===null)continue;break}var E=jn(o);E!==null&&(a.splice(i,3),i-=3,fg(E,{pending:!0,data:h,method:o.method,action:u},u,h))}}))}function zl(a){function i($){return Kc($,a)}Wr!==null&&Kc(Wr,a),qr!==null&&Kc(qr,a),Yr!==null&&Kc(Yr,a),jl.forEach(i),Hl.forEach(i);for(var o=0;o<Jr.length;o++){var u=Jr[o];u.blockedOn===a&&(u.blockedOn=null)}for(;0<Jr.length&&(o=Jr[0],o.blockedOn===null);)lE(o),o.blockedOn===null&&Jr.shift();if(o=(a.ownerDocument||a).$$reactFormReplay,o!=null)for(u=0;u<o.length;u+=3){var h=o[u],E=o[u+1],D=h[Kt]||null;if(typeof E=="function")D||cE(o);else if(D){var H=null;if(E&&E.hasAttribute("formAction")){if(h=E,D=E[Kt]||null)H=D.formAction;else if(fp(h)!==null)continue}else H=D.action;typeof H=="function"?o[u+1]=H:(o.splice(u,3),u-=3),cE(o)}}}function yp(a){this._internalRoot=a}Wc.prototype.render=yp.prototype.render=function(a){var i=this._internalRoot;if(i===null)throw Error(r(409));var o=i.current,u=Yn();nE(o,u,a,i,null,null)},Wc.prototype.unmount=yp.prototype.unmount=function(){var a=this._internalRoot;if(a!==null){this._internalRoot=null;var i=a.containerInfo;nE(a.current,2,null,a,null,null),kc(),i[Vt]=null}};function Wc(a){this._internalRoot=a}Wc.prototype.unstable_scheduleHydration=function(a){if(a){var i=Da();a={blockedOn:null,target:a,priority:i};for(var o=0;o<Jr.length&&i!==0&&i<Jr[o].priority;o++);Jr.splice(o,0,a),o===0&&lE(a)}};var uE=e.version;if(uE!=="19.1.0")throw Error(r(527,uE,"19.1.0"));te.findDOMNode=function(a){var i=a._reactInternals;if(i===void 0)throw typeof a.render=="function"?Error(r(188)):(a=Object.keys(a).join(","),Error(r(268,a)));return a=p(i),a=a!==null?g(a):null,a=a===null?null:a.stateNode,a};var kR={bundleType:0,version:"19.1.0",rendererPackageName:"react-dom",currentDispatcherRef:X,reconcilerVersion:"19.1.0"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var qc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!qc.isDisabled&&qc.supportsFiber)try{Dt=qc.inject(kR),M=qc}catch{}}return Kl.createRoot=function(a,i){if(!s(a))throw Error(r(299));var o=!1,u="",h=Ny,E=ky,D=xy,H=null;return i!=null&&(i.unstable_strictMode===!0&&(o=!0),i.identifierPrefix!==void 0&&(u=i.identifierPrefix),i.onUncaughtError!==void 0&&(h=i.onUncaughtError),i.onCaughtError!==void 0&&(E=i.onCaughtError),i.onRecoverableError!==void 0&&(D=i.onRecoverableError),i.unstable_transitionCallbacks!==void 0&&(H=i.unstable_transitionCallbacks)),i=tE(a,1,!1,null,null,o,u,h,E,D,H,null),a[Vt]=i.current,ep(a),new yp(i)},Kl.hydrateRoot=function(a,i,o){if(!s(a))throw Error(r(299));var u=!1,h="",E=Ny,D=ky,H=xy,$=null,he=null;return o!=null&&(o.unstable_strictMode===!0&&(u=!0),o.identifierPrefix!==void 0&&(h=o.identifierPrefix),o.onUncaughtError!==void 0&&(E=o.onUncaughtError),o.onCaughtError!==void 0&&(D=o.onCaughtError),o.onRecoverableError!==void 0&&(H=o.onRecoverableError),o.unstable_transitionCallbacks!==void 0&&($=o.unstable_transitionCallbacks),o.formState!==void 0&&(he=o.formState)),i=tE(a,1,!0,i,o??null,u,h,E,D,H,$,he),i.context=aE(null),o=i.current,u=Yn(),u=xt(u),h=Ur(u),h.callback=null,Mr(o,h,u),o=u,i.current.lanes=o,jt(i,o),Fi(i),a[Vt]=i.current,ep(a),new Wc(i)},Kl.version="19.1.0",Kl}var vE;function jR(){if(vE)return bp.exports;vE=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),bp.exports=OR(),bp.exports}var HR=jR();const VR=cs(HR);var b=cf();const qa=cs(b),zR=(t,e,n,r)=>{var l,c,m,p;const s=[n,{code:e,...r||{}}];if((c=(l=t==null?void 0:t.services)==null?void 0:l.logger)!=null&&c.forward)return t.services.logger.forward(s,"warn","react-i18next::",!0);_s(s[0])&&(s[0]=`react-i18next:: ${s[0]}`),(p=(m=t==null?void 0:t.services)==null?void 0:m.logger)!=null&&p.warn?t.services.logger.warn(...s):console!=null&&console.warn&&console.warn(...s)},wE={},Lh=(t,e,n,r)=>{_s(n)&&wE[n]||(_s(n)&&(wE[n]=new Date),zR(t,e,n,r))},$v=(t,e)=>()=>{if(t.isInitialized)e();else{const n=()=>{setTimeout(()=>{t.off("initialized",n)},0),e()};t.on("initialized",n)}},Dh=(t,e,n)=>{t.loadNamespaces(e,$v(t,n))},IE=(t,e,n,r)=>{if(_s(n)&&(n=[n]),t.options.preload&&t.options.preload.indexOf(e)>-1)return Dh(t,n,r);n.forEach(s=>{t.options.ns.indexOf(s)<0&&t.options.ns.push(s)}),t.loadLanguages(e,$v(t,r))},QR=(t,e,n={})=>!e.languages||!e.languages.length?(Lh(e,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:e.languages}),!0):e.hasLoadedNamespace(t,{lng:n.lng,precheck:(r,s)=>{var l;if(((l=n.bindI18n)==null?void 0:l.indexOf("languageChanging"))>-1&&r.services.backendConnector.backend&&r.isLanguageChangingTo&&!s(r.isLanguageChangingTo,t))return!1}}),_s=t=>typeof t=="string",KR=t=>typeof t=="object"&&t!==null,GR=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,WR={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},qR=t=>WR[t],YR=t=>t.replace(GR,qR);let Rh={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:YR};const JR=(t={})=>{Rh={...Rh,...t}},XR=()=>Rh;let Zv;const $R=t=>{Zv=t},ZR=()=>Zv,e2={type:"3rdParty",init(t){JR(t.options.react),$R(t)}},t2=b.createContext();class a2{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const n2=(t,e)=>{const n=b.useRef();return b.useEffect(()=>{n.current=t},[t,e]),n.current},ew=(t,e,n,r)=>t.getFixedT(e,n,r),i2=(t,e,n,r)=>b.useCallback(ew(t,e,n,r),[t,e,n,r]),it=(t,e={})=>{var O,_,j,G;const{i18n:n}=e,{i18n:r,defaultNS:s}=b.useContext(t2)||{},l=n||r||ZR();if(l&&!l.reportNamespaces&&(l.reportNamespaces=new a2),!l){Lh(l,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const P=(z,Q)=>_s(Q)?Q:KR(Q)&&_s(Q.defaultValue)?Q.defaultValue:Array.isArray(z)?z[z.length-1]:z,B=[P,{},!1];return B.t=P,B.i18n={},B.ready=!1,B}(O=l.options.react)!=null&&O.wait&&Lh(l,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const c={...XR(),...l.options.react,...e},{useSuspense:m,keyPrefix:p}=c;let g=s||((_=l.options)==null?void 0:_.defaultNS);g=_s(g)?[g]:g||["translation"],(G=(j=l.reportNamespaces).addUsedNamespaces)==null||G.call(j,g);const A=(l.isInitialized||l.initializedStoreOnce)&&g.every(P=>QR(P,l,c)),f=i2(l,e.lng||null,c.nsMode==="fallback"?g:g[0],p),v=()=>f,w=()=>ew(l,e.lng||null,c.nsMode==="fallback"?g:g[0],p),[S,T]=b.useState(v);let k=g.join();e.lng&&(k=`${e.lng}${k}`);const L=n2(k),R=b.useRef(!0);b.useEffect(()=>{const{bindI18n:P,bindI18nStore:B}=c;R.current=!0,!A&&!m&&(e.lng?IE(l,e.lng,g,()=>{R.current&&T(w)}):Dh(l,g,()=>{R.current&&T(w)})),A&&L&&L!==k&&R.current&&T(w);const z=()=>{R.current&&T(w)};return P&&(l==null||l.on(P,z)),B&&(l==null||l.store.on(B,z)),()=>{R.current=!1,l&&(P==null||P.split(" ").forEach(Q=>l.off(Q,z))),B&&l&&B.split(" ").forEach(Q=>l.store.off(Q,z))}},[l,k]),b.useEffect(()=>{R.current&&A&&T(v)},[l,p,A]);const x=[S,l,A];if(x.t=S,x.i18n=l,x.ready=A,A||!A&&!m)return x;throw new Promise(P=>{e.lng?IE(l,e.lng,g,()=>P()):Dh(l,g,()=>P())})};/**
 * react-router v7.12.0
 *
 * Copyright (c) Remix Software Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE.md file in the root directory of this source tree.
 *
 * @license MIT
 */var CE="popstate";function r2(t={}){function e(s,l){let{pathname:c="/",search:m="",hash:p=""}=Bs(s.location.hash.substring(1));return!c.startsWith("/")&&!c.startsWith(".")&&(c="/"+c),Uh("",{pathname:c,search:m,hash:p},l.state&&l.state.usr||null,l.state&&l.state.key||"default")}function n(s,l){let c=s.document.querySelector("base"),m="";if(c&&c.getAttribute("href")){let p=s.location.href,g=p.indexOf("#");m=g===-1?p:p.slice(0,g)}return m+"#"+(typeof l=="string"?l:wd(l))}function r(s,l){Bn(s.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(l)})`)}return o2(e,n,r,t)}function ba(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function Bn(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function s2(){return Math.random().toString(36).substring(2,10)}function SE(t,e){return{usr:t.state,key:t.key,idx:e}}function Uh(t,e,n=null,r){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?Bs(e):e,state:n,key:e&&e.key||r||s2()}}function wd({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function Bs(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let r=t.indexOf("?");r>=0&&(e.search=t.substring(r),t=t.substring(0,r)),t&&(e.pathname=t)}return e}function o2(t,e,n,r={}){let{window:s=document.defaultView,v5Compat:l=!1}=r,c=s.history,m="POP",p=null,g=A();g==null&&(g=0,c.replaceState({...c.state,idx:g},""));function A(){return(c.state||{idx:null}).idx}function f(){m="POP";let k=A(),L=k==null?null:k-g;g=k,p&&p({action:m,location:T.location,delta:L})}function v(k,L){m="PUSH";let R=Uh(T.location,k,L);n&&n(R,k),g=A()+1;let x=SE(R,g),O=T.createHref(R);try{c.pushState(x,"",O)}catch(_){if(_ instanceof DOMException&&_.name==="DataCloneError")throw _;s.location.assign(O)}l&&p&&p({action:m,location:T.location,delta:1})}function w(k,L){m="REPLACE";let R=Uh(T.location,k,L);n&&n(R,k),g=A();let x=SE(R,g),O=T.createHref(R);c.replaceState(x,"",O),l&&p&&p({action:m,location:T.location,delta:0})}function S(k){return l2(k)}let T={get action(){return m},get location(){return t(s,c)},listen(k){if(p)throw new Error("A history only accepts one active listener");return s.addEventListener(CE,f),p=k,()=>{s.removeEventListener(CE,f),p=null}},createHref(k){return e(s,k)},createURL:S,encodeLocation(k){let L=S(k);return{pathname:L.pathname,search:L.search,hash:L.hash}},push:v,replace:w,go(k){return c.go(k)}};return T}function l2(t,e=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),ba(n,"No window.location.(origin|href) available to create URL");let r=typeof t=="string"?t:wd(t);return r=r.replace(/ $/,"%20"),!e&&r.startsWith("//")&&(r=n+r),new URL(r,n)}function tw(t,e,n="/"){return d2(t,e,n,!1)}function d2(t,e,n,r){let s=typeof e=="string"?Bs(e):e,l=wr(s.pathname||"/",n);if(l==null)return null;let c=aw(t);c2(c);let m=null;for(let p=0;m==null&&p<c.length;++p){let g=v2(l);m=E2(c[p],g,r)}return m}function aw(t,e=[],n=[],r="",s=!1){let l=(c,m,p=s,g)=>{let A={relativePath:g===void 0?c.path||"":g,caseSensitive:c.caseSensitive===!0,childrenIndex:m,route:c};if(A.relativePath.startsWith("/")){if(!A.relativePath.startsWith(r)&&p)return;ba(A.relativePath.startsWith(r),`Absolute route path "${A.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),A.relativePath=A.relativePath.slice(r.length)}let f=vr([r,A.relativePath]),v=n.concat(A);c.children&&c.children.length>0&&(ba(c.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),aw(c.children,e,v,f,p)),!(c.path==null&&!c.index)&&e.push({path:f,score:A2(f,c.index),routesMeta:v})};return t.forEach((c,m)=>{var p;if(c.path===""||!((p=c.path)!=null&&p.includes("?")))l(c,m);else for(let g of nw(c.path))l(c,m,!0,g)}),e}function nw(t){let e=t.split("/");if(e.length===0)return[];let[n,...r]=e,s=n.endsWith("?"),l=n.replace(/\?$/,"");if(r.length===0)return s?[l,""]:[l];let c=nw(r.join("/")),m=[];return m.push(...c.map(p=>p===""?l:[l,p].join("/"))),s&&m.push(...c),m.map(p=>t.startsWith("/")&&p===""?"/":p)}function c2(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:y2(e.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var u2=/^:[\w-]+$/,m2=3,g2=2,p2=1,h2=10,f2=-2,TE=t=>t==="*";function A2(t,e){let n=t.split("/"),r=n.length;return n.some(TE)&&(r+=f2),e&&(r+=g2),n.filter(s=>!TE(s)).reduce((s,l)=>s+(u2.test(l)?m2:l===""?p2:h2),r)}function y2(t,e){return t.length===e.length&&t.slice(0,-1).every((r,s)=>r===e[s])?t[t.length-1]-e[e.length-1]:0}function E2(t,e,n=!1){let{routesMeta:r}=t,s={},l="/",c=[];for(let m=0;m<r.length;++m){let p=r[m],g=m===r.length-1,A=l==="/"?e:e.slice(l.length)||"/",f=ku({path:p.relativePath,caseSensitive:p.caseSensitive,end:g},A),v=p.route;if(!f&&g&&n&&!r[r.length-1].route.index&&(f=ku({path:p.relativePath,caseSensitive:p.caseSensitive,end:!1},A)),!f)return null;Object.assign(s,f.params),c.push({params:s,pathname:vr([l,f.pathname]),pathnameBase:S2(vr([l,f.pathnameBase])),route:v}),f.pathnameBase!=="/"&&(l=vr([l,f.pathnameBase]))}return c}function ku(t,e){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[n,r]=b2(t.path,t.caseSensitive,t.end),s=e.match(n);if(!s)return null;let l=s[0],c=l.replace(/(.)\/+$/,"$1"),m=s.slice(1);return{params:r.reduce((g,{paramName:A,isOptional:f},v)=>{if(A==="*"){let S=m[v]||"";c=l.slice(0,l.length-S.length).replace(/(.)\/+$/,"$1")}const w=m[v];return f&&!w?g[A]=void 0:g[A]=(w||"").replace(/%2F/g,"/"),g},{}),pathname:l,pathnameBase:c,pattern:t}}function b2(t,e=!1,n=!0){Bn(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let r=[],s="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(c,m,p)=>(r.push({paramName:m,isOptional:p!=null}),p?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(r.push({paramName:"*"}),s+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":t!==""&&t!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,e?void 0:"i"),r]}function v2(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return Bn(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function wr(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,r=t.charAt(n);return r&&r!=="/"?null:t.slice(n)||"/"}var iw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,w2=t=>iw.test(t);function I2(t,e="/"){let{pathname:n,search:r="",hash:s=""}=typeof t=="string"?Bs(t):t,l;if(n)if(w2(n))l=n;else{if(n.includes("//")){let c=n;n=n.replace(/\/\/+/g,"/"),Bn(!1,`Pathnames cannot have embedded double slashes - normalizing ${c} -> ${n}`)}n.startsWith("/")?l=NE(n.substring(1),"/"):l=NE(n,e)}else l=e;return{pathname:l,search:T2(r),hash:N2(s)}}function NE(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function Sp(t,e,n,r){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(r)}].  Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function C2(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function uf(t){let e=C2(t);return e.map((n,r)=>r===e.length-1?n.pathname:n.pathnameBase)}function mf(t,e,n,r=!1){let s;typeof t=="string"?s=Bs(t):(s={...t},ba(!s.pathname||!s.pathname.includes("?"),Sp("?","pathname","search",s)),ba(!s.pathname||!s.pathname.includes("#"),Sp("#","pathname","hash",s)),ba(!s.search||!s.search.includes("#"),Sp("#","search","hash",s)));let l=t===""||s.pathname==="",c=l?"/":s.pathname,m;if(c==null)m=n;else{let f=e.length-1;if(!r&&c.startsWith("..")){let v=c.split("/");for(;v[0]==="..";)v.shift(),f-=1;s.pathname=v.join("/")}m=f>=0?e[f]:"/"}let p=I2(s,m),g=c&&c!=="/"&&c.endsWith("/"),A=(l||c===".")&&n.endsWith("/");return!p.pathname.endsWith("/")&&(g||A)&&(p.pathname+="/"),p}var vr=t=>t.join("/").replace(/\/\/+/g,"/"),S2=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),T2=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,N2=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,k2=class{constructor(t,e,n,r=!1){this.status=t,this.statusText=e||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function x2(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function L2(t){return t.map(e=>e.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var rw=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function sw(t,e){let n=t;if(typeof n!="string"||!iw.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,s=!1;if(rw)try{let l=new URL(window.location.href),c=n.startsWith("//")?new URL(l.protocol+n):new URL(n),m=wr(c.pathname,e);c.origin===l.origin&&m!=null?n=m+c.search+c.hash:s=!0}catch{Bn(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:s,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var ow=["POST","PUT","PATCH","DELETE"];new Set(ow);var D2=["GET",...ow];new Set(D2);var Ho=b.createContext(null);Ho.displayName="DataRouter";var Wu=b.createContext(null);Wu.displayName="DataRouterState";var R2=b.createContext(!1),lw=b.createContext({isTransitioning:!1});lw.displayName="ViewTransition";var U2=b.createContext(new Map);U2.displayName="Fetchers";var M2=b.createContext(null);M2.displayName="Await";var ni=b.createContext(null);ni.displayName="Navigation";var Vo=b.createContext(null);Vo.displayName="Location";var ki=b.createContext({outlet:null,matches:[],isDataRoute:!1});ki.displayName="Route";var gf=b.createContext(null);gf.displayName="RouteError";var dw="REACT_ROUTER_ERROR",_2="REDIRECT",F2="ROUTE_ERROR_RESPONSE";function B2(t){if(t.startsWith(`${dw}:${_2}:{`))try{let e=JSON.parse(t.slice(28));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.location=="string"&&typeof e.reloadDocument=="boolean"&&typeof e.replace=="boolean")return e}catch{}}function P2(t){if(t.startsWith(`${dw}:${F2}:{`))try{let e=JSON.parse(t.slice(40));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string")return new k2(e.status,e.statusText,e.data)}catch{}}function O2(t,{relative:e}={}){ba(zo(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:r}=b.useContext(ni),{hash:s,pathname:l,search:c}=Rd(t,{relative:e}),m=l;return n!=="/"&&(m=l==="/"?n:vr([n,l])),r.createHref({pathname:m,search:c,hash:s})}function zo(){return b.useContext(Vo)!=null}function Ba(){return ba(zo(),"useLocation() may be used only in the context of a <Router> component."),b.useContext(Vo).location}function j2(){return b.useContext(Vo).navigationType}var cw="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function uw(t){b.useContext(ni).static||b.useLayoutEffect(t)}function Pa(){let{isDataRoute:t}=b.useContext(ki);return t?Z2():H2()}function H2(){ba(zo(),"useNavigate() may be used only in the context of a <Router> component.");let t=b.useContext(Ho),{basename:e,navigator:n}=b.useContext(ni),{matches:r}=b.useContext(ki),{pathname:s}=Ba(),l=JSON.stringify(uf(r)),c=b.useRef(!1);return uw(()=>{c.current=!0}),b.useCallback((p,g={})=>{if(Bn(c.current,cw),!c.current)return;if(typeof p=="number"){n.go(p);return}let A=mf(p,JSON.parse(l),s,g.relative==="path");t==null&&e!=="/"&&(A.pathname=A.pathname==="/"?e:vr([e,A.pathname])),(g.replace?n.replace:n.push)(A,g.state,g)},[e,n,l,s,t])}b.createContext(null);function qu(){let{matches:t}=b.useContext(ki),e=t[t.length-1];return e?e.params:{}}function Rd(t,{relative:e}={}){let{matches:n}=b.useContext(ki),{pathname:r}=Ba(),s=JSON.stringify(uf(n));return b.useMemo(()=>mf(t,JSON.parse(s),r,e==="path"),[t,s,r,e])}function V2(t,e){return mw(t,e)}function mw(t,e,n,r,s){var R;ba(zo(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:l}=b.useContext(ni),{matches:c}=b.useContext(ki),m=c[c.length-1],p=m?m.params:{},g=m?m.pathname:"/",A=m?m.pathnameBase:"/",f=m&&m.route;{let x=f&&f.path||"";pw(g,!f||x.endsWith("*")||x.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${g}" (under <Route path="${x}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.

Please change the parent <Route path="${x}"> to <Route path="${x==="/"?"*":`${x}/*`}">.`)}let v=Ba(),w;if(e){let x=typeof e=="string"?Bs(e):e;ba(A==="/"||((R=x.pathname)==null?void 0:R.startsWith(A)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${A}" but pathname "${x.pathname}" was given in the \`location\` prop.`),w=x}else w=v;let S=w.pathname||"/",T=S;if(A!=="/"){let x=A.replace(/^\//,"").split("/");T="/"+S.replace(/^\//,"").split("/").slice(x.length).join("/")}let k=tw(t,{pathname:T});Bn(f||k!=null,`No routes matched location "${w.pathname}${w.search}${w.hash}" `),Bn(k==null||k[k.length-1].route.element!==void 0||k[k.length-1].route.Component!==void 0||k[k.length-1].route.lazy!==void 0,`Matched leaf route at location "${w.pathname}${w.search}${w.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let L=W2(k&&k.map(x=>Object.assign({},x,{params:Object.assign({},p,x.params),pathname:vr([A,l.encodeLocation?l.encodeLocation(x.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:x.pathname]),pathnameBase:x.pathnameBase==="/"?A:vr([A,l.encodeLocation?l.encodeLocation(x.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:x.pathnameBase])})),c,n,r,s);return e&&L?b.createElement(Vo.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...w},navigationType:"POP"}},L):L}function z2(){let t=$2(),e=x2(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,r="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:r},l={padding:"2px 4px",backgroundColor:r},c=null;return console.error("Error handled by React Router default ErrorBoundary:",t),c=b.createElement(b.Fragment,null,b.createElement("p",null,"💿 Hey developer 👋"),b.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",b.createElement("code",{style:l},"ErrorBoundary")," or"," ",b.createElement("code",{style:l},"errorElement")," prop on your route.")),b.createElement(b.Fragment,null,b.createElement("h2",null,"Unexpected Application Error!"),b.createElement("h3",{style:{fontStyle:"italic"}},e),n?b.createElement("pre",{style:s},n):null,c)}var Q2=b.createElement(z2,null),gw=class extends b.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const n=P2(t.digest);n&&(t=n)}let e=t!==void 0?b.createElement(ki.Provider,{value:this.props.routeContext},b.createElement(gf.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?b.createElement(K2,{error:t},e):e}};gw.contextType=R2;var Tp=new WeakMap;function K2({children:t,error:e}){let{basename:n}=b.useContext(ni);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let r=B2(e.digest);if(r){let s=Tp.get(e);if(s)throw s;let l=sw(r.location,n);if(rw&&!Tp.get(e))if(l.isExternal||r.reloadDocument)window.location.href=l.absoluteURL||l.to;else{const c=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(l.to,{replace:r.replace}));throw Tp.set(e,c),c}return b.createElement("meta",{httpEquiv:"refresh",content:`0;url=${l.absoluteURL||l.to}`})}}return t}function G2({routeContext:t,match:e,children:n}){let r=b.useContext(Ho);return r&&r.static&&r.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=e.route.id),b.createElement(ki.Provider,{value:t},n)}function W2(t,e=[],n=null,r=null,s=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(e.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let l=t,c=n==null?void 0:n.errors;if(c!=null){let A=l.findIndex(f=>f.route.id&&(c==null?void 0:c[f.route.id])!==void 0);ba(A>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(c).join(",")}`),l=l.slice(0,Math.min(l.length,A+1))}let m=!1,p=-1;if(n)for(let A=0;A<l.length;A++){let f=l[A];if((f.route.HydrateFallback||f.route.hydrateFallbackElement)&&(p=A),f.route.id){let{loaderData:v,errors:w}=n,S=f.route.loader&&!v.hasOwnProperty(f.route.id)&&(!w||w[f.route.id]===void 0);if(f.route.lazy||S){m=!0,p>=0?l=l.slice(0,p+1):l=[l[0]];break}}}let g=n&&r?(A,f)=>{var v,w;r(A,{location:n.location,params:((w=(v=n.matches)==null?void 0:v[0])==null?void 0:w.params)??{},unstable_pattern:L2(n.matches),errorInfo:f})}:void 0;return l.reduceRight((A,f,v)=>{let w,S=!1,T=null,k=null;n&&(w=c&&f.route.id?c[f.route.id]:void 0,T=f.route.errorElement||Q2,m&&(p<0&&v===0?(pw("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),S=!0,k=null):p===v&&(S=!0,k=f.route.hydrateFallbackElement||null)));let L=e.concat(l.slice(0,v+1)),R=()=>{let x;return w?x=T:S?x=k:f.route.Component?x=b.createElement(f.route.Component,null):f.route.element?x=f.route.element:x=A,b.createElement(G2,{match:f,routeContext:{outlet:A,matches:L,isDataRoute:n!=null},children:x})};return n&&(f.route.ErrorBoundary||f.route.errorElement||v===0)?b.createElement(gw,{location:n.location,revalidation:n.revalidation,component:T,error:w,children:R(),routeContext:{outlet:null,matches:L,isDataRoute:!0},onError:g}):R()},null)}function pf(t){return`${t} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`}function q2(t){let e=b.useContext(Ho);return ba(e,pf(t)),e}function Y2(t){let e=b.useContext(Wu);return ba(e,pf(t)),e}function J2(t){let e=b.useContext(ki);return ba(e,pf(t)),e}function hf(t){let e=J2(t),n=e.matches[e.matches.length-1];return ba(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function X2(){return hf("useRouteId")}function $2(){var r;let t=b.useContext(gf),e=Y2("useRouteError"),n=hf("useRouteError");return t!==void 0?t:(r=e.errors)==null?void 0:r[n]}function Z2(){let{router:t}=q2("useNavigate"),e=hf("useNavigate"),n=b.useRef(!1);return uw(()=>{n.current=!0}),b.useCallback(async(s,l={})=>{Bn(n.current,cw),n.current&&(typeof s=="number"?await t.navigate(s):await t.navigate(s,{fromRouteId:e,...l}))},[t,e])}var kE={};function pw(t,e,n){!e&&!kE[t]&&(kE[t]=!0,Bn(!1,n))}b.memo(eU);function eU({routes:t,future:e,state:n,onError:r}){return mw(t,void 0,n,r,e)}function tU({to:t,replace:e,state:n,relative:r}){ba(zo(),"<Navigate> may be used only in the context of a <Router> component.");let{static:s}=b.useContext(ni);Bn(!s,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:l}=b.useContext(ki),{pathname:c}=Ba(),m=Pa(),p=mf(t,uf(l),c,r==="path"),g=JSON.stringify(p);return b.useEffect(()=>{m(JSON.parse(g),{replace:e,state:n,relative:r})},[m,g,r,e,n]),null}function ff(t){ba(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function aU({basename:t="/",children:e=null,location:n,navigationType:r="POP",navigator:s,static:l=!1,unstable_useTransitions:c}){ba(!zo(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let m=t.replace(/^\/*/,"/"),p=b.useMemo(()=>({basename:m,navigator:s,static:l,unstable_useTransitions:c,future:{}}),[m,s,l,c]);typeof n=="string"&&(n=Bs(n));let{pathname:g="/",search:A="",hash:f="",state:v=null,key:w="default"}=n,S=b.useMemo(()=>{let T=wr(g,m);return T==null?null:{location:{pathname:T,search:A,hash:f,state:v,key:w},navigationType:r}},[m,g,A,f,v,w,r]);return Bn(S!=null,`<Router basename="${m}"> is not able to match the URL "${g}${A}${f}" because it does not start with the basename, so the <Router> won't render anything.`),S==null?null:b.createElement(ni.Provider,{value:p},b.createElement(Vo.Provider,{children:e,value:S}))}function hw({children:t,location:e}){return V2(Mh(t),e)}function Mh(t,e=[]){let n=[];return b.Children.forEach(t,(r,s)=>{if(!b.isValidElement(r))return;let l=[...e,s];if(r.type===b.Fragment){n.push.apply(n,Mh(r.props.children,l));return}ba(r.type===ff,`[${typeof r.type=="string"?r.type:r.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),ba(!r.props.index||!r.props.children,"An index route cannot have child routes.");let c={id:r.props.id||l.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(c.children=Mh(r.props.children,l)),n.push(c)}),n}var pu="get",hu="application/x-www-form-urlencoded";function Yu(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function nU(t){return Yu(t)&&t.tagName.toLowerCase()==="button"}function iU(t){return Yu(t)&&t.tagName.toLowerCase()==="form"}function rU(t){return Yu(t)&&t.tagName.toLowerCase()==="input"}function sU(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function oU(t,e){return t.button===0&&(!e||e==="_self")&&!sU(t)}function _h(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,n)=>{let r=t[n];return e.concat(Array.isArray(r)?r.map(s=>[n,s]):[[n,r]])},[]))}function lU(t,e){let n=_h(t);return e&&e.forEach((r,s)=>{n.has(s)||e.getAll(s).forEach(l=>{n.append(s,l)})}),n}var Yc=null;function dU(){if(Yc===null)try{new FormData(document.createElement("form"),0),Yc=!1}catch{Yc=!0}return Yc}var cU=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Np(t){return t!=null&&!cU.has(t)?(Bn(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${hu}"`),null):t}function uU(t,e){let n,r,s,l,c;if(iU(t)){let m=t.getAttribute("action");r=m?wr(m,e):null,n=t.getAttribute("method")||pu,s=Np(t.getAttribute("enctype"))||hu,l=new FormData(t)}else if(nU(t)||rU(t)&&(t.type==="submit"||t.type==="image")){let m=t.form;if(m==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let p=t.getAttribute("formaction")||m.getAttribute("action");if(r=p?wr(p,e):null,n=t.getAttribute("formmethod")||m.getAttribute("method")||pu,s=Np(t.getAttribute("formenctype"))||Np(m.getAttribute("enctype"))||hu,l=new FormData(m,t),!dU()){let{name:g,type:A,value:f}=t;if(A==="image"){let v=g?`${g}.`:"";l.append(`${v}x`,"0"),l.append(`${v}y`,"0")}else g&&l.append(g,f)}}else{if(Yu(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=pu,r=null,s=hu,c=t}return l&&s==="text/plain"&&(c=l,l=void 0),{action:r,method:n.toLowerCase(),encType:s,formData:l,body:c}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Af(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function mU(t,e,n,r){let s=typeof t=="string"?new URL(t,typeof window>"u"?"server://singlefetch/":window.location.origin):t;return n?s.pathname.endsWith("/")?s.pathname=`${s.pathname}_.${r}`:s.pathname=`${s.pathname}.${r}`:s.pathname==="/"?s.pathname=`_root.${r}`:e&&wr(s.pathname,e)==="/"?s.pathname=`${e.replace(/\/$/,"")}/_root.${r}`:s.pathname=`${s.pathname.replace(/\/$/,"")}.${r}`,s}async function gU(t,e){if(t.id in e)return e[t.id];try{let n=await import(t.module);return e[t.id]=n,n}catch(n){return console.error(`Error loading route module \`${t.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function pU(t){return t==null?!1:t.href==null?t.rel==="preload"&&typeof t.imageSrcSet=="string"&&typeof t.imageSizes=="string":typeof t.rel=="string"&&typeof t.href=="string"}async function hU(t,e,n){let r=await Promise.all(t.map(async s=>{let l=e.routes[s.route.id];if(l){let c=await gU(l,n);return c.links?c.links():[]}return[]}));return EU(r.flat(1).filter(pU).filter(s=>s.rel==="stylesheet"||s.rel==="preload").map(s=>s.rel==="stylesheet"?{...s,rel:"prefetch",as:"style"}:{...s,rel:"prefetch"}))}function xE(t,e,n,r,s,l){let c=(p,g)=>n[g]?p.route.id!==n[g].route.id:!0,m=(p,g)=>{var A;return n[g].pathname!==p.pathname||((A=n[g].route.path)==null?void 0:A.endsWith("*"))&&n[g].params["*"]!==p.params["*"]};return l==="assets"?e.filter((p,g)=>c(p,g)||m(p,g)):l==="data"?e.filter((p,g)=>{var f;let A=r.routes[p.route.id];if(!A||!A.hasLoader)return!1;if(c(p,g)||m(p,g))return!0;if(p.route.shouldRevalidate){let v=p.route.shouldRevalidate({currentUrl:new URL(s.pathname+s.search+s.hash,window.origin),currentParams:((f=n[0])==null?void 0:f.params)||{},nextUrl:new URL(t,window.origin),nextParams:p.params,defaultShouldRevalidate:!0});if(typeof v=="boolean")return v}return!0}):[]}function fU(t,e,{includeHydrateFallback:n}={}){return AU(t.map(r=>{let s=e.routes[r.route.id];if(!s)return[];let l=[s.module];return s.clientActionModule&&(l=l.concat(s.clientActionModule)),s.clientLoaderModule&&(l=l.concat(s.clientLoaderModule)),n&&s.hydrateFallbackModule&&(l=l.concat(s.hydrateFallbackModule)),s.imports&&(l=l.concat(s.imports)),l}).flat(1))}function AU(t){return[...new Set(t)]}function yU(t){let e={},n=Object.keys(t).sort();for(let r of n)e[r]=t[r];return e}function EU(t,e){let n=new Set;return new Set(e),t.reduce((r,s)=>{let l=JSON.stringify(yU(s));return n.has(l)||(n.add(l),r.push({key:l,link:s})),r},[])}function fw(){let t=b.useContext(Ho);return Af(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function bU(){let t=b.useContext(Wu);return Af(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var yf=b.createContext(void 0);yf.displayName="FrameworkContext";function Aw(){let t=b.useContext(yf);return Af(t,"You must render this element inside a <HydratedRouter> element"),t}function vU(t,e){let n=b.useContext(yf),[r,s]=b.useState(!1),[l,c]=b.useState(!1),{onFocus:m,onBlur:p,onMouseEnter:g,onMouseLeave:A,onTouchStart:f}=e,v=b.useRef(null);b.useEffect(()=>{if(t==="render"&&c(!0),t==="viewport"){let T=L=>{L.forEach(R=>{c(R.isIntersecting)})},k=new IntersectionObserver(T,{threshold:.5});return v.current&&k.observe(v.current),()=>{k.disconnect()}}},[t]),b.useEffect(()=>{if(r){let T=setTimeout(()=>{c(!0)},100);return()=>{clearTimeout(T)}}},[r]);let w=()=>{s(!0)},S=()=>{s(!1),c(!1)};return n?t!=="intent"?[l,v,{}]:[l,v,{onFocus:Gl(m,w),onBlur:Gl(p,S),onMouseEnter:Gl(g,w),onMouseLeave:Gl(A,S),onTouchStart:Gl(f,w)}]:[!1,v,{}]}function Gl(t,e){return n=>{t&&t(n),n.defaultPrevented||e(n)}}function wU({page:t,...e}){let{router:n}=fw(),r=b.useMemo(()=>tw(n.routes,t,n.basename),[n.routes,t,n.basename]);return r?b.createElement(CU,{page:t,matches:r,...e}):null}function IU(t){let{manifest:e,routeModules:n}=Aw(),[r,s]=b.useState([]);return b.useEffect(()=>{let l=!1;return hU(t,e,n).then(c=>{l||s(c)}),()=>{l=!0}},[t,e,n]),r}function CU({page:t,matches:e,...n}){let r=Ba(),{future:s,manifest:l,routeModules:c}=Aw(),{basename:m}=fw(),{loaderData:p,matches:g}=bU(),A=b.useMemo(()=>xE(t,e,g,l,r,"data"),[t,e,g,l,r]),f=b.useMemo(()=>xE(t,e,g,l,r,"assets"),[t,e,g,l,r]),v=b.useMemo(()=>{if(t===r.pathname+r.search+r.hash)return[];let T=new Set,k=!1;if(e.forEach(R=>{var O;let x=l.routes[R.route.id];!x||!x.hasLoader||(!A.some(_=>_.route.id===R.route.id)&&R.route.id in p&&((O=c[R.route.id])!=null&&O.shouldRevalidate)||x.hasClientLoader?k=!0:T.add(R.route.id))}),T.size===0)return[];let L=mU(t,m,s.unstable_trailingSlashAwareDataRequests,"data");return k&&T.size>0&&L.searchParams.set("_routes",e.filter(R=>T.has(R.route.id)).map(R=>R.route.id).join(",")),[L.pathname+L.search]},[m,s.unstable_trailingSlashAwareDataRequests,p,r,l,A,e,t,c]),w=b.useMemo(()=>fU(f,l),[f,l]),S=IU(f);return b.createElement(b.Fragment,null,v.map(T=>b.createElement("link",{key:T,rel:"prefetch",as:"fetch",href:T,...n})),w.map(T=>b.createElement("link",{key:T,rel:"modulepreload",href:T,...n})),S.map(({key:T,link:k})=>b.createElement("link",{key:T,nonce:n.nonce,...k})))}function SU(...t){return e=>{t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}}var TU=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{TU&&(window.__reactRouterVersion="7.12.0")}catch{}function NU({basename:t,children:e,unstable_useTransitions:n,window:r}){let s=b.useRef();s.current==null&&(s.current=r2({window:r,v5Compat:!0}));let l=s.current,[c,m]=b.useState({action:l.action,location:l.location}),p=b.useCallback(g=>{n===!1?m(g):b.startTransition(()=>m(g))},[n]);return b.useLayoutEffect(()=>l.listen(p),[l,p]),b.createElement(aU,{basename:t,children:e,location:c.location,navigationType:c.action,navigator:l,unstable_useTransitions:n})}var yw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Ju=b.forwardRef(function({onClick:e,discover:n="render",prefetch:r="none",relative:s,reloadDocument:l,replace:c,state:m,target:p,to:g,preventScrollReset:A,viewTransition:f,unstable_defaultShouldRevalidate:v,...w},S){let{basename:T,unstable_useTransitions:k}=b.useContext(ni),L=typeof g=="string"&&yw.test(g),R=sw(g,T);g=R.to;let x=O2(g,{relative:s}),[O,_,j]=vU(r,w),G=DU(g,{replace:c,state:m,target:p,preventScrollReset:A,relative:s,viewTransition:f,unstable_defaultShouldRevalidate:v,unstable_useTransitions:k});function P(z){e&&e(z),z.defaultPrevented||G(z)}let B=b.createElement("a",{...w,...j,href:R.absoluteURL||x,onClick:R.isExternal||l?e:P,ref:SU(S,_),target:p,"data-discover":!L&&n==="render"?"true":void 0});return O&&!L?b.createElement(b.Fragment,null,B,b.createElement(wU,{page:x})):B});Ju.displayName="Link";var kU=b.forwardRef(function({"aria-current":e="page",caseSensitive:n=!1,className:r="",end:s=!1,style:l,to:c,viewTransition:m,children:p,...g},A){let f=Rd(c,{relative:g.relative}),v=Ba(),w=b.useContext(Wu),{navigator:S,basename:T}=b.useContext(ni),k=w!=null&&FU(f)&&m===!0,L=S.encodeLocation?S.encodeLocation(f).pathname:f.pathname,R=v.pathname,x=w&&w.navigation&&w.navigation.location?w.navigation.location.pathname:null;n||(R=R.toLowerCase(),x=x?x.toLowerCase():null,L=L.toLowerCase()),x&&T&&(x=wr(x,T)||x);const O=L!=="/"&&L.endsWith("/")?L.length-1:L.length;let _=R===L||!s&&R.startsWith(L)&&R.charAt(O)==="/",j=x!=null&&(x===L||!s&&x.startsWith(L)&&x.charAt(L.length)==="/"),G={isActive:_,isPending:j,isTransitioning:k},P=_?e:void 0,B;typeof r=="function"?B=r(G):B=[r,_?"active":null,j?"pending":null,k?"transitioning":null].filter(Boolean).join(" ");let z=typeof l=="function"?l(G):l;return b.createElement(Ju,{...g,"aria-current":P,className:B,ref:A,style:z,to:c,viewTransition:m},typeof p=="function"?p(G):p)});kU.displayName="NavLink";var xU=b.forwardRef(({discover:t="render",fetcherKey:e,navigate:n,reloadDocument:r,replace:s,state:l,method:c=pu,action:m,onSubmit:p,relative:g,preventScrollReset:A,viewTransition:f,unstable_defaultShouldRevalidate:v,...w},S)=>{let{unstable_useTransitions:T}=b.useContext(ni),k=MU(),L=_U(m,{relative:g}),R=c.toLowerCase()==="get"?"get":"post",x=typeof m=="string"&&yw.test(m),O=_=>{if(p&&p(_),_.defaultPrevented)return;_.preventDefault();let j=_.nativeEvent.submitter,G=(j==null?void 0:j.getAttribute("formmethod"))||c,P=()=>k(j||_.currentTarget,{fetcherKey:e,method:G,navigate:n,replace:s,state:l,relative:g,preventScrollReset:A,viewTransition:f,unstable_defaultShouldRevalidate:v});T&&n!==!1?b.startTransition(()=>P()):P()};return b.createElement("form",{ref:S,method:R,action:L,onSubmit:r?p:O,...w,"data-discover":!x&&t==="render"?"true":void 0})});xU.displayName="Form";function LU(t){return`${t} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ew(t){let e=b.useContext(Ho);return ba(e,LU(t)),e}function DU(t,{target:e,replace:n,state:r,preventScrollReset:s,relative:l,viewTransition:c,unstable_defaultShouldRevalidate:m,unstable_useTransitions:p}={}){let g=Pa(),A=Ba(),f=Rd(t,{relative:l});return b.useCallback(v=>{if(oU(v,e)){v.preventDefault();let w=n!==void 0?n:wd(A)===wd(f),S=()=>g(t,{replace:w,state:r,preventScrollReset:s,relative:l,viewTransition:c,unstable_defaultShouldRevalidate:m});p?b.startTransition(()=>S()):S()}},[A,g,f,n,r,e,t,s,l,c,m,p])}function Xu(t){Bn(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let e=b.useRef(_h(t)),n=b.useRef(!1),r=Ba(),s=b.useMemo(()=>lU(r.search,n.current?null:e.current),[r.search]),l=Pa(),c=b.useCallback((m,p)=>{const g=_h(typeof m=="function"?m(new URLSearchParams(s)):m);n.current=!0,l("?"+g,p)},[l,s]);return[s,c]}var RU=0,UU=()=>`__${String(++RU)}__`;function MU(){let{router:t}=Ew("useSubmit"),{basename:e}=b.useContext(ni),n=X2(),r=t.fetch,s=t.navigate;return b.useCallback(async(l,c={})=>{let{action:m,method:p,encType:g,formData:A,body:f}=uU(l,e);if(c.navigate===!1){let v=c.fetcherKey||UU();await r(v,n,c.action||m,{unstable_defaultShouldRevalidate:c.unstable_defaultShouldRevalidate,preventScrollReset:c.preventScrollReset,formData:A,body:f,formMethod:c.method||p,formEncType:c.encType||g,flushSync:c.flushSync})}else await s(c.action||m,{unstable_defaultShouldRevalidate:c.unstable_defaultShouldRevalidate,preventScrollReset:c.preventScrollReset,formData:A,body:f,formMethod:c.method||p,formEncType:c.encType||g,replace:c.replace,state:c.state,fromRouteId:n,flushSync:c.flushSync,viewTransition:c.viewTransition})},[r,s,e,n])}function _U(t,{relative:e}={}){let{basename:n}=b.useContext(ni),r=b.useContext(ki);ba(r,"useFormAction must be used inside a RouteContext");let[s]=r.matches.slice(-1),l={...Rd(t||".",{relative:e})},c=Ba();if(t==null){l.search=c.search;let m=new URLSearchParams(l.search),p=m.getAll("index");if(p.some(A=>A==="")){m.delete("index"),p.filter(f=>f).forEach(f=>m.append("index",f));let A=m.toString();l.search=A?`?${A}`:""}}return(!t||t===".")&&s.route.index&&(l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(l.pathname=l.pathname==="/"?n:vr([n,l.pathname])),wd(l)}function FU(t,{relative:e}={}){let n=b.useContext(lw);ba(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Ew("useViewTransitionState"),s=Rd(t,{relative:e});if(!n.isTransitioning)return!1;let l=wr(n.currentLocation.pathname,r)||n.currentLocation.pathname,c=wr(n.nextLocation.pathname,r)||n.nextLocation.pathname;return ku(s.pathname,c)!=null||ku(s.pathname,l)!=null}var xo=Xv(),Jc={exports:{}},LE;function BU(){if(LE)return Jc.exports;LE=1;const t=n=>typeof crypto<"u"&&typeof crypto.getRandomValues=="function"?()=>{const r=crypto.getRandomValues(new Uint8Array(1))[0];return(r>=n?r%n:r).toString(n)}:()=>Math.floor(Math.random()*n).toString(n),e=(n=7,r=!1)=>Array.from({length:n},t(r?16:36)).join("");return Jc.exports=e,Jc.exports.default=e,Jc.exports}var PU=BU();const xu=cs(PU);var OU=()=>`uid::${xu(7)}`,jU=(t,e=["endpointName","fingerprint"])=>typeof t=="object"&&t!==null&&e.every(n=>n in t),HU=t=>{if(!jU(t))throw new TypeError("Invalid connection args");return JSON.stringify(t)},VU=()=>{let t=[];return{add:(...e)=>{t=[...t,...e]},remove:e=>{t=typeof e=="string"?t.filter(n=>n.message.transactionId!==e):t.filter(n=>!e.includes(n))},entries:()=>t}},kp=class{static toBackground(t,e){return t.postMessage(e)}static toExtensionContext(t,e){return t.postMessage(e)}},fu={exports:{}},zU=fu.exports,DE;function QU(){return DE||(DE=1,function(t,e){(function(n,r){r(t)})(typeof globalThis<"u"?globalThis:typeof self<"u"?self:zU,function(n){if(typeof globalThis!="object"||typeof chrome!="object"||!chrome||!chrome.runtime||!chrome.runtime.id)throw new Error("This script should only be loaded in a browser extension.");if(typeof globalThis.browser>"u"||Object.getPrototypeOf(globalThis.browser)!==Object.prototype){const r="The message port closed before a response was received.",s="Returning a Promise is the preferred way to send a reply from an onMessage/onMessageExternal listener, as the sendResponse will be removed from the specs (See https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage)",l=c=>{const m={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(Object.keys(m).length===0)throw new Error("api-metadata.json has not been included in browser-polyfill");class p extends WeakMap{constructor(B,z=void 0){super(z),this.createItem=B}get(B){return this.has(B)||this.set(B,this.createItem(B)),super.get(B)}}const g=P=>P&&typeof P=="object"&&typeof P.then=="function",A=(P,B)=>(...z)=>{c.runtime.lastError?P.reject(new Error(c.runtime.lastError.message)):B.singleCallbackArg||z.length<=1&&B.singleCallbackArg!==!1?P.resolve(z[0]):P.resolve(z)},f=P=>P==1?"argument":"arguments",v=(P,B)=>function(Q,...ae){if(ae.length<B.minArgs)throw new Error(`Expected at least ${B.minArgs} ${f(B.minArgs)} for ${P}(), got ${ae.length}`);if(ae.length>B.maxArgs)throw new Error(`Expected at most ${B.maxArgs} ${f(B.maxArgs)} for ${P}(), got ${ae.length}`);return new Promise((Y,ne)=>{if(B.fallbackToNoCallback)try{Q[P](...ae,A({resolve:Y,reject:ne},B))}catch(fe){console.warn(`${P} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,fe),Q[P](...ae),B.fallbackToNoCallback=!1,B.noCallback=!0,Y()}else B.noCallback?(Q[P](...ae),Y()):Q[P](...ae,A({resolve:Y,reject:ne},B))})},w=(P,B,z)=>new Proxy(B,{apply(Q,ae,Y){return z.call(ae,P,...Y)}});let S=Function.call.bind(Object.prototype.hasOwnProperty);const T=(P,B={},z={})=>{let Q=Object.create(null),ae={has(ne,fe){return fe in P||fe in Q},get(ne,fe,X){if(fe in Q)return Q[fe];if(!(fe in P))return;let te=P[fe];if(typeof te=="function")if(typeof B[fe]=="function")te=w(P,P[fe],B[fe]);else if(S(z,fe)){let ce=v(fe,z[fe]);te=w(P,P[fe],ce)}else te=te.bind(P);else if(typeof te=="object"&&te!==null&&(S(B,fe)||S(z,fe)))te=T(te,B[fe],z[fe]);else if(S(z,"*"))te=T(te,B[fe],z["*"]);else return Object.defineProperty(Q,fe,{configurable:!0,enumerable:!0,get(){return P[fe]},set(ce){P[fe]=ce}}),te;return Q[fe]=te,te},set(ne,fe,X,te){return fe in Q?Q[fe]=X:P[fe]=X,!0},defineProperty(ne,fe,X){return Reflect.defineProperty(Q,fe,X)},deleteProperty(ne,fe){return Reflect.deleteProperty(Q,fe)}},Y=Object.create(P);return new Proxy(Y,ae)},k=P=>({addListener(B,z,...Q){B.addListener(P.get(z),...Q)},hasListener(B,z){return B.hasListener(P.get(z))},removeListener(B,z){B.removeListener(P.get(z))}}),L=new p(P=>typeof P!="function"?P:function(z){const Q=T(z,{},{getContent:{minArgs:0,maxArgs:0}});P(Q)});let R=!1;const x=new p(P=>typeof P!="function"?P:function(z,Q,ae){let Y=!1,ne,fe=new Promise(oe=>{ne=function(F){R||(console.warn(s,new Error().stack),R=!0),Y=!0,oe(F)}}),X;try{X=P(z,Q,ne)}catch(oe){X=Promise.reject(oe)}const te=X!==!0&&g(X);if(X!==!0&&!te&&!Y)return!1;const ce=oe=>{oe.then(F=>{ae(F)},F=>{let J;F&&(F instanceof Error||typeof F.message=="string")?J=F.message:J="An unexpected error occurred",ae({__mozWebExtensionPolyfillReject__:!0,message:J})}).catch(F=>{console.error("Failed to send onMessage rejected reply",F)})};return ce(te?X:fe),!0}),O=({reject:P,resolve:B},z)=>{c.runtime.lastError?c.runtime.lastError.message===r?B():P(new Error(c.runtime.lastError.message)):z&&z.__mozWebExtensionPolyfillReject__?P(new Error(z.message)):B(z)},_=(P,B,z,...Q)=>{if(Q.length<B.minArgs)throw new Error(`Expected at least ${B.minArgs} ${f(B.minArgs)} for ${P}(), got ${Q.length}`);if(Q.length>B.maxArgs)throw new Error(`Expected at most ${B.maxArgs} ${f(B.maxArgs)} for ${P}(), got ${Q.length}`);return new Promise((ae,Y)=>{const ne=O.bind(null,{resolve:ae,reject:Y});Q.push(ne),z.sendMessage(...Q)})},j={devtools:{network:{onRequestFinished:k(L)}},runtime:{onMessage:k(x),onMessageExternal:k(x),sendMessage:_.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:_.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},G={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return m.privacy={network:{"*":G},services:{"*":G},websites:{"*":G}},T(c,j,m)};n.exports=l(chrome)}else n.exports=globalThis.browser})}(fu)),fu.exports}var KU=QU();const GU=cs(KU);var WU=(t="")=>{const e=OU();let n,r=[];const s=VU(),l=new Set,c=new Set,m=(g,A)=>{switch(g.status){case"undeliverable":r.some(f=>f.message.messageID===g.message.messageID)||(r=[...r,{message:g.message,resolvedDestination:g.resolvedDestination}]);return;case"deliverable":r=r.reduce((f,v)=>v.resolvedDestination===g.deliverableTo?(kp.toBackground(A,{type:"deliver",message:v.message}),f):[...f,v],[]);return;case"delivered":g.receipt.message.messageType==="message"&&s.add(g.receipt);return;case"incoming":g.message.messageType==="reply"&&s.remove(g.message.messageID),l.forEach(f=>f(g.message,A));return;case"terminated":{const f=s.entries().filter(v=>g.fingerprint===v.to);s.remove(f),f.forEach(({message:v})=>c.forEach(w=>w(v)))}}},p=()=>{n=GU.runtime.connect({name:HU({endpointName:t,fingerprint:e})}),n.onMessage.addListener(m),n.onDisconnect.addListener(p),kp.toBackground(n,{type:"sync",pendingResponses:s.entries(),pendingDeliveries:[...new Set(r.map(({resolvedDestination:g})=>g))]})};return p(),{onFailure(g){c.add(g)},onMessage(g){l.add(g)},postMessage(g){kp.toBackground(n,{type:"deliver",message:g})}}},qU=Object.defineProperty,YU=Object.defineProperties,JU=Object.getOwnPropertyDescriptors,RE=Object.getOwnPropertySymbols,XU=Object.prototype.hasOwnProperty,$U=Object.prototype.propertyIsEnumerable,UE=(t,e,n)=>e in t?qU(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,bw=(t,e)=>{for(var n in e||(e={}))XU.call(e,n)&&UE(t,n,e[n]);if(RE)for(var n of RE(e))$U.call(e,n)&&UE(t,n,e[n]);return t},vw=(t,e)=>YU(t,JU(e)),ZU=/^((?:background$)|devtools|popup|options|content-script|window)(?:@(\d+)(?:\.(\d+))?)?$/,ww=t=>{const[,e,n,r]=t.match(ZU)||[];return{context:e,tabId:+n,frameId:r?+r:void 0}};const eM=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],Fh=Symbol(".toJSON was called"),tM=t=>{t[Fh]=!0;const e=t.toJSON();return delete t[Fh],e},Iw=({from:t,seen:e,to_:n,forceEnumerable:r,maxDepth:s,depth:l})=>{const c=n||(Array.isArray(t)?[]:{});if(e.push(t),l>=s)return c;if(typeof t.toJSON=="function"&&t[Fh]!==!0)return tM(t);for(const[m,p]of Object.entries(t)){if(typeof Buffer=="function"&&Buffer.isBuffer(p)){c[m]="[object Buffer]";continue}if(p!==null&&typeof p=="object"&&typeof p.pipe=="function"){c[m]="[object Stream]";continue}if(typeof p!="function"){if(!p||typeof p!="object"){c[m]=p;continue}if(!e.includes(t[m])){l++,c[m]=Iw({from:t[m],seen:[...e],forceEnumerable:r,maxDepth:s,depth:l});continue}c[m]="[Circular]"}}for(const{property:m,enumerable:p}of eM)typeof t[m]=="string"&&Object.defineProperty(c,m,{value:t[m],enumerable:!0,configurable:!0,writable:!0});return c};function aM(t,e={}){const{maxDepth:n=Number.POSITIVE_INFINITY}=e;return typeof t=="object"&&t!==null?Iw({from:t,seen:[],forceEnumerable:!0,maxDepth:n,depth:0}):typeof t=="function"?`[Function: ${t.name||"anonymous"}]`:t}let Cw=()=>({events:{},emit(t,...e){(this.events[t]||[]).forEach(n=>n(...e))},on(t,e){return(this.events[t]=this.events[t]||[]).push(e),()=>this.events[t]=(this.events[t]||[]).filter(n=>n!==e)}});var nM=(t,e,n)=>{const r=xu(),s=new Map,l=new Map,c=m=>{if(m.destination.context===t&&!m.destination.frameId&&!m.destination.tabId){const{transactionId:p,messageID:g,messageType:A}=m,f=()=>{const w=s.get(p);if(w){const{err:S,data:T}=m;if(S){const k=S,L=self[k.name],R=new(typeof L=="function"?L:Error)(k.message);for(const x in k)R[x]=k[x];w.reject(R)}else w.resolve(T);s.delete(p)}},v=async()=>{let w,S,T=!1;try{const k=l.get(g);if(typeof k=="function")w=await k({sender:m.origin,id:g,data:m.data,timestamp:m.timestamp});else throw T=!0,new Error(`[webext-bridge] No handler registered in '${t}' to accept messages with id '${g}'`)}catch(k){S=k}finally{if(S&&(m.err=aM(S)),c(vw(bw({},m),{messageType:"reply",data:w,origin:{context:t,tabId:null},destination:m.origin,hops:[]})),S&&!T)throw w}};switch(A){case"reply":return f();case"message":return v()}}return m.hops.push(`${t}::${r}`),e(m)};return{handleMessage:c,endTransaction:m=>{const p=s.get(m);p==null||p.reject("Transaction was ended before it could complete"),s.delete(m)},sendMessage:(m,p,g="background")=>{const A=typeof g=="string"?ww(g):g,f="Bridge#sendMessage ->";if(!A.context)throw new TypeError(`${f} Destination must be any one of known destinations`);return new Promise((v,w)=>{const S={messageID:m,data:p,destination:A,messageType:"message",transactionId:xu(),origin:{context:t,tabId:null},hops:[],timestamp:Date.now()};s.set(S.transactionId,{resolve:v,reject:w});try{c(S)}catch(T){s.delete(S.transactionId),w(T)}})},onMessage:(m,p)=>(l.set(m,p),()=>l.delete(m))}},ko=class{constructor(t,e){this.endpointRuntime=t,this.streamInfo=e,this.emitter=Cw(),this.isClosed=!1,this.handleStreamClose=()=>{this.isClosed||(this.isClosed=!0,this.emitter.emit("closed",!0),this.emitter.events={})},ko.initDone||(t.onMessage("__crx_bridge_stream_transfer__",n=>{const{streamId:r,streamTransfer:s,action:l}=n.data,c=ko.openStreams.get(r);c&&!c.isClosed&&(l==="transfer"&&c.emitter.emit("message",s),l==="close"&&(ko.openStreams.delete(r),c.handleStreamClose()))}),ko.initDone=!0),ko.openStreams.set(this.streamInfo.streamId,this)}get info(){return this.streamInfo}send(t){if(this.isClosed)throw new Error("Attempting to send a message over closed stream. Use stream.onClose(<callback>) to keep an eye on stream status");this.endpointRuntime.sendMessage("__crx_bridge_stream_transfer__",{streamId:this.streamInfo.streamId,streamTransfer:t,action:"transfer"},this.streamInfo.endpoint)}close(t){t&&this.send(t),this.handleStreamClose(),this.endpointRuntime.sendMessage("__crx_bridge_stream_transfer__",{streamId:this.streamInfo.streamId,streamTransfer:null,action:"close"},this.streamInfo.endpoint)}onMessage(t){return this.getDisposable("message",t)}onClose(t){return this.getDisposable("closed",t)}getDisposable(t,e){const n=this.emitter.on(t,e);return Object.assign(n,{dispose:n,close:n})}},Lu=ko;Lu.initDone=!1;Lu.openStreams=new Map;var iM=t=>{const e=new Map,n=new Map,r=Cw();t.onMessage("__crx_bridge_stream_open__",c=>new Promise(m=>{const{sender:p,data:g}=c,{channel:A}=g;let f=!1,v=()=>{};const w=()=>{const S=n.get(A);typeof S=="function"?(S(new Lu(t,vw(bw({},g),{endpoint:p}))),f&&v(),m(!0)):f||(f=!0,v=r.on("did-change-stream-callbacks",w))};w()}));async function s(c,m){if(e.has(c))throw new Error("webext-bridge: A Stream is already open at this channel");const p=typeof m=="string"?ww(m):m,g={streamId:xu(),channel:c,endpoint:p},A=new Lu(t,g);return A.onClose(()=>e.delete(c)),await t.sendMessage("__crx_bridge_stream_open__",g,p),e.set(c,A),A}function l(c,m){if(n.has(c))throw new Error("webext-bridge: This channel has already been claimed. Stream allows only one-on-one communication");n.set(c,m),r.emit("did-change-stream-callbacks")}return{openStream:s,onOpenStreamChannel:l}},Sw=WU("popup"),Ef=nM("popup",t=>Sw.postMessage(t));Sw.onMessage(Ef.handleMessage);var{sendMessage:St,onMessage:xp}=Ef;iM(Ef);const bf=b.forwardRef(({isVisible:t,colorClass:e="bg-orange-500"},n)=>{const r=b.useRef(null),s=c=>{setTimeout(()=>{r.current&&(r.current.style.transition="none",r.current.style.width="100%",r.current.offsetHeight,requestAnimationFrame(()=>{r.current&&(r.current.style.transition=`width ${c}s linear`,r.current.style.width="0%")}))},10)},l=()=>{r.current&&(r.current.style.transition="none",r.current.style.width="0%")};return b.useImperativeHandle(n,()=>({startAnimation:s,stopAnimation:l})),b.useEffect(()=>{t||l()},[t]),t?d.jsx("div",{className:"fixed top-0 left-0 right-0 z-[60] h-1 bg-gray-200 dark:bg-gray-700",children:d.jsx("div",{ref:r,className:`h-full ${e}`,style:{width:"100%",transition:"none"}})}):null});bf.displayName="CountdownBar";const rM=()=>{const[t,e]=b.useState(!1),n=b.useRef(null),r=b.useRef(0),s=(c,m)=>{var g;const p=c/m;(g=n.current)==null||g.startAnimation(c*p)},l=()=>{var c;(c=n.current)==null||c.stopAnimation()};return b.useEffect(()=>{St("GET_CLIPBOARD_COUNTDOWN_STATE",{},"background").then(g=>{const A=g;A&&A.remaining>0&&(r.current=A.id,e(!0),setTimeout(()=>{s(A.remaining,A.total)},0))}).catch(()=>{});const c=xp("CLIPBOARD_COUNTDOWN",({data:g})=>{const{remaining:A,total:f,id:v}=g;e(A>0),v!==r.current&&A>0&&(r.current=v,setTimeout(()=>{s(A,f)},0))}),m=xp("CLIPBOARD_CLEARED",()=>{e(!1),r.current=0,l()}),p=xp("CLIPBOARD_COUNTDOWN_CANCELLED",()=>{e(!1),r.current=0,l()});return()=>{c(),m(),p()}},[]),d.jsx(bf,{ref:n,isVisible:t,colorClass:"bg-orange-500"})},ai=({isOpen:t,onClose:e,title:n,children:r,maxWidth:s="max-w-md",showCloseButton:l=!0,footer:c,showHeaderBorder:m=!0,bodyClassName:p="px-6 py-4"})=>{const{t:g}=it(),A=b.useCallback(v=>{v.key==="Escape"&&e()},[e]);if(b.useEffect(()=>{if(t)return document.addEventListener("keydown",A),()=>{document.removeEventListener("keydown",A)}},[t,A]),!t)return null;const f=v=>{v.target===v.currentTarget&&e()};return d.jsxs("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:[d.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-80 transition-opacity",onClick:e}),d.jsx("div",{className:"fixed inset-0 flex items-center justify-center p-4",onClick:f,children:d.jsxs("div",{className:`relative transform overflow-hidden rounded-lg bg-white dark:bg-gray-800 shadow-xl transition-all w-full ${s} mx-4`,children:[n&&d.jsxs("div",{className:`px-6 py-4 flex items-center justify-between ${m?"border-b border-gray-200 dark:border-gray-700":""}`,children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:n}),l&&d.jsxs("button",{type:"button",className:"text-gray-400 hover:text-gray-500 focus:outline-none",onClick:e,children:[d.jsx("span",{className:"sr-only",children:g("common.close")}),d.jsx("svg",{className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})]})]}),!n&&l&&d.jsxs("button",{type:"button",className:"absolute top-3 right-3 text-gray-400 hover:text-gray-500 focus:outline-none z-10",onClick:e,children:[d.jsx("span",{className:"sr-only",children:g("common.close")}),d.jsx("svg",{className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})]}),d.jsx("div",{className:p,children:r}),c&&d.jsx("div",{className:"px-6 py-4 border-t border-gray-200 dark:border-gray-700",children:c})]})})]})},Id=({isOpen:t,onClose:e,onConfirm:n,title:r,message:s,confirmText:l="",cancelText:c="",variant:m="default"})=>{const p=m==="danger"?"bg-red-600 hover:bg-red-700 focus:ring-red-500":"bg-primary-600 hover:bg-primary-700 focus:ring-primary-500";return d.jsxs(ai,{isOpen:t,onClose:e,maxWidth:"max-w-lg",showHeaderBorder:!1,bodyClassName:"px-4 pb-4 pt-5",children:[d.jsxs("div",{className:"sm:flex sm:items-start",children:[m==="danger"&&d.jsx("div",{className:"mx-auto flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-red-100 dark:bg-red-900 sm:mx-0 sm:h-10 sm:w-10",children:d.jsx("svg",{className:"h-6 w-6 text-red-600 dark:text-red-200",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})})}),d.jsxs("div",{className:"mt-3 text-center sm:ml-4 sm:mt-0 sm:text-left",children:[d.jsx("h3",{className:"text-lg font-semibold leading-6 text-gray-900 dark:text-white",children:r}),d.jsx("div",{className:"mt-2",children:d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:s})})]})]}),d.jsxs("div",{className:"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse",children:[l&&d.jsx("button",{type:"button",className:`inline-flex w-full justify-center rounded-md px-3 py-2 text-sm font-semibold text-white shadow-sm focus:outline-none focus:ring-2 focus:ring-offset-2 sm:ml-3 sm:w-auto ${p}`,onClick:n,children:l}),c&&d.jsx("button",{type:"button",className:"mt-3 inline-flex w-full justify-center rounded-md bg-white dark:bg-gray-700 px-3 py-2 text-sm font-semibold text-gray-900 dark:text-gray-200 shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-gray-600 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-primary-500 sm:mt-0 sm:w-auto",onClick:e,children:c})]})]})},sM=()=>{const{t}=it(),e=Pa(),n=Ba(),[r,s]=b.useState("items");b.useEffect(()=>{const A=n.pathname.substring(1),v=["items","emails","settings"].find(w=>A===w||A.startsWith(`${w}/`));v&&s(v)},[n]);const l=A=>{s(A),A==="items"?e(`/${A}`,{state:{resetFilters:!0}}):e(`/${A}`)};return["/","/login","/auth-settings","/unlock","/unlock-success","/upgrade"].includes(n.pathname)||new URLSearchParams(window.location.search).get("mode")==="inline_unlock"?null:d.jsx("div",{className:"fixed bottom-0 left-0 right-0 bg-white dark:bg-gray-800 border-t border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"flex justify-around items-center h-14",children:[d.jsxs("button",{onClick:()=>l("items"),id:"nav-vault",className:`flex flex-col items-center justify-center w-1/3 h-full ${r==="items"?"text-primary-600 dark:text-primary-500":"text-gray-500 dark:text-gray-400"}`,children:[d.jsx("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"})}),d.jsx("span",{className:"text-sm mt-1",children:t("menu.vault")})]}),d.jsxs("button",{onClick:()=>l("emails"),id:"nav-emails",className:`flex flex-col items-center justify-center w-1/3 h-full ${r==="emails"?"text-primary-600 dark:text-primary-500":"text-gray-500 dark:text-gray-400"}`,children:[d.jsx("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})}),d.jsx("span",{className:"text-sm mt-1",children:t("menu.emails")})]}),d.jsxs("button",{onClick:()=>l("settings"),id:"nav-settings",className:`flex flex-col items-center justify-center w-1/3 h-full ${r==="settings"?"text-primary-600 dark:text-primary-500":"text-gray-500 dark:text-gray-400"}`,children:[d.jsxs("svg",{className:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})]}),d.jsx("span",{className:"text-sm mt-1",children:t("common.settings")})]})]})})},oM="#EEC170",lM=["m459.87 294.95c0.016205 5.4005 0.03241 10.801-0.35022 16.873-1.111 6.3392-1.1941 12.173-2.6351 17.649-10.922 41.508-36.731 69.481-77.351 83.408-7.2157 2.4739-14.972 3.3702-22.479 4.995-23.629 0.042205-47.257 0.11453-70.886 0.12027-46.762 0.011322-93.523-0.01416-140.95-0.43411-8.59-2.0024-16.766-2.8352-24.398-5.3326-21.595-7.0666-39.523-19.656-53.708-37.552-10.227-12.903-17.579-27.17-21.28-43.221-1.475-6.3967-2.4711-12.904-3.6852-19.361-0.051849-5.747-0.1037-11.494 0.26915-17.886 4.159-42.973 27.68-71.638 63.562-92.153 0-0.70761-0.001961-1.6988 3.12e-4 -2.69 0.022484-9.8293-1.3071-19.894 0.35664-29.438 3.2391-18.579 11.08-35.272 23.763-49.773 12.098-13.832 26.457-23.989 43.609-30.029 7.813-2.7512 16.14-4.0417 24.234-5.9948 7.392-0.025734 14.784-0.05146 22.835 0.32253 4.1959 0.95392 7.7946 1.2538 11.258 2.1053 17.16 4.2192 32.287 12.176 45.469 24.104 2.2558 2.0411 4.372 6.6241 9.621 3.868 16.839-8.8419 34.718-11.597 53.603-8.594 16.791 2.6699 31.602 9.4308 44.236 20.636 11.531 10.227 19.84 22.841 25.393 37.236 6.3436 16.445 10.389 33.163 6.0798 49.389 7.9587 8.9321 15.807 16.704 22.421 25.414 9.162 12.065 15.33 25.746 18.144 40.776 0.97046 5.1848 1.9111 10.375 2.8654 15.563m-71.597 71.012c5.5615-5.2284 12.002-9.7986 16.508-15.817 10.474-13.992 14.333-29.916 11.288-47.446-2.2496-12.95-8.1973-24.076-17.243-33.063-12.746-12.663-28.865-18.614-46.786-18.569-69.912 0.17712-139.82 0.56831-209.74 0.96176-15.922 0.089599-29.168 7.4209-39.685 18.296-14.45 14.944-20.408 33.343-16.655 54.368 2.2763 12.754 8.2167 23.748 17.158 32.66 13.299 13.255 30.097 18.653 48.728 18.651 59.321-0.005188 118.64 0.042358 177.96-0.046601 9.5912-0.014374 19.181-0.86588 28.773-0.88855 10.649-0.025146 19.978-3.825 29.687-9.1074z","m162.77 293c15.654 4.3883 20.627 22.967 10.304 34.98-5.3104 6.1795-14.817 8.3208-24.278 5.0472-7.0723-2.4471-12.332-10.362-12.876-17.933-1.0451-14.542 11.089-23.176 21.705-23.046 1.5794 0.019287 3.1517 0.61566 5.1461 0.95184z","m227.18 293.64c7.8499 2.3973 11.938 8.2143 13.524 15.077 1.8591 8.0439-0.44817 15.706-7.1588 21.121-6.7633 5.4572-14.417 6.8794-22.578 3.1483-8.2972-3.7933-12.836-10.849-12.736-19.438 0.1687-14.497 14.13-25.368 28.948-19.908z","m261.57 319.07c-2.495-14.418 4.6853-22.603 14.596-26.108 9.8945-3.4995 23.181 3.4303 26.267 13.779 4.6504 15.591-7.1651 29.064-21.665 28.161-8.5254-0.53088-17.202-6.5094-19.198-15.831z","m336.91 333.41c-9.0175-4.2491-15.337-14.349-13.829-21.682 3.0825-14.989 13.341-20.304 23.018-19.585 10.653 0.79141 17.93 7.407 19.765 17.547 1.9588 10.824-4.1171 19.939-13.494 23.703-5.272 2.1162-10.091 1.5086-15.46 0.017883z"],Tw=({className:t="",width:e=200,height:n=50,showText:r=!0,color:s="currentColor"})=>d.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",version:"1.1",viewBox:"0 0 2000 500",width:e,height:n,className:t,children:[lM.map((l,c)=>d.jsx("path",{d:l,fill:oM},c)),r&&d.jsx("text",{x:"550",y:"355",fontFamily:"Arial, Helvetica, sans-serif",fontWeight:"700",fontSize:"290",letterSpacing:"-7",fill:s,children:"AliasVault"})]});var ME=Object.prototype.hasOwnProperty;function Bh(t,e){var n,r;if(t===e)return!0;if(t&&e&&(n=t.constructor)===e.constructor){if(n===Date)return t.getTime()===e.getTime();if(n===RegExp)return t.toString()===e.toString();if(n===Array){if((r=t.length)===e.length)for(;r--&&Bh(t[r],e[r]););return r===-1}if(!n||typeof t=="object"){r=0;for(n in t)if(ME.call(t,n)&&++r&&!ME.call(e,n)||!(n in e)||!Bh(t[n],e[n]))return!1;return Object.keys(e).length===r}}return t!==t&&e!==e}const dM=new Error("request for lock canceled");var cM=function(t,e,n,r){function s(l){return l instanceof n?l:new n(function(c){c(l)})}return new(n||(n=Promise))(function(l,c){function m(A){try{g(r.next(A))}catch(f){c(f)}}function p(A){try{g(r.throw(A))}catch(f){c(f)}}function g(A){A.done?l(A.value):s(A.value).then(m,p)}g((r=r.apply(t,e||[])).next())})};class uM{constructor(e,n=dM){this._value=e,this._cancelError=n,this._queue=[],this._weightedWaiters=[]}acquire(e=1,n=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return new Promise((r,s)=>{const l={resolve:r,reject:s,weight:e,priority:n},c=Nw(this._queue,m=>n<=m.priority);c===-1&&e<=this._value?this._dispatchItem(l):this._queue.splice(c+1,0,l)})}runExclusive(e){return cM(this,arguments,void 0,function*(n,r=1,s=0){const[l,c]=yield this.acquire(r,s);try{return yield n(l)}finally{c()}})}waitForUnlock(e=1,n=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return this._couldLockImmediately(e,n)?Promise.resolve():new Promise(r=>{this._weightedWaiters[e-1]||(this._weightedWaiters[e-1]=[]),mM(this._weightedWaiters[e-1],{resolve:r,priority:n})})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(e){this._value=e,this._dispatchQueue()}release(e=1){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);this._value+=e,this._dispatchQueue()}cancel(){this._queue.forEach(e=>e.reject(this._cancelError)),this._queue=[]}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters()}_dispatchItem(e){const n=this._value;this._value-=e.weight,e.resolve([n,this._newReleaser(e.weight)])}_newReleaser(e){let n=!1;return()=>{n||(n=!0,this.release(e))}}_drainUnlockWaiters(){if(this._queue.length===0)for(let e=this._value;e>0;e--){const n=this._weightedWaiters[e-1];n&&(n.forEach(r=>r.resolve()),this._weightedWaiters[e-1]=[])}else{const e=this._queue[0].priority;for(let n=this._value;n>0;n--){const r=this._weightedWaiters[n-1];if(!r)continue;const s=r.findIndex(l=>l.priority<=e);(s===-1?r:r.splice(0,s)).forEach(l=>l.resolve())}}}_couldLockImmediately(e,n){return(this._queue.length===0||this._queue[0].priority<n)&&e<=this._value}}function mM(t,e){const n=Nw(t,r=>e.priority<=r.priority);t.splice(n+1,0,e)}function Nw(t,e){for(let n=t.length-1;n>=0;n--)if(e(t[n]))return n;return-1}var gM=function(t,e,n,r){function s(l){return l instanceof n?l:new n(function(c){c(l)})}return new(n||(n=Promise))(function(l,c){function m(A){try{g(r.next(A))}catch(f){c(f)}}function p(A){try{g(r.throw(A))}catch(f){c(f)}}function g(A){A.done?l(A.value):s(A.value).then(m,p)}g((r=r.apply(t,e||[])).next())})};class pM{constructor(e){this._semaphore=new uM(1,e)}acquire(){return gM(this,arguments,void 0,function*(e=0){const[,n]=yield this._semaphore.acquire(1,e);return n})}runExclusive(e,n=0){return this._semaphore.runExclusive(()=>e(),1,n)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(e=0){return this._semaphore.waitForUnlock(1,e)}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}}var Wv,qv;const Au=((qv=(Wv=globalThis.browser)==null?void 0:Wv.runtime)==null?void 0:qv.id)==null?globalThis.chrome:globalThis.browser,Te=hM();function hM(){const t={local:Xc("local"),session:Xc("session"),sync:Xc("sync"),managed:Xc("managed")},e=T=>{const k=t[T];if(k==null){const L=Object.keys(t).join(", ");throw Error(`Invalid area "${T}". Options: ${L}`)}return k},n=T=>{const k=T.indexOf(":"),L=T.substring(0,k),R=T.substring(k+1);if(R==null)throw Error(`Storage key should be in the form of "area:key", but received "${T}"`);return{driverArea:L,driverKey:R,driver:e(L)}},r=T=>T+"$",s=(T,k)=>{const L={...T};return Object.entries(k).forEach(([R,x])=>{x==null?delete L[R]:L[R]=x}),L},l=(T,k)=>T??k??null,c=T=>typeof T=="object"&&!Array.isArray(T)?T:{},m=async(T,k,L)=>{const R=await T.getItem(k);return l(R,(L==null?void 0:L.fallback)??(L==null?void 0:L.defaultValue))},p=async(T,k)=>{const L=r(k),R=await T.getItem(L);return c(R)},g=async(T,k,L)=>{await T.setItem(k,L??null)},A=async(T,k,L)=>{const R=r(k),x=c(await T.getItem(R));await T.setItem(R,s(x,L))},f=async(T,k,L)=>{if(await T.removeItem(k),L!=null&&L.removeMeta){const R=r(k);await T.removeItem(R)}},v=async(T,k,L)=>{const R=r(k);if(L==null)await T.removeItem(R);else{const x=c(await T.getItem(R));[L].flat().forEach(O=>delete x[O]),await T.setItem(R,x)}},w=(T,k,L)=>T.watch(k,L);return{getItem:async(T,k)=>{const{driver:L,driverKey:R}=n(T);return await m(L,R,k)},getItems:async T=>{const k=new Map,L=new Map,R=[];T.forEach(O=>{let _,j;typeof O=="string"?_=O:"getValue"in O?(_=O.key,j={fallback:O.fallback}):(_=O.key,j=O.options),R.push(_);const{driverArea:G,driverKey:P}=n(_),B=k.get(G)??[];k.set(G,B.concat(P)),L.set(_,j)});const x=new Map;return await Promise.all(Array.from(k.entries()).map(async([O,_])=>{(await t[O].getItems(_)).forEach(G=>{const P=`${O}:${G.key}`,B=L.get(P),z=l(G.value,(B==null?void 0:B.fallback)??(B==null?void 0:B.defaultValue));x.set(P,z)})})),R.map(O=>({key:O,value:x.get(O)}))},getMeta:async T=>{const{driver:k,driverKey:L}=n(T);return await p(k,L)},getMetas:async T=>{const k=T.map(x=>{const O=typeof x=="string"?x:x.key,{driverArea:_,driverKey:j}=n(O);return{key:O,driverArea:_,driverKey:j,driverMetaKey:r(j)}}),L=k.reduce((x,O)=>{var _;return x[_=O.driverArea]??(x[_]=[]),x[O.driverArea].push(O),x},{}),R={};return await Promise.all(Object.entries(L).map(async([x,O])=>{const _=await Au.storage[x].get(O.map(j=>j.driverMetaKey));O.forEach(j=>{R[j.key]=_[j.driverMetaKey]??{}})})),k.map(x=>({key:x.key,meta:R[x.key]}))},setItem:async(T,k)=>{const{driver:L,driverKey:R}=n(T);await g(L,R,k)},setItems:async T=>{const k={};T.forEach(L=>{const{driverArea:R,driverKey:x}=n("key"in L?L.key:L.item.key);k[R]??(k[R]=[]),k[R].push({key:x,value:L.value})}),await Promise.all(Object.entries(k).map(async([L,R])=>{await e(L).setItems(R)}))},setMeta:async(T,k)=>{const{driver:L,driverKey:R}=n(T);await A(L,R,k)},setMetas:async T=>{const k={};T.forEach(L=>{const{driverArea:R,driverKey:x}=n("key"in L?L.key:L.item.key);k[R]??(k[R]=[]),k[R].push({key:x,properties:L.meta})}),await Promise.all(Object.entries(k).map(async([L,R])=>{const x=e(L),O=R.map(({key:P})=>r(P));console.log(L,O);const _=await x.getItems(O),j=Object.fromEntries(_.map(({key:P,value:B})=>[P,c(B)])),G=R.map(({key:P,properties:B})=>{const z=r(P);return{key:z,value:s(j[z]??{},B)}});await x.setItems(G)}))},removeItem:async(T,k)=>{const{driver:L,driverKey:R}=n(T);await f(L,R,k)},removeItems:async T=>{const k={};T.forEach(L=>{let R,x;typeof L=="string"?R=L:"getValue"in L?R=L.key:"item"in L?(R=L.item.key,x=L.options):(R=L.key,x=L.options);const{driverArea:O,driverKey:_}=n(R);k[O]??(k[O]=[]),k[O].push(_),x!=null&&x.removeMeta&&k[O].push(r(_))}),await Promise.all(Object.entries(k).map(async([L,R])=>{await e(L).removeItems(R)}))},clear:async T=>{await e(T).clear()},removeMeta:async(T,k)=>{const{driver:L,driverKey:R}=n(T);await v(L,R,k)},snapshot:async(T,k)=>{var x;const R=await e(T).snapshot();return(x=k==null?void 0:k.excludeKeys)==null||x.forEach(O=>{delete R[O],delete R[r(O)]}),R},restoreSnapshot:async(T,k)=>{await e(T).restoreSnapshot(k)},watch:(T,k)=>{const{driver:L,driverKey:R}=n(T);return w(L,R,k)},unwatch(){Object.values(t).forEach(T=>{T.unwatch()})},defineItem:(T,k)=>{const{driver:L,driverKey:R}=n(T),{version:x=1,migrations:O={}}=k??{};if(x<1)throw Error("Storage item version cannot be less than 1. Initial versions should be set to 1, not 0.");const _=async()=>{var X;const z=r(R),[{value:Q},{value:ae}]=await L.getItems([R,z]);if(Q==null)return;const Y=(ae==null?void 0:ae.v)??1;if(Y>x)throw Error(`Version downgrade detected (v${Y} -> v${x}) for "${T}"`);if(Y===x)return;console.debug(`[@wxt-dev/storage] Running storage migration for ${T}: v${Y} -> v${x}`);const ne=Array.from({length:x-Y},(te,ce)=>Y+ce+1);let fe=Q;for(const te of ne)try{fe=await((X=O==null?void 0:O[te])==null?void 0:X.call(O,fe))??fe}catch(ce){throw new fM(T,te,{cause:ce})}await L.setItems([{key:R,value:fe},{key:z,value:{...ae,v:x}}]),console.debug(`[@wxt-dev/storage] Storage migration completed for ${T} v${x}`,{migratedValue:fe})},j=(k==null?void 0:k.migrations)==null?Promise.resolve():_().catch(z=>{console.error(`[@wxt-dev/storage] Migration failed for ${T}`,z)}),G=new pM,P=()=>(k==null?void 0:k.fallback)??(k==null?void 0:k.defaultValue)??null,B=()=>G.runExclusive(async()=>{const z=await L.getItem(R);if(z!=null||(k==null?void 0:k.init)==null)return z;const Q=await k.init();return await L.setItem(R,Q),Q});return j.then(B),{key:T,get defaultValue(){return P()},get fallback(){return P()},getValue:async()=>(await j,k!=null&&k.init?await B():await m(L,R,k)),getMeta:async()=>(await j,await p(L,R)),setValue:async z=>(await j,await g(L,R,z)),setMeta:async z=>(await j,await A(L,R,z)),removeValue:async z=>(await j,await f(L,R,z)),removeMeta:async z=>(await j,await v(L,R,z)),watch:z=>w(L,R,(Q,ae)=>z(Q??P(),ae??P())),migrate:_}}}}function Xc(t){const e=()=>{if(Au.runtime==null)throw Error(["'wxt/storage' must be loaded in a web extension environment",`
 - If thrown during a build, see https://github.com/wxt-dev/wxt/issues/371`,` - If thrown during tests, mock 'wxt/browser' correctly. See https://wxt.dev/guide/go-further/testing.html
`].join(`
`));if(Au.storage==null)throw Error("You must add the 'storage' permission to your manifest to use 'wxt/storage'");const r=Au.storage[t];if(r==null)throw Error(`"browser.storage.${t}" is undefined`);return r},n=new Set;return{getItem:async r=>(await e().get(r))[r],getItems:async r=>{const s=await e().get(r);return r.map(l=>({key:l,value:s[l]??null}))},setItem:async(r,s)=>{s==null?await e().remove(r):await e().set({[r]:s})},setItems:async r=>{const s=r.reduce((l,{key:c,value:m})=>(l[c]=m,l),{});await e().set(s)},removeItem:async r=>{await e().remove(r)},removeItems:async r=>{await e().remove(r)},clear:async()=>{await e().clear()},snapshot:async()=>await e().get(),restoreSnapshot:async r=>{await e().set(r)},watch(r,s){const l=c=>{const m=c[r];m!=null&&(Bh(m.newValue,m.oldValue)||s(m.newValue??null,m.oldValue??null))};return e().onChanged.addListener(l),n.add(l),()=>{e().onChanged.removeListener(l),n.delete(l)}},unwatch(){n.forEach(r=>{e().onChanged.removeListener(r)}),n.clear()}}}class fM extends Error{constructor(e,n,r){super(`v${n} migration failed for "${e}"`,r),this.key=e,this.version=n}}var Lp={exports:{}};const AM={},yM=Object.freeze(Object.defineProperty({__proto__:null,default:AM},Symbol.toStringTag,{value:"Module"})),_E=RR(yM);var FE;function EM(){return FE||(FE=1,function(t,e){var n=void 0,r=function(s){return n||(n=new Promise(function(l,c){var m=typeof s<"u"?s:{},p=m.onAbort;m.onAbort=function(y){c(new Error(y)),p&&p(y)},m.postRun=m.postRun||[],m.postRun.push(function(){l(m)}),t=void 0;var g;g||(g=typeof m<"u"?m:{});var A=typeof window=="object",f=typeof WorkerGlobalScope<"u",v=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";g.onRuntimeInitialized=function(){function y(ue,Le){switch(typeof Le){case"boolean":Nm(ue,Le?1:0);break;case"number":Cm(ue,Le);break;case"string":Sm(ue,Le,-1,-1);break;case"object":if(Le===null)Wd(ue);else if(Le.length!=null){var $e=Sr(Le,ms);Tm(ue,$e,Le.length,-1),Nr($e)}else xr(ue,"Wrong API use : tried to return a value of an unknown type ("+Le+").",-1);break;default:Wd(ue)}}function I(ue,Le){for(var $e=[],ot=0;ot<ue;ot+=1){var mt=Ve(Le+4*ot,"i32"),Jt=Gd(mt);if(Jt===1||Jt===2)mt=Im(mt);else if(Jt===3)mt=vm(mt);else if(Jt===4){Jt=mt,mt=bm(Jt),Jt=wm(Jt);for(var Vn=new Uint8Array(mt),xn=0;xn<mt;xn+=1)Vn[xn]=z[Jt+xn];mt=Vn}else mt=null;$e.push(mt)}return $e}function U(ue,Le){this.Qa=ue,this.db=Le,this.Oa=1,this.lb=[]}function V(ue,Le){if(this.db=Le,Le=Dt(ue)+1,this.eb=Ks(Le),this.eb===null)throw Error("Unable to allocate memory for the SQL string");M(ue,Q,this.eb,Le),this.kb=this.eb,this.Za=this.pb=null}function Z(ue){if(this.filename="dbfile_"+(4294967295*Math.random()>>>0),ue!=null){var Le=this.filename,$e="/",ot=Le;if($e&&($e=typeof $e=="string"?$e:Da($e),ot=Le?qe($e+"/"+Le):$e),Le=lt(!0,!0),ot=q(ot,Le),ue){if(typeof ue=="string"){$e=Array(ue.length);for(var mt=0,Jt=ue.length;mt<Jt;++mt)$e[mt]=ue.charCodeAt(mt);ue=$e}ma(ot,Le|146),$e=ca(ot,577),jd($e,ue,0,ue.length,0),Hn($e),ma(ot,Le)}}this.handleError(Xe(this.filename,me)),this.db=Ve(me,"i32"),qd(this.db),this.fb={},this.Sa={}}var me=si(4),Ce=g.cwrap,Xe=Ce("sqlite3_open","number",["string","number"]),Ct=Ce("sqlite3_close_v2","number",["number"]),bt=Ce("sqlite3_exec","number",["number","string","number","number","number"]),Aa=Ce("sqlite3_changes","number",["number"]),$a=Ce("sqlite3_prepare_v2","number",["number","string","number","number","number"]),Gs=Ce("sqlite3_sql","string",["number"]),gs=Ce("sqlite3_normalized_sql","string",["number"]),ps=Ce("sqlite3_prepare_v2","number",["number","number","number","number","number"]),zd=Ce("sqlite3_bind_text","number",["number","number","number","number","number"]),Qd=Ce("sqlite3_bind_blob","number",["number","number","number","number","number"]),om=Ce("sqlite3_bind_double","number",["number","number","number"]),lm=Ce("sqlite3_bind_int","number",["number","number","number"]),tl=Ce("sqlite3_bind_parameter_index","number",["number","string"]),dm=Ce("sqlite3_step","number",["number"]),cm=Ce("sqlite3_errmsg","string",["number"]),um=Ce("sqlite3_column_count","number",["number"]),mm=Ce("sqlite3_data_count","number",["number"]),gm=Ce("sqlite3_column_double","number",["number","number"]),al=Ce("sqlite3_column_text","string",["number","number"]),pm=Ce("sqlite3_column_blob","number",["number","number"]),hm=Ce("sqlite3_column_bytes","number",["number","number"]),fm=Ce("sqlite3_column_type","number",["number","number"]),Am=Ce("sqlite3_column_name","string",["number","number"]),nl=Ce("sqlite3_reset","number",["number"]),ym=Ce("sqlite3_clear_bindings","number",["number"]),Em=Ce("sqlite3_finalize","number",["number"]),Kd=Ce("sqlite3_create_function_v2","number","number string number number number number number number number".split(" ")),Gd=Ce("sqlite3_value_type","number",["number"]),bm=Ce("sqlite3_value_bytes","number",["number"]),vm=Ce("sqlite3_value_text","string",["number"]),wm=Ce("sqlite3_value_blob","number",["number"]),Im=Ce("sqlite3_value_double","number",["number"]),Cm=Ce("sqlite3_result_double","",["number","number"]),Wd=Ce("sqlite3_result_null","",["number"]),Sm=Ce("sqlite3_result_text","",["number","string","number","number"]),Tm=Ce("sqlite3_result_blob","",["number","number","number","number"]),Nm=Ce("sqlite3_result_int","",["number","number"]),xr=Ce("sqlite3_result_error","",["number","string","number"]),Lr=Ce("sqlite3_aggregate_context","number",["number","number"]),qd=Ce("RegisterExtensionFunctions","number",["number"]),il=Ce("sqlite3_update_hook","number",["number","number","number"]);U.prototype.bind=function(ue){if(!this.Qa)throw"Statement closed";return this.reset(),Array.isArray(ue)?this.Cb(ue):ue!=null&&typeof ue=="object"?this.Db(ue):!0},U.prototype.step=function(){if(!this.Qa)throw"Statement closed";this.Oa=1;var ue=dm(this.Qa);switch(ue){case 100:return!0;case 101:return!1;default:throw this.db.handleError(ue)}},U.prototype.wb=function(ue){return ue==null&&(ue=this.Oa,this.Oa+=1),gm(this.Qa,ue)},U.prototype.Gb=function(ue){if(ue==null&&(ue=this.Oa,this.Oa+=1),ue=al(this.Qa,ue),typeof BigInt!="function")throw Error("BigInt is not supported");return BigInt(ue)},U.prototype.Hb=function(ue){return ue==null&&(ue=this.Oa,this.Oa+=1),al(this.Qa,ue)},U.prototype.getBlob=function(ue){ue==null&&(ue=this.Oa,this.Oa+=1);var Le=hm(this.Qa,ue);ue=pm(this.Qa,ue);for(var $e=new Uint8Array(Le),ot=0;ot<Le;ot+=1)$e[ot]=z[ue+ot];return $e},U.prototype.get=function(ue,Le){Le=Le||{},ue!=null&&this.bind(ue)&&this.step(),ue=[];for(var $e=mm(this.Qa),ot=0;ot<$e;ot+=1)switch(fm(this.Qa,ot)){case 1:var mt=Le.useBigInt?this.Gb(ot):this.wb(ot);ue.push(mt);break;case 2:ue.push(this.wb(ot));break;case 3:ue.push(this.Hb(ot));break;case 4:ue.push(this.getBlob(ot));break;default:ue.push(null)}return ue},U.prototype.getColumnNames=function(){for(var ue=[],Le=um(this.Qa),$e=0;$e<Le;$e+=1)ue.push(Am(this.Qa,$e));return ue},U.prototype.getAsObject=function(ue,Le){ue=this.get(ue,Le),Le=this.getColumnNames();for(var $e={},ot=0;ot<Le.length;ot+=1)$e[Le[ot]]=ue[ot];return $e},U.prototype.getSQL=function(){return Gs(this.Qa)},U.prototype.getNormalizedSQL=function(){return gs(this.Qa)},U.prototype.run=function(ue){return ue!=null&&this.bind(ue),this.step(),this.reset()},U.prototype.sb=function(ue,Le){Le==null&&(Le=this.Oa,this.Oa+=1),ue=C(ue);var $e=Sr(ue,ms);this.lb.push($e),this.db.handleError(zd(this.Qa,Le,$e,ue.length-1,0))},U.prototype.Bb=function(ue,Le){Le==null&&(Le=this.Oa,this.Oa+=1);var $e=Sr(ue,ms);this.lb.push($e),this.db.handleError(Qd(this.Qa,Le,$e,ue.length,0))},U.prototype.rb=function(ue,Le){Le==null&&(Le=this.Oa,this.Oa+=1),this.db.handleError((ue===(ue|0)?lm:om)(this.Qa,Le,ue))},U.prototype.Eb=function(ue){ue==null&&(ue=this.Oa,this.Oa+=1),Qd(this.Qa,ue,0,0,0)},U.prototype.tb=function(ue,Le){switch(Le==null&&(Le=this.Oa,this.Oa+=1),typeof ue){case"string":this.sb(ue,Le);return;case"number":this.rb(ue,Le);return;case"bigint":this.sb(ue.toString(),Le);return;case"boolean":this.rb(ue+0,Le);return;case"object":if(ue===null){this.Eb(Le);return}if(ue.length!=null){this.Bb(ue,Le);return}}throw"Wrong API use : tried to bind a value of an unknown type ("+ue+")."},U.prototype.Db=function(ue){var Le=this;return Object.keys(ue).forEach(function($e){var ot=tl(Le.Qa,$e);ot!==0&&Le.tb(ue[$e],ot)}),!0},U.prototype.Cb=function(ue){for(var Le=0;Le<ue.length;Le+=1)this.tb(ue[Le],Le+1);return!0},U.prototype.reset=function(){return this.freemem(),ym(this.Qa)===0&&nl(this.Qa)===0},U.prototype.freemem=function(){for(var ue;(ue=this.lb.pop())!==void 0;)Nr(ue)},U.prototype.free=function(){this.freemem();var ue=Em(this.Qa)===0;return delete this.db.fb[this.Qa],this.Qa=0,ue},V.prototype.next=function(){if(this.eb===null)return{done:!0};if(this.Za!==null&&(this.Za.free(),this.Za=null),!this.db.db)throw this.mb(),Error("Database closed");var ue=vi(),Le=si(4);Qe(me),Qe(Le);try{this.db.handleError(ps(this.db.db,this.kb,-1,me,Le)),this.kb=Ve(Le,"i32");var $e=Ve(me,"i32");return $e===0?(this.mb(),{done:!0}):(this.Za=new U($e,this.db),this.db.fb[$e]=this.Za,{value:this.Za,done:!1})}catch(ot){throw this.pb=Be(this.kb),this.mb(),ot}finally{wn(ue)}},V.prototype.mb=function(){Nr(this.eb),this.eb=null},V.prototype.getRemainingSQL=function(){return this.pb!==null?this.pb:Be(this.kb)},typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"&&(V.prototype[Symbol.iterator]=function(){return this}),Z.prototype.run=function(ue,Le){if(!this.db)throw"Database closed";if(Le){ue=this.prepare(ue,Le);try{ue.step()}finally{ue.free()}}else this.handleError(bt(this.db,ue,0,0,me));return this},Z.prototype.exec=function(ue,Le,$e){if(!this.db)throw"Database closed";var ot=vi(),mt=null;try{var Jt=$o(ue),Vn=si(4);for(ue=[];Ve(Jt,"i8")!==0;){Qe(me),Qe(Vn),this.handleError(ps(this.db,Jt,-1,me,Vn));var xn=Ve(me,"i32");if(Jt=Ve(Vn,"i32"),xn!==0){var hn=null;for(mt=new U(xn,this),Le!=null&&mt.bind(Le);mt.step();)hn===null&&(hn={columns:mt.getColumnNames(),values:[]},ue.push(hn)),hn.values.push(mt.get(null,$e));mt.free()}}return ue}catch(Ln){throw mt&&mt.free(),Ln}finally{wn(ot)}},Z.prototype.each=function(ue,Le,$e,ot,mt){typeof Le=="function"&&(ot=$e,$e=Le,Le=void 0),ue=this.prepare(ue,Le);try{for(;ue.step();)$e(ue.getAsObject(null,mt))}finally{ue.free()}if(typeof ot=="function")return ot()},Z.prototype.prepare=function(ue,Le){if(Qe(me),this.handleError($a(this.db,ue,-1,me,0)),ue=Ve(me,"i32"),ue===0)throw"Nothing to prepare";var $e=new U(ue,this);return Le!=null&&$e.bind(Le),this.fb[ue]=$e},Z.prototype.iterateStatements=function(ue){return new V(ue,this)},Z.prototype.export=function(){Object.values(this.fb).forEach(function(Le){Le.free()}),Object.values(this.Sa).forEach(ri),this.Sa={},this.handleError(Ct(this.db));var ue=Hd(this.filename);return this.handleError(Xe(this.filename,me)),this.db=Ve(me,"i32"),qd(this.db),ue},Z.prototype.close=function(){this.db!==null&&(Object.values(this.fb).forEach(function(ue){ue.free()}),Object.values(this.Sa).forEach(ri),this.Sa={},this.Ya&&(ri(this.Ya),this.Ya=void 0),this.handleError(Ct(this.db)),Yt("/"+this.filename),this.db=null)},Z.prototype.handleError=function(ue){if(ue===0)return null;throw ue=cm(this.db),Error(ue)},Z.prototype.getRowsModified=function(){return Aa(this.db)},Z.prototype.create_function=function(ue,Le){Object.prototype.hasOwnProperty.call(this.Sa,ue)&&(ri(this.Sa[ue]),delete this.Sa[ue]);var $e=$i(function(ot,mt,Jt){mt=I(mt,Jt);try{var Vn=Le.apply(null,mt)}catch(xn){xr(ot,xn,-1);return}y(ot,Vn)},"viii");return this.Sa[ue]=$e,this.handleError(Kd(this.db,ue,Le.length,1,0,$e,0,0,0)),this},Z.prototype.create_aggregate=function(ue,Le){var $e=Le.init||function(){return null},ot=Le.finalize||function(hn){return hn},mt=Le.step;if(!mt)throw"An aggregate function must have a step function in "+ue;var Jt={};Object.hasOwnProperty.call(this.Sa,ue)&&(ri(this.Sa[ue]),delete this.Sa[ue]),Le=ue+"__finalize",Object.hasOwnProperty.call(this.Sa,Le)&&(ri(this.Sa[Le]),delete this.Sa[Le]);var Vn=$i(function(hn,Ln,Zi){var zn=Lr(hn,1);Object.hasOwnProperty.call(Jt,zn)||(Jt[zn]=$e()),Ln=I(Ln,Zi),Ln=[Jt[zn]].concat(Ln);try{Jt[zn]=mt.apply(null,Ln)}catch(km){delete Jt[zn],xr(hn,km,-1)}},"viii"),xn=$i(function(hn){var Ln=Lr(hn,1);try{var Zi=ot(Jt[Ln])}catch(zn){delete Jt[Ln],xr(hn,zn,-1);return}y(hn,Zi),delete Jt[Ln]},"vi");return this.Sa[ue]=Vn,this.Sa[Le]=xn,this.handleError(Kd(this.db,ue,mt.length-1,1,0,0,Vn,xn,0)),this},Z.prototype.updateHook=function(ue){this.Ya&&(il(this.db,0,0),ri(this.Ya),this.Ya=void 0),ue&&(this.Ya=$i(function(Le,$e,ot,mt,Jt){switch($e){case 18:Le="insert";break;case 23:Le="update";break;case 9:Le="delete";break;default:throw"unknown operationCode in updateHook callback: "+$e}if(ot=ot?Ie(Q,ot):"",mt=mt?Ie(Q,mt):"",Jt>Number.MAX_SAFE_INTEGER)throw"rowId too big to fit inside a Number";ue(Le,ot,mt,Number(Jt))},"viiiij"),il(this.db,this.Ya,0))},g.Database=Z};var w={...g},S="./this.program",T=(y,I)=>{throw I},k="",L,R;if(v){var x=_E;k=__dirname+"/",R=y=>(y=ce(y)?new URL(y):y,x.readFileSync(y)),L=async y=>(y=ce(y)?new URL(y):y,x.readFileSync(y,void 0)),!g.thisProgram&&1<process.argv.length&&(S=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),t.exports=g,T=(y,I)=>{throw process.exitCode=y,I}}else(A||f)&&(f?k=self.location.href:typeof document<"u"&&document.currentScript&&(k=document.currentScript.src),k=k.startsWith("blob:")?"":k.slice(0,k.replace(/[?#].*/,"").lastIndexOf("/")+1),f&&(R=y=>{var I=new XMLHttpRequest;return I.open("GET",y,!1),I.responseType="arraybuffer",I.send(null),new Uint8Array(I.response)}),L=async y=>{if(ce(y))return new Promise((U,V)=>{var Z=new XMLHttpRequest;Z.open("GET",y,!0),Z.responseType="arraybuffer",Z.onload=()=>{Z.status==200||Z.status==0&&Z.response?U(Z.response):V(Z.status)},Z.onerror=V,Z.send(null)});var I=await fetch(y,{credentials:"same-origin"});if(I.ok)return I.arrayBuffer();throw Error(I.status+" : "+I.url)});var O=g.print||console.log.bind(console),_=g.printErr||console.error.bind(console);Object.assign(g,w),w=null,g.thisProgram&&(S=g.thisProgram);var j=g.wasmBinary,G,P=!1,B,z,Q,ae,Y,ne,fe,X,te,ce=y=>y.startsWith("file://");function oe(){var y=G.buffer;g.HEAP8=z=new Int8Array(y),g.HEAP16=ae=new Int16Array(y),g.HEAPU8=Q=new Uint8Array(y),g.HEAPU16=new Uint16Array(y),g.HEAP32=Y=new Int32Array(y),g.HEAPU32=ne=new Uint32Array(y),g.HEAPF32=fe=new Float32Array(y),g.HEAPF64=te=new Float64Array(y),g.HEAP64=X=new BigInt64Array(y),g.HEAPU64=new BigUint64Array(y)}var F=0,J=null;function W(y){var I;throw(I=g.onAbort)==null||I.call(g,y),y="Aborted("+y+")",_(y),P=!0,new WebAssembly.RuntimeError(y+". Build with -sASSERTIONS for more info.")}var ie;async function we(y){if(!j)try{var I=await L(y);return new Uint8Array(I)}catch{}if(y==ie&&j)y=new Uint8Array(j);else if(R)y=R(y);else throw"both async and sync fetching of the wasm failed";return y}async function le(y,I){try{var U=await we(y);return await WebAssembly.instantiate(U,I)}catch(V){_(`failed to asynchronously prepare wasm: ${V}`),W(V)}}async function ve(y){var I=ie;if(!j&&typeof WebAssembly.instantiateStreaming=="function"&&!ce(I)&&!v)try{var U=fetch(I,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(U,y)}catch(V){_(`wasm streaming compile failed: ${V}`),_("falling back to ArrayBuffer instantiation")}return le(I,y)}class Pe{constructor(I){Ue(this,"name","ExitStatus");this.message=`Program terminated with exit(${I})`,this.status=I}}var _e=y=>{for(;0<y.length;)y.shift()(g)},Ke=[],Ye=[],Ot=()=>{var y=g.preRun.shift();Ye.unshift(y)};function Ve(y,I="i8"){switch(I.endsWith("*")&&(I="*"),I){case"i1":return z[y];case"i8":return z[y];case"i16":return ae[y>>1];case"i32":return Y[y>>2];case"i64":return X[y>>3];case"float":return fe[y>>2];case"double":return te[y>>3];case"*":return ne[y>>2];default:W(`invalid type for getValue: ${I}`)}}var Me=g.noExitRuntime||!0;function Qe(y){var I="i32";switch(I.endsWith("*")&&(I="*"),I){case"i1":z[y]=0;break;case"i8":z[y]=0;break;case"i16":ae[y>>1]=0;break;case"i32":Y[y>>2]=0;break;case"i64":X[y>>3]=BigInt(0);break;case"float":fe[y>>2]=0;break;case"double":te[y>>3]=0;break;case"*":ne[y>>2]=0;break;default:W(`invalid type for setValue: ${I}`)}}var ht=typeof TextDecoder<"u"?new TextDecoder:void 0,Ie=(y,I=0,U=NaN)=>{var V=I+U;for(U=I;y[U]&&!(U>=V);)++U;if(16<U-I&&y.buffer&&ht)return ht.decode(y.subarray(I,U));for(V="";I<U;){var Z=y[I++];if(Z&128){var me=y[I++]&63;if((Z&224)==192)V+=String.fromCharCode((Z&31)<<6|me);else{var Ce=y[I++]&63;Z=(Z&240)==224?(Z&15)<<12|me<<6|Ce:(Z&7)<<18|me<<12|Ce<<6|y[I++]&63,65536>Z?V+=String.fromCharCode(Z):(Z-=65536,V+=String.fromCharCode(55296|Z>>10,56320|Z&1023))}}else V+=String.fromCharCode(Z)}return V},Be=(y,I)=>y?Ie(Q,y,I):"",Ge=(y,I)=>{for(var U=0,V=y.length-1;0<=V;V--){var Z=y[V];Z==="."?y.splice(V,1):Z===".."?(y.splice(V,1),U++):U&&(y.splice(V,1),U--)}if(I)for(;U;U--)y.unshift("..");return y},qe=y=>{var I=y.charAt(0)==="/",U=y.slice(-1)==="/";return(y=Ge(y.split("/").filter(V=>!!V),!I).join("/"))||I||(y="."),y&&U&&(y+="/"),(I?"/":"")+y},nt=y=>{var I=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(y).slice(1);return y=I[0],I=I[1],!y&&!I?".":(I&&(I=I.slice(0,-1)),y+I)},We=y=>y&&y.match(/([^\/]+|\/)\/*$/)[1],Ee=()=>{if(v){var y=_E;return I=>y.randomFillSync(I)}return I=>crypto.getRandomValues(I)},je=y=>{(je=Ee())(y)},Je=(...y)=>{for(var I="",U=!1,V=y.length-1;-1<=V&&!U;V--){if(U=0<=V?y[V]:"/",typeof U!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!U)return"";I=U+"/"+I,U=U.charAt(0)==="/"}return I=Ge(I.split("/").filter(Z=>!!Z),!U).join("/"),(U?"/":"")+I||"."},ut=[],Dt=y=>{for(var I=0,U=0;U<y.length;++U){var V=y.charCodeAt(U);127>=V?I++:2047>=V?I+=2:55296<=V&&57343>=V?(I+=4,++U):I+=3}return I},M=(y,I,U,V)=>{if(!(0<V))return 0;var Z=U;V=U+V-1;for(var me=0;me<y.length;++me){var Ce=y.charCodeAt(me);if(55296<=Ce&&57343>=Ce){var Xe=y.charCodeAt(++me);Ce=65536+((Ce&1023)<<10)|Xe&1023}if(127>=Ce){if(U>=V)break;I[U++]=Ce}else{if(2047>=Ce){if(U+1>=V)break;I[U++]=192|Ce>>6}else{if(65535>=Ce){if(U+2>=V)break;I[U++]=224|Ce>>12}else{if(U+3>=V)break;I[U++]=240|Ce>>18,I[U++]=128|Ce>>12&63}I[U++]=128|Ce>>6&63}I[U++]=128|Ce&63}}return I[U]=0,U-Z},C=(y,I)=>{var U=Array(Dt(y)+1);return y=M(y,U,0,U.length),I&&(U.length=y),U},N=[];function K(y,I){N[y]={input:[],output:[],cb:I},ze(y,ee)}var ee={open(y){var I=N[y.node.rdev];if(!I)throw new De(43);y.tty=I,y.seekable=!1},close(y){y.tty.cb.fsync(y.tty)},fsync(y){y.tty.cb.fsync(y.tty)},read(y,I,U,V){if(!y.tty||!y.tty.cb.xb)throw new De(60);for(var Z=0,me=0;me<V;me++){try{var Ce=y.tty.cb.xb(y.tty)}catch{throw new De(29)}if(Ce===void 0&&Z===0)throw new De(6);if(Ce==null)break;Z++,I[U+me]=Ce}return Z&&(y.node.atime=Date.now()),Z},write(y,I,U,V){if(!y.tty||!y.tty.cb.qb)throw new De(60);try{for(var Z=0;Z<V;Z++)y.tty.cb.qb(y.tty,I[U+Z])}catch{throw new De(29)}return V&&(y.node.mtime=y.node.ctime=Date.now()),Z}},pe={xb(){e:{if(!ut.length){var y=null;if(v){var I=Buffer.alloc(256),U=0,V=process.stdin.fd;try{U=x.readSync(V,I,0,256)}catch(Z){if(Z.toString().includes("EOF"))U=0;else throw Z}0<U&&(y=I.slice(0,U).toString("utf-8"))}else typeof window<"u"&&typeof window.prompt=="function"&&(y=window.prompt("Input: "),y!==null&&(y+=`
`));if(!y){y=null;break e}ut=C(y,!0)}y=ut.shift()}return y},qb(y,I){I===null||I===10?(O(Ie(y.output)),y.output=[]):I!=0&&y.output.push(I)},fsync(y){var I;0<((I=y.output)==null?void 0:I.length)&&(O(Ie(y.output)),y.output=[])},Tb(){return{Ob:25856,Qb:5,Nb:191,Pb:35387,Mb:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},Ub(){return 0},Vb(){return[24,80]}},Se={qb(y,I){I===null||I===10?(_(Ie(y.output)),y.output=[]):I!=0&&y.output.push(I)},fsync(y){var I;0<((I=y.output)==null?void 0:I.length)&&(_(Ie(y.output)),y.output=[])}},Oe={Wa:null,Xa(){return Oe.createNode(null,"/",16895,0)},createNode(y,I,U,V){if((U&61440)===24576||(U&61440)===4096)throw new De(63);return Oe.Wa||(Oe.Wa={dir:{node:{Ta:Oe.La.Ta,Ua:Oe.La.Ua,lookup:Oe.La.lookup,hb:Oe.La.hb,rename:Oe.La.rename,unlink:Oe.La.unlink,rmdir:Oe.La.rmdir,readdir:Oe.La.readdir,symlink:Oe.La.symlink},stream:{Va:Oe.Ma.Va}},file:{node:{Ta:Oe.La.Ta,Ua:Oe.La.Ua},stream:{Va:Oe.Ma.Va,read:Oe.Ma.read,write:Oe.Ma.write,ib:Oe.Ma.ib,jb:Oe.Ma.jb}},link:{node:{Ta:Oe.La.Ta,Ua:Oe.La.Ua,readlink:Oe.La.readlink},stream:{}},ub:{node:{Ta:Oe.La.Ta,Ua:Oe.La.Ua},stream:He}}),U=Kt(y,I,U,V),Vt(U.mode)?(U.La=Oe.Wa.dir.node,U.Ma=Oe.Wa.dir.stream,U.Na={}):(U.mode&61440)===32768?(U.La=Oe.Wa.file.node,U.Ma=Oe.Wa.file.stream,U.Ra=0,U.Na=null):(U.mode&61440)===40960?(U.La=Oe.Wa.link.node,U.Ma=Oe.Wa.link.stream):(U.mode&61440)===8192&&(U.La=Oe.Wa.ub.node,U.Ma=Oe.Wa.ub.stream),U.atime=U.mtime=U.ctime=Date.now(),y&&(y.Na[I]=U,y.atime=y.mtime=y.ctime=U.atime),U},Sb(y){return y.Na?y.Na.subarray?y.Na.subarray(0,y.Ra):new Uint8Array(y.Na):new Uint8Array(0)},La:{Ta(y){var I={};return I.dev=(y.mode&61440)===8192?y.id:1,I.ino=y.id,I.mode=y.mode,I.nlink=1,I.uid=0,I.gid=0,I.rdev=y.rdev,Vt(y.mode)?I.size=4096:(y.mode&61440)===32768?I.size=y.Ra:(y.mode&61440)===40960?I.size=y.link.length:I.size=0,I.atime=new Date(y.atime),I.mtime=new Date(y.mtime),I.ctime=new Date(y.ctime),I.blksize=4096,I.blocks=Math.ceil(I.size/I.blksize),I},Ua(y,I){for(var U of["mode","atime","mtime","ctime"])I[U]!=null&&(y[U]=I[U]);I.size!==void 0&&(I=I.size,y.Ra!=I&&(I==0?(y.Na=null,y.Ra=0):(U=y.Na,y.Na=new Uint8Array(I),U&&y.Na.set(U.subarray(0,Math.min(I,y.Ra))),y.Ra=I)))},lookup(){throw Oe.vb},hb(y,I,U,V){return Oe.createNode(y,I,U,V)},rename(y,I,U){try{var V=Mt(I,U)}catch{}if(V){if(Vt(y.mode))for(var Z in V.Na)throw new De(55);Ht(V)}delete y.parent.Na[y.name],I.Na[U]=y,y.name=U,I.ctime=I.mtime=y.parent.ctime=y.parent.mtime=Date.now()},unlink(y,I){delete y.Na[I],y.ctime=y.mtime=Date.now()},rmdir(y,I){var U=Mt(y,I),V;for(V in U.Na)throw new De(55);delete y.Na[I],y.ctime=y.mtime=Date.now()},readdir(y){return[".","..",...Object.keys(y.Na)]},symlink(y,I,U){return y=Oe.createNode(y,I,41471,0),y.link=U,y},readlink(y){if((y.mode&61440)!==40960)throw new De(28);return y.link}},Ma:{read(y,I,U,V,Z){var me=y.node.Na;if(Z>=y.node.Ra)return 0;if(y=Math.min(y.node.Ra-Z,V),8<y&&me.subarray)I.set(me.subarray(Z,Z+y),U);else for(V=0;V<y;V++)I[U+V]=me[Z+V];return y},write(y,I,U,V,Z,me){if(I.buffer===z.buffer&&(me=!1),!V)return 0;if(y=y.node,y.mtime=y.ctime=Date.now(),I.subarray&&(!y.Na||y.Na.subarray)){if(me)return y.Na=I.subarray(U,U+V),y.Ra=V;if(y.Ra===0&&Z===0)return y.Na=I.slice(U,U+V),y.Ra=V;if(Z+V<=y.Ra)return y.Na.set(I.subarray(U,U+V),Z),V}me=Z+V;var Ce=y.Na?y.Na.length:0;if(Ce>=me||(me=Math.max(me,Ce*(1048576>Ce?2:1.125)>>>0),Ce!=0&&(me=Math.max(me,256)),Ce=y.Na,y.Na=new Uint8Array(me),0<y.Ra&&y.Na.set(Ce.subarray(0,y.Ra),0)),y.Na.subarray&&I.subarray)y.Na.set(I.subarray(U,U+V),Z);else for(me=0;me<V;me++)y.Na[Z+me]=I[U+me];return y.Ra=Math.max(y.Ra,Z+V),V},Va(y,I,U){if(U===1?I+=y.position:U===2&&(y.node.mode&61440)===32768&&(I+=y.node.Ra),0>I)throw new De(28);return I},ib(y,I,U,V,Z){if((y.node.mode&61440)!==32768)throw new De(43);if(y=y.node.Na,Z&2||!y||y.buffer!==z.buffer){Z=!0,V=65536*Math.ceil(I/65536);var me=el(65536,V);if(me&&Q.fill(0,me,me+V),V=me,!V)throw new De(48);y&&((0<U||U+I<y.length)&&(y.subarray?y=y.subarray(U,U+I):y=Array.prototype.slice.call(y,U,U+I)),z.set(y,V))}else Z=!1,V=y.byteOffset;return{Kb:V,Ab:Z}},jb(y,I,U,V){return Oe.Ma.write(y,I,0,V,U,!1),0}}},lt=(y,I)=>{var U=0;return y&&(U|=365),I&&(U|=146),U},wt=null,kt={},ft=[],bi=1,La=null,gn=!1,jt=!0,na={},De=class{constructor(y){Ue(this,"name","ErrnoError");this.Pa=y}},Oa=class{constructor(){Ue(this,"gb",{});Ue(this,"node",null)}get flags(){return this.gb.flags}set flags(y){this.gb.flags=y}get position(){return this.gb.position}set position(y){this.gb.position=y}},xt=class{constructor(y,I,U,V){Ue(this,"La",{});Ue(this,"Ma",{});Ue(this,"ab",null);y||(y=this),this.parent=y,this.Xa=y.Xa,this.id=bi++,this.name=I,this.mode=U,this.rdev=V,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&365)===365}set read(y){y?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)===146}set write(y){y?this.mode|=146:this.mode&=-147}};function Rt(y,I={}){if(!y)throw new De(44);I.nb??(I.nb=!0),y.charAt(0)==="/"||(y="//"+y);var U=0;e:for(;40>U;U++){y=y.split("/").filter(Xe=>!!Xe);for(var V=wt,Z="/",me=0;me<y.length;me++){var Ce=me===y.length-1;if(Ce&&I.parent)break;if(y[me]!==".")if(y[me]==="..")Z=nt(Z),V=V.parent;else{Z=qe(Z+"/"+y[me]);try{V=Mt(V,y[me])}catch(Xe){if((Xe==null?void 0:Xe.Pa)===44&&Ce&&I.Jb)return{path:Z};throw Xe}if(!V.ab||Ce&&!I.nb||(V=V.ab.root),(V.mode&61440)===40960&&(!Ce||I.$a)){if(!V.La.readlink)throw new De(52);V=V.La.readlink(V),V.charAt(0)==="/"||(V=nt(Z)+"/"+V),y=V+"/"+y.slice(me+1).join("/");continue e}}}return{path:Z,node:V}}throw new De(32)}function Da(y){for(var I;;){if(y===y.parent)return y=y.Xa.zb,I?y[y.length-1]!=="/"?`${y}/${I}`:y+I:y;I=I?`${y.name}/${I}`:y.name,y=y.parent}}function sn(y,I){for(var U=0,V=0;V<I.length;V++)U=(U<<5)-U+I.charCodeAt(V)|0;return(y+U>>>0)%La.length}function Ht(y){var I=sn(y.parent.id,y.name);if(La[I]===y)La[I]=y.bb;else for(I=La[I];I;){if(I.bb===y){I.bb=y.bb;break}I=I.bb}}function Mt(y,I){var U=Vt(y.mode)?(U=pa(y,"x"))?U:y.La.lookup?0:2:54;if(U)throw new De(U);for(U=La[sn(y.id,I)];U;U=U.bb){var V=U.name;if(U.parent.id===y.id&&V===I)return U}return y.La.lookup(y,I)}function Kt(y,I,U,V){return y=new xt(y,I,U,V),I=sn(y.parent.id,y.name),y.bb=La[I],La[I]=y}function Vt(y){return(y&61440)===16384}function da(y){var I=["r","w","rw"][y&3];return y&512&&(I+="w"),I}function pa(y,I){if(jt)return 0;if(!I.includes("r")||y.mode&292){if(I.includes("w")&&!(y.mode&146)||I.includes("x")&&!(y.mode&73))return 2}else return 2;return 0}function Xa(y,I){if(!Vt(y.mode))return 54;try{return Mt(y,I),20}catch{}return pa(y,"wx")}function pn(y,I,U){try{var V=Mt(y,I)}catch(Z){return Z.Pa}if(y=pa(y,"wx"))return y;if(U){if(!Vt(V.mode))return 54;if(V===V.parent||Da(V)==="/")return 10}else if(Vt(V.mode))return 31;return 0}function Ta(y){if(!y)throw new De(63);return y}function ha(y){if(y=ft[y],!y)throw new De(8);return y}function Ra(y,I=-1){if(y=Object.assign(new Oa,y),I==-1)e:{for(I=0;4096>=I;I++)if(!ft[I])break e;throw new De(33)}return y.fd=I,ft[I]=y}function jn(y,I=-1){var U,V;return y=Ra(y,I),(V=(U=y.Ma)==null?void 0:U.Rb)==null||V.call(U,y),y}function de(y,I,U){var V=y==null?void 0:y.Ma.Ua;y=V?y:I,V??(V=I.La.Ua),Ta(V),V(y,U)}var He={open(y){var I,U;y.Ma=kt[y.node.rdev].Ma,(U=(I=y.Ma).open)==null||U.call(I,y)},Va(){throw new De(70)}};function ze(y,I){kt[y]={Ma:I}}function yt(y,I){var U=I==="/";if(U&&wt)throw new De(10);if(!U&&I){var V=Rt(I,{nb:!1});if(I=V.path,V=V.node,V.ab)throw new De(10);if(!Vt(V.mode))throw new De(54)}I={type:y,Wb:{},zb:I,Ib:[]},y=y.Xa(I),y.Xa=I,I.root=y,U?wt=y:V&&(V.ab=I,V.Xa&&V.Xa.Ib.push(I))}function Re(y,I,U){var V=Rt(y,{parent:!0}).node;if(y=We(y),!y)throw new De(28);if(y==="."||y==="..")throw new De(20);var Z=Xa(V,y);if(Z)throw new De(Z);if(!V.La.hb)throw new De(63);return V.La.hb(V,y,I,U)}function q(y,I=438){return Re(y,I&4095|32768,0)}function Ae(y,I=511){return Re(y,I&1023|16384,0)}function Fe(y,I,U){typeof U>"u"&&(U=I,I=438),Re(y,I|8192,U)}function Tt(y,I){if(!Je(y))throw new De(44);var U=Rt(I,{parent:!0}).node;if(!U)throw new De(44);I=We(I);var V=Xa(U,I);if(V)throw new De(V);if(!U.La.symlink)throw new De(63);U.La.symlink(U,I,y)}function It(y){var I=Rt(y,{parent:!0}).node;y=We(y);var U=Mt(I,y),V=pn(I,y,!0);if(V)throw new De(V);if(!I.La.rmdir)throw new De(63);if(U.ab)throw new De(10);I.La.rmdir(I,y),Ht(U)}function Yt(y){var I=Rt(y,{parent:!0}).node;if(!I)throw new De(44);y=We(y);var U=Mt(I,y),V=pn(I,y,!1);if(V)throw new De(V);if(!I.La.unlink)throw new De(63);if(U.ab)throw new De(10);I.La.unlink(I,y),Ht(U)}function Zt(y,I){return y=Rt(y,{$a:!I}).node,Ta(y.La.Ta)(y)}function wa(y,I,U,V){de(y,I,{mode:U&4095|I.mode&-4096,ctime:Date.now(),Fb:V})}function ma(y,I){y=typeof y=="string"?Rt(y,{$a:!0}).node:y,wa(null,y,I)}function ii(y,I,U){if(Vt(I.mode))throw new De(31);if((I.mode&61440)!==32768)throw new De(28);var V=pa(I,"w");if(V)throw new De(V);de(y,I,{size:U,timestamp:Date.now()})}function ca(y,I,U=438){if(y==="")throw new De(44);if(typeof I=="string"){var V={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[I];if(typeof V>"u")throw Error(`Unknown file open mode: ${I}`);I=V}if(U=I&64?U&4095|32768:0,typeof y=="object")V=y;else{var Z=y.endsWith("/");y=Rt(y,{$a:!(I&131072),Jb:!0}),V=y.node,y=y.path}var me=!1;if(I&64)if(V){if(I&128)throw new De(20)}else{if(Z)throw new De(31);V=Re(y,U|511,0),me=!0}if(!V)throw new De(44);if((V.mode&61440)===8192&&(I&=-513),I&65536&&!Vt(V.mode))throw new De(54);if(!me&&(Z=V?(V.mode&61440)===40960?32:Vt(V.mode)&&(da(I)!=="r"||I&576)?31:pa(V,da(I)):44))throw new De(Z);return I&512&&!me&&(Z=V,Z=typeof Z=="string"?Rt(Z,{$a:!0}).node:Z,ii(null,Z,0)),I&=-131713,Z=Ra({node:V,path:Da(V),flags:I,seekable:!0,position:0,Ma:V.Ma,Lb:[],error:!1}),Z.Ma.open&&Z.Ma.open(Z),me&&ma(V,U&511),!g.logReadFiles||I&1||y in na||(na[y]=1),Z}function Hn(y){if(y.fd===null)throw new De(8);y.ob&&(y.ob=null);try{y.Ma.close&&y.Ma.close(y)}catch(I){throw I}finally{ft[y.fd]=null}y.fd=null}function Wi(y,I,U){if(y.fd===null)throw new De(8);if(!y.seekable||!y.Ma.Va)throw new De(70);if(U!=0&&U!=1&&U!=2)throw new De(28);y.position=y.Ma.Va(y,I,U),y.Lb=[]}function Vs(y,I,U,V,Z){if(0>V||0>Z)throw new De(28);if(y.fd===null)throw new De(8);if((y.flags&2097155)===1)throw new De(8);if(Vt(y.node.mode))throw new De(31);if(!y.Ma.read)throw new De(28);var me=typeof Z<"u";if(!me)Z=y.position;else if(!y.seekable)throw new De(70);return I=y.Ma.read(y,I,U,V,Z),me||(y.position+=I),I}function jd(y,I,U,V,Z){if(0>V||0>Z)throw new De(28);if(y.fd===null)throw new De(8);if((y.flags&2097155)===0)throw new De(8);if(Vt(y.node.mode))throw new De(31);if(!y.Ma.write)throw new De(28);y.seekable&&y.flags&1024&&Wi(y,0,2);var me=typeof Z<"u";if(!me)Z=y.position;else if(!y.seekable)throw new De(70);return I=y.Ma.write(y,I,U,V,Z,void 0),me||(y.position+=I),I}function Hd(y){var I,U=ca(y,U||0);y=Zt(y).size;var V=new Uint8Array(y);return Vs(U,V,0,y,0),I=V,Hn(U),I}function Ua(y,I,U){y=qe("/dev/"+y);var V=lt(!!I,!!U);Ua.yb??(Ua.yb=64);var Z=Ua.yb++<<8|0;ze(Z,{open(me){me.seekable=!1},close(){var me;(me=U==null?void 0:U.buffer)!=null&&me.length&&U(10)},read(me,Ce,Xe,Ct){for(var bt=0,Aa=0;Aa<Ct;Aa++){try{var $a=I()}catch{throw new De(29)}if($a===void 0&&bt===0)throw new De(6);if($a==null)break;bt++,Ce[Xe+Aa]=$a}return bt&&(me.node.atime=Date.now()),bt},write(me,Ce,Xe,Ct){for(var bt=0;bt<Ct;bt++)try{U(Ce[Xe+bt])}catch{throw new De(29)}return Ct&&(me.node.mtime=me.node.ctime=Date.now()),bt}}),Fe(y,V,Z)}var ia={};function qi(y,I,U){if(I.charAt(0)==="/")return I;if(y=y===-100?"/":ha(y).path,I.length==0){if(!U)throw new De(44);return y}return y+"/"+I}function Yi(y,I){Y[y>>2]=I.dev,Y[y+4>>2]=I.mode,ne[y+8>>2]=I.nlink,Y[y+12>>2]=I.uid,Y[y+16>>2]=I.gid,Y[y+20>>2]=I.rdev,X[y+24>>3]=BigInt(I.size),Y[y+32>>2]=4096,Y[y+36>>2]=I.blocks;var U=I.atime.getTime(),V=I.mtime.getTime(),Z=I.ctime.getTime();return X[y+40>>3]=BigInt(Math.floor(U/1e3)),ne[y+48>>2]=U%1e3*1e6,X[y+56>>3]=BigInt(Math.floor(V/1e3)),ne[y+64>>2]=V%1e3*1e6,X[y+72>>3]=BigInt(Math.floor(Z/1e3)),ne[y+80>>2]=Z%1e3*1e6,X[y+88>>3]=BigInt(I.ino),0}var us=void 0,Ji=()=>{var y=Y[+us>>2];return us+=4,y},Yo=0,Nn=[0,31,60,91,121,152,182,213,244,274,305,335],Jo=[0,31,59,90,120,151,181,212,243,273,304,334],Ir={},zs=y=>{var I;B=y,Me||0<Yo||((I=g.onExit)==null||I.call(g,y),P=!0),T(y,new Pe(y))},Cr=y=>{if(!P)try{if(y(),!(Me||0<Yo))try{B=y=B,zs(y)}catch(I){I instanceof Pe||I=="unwind"||T(1,I)}}catch(I){I instanceof Pe||I=="unwind"||T(1,I)}},Qs={},Xo=()=>{if(!Di){var y={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:S||"./this.program"},I;for(I in Qs)Qs[I]===void 0?delete y[I]:y[I]=Qs[I];var U=[];for(I in y)U.push(`${I}=${y[I]}`);Di=U}return Di},Di,$o=y=>{var I=Dt(y)+1,U=si(I);return M(y,Q,U,I),U},Vd=(y,I,U,V)=>{var Z={string:bt=>{var Aa=0;return bt!=null&&bt!==0&&(Aa=$o(bt)),Aa},array:bt=>{var Aa=si(bt.length);return z.set(bt,Aa),Aa}};y=g["_"+y];var me=[],Ce=0;if(V)for(var Xe=0;Xe<V.length;Xe++){var Ct=Z[U[Xe]];Ct?(Ce===0&&(Ce=vi()),me[Xe]=Ct(V[Xe])):me[Xe]=V[Xe]}return U=y(...me),U=function(bt){return Ce!==0&&wn(Ce),I==="string"?bt?Ie(Q,bt):"":I==="boolean"?!!bt:bt}(U)},ms=0,Sr=(y,I)=>(I=I==1?si(y.length):Ks(y.length),y.subarray||y.slice||(y=new Uint8Array(y)),Q.set(y,I),I),Xi,Zo=[],kn,ri=y=>{Xi.delete(kn.get(y)),kn.set(y,null),Zo.push(y)},$i=(y,I)=>{if(!Xi){Xi=new WeakMap;var U=kn.length;if(Xi)for(var V=0;V<0+U;V++){var Z=kn.get(V);Z&&Xi.set(Z,V)}}if(U=Xi.get(y)||0)return U;if(Zo.length)U=Zo.pop();else{try{kn.grow(1)}catch(Ct){throw Ct instanceof RangeError?"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.":Ct}U=kn.length-1}try{kn.set(U,y)}catch(Ct){if(!(Ct instanceof TypeError))throw Ct;if(typeof WebAssembly.Function=="function"){var me=WebAssembly.Function;V={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},Z={parameters:[],results:I[0]=="v"?[]:[V[I[0]]]};for(var Ce=1;Ce<I.length;++Ce)Z.parameters.push(V[I[Ce]]);I=new me(Z,y)}else{V=[1],Z=I.slice(0,1),I=I.slice(1),Ce={i:127,p:127,j:126,f:125,d:124,e:111},V.push(96);var Xe=I.length;128>Xe?V.push(Xe):V.push(Xe%128|128,Xe>>7);for(me of I)V.push(Ce[me]);Z=="v"?V.push(0):V.push(1,Ce[Z]),I=[0,97,115,109,1,0,0,0,1],me=V.length,128>me?I.push(me):I.push(me%128|128,me>>7),I.push(...V),I.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),I=new WebAssembly.Module(new Uint8Array(I)),I=new WebAssembly.Instance(I,{e:{f:y}}).exports.f}kn.set(U,I)}return Xi.set(y,U),U};La=Array(4096),yt(Oe,"/"),Ae("/tmp"),Ae("/home"),Ae("/home/web_user"),function(){Ae("/dev"),ze(259,{read:()=>0,write:(V,Z,me,Ce)=>Ce,Va:()=>0}),Fe("/dev/null",259),K(1280,pe),K(1536,Se),Fe("/dev/tty",1280),Fe("/dev/tty1",1536);var y=new Uint8Array(1024),I=0,U=()=>(I===0&&(je(y),I=y.byteLength),y[--I]);Ua("random",U),Ua("urandom",U),Ae("/dev/shm"),Ae("/dev/shm/tmp")}(),function(){Ae("/proc");var y=Ae("/proc/self");Ae("/proc/self/fd"),yt({Xa(){var I=Kt(y,"fd",16895,73);return I.Ma={Va:Oe.Ma.Va},I.La={lookup(U,V){U=+V;var Z=ha(U);return U={parent:null,Xa:{zb:"fake"},La:{readlink:()=>Z.path},id:U+1},U.parent=U},readdir(){return Array.from(ft.entries()).filter(([,U])=>U).map(([U])=>U.toString())}},I}},"/proc/self/fd")}(),Oe.vb=new De(44),Oe.vb.stack="<generic error, no stack>";var Tr={a:(y,I,U,V)=>W(`Assertion failed: ${y?Ie(Q,y):""}, at: `+[I?I?Ie(Q,I):"":"unknown filename",U,V?V?Ie(Q,V):"":"unknown function"]),i:function(y,I){try{return y=y?Ie(Q,y):"",ma(y,I),0}catch(U){if(typeof ia>"u"||U.name!=="ErrnoError")throw U;return-U.Pa}},L:function(y,I,U){try{if(I=I?Ie(Q,I):"",I=qi(y,I),U&-8)return-28;var V=Rt(I,{$a:!0}).node;return V?(y="",U&4&&(y+="r"),U&2&&(y+="w"),U&1&&(y+="x"),y&&pa(V,y)?-2:0):-44}catch(Z){if(typeof ia>"u"||Z.name!=="ErrnoError")throw Z;return-Z.Pa}},j:function(y,I){try{var U=ha(y);return wa(U,U.node,I,!1),0}catch(V){if(typeof ia>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},h:function(y){try{var I=ha(y);return de(I,I.node,{timestamp:Date.now(),Fb:!1}),0}catch(U){if(typeof ia>"u"||U.name!=="ErrnoError")throw U;return-U.Pa}},b:function(y,I,U){us=U;try{var V=ha(y);switch(I){case 0:var Z=Ji();if(0>Z)break;for(;ft[Z];)Z++;return jn(V,Z).fd;case 1:case 2:return 0;case 3:return V.flags;case 4:return Z=Ji(),V.flags|=Z,0;case 12:return Z=Ji(),ae[Z+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(me){if(typeof ia>"u"||me.name!=="ErrnoError")throw me;return-me.Pa}},g:function(y,I){try{var U=ha(y),V=U.node,Z=U.Ma.Ta;y=Z?U:V,Z??(Z=V.La.Ta),Ta(Z);var me=Z(y);return Yi(I,me)}catch(Ce){if(typeof ia>"u"||Ce.name!=="ErrnoError")throw Ce;return-Ce.Pa}},H:function(y,I){I=-9007199254740992>I||9007199254740992<I?NaN:Number(I);try{if(isNaN(I))return 61;var U=ha(y);if(0>I||(U.flags&2097155)===0)throw new De(28);return ii(U,U.node,I),0}catch(V){if(typeof ia>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},G:function(y,I){try{if(I===0)return-28;var U=Dt("/")+1;return I<U?-68:(M("/",Q,y,I),U)}catch(V){if(typeof ia>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},K:function(y,I){try{return y=y?Ie(Q,y):"",Yi(I,Zt(y,!0))}catch(U){if(typeof ia>"u"||U.name!=="ErrnoError")throw U;return-U.Pa}},C:function(y,I,U){try{return I=I?Ie(Q,I):"",I=qi(y,I),Ae(I,U),0}catch(V){if(typeof ia>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},J:function(y,I,U,V){try{I=I?Ie(Q,I):"";var Z=V&256;return I=qi(y,I,V&4096),Yi(U,Z?Zt(I,!0):Zt(I))}catch(me){if(typeof ia>"u"||me.name!=="ErrnoError")throw me;return-me.Pa}},x:function(y,I,U,V){us=V;try{I=I?Ie(Q,I):"",I=qi(y,I);var Z=V?Ji():0;return ca(I,U,Z).fd}catch(me){if(typeof ia>"u"||me.name!=="ErrnoError")throw me;return-me.Pa}},v:function(y,I,U,V){try{if(I=I?Ie(Q,I):"",I=qi(y,I),0>=V)return-28;var Z=Rt(I).node;if(!Z)throw new De(44);if(!Z.La.readlink)throw new De(28);var me=Z.La.readlink(Z),Ce=Math.min(V,Dt(me)),Xe=z[U+Ce];return M(me,Q,U,V+1),z[U+Ce]=Xe,Ce}catch(Ct){if(typeof ia>"u"||Ct.name!=="ErrnoError")throw Ct;return-Ct.Pa}},u:function(y){try{return y=y?Ie(Q,y):"",It(y),0}catch(I){if(typeof ia>"u"||I.name!=="ErrnoError")throw I;return-I.Pa}},f:function(y,I){try{return y=y?Ie(Q,y):"",Yi(I,Zt(y))}catch(U){if(typeof ia>"u"||U.name!=="ErrnoError")throw U;return-U.Pa}},r:function(y,I,U){try{return I=I?Ie(Q,I):"",I=qi(y,I),U===0?Yt(I):U===512?It(I):W("Invalid flags passed to unlinkat"),0}catch(V){if(typeof ia>"u"||V.name!=="ErrnoError")throw V;return-V.Pa}},q:function(y,I,U){try{I=I?Ie(Q,I):"",I=qi(y,I,!0);var V=Date.now(),Z,me;if(U){var Ce=ne[U>>2]+4294967296*Y[U+4>>2],Xe=Y[U+8>>2];Xe==1073741823?Z=V:Xe==1073741822?Z=null:Z=1e3*Ce+Xe/1e6,U+=16,Ce=ne[U>>2]+4294967296*Y[U+4>>2],Xe=Y[U+8>>2],Xe==1073741823?me=V:Xe==1073741822?me=null:me=1e3*Ce+Xe/1e6}else me=Z=V;if((me??Z)!==null){y=Z;var Ct=Rt(I,{$a:!0}).node;Ta(Ct.La.Ua)(Ct,{atime:y,mtime:me})}return 0}catch(bt){if(typeof ia>"u"||bt.name!=="ErrnoError")throw bt;return-bt.Pa}},m:()=>W(""),l:()=>{Me=!1,Yo=0},A:function(y,I){y=-9007199254740992>y||9007199254740992<y?NaN:Number(y),y=new Date(1e3*y),Y[I>>2]=y.getSeconds(),Y[I+4>>2]=y.getMinutes(),Y[I+8>>2]=y.getHours(),Y[I+12>>2]=y.getDate(),Y[I+16>>2]=y.getMonth(),Y[I+20>>2]=y.getFullYear()-1900,Y[I+24>>2]=y.getDay();var U=y.getFullYear();Y[I+28>>2]=(U%4!==0||U%100===0&&U%400!==0?Jo:Nn)[y.getMonth()]+y.getDate()-1|0,Y[I+36>>2]=-(60*y.getTimezoneOffset()),U=new Date(y.getFullYear(),6,1).getTimezoneOffset();var V=new Date(y.getFullYear(),0,1).getTimezoneOffset();Y[I+32>>2]=(U!=V&&y.getTimezoneOffset()==Math.min(V,U))|0},y:function(y,I,U,V,Z,me,Ce){Z=-9007199254740992>Z||9007199254740992<Z?NaN:Number(Z);try{if(isNaN(Z))return 61;var Xe=ha(V);if((I&2)!==0&&(U&2)===0&&(Xe.flags&2097155)!==2)throw new De(2);if((Xe.flags&2097155)===1)throw new De(2);if(!Xe.Ma.ib)throw new De(43);if(!y)throw new De(28);var Ct=Xe.Ma.ib(Xe,y,Z,I,U),bt=Ct.Kb;return Y[me>>2]=Ct.Ab,ne[Ce>>2]=bt,0}catch(Aa){if(typeof ia>"u"||Aa.name!=="ErrnoError")throw Aa;return-Aa.Pa}},z:function(y,I,U,V,Z,me){me=-9007199254740992>me||9007199254740992<me?NaN:Number(me);try{var Ce=ha(Z);if(U&2){if(U=me,(Ce.node.mode&61440)!==32768)throw new De(43);if(!(V&2)){var Xe=Q.slice(y,y+I);Ce.Ma.jb&&Ce.Ma.jb(Ce,Xe,U,I,V)}}}catch(Ct){if(typeof ia>"u"||Ct.name!=="ErrnoError")throw Ct;return-Ct.Pa}},n:(y,I)=>{if(Ir[y]&&(clearTimeout(Ir[y].id),delete Ir[y]),!I)return 0;var U=setTimeout(()=>{delete Ir[y],Cr(()=>kr(y,performance.now()))},I);return Ir[y]={id:U,Xb:I},0},B:(y,I,U,V)=>{var Z=new Date().getFullYear(),me=new Date(Z,0,1).getTimezoneOffset();Z=new Date(Z,6,1).getTimezoneOffset(),ne[y>>2]=60*Math.max(me,Z),Y[I>>2]=+(me!=Z),I=Ce=>{var Xe=Math.abs(Ce);return`UTC${0<=Ce?"-":"+"}${String(Math.floor(Xe/60)).padStart(2,"0")}${String(Xe%60).padStart(2,"0")}`},y=I(me),I=I(Z),Z<me?(M(y,Q,U,17),M(I,Q,V,17)):(M(y,Q,V,17),M(I,Q,U,17))},d:()=>Date.now(),s:()=>2147483648,c:()=>performance.now(),o:y=>{var I=Q.length;if(y>>>=0,2147483648<y)return!1;for(var U=1;4>=U;U*=2){var V=I*(1+.2/U);V=Math.min(V,y+100663296);e:{V=(Math.min(2147483648,65536*Math.ceil(Math.max(y,V)/65536))-G.buffer.byteLength+65535)/65536|0;try{G.grow(V),oe();var Z=1;break e}catch{}Z=void 0}if(Z)return!0}return!1},E:(y,I)=>{var U=0;return Xo().forEach((V,Z)=>{var me=I+U;for(Z=ne[y+4*Z>>2]=me,me=0;me<V.length;++me)z[Z++]=V.charCodeAt(me);z[Z]=0,U+=V.length+1}),0},F:(y,I)=>{var U=Xo();ne[y>>2]=U.length;var V=0;return U.forEach(Z=>V+=Z.length+1),ne[I>>2]=V,0},e:function(y){try{var I=ha(y);return Hn(I),0}catch(U){if(typeof ia>"u"||U.name!=="ErrnoError")throw U;return U.Pa}},p:function(y,I){try{var U=ha(y);return z[I]=U.tty?2:Vt(U.mode)?3:(U.mode&61440)===40960?7:4,ae[I+2>>1]=0,X[I+8>>3]=BigInt(0),X[I+16>>3]=BigInt(0),0}catch(V){if(typeof ia>"u"||V.name!=="ErrnoError")throw V;return V.Pa}},w:function(y,I,U,V){try{e:{var Z=ha(y);y=I;for(var me,Ce=I=0;Ce<U;Ce++){var Xe=ne[y>>2],Ct=ne[y+4>>2];y+=8;var bt=Vs(Z,z,Xe,Ct,me);if(0>bt){var Aa=-1;break e}if(I+=bt,bt<Ct)break;typeof me<"u"&&(me+=bt)}Aa=I}return ne[V>>2]=Aa,0}catch($a){if(typeof ia>"u"||$a.name!=="ErrnoError")throw $a;return $a.Pa}},D:function(y,I,U,V){I=-9007199254740992>I||9007199254740992<I?NaN:Number(I);try{if(isNaN(I))return 61;var Z=ha(y);return Wi(Z,I,U),X[V>>3]=BigInt(Z.position),Z.ob&&I===0&&U===0&&(Z.ob=null),0}catch(me){if(typeof ia>"u"||me.name!=="ErrnoError")throw me;return me.Pa}},I:function(y){var U;try{var I=ha(y);return(U=I.Ma)!=null&&U.fsync?I.Ma.fsync(I):0}catch(V){if(typeof ia>"u"||V.name!=="ErrnoError")throw V;return V.Pa}},t:function(y,I,U,V){try{e:{var Z=ha(y);y=I;for(var me,Ce=I=0;Ce<U;Ce++){var Xe=ne[y>>2],Ct=ne[y+4>>2];y+=8;var bt=jd(Z,z,Xe,Ct,me);if(0>bt){var Aa=-1;break e}if(I+=bt,bt<Ct)break;typeof me<"u"&&(me+=bt)}Aa=I}return ne[V>>2]=Aa,0}catch($a){if(typeof ia>"u"||$a.name!=="ErrnoError")throw $a;return $a.Pa}},k:zs},at;(async function(){var U;function y(V){var Z;return at=V.exports,G=at.M,oe(),kn=at.O,F--,(Z=g.monitorRunDependencies)==null||Z.call(g,F),F==0&&J&&(V=J,J=null,V()),at}F++,(U=g.monitorRunDependencies)==null||U.call(g,F);var I={a:Tr};return g.instantiateWasm?new Promise(V=>{g.instantiateWasm(I,(Z,me)=>{y(Z),V(Z.exports)})}):(ie??(ie=g.locateFile?g.locateFile("sql-wasm.wasm",k):k+"sql-wasm.wasm"),y((await ve(I)).instance))})(),g._sqlite3_free=y=>(g._sqlite3_free=at.P)(y),g._sqlite3_value_text=y=>(g._sqlite3_value_text=at.Q)(y),g._sqlite3_prepare_v2=(y,I,U,V,Z)=>(g._sqlite3_prepare_v2=at.R)(y,I,U,V,Z),g._sqlite3_step=y=>(g._sqlite3_step=at.S)(y),g._sqlite3_reset=y=>(g._sqlite3_reset=at.T)(y),g._sqlite3_exec=(y,I,U,V,Z)=>(g._sqlite3_exec=at.U)(y,I,U,V,Z),g._sqlite3_finalize=y=>(g._sqlite3_finalize=at.V)(y),g._sqlite3_column_name=(y,I)=>(g._sqlite3_column_name=at.W)(y,I),g._sqlite3_column_text=(y,I)=>(g._sqlite3_column_text=at.X)(y,I),g._sqlite3_column_type=(y,I)=>(g._sqlite3_column_type=at.Y)(y,I),g._sqlite3_errmsg=y=>(g._sqlite3_errmsg=at.Z)(y),g._sqlite3_clear_bindings=y=>(g._sqlite3_clear_bindings=at._)(y),g._sqlite3_value_blob=y=>(g._sqlite3_value_blob=at.$)(y),g._sqlite3_value_bytes=y=>(g._sqlite3_value_bytes=at.aa)(y),g._sqlite3_value_double=y=>(g._sqlite3_value_double=at.ba)(y),g._sqlite3_value_int=y=>(g._sqlite3_value_int=at.ca)(y),g._sqlite3_value_type=y=>(g._sqlite3_value_type=at.da)(y),g._sqlite3_result_blob=(y,I,U,V)=>(g._sqlite3_result_blob=at.ea)(y,I,U,V),g._sqlite3_result_double=(y,I)=>(g._sqlite3_result_double=at.fa)(y,I),g._sqlite3_result_error=(y,I,U)=>(g._sqlite3_result_error=at.ga)(y,I,U),g._sqlite3_result_int=(y,I)=>(g._sqlite3_result_int=at.ha)(y,I),g._sqlite3_result_int64=(y,I)=>(g._sqlite3_result_int64=at.ia)(y,I),g._sqlite3_result_null=y=>(g._sqlite3_result_null=at.ja)(y),g._sqlite3_result_text=(y,I,U,V)=>(g._sqlite3_result_text=at.ka)(y,I,U,V),g._sqlite3_aggregate_context=(y,I)=>(g._sqlite3_aggregate_context=at.la)(y,I),g._sqlite3_column_count=y=>(g._sqlite3_column_count=at.ma)(y),g._sqlite3_data_count=y=>(g._sqlite3_data_count=at.na)(y),g._sqlite3_column_blob=(y,I)=>(g._sqlite3_column_blob=at.oa)(y,I),g._sqlite3_column_bytes=(y,I)=>(g._sqlite3_column_bytes=at.pa)(y,I),g._sqlite3_column_double=(y,I)=>(g._sqlite3_column_double=at.qa)(y,I),g._sqlite3_bind_blob=(y,I,U,V,Z)=>(g._sqlite3_bind_blob=at.ra)(y,I,U,V,Z),g._sqlite3_bind_double=(y,I,U)=>(g._sqlite3_bind_double=at.sa)(y,I,U),g._sqlite3_bind_int=(y,I,U)=>(g._sqlite3_bind_int=at.ta)(y,I,U),g._sqlite3_bind_text=(y,I,U,V,Z)=>(g._sqlite3_bind_text=at.ua)(y,I,U,V,Z),g._sqlite3_bind_parameter_index=(y,I)=>(g._sqlite3_bind_parameter_index=at.va)(y,I),g._sqlite3_sql=y=>(g._sqlite3_sql=at.wa)(y),g._sqlite3_normalized_sql=y=>(g._sqlite3_normalized_sql=at.xa)(y),g._sqlite3_changes=y=>(g._sqlite3_changes=at.ya)(y),g._sqlite3_close_v2=y=>(g._sqlite3_close_v2=at.za)(y),g._sqlite3_create_function_v2=(y,I,U,V,Z,me,Ce,Xe,Ct)=>(g._sqlite3_create_function_v2=at.Aa)(y,I,U,V,Z,me,Ce,Xe,Ct),g._sqlite3_update_hook=(y,I,U)=>(g._sqlite3_update_hook=at.Ba)(y,I,U),g._sqlite3_open=(y,I)=>(g._sqlite3_open=at.Ca)(y,I);var Ks=g._malloc=y=>(Ks=g._malloc=at.Da)(y),Nr=g._free=y=>(Nr=g._free=at.Ea)(y);g._RegisterExtensionFunctions=y=>(g._RegisterExtensionFunctions=at.Fa)(y);var el=(y,I)=>(el=at.Ga)(y,I),kr=(y,I)=>(kr=at.Ha)(y,I),wn=y=>(wn=at.Ia)(y),si=y=>(si=at.Ja)(y),vi=()=>(vi=at.Ka)();g.stackSave=()=>vi(),g.stackRestore=y=>wn(y),g.stackAlloc=y=>si(y),g.cwrap=(y,I,U,V)=>{var Z=!U||U.every(me=>me==="number"||me==="boolean");return I!=="string"&&Z&&!V?g["_"+y]:(...me)=>Vd(y,I,U,me)},g.addFunction=$i,g.removeFunction=ri,g.UTF8ToString=Be,g.ALLOC_NORMAL=ms,g.allocate=Sr,g.allocateUTF8OnStack=$o;function oi(){function y(){var Z;if(g.calledRun=!0,!P){if(!g.noFSInit&&!gn){var I,U;gn=!0,V??(V=g.stdin),I??(I=g.stdout),U??(U=g.stderr),V?Ua("stdin",V):Tt("/dev/tty","/dev/stdin"),I?Ua("stdout",null,I):Tt("/dev/tty","/dev/stdout"),U?Ua("stderr",null,U):Tt("/dev/tty1","/dev/stderr"),ca("/dev/stdin",0),ca("/dev/stdout",1),ca("/dev/stderr",1)}if(at.N(),jt=!1,(Z=g.onRuntimeInitialized)==null||Z.call(g),g.postRun)for(typeof g.postRun=="function"&&(g.postRun=[g.postRun]);g.postRun.length;){var V=g.postRun.shift();Ke.unshift(V)}_e(Ke)}}if(0<F)J=oi;else{if(g.preRun)for(typeof g.preRun=="function"&&(g.preRun=[g.preRun]);g.preRun.length;)Ot();_e(Ye),0<F?J=oi:g.setStatus?(g.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>g.setStatus(""),1),y()},1)):y()}}if(g.preInit)for(typeof g.preInit=="function"&&(g.preInit=[g.preInit]);0<g.preInit.length;)g.preInit.pop()();return oi(),m}),n)};t.exports=r,t.exports.default=r}(Lp)),Lp.exports}var bM=EM();const vM=cs(bM);var BE=`
\uFEFFCREATE TABLE IF NOT EXISTS "__EFMigrationsHistory" (
    "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY,
    "ProductVersion" TEXT NOT NULL
);

BEGIN TRANSACTION;
CREATE TABLE "Aliases" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Aliases" PRIMARY KEY,
    "Gender" VARCHAR NULL,
    "FirstName" VARCHAR NULL,
    "LastName" VARCHAR NULL,
    "NickName" VARCHAR NULL,
    "BirthDate" TEXT NOT NULL,
    "AddressStreet" VARCHAR NULL,
    "AddressCity" VARCHAR NULL,
    "AddressState" VARCHAR NULL,
    "AddressZipCode" VARCHAR NULL,
    "AddressCountry" VARCHAR NULL,
    "Hobbies" TEXT NULL,
    "EmailPrefix" TEXT NULL,
    "PhoneMobile" TEXT NULL,
    "BankAccountIBAN" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL
);

CREATE TABLE "Services" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Services" PRIMARY KEY,
    "Name" TEXT NULL,
    "Url" TEXT NULL,
    "Logo" BLOB NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL
);

CREATE TABLE "Credentials" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Credentials" PRIMARY KEY,
    "AliasId" TEXT NOT NULL,
    "Notes" TEXT NULL,
    "Username" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "ServiceId" TEXT NOT NULL,
    CONSTRAINT "FK_Credentials_Aliases_AliasId" FOREIGN KEY ("AliasId") REFERENCES "Aliases" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_Credentials_Services_ServiceId" FOREIGN KEY ("ServiceId") REFERENCES "Services" ("Id") ON DELETE CASCADE
);

CREATE TABLE "Attachment" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Attachment" PRIMARY KEY,
    "Filename" TEXT NOT NULL,
    "Blob" BLOB NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    CONSTRAINT "FK_Attachment_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE TABLE "Passwords" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Passwords" PRIMARY KEY,
    "Value" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    CONSTRAINT "FK_Passwords_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE INDEX "IX_Attachment_CredentialId" ON "Attachment" ("CredentialId");

CREATE INDEX "IX_Credentials_AliasId" ON "Credentials" ("AliasId");

CREATE INDEX "IX_Credentials_ServiceId" ON "Credentials" ("ServiceId");

CREATE INDEX "IX_Passwords_CredentialId" ON "Passwords" ("CredentialId");

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240708094944_1.0.0-InitialMigration', '9.0.4');

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240708224522_1.0.1-EmptyTestMigration', '9.0.4');

ALTER TABLE "Aliases" RENAME COLUMN "EmailPrefix" TO "Email";

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240711204207_1.0.2-ChangeEmailColumn', '9.0.4');

CREATE TABLE "EncryptionKeys" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_EncryptionKeys" PRIMARY KEY,
    "PublicKey" TEXT NOT NULL,
    "PrivateKey" TEXT NOT NULL,
    "IsPrimary" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL
);

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240729105618_1.1.0-AddPkiTables', '9.0.4');

CREATE TABLE "Settings" (
    "Key" TEXT NOT NULL CONSTRAINT "PK_Settings" PRIMARY KEY,
    "Value" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL
);

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240805073413_1.2.0-AddSettingsTable', '9.0.4');

CREATE TABLE "ef_temp_Aliases" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Aliases" PRIMARY KEY,
    "BirthDate" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Email" TEXT NULL,
    "FirstName" VARCHAR NULL,
    "Gender" VARCHAR NULL,
    "LastName" VARCHAR NULL,
    "NickName" VARCHAR NULL,
    "UpdatedAt" TEXT NOT NULL
);

INSERT INTO "ef_temp_Aliases" ("Id", "BirthDate", "CreatedAt", "Email", "FirstName", "Gender", "LastName", "NickName", "UpdatedAt")
SELECT "Id", "BirthDate", "CreatedAt", "Email", "FirstName", "Gender", "LastName", "NickName", "UpdatedAt"
FROM "Aliases";

COMMIT;

PRAGMA foreign_keys = 0;

BEGIN TRANSACTION;
DROP TABLE "Aliases";

ALTER TABLE "ef_temp_Aliases" RENAME TO "Aliases";

COMMIT;

PRAGMA foreign_keys = 1;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240805122422_1.3.0-UpdateIdentityStructure', '9.0.4');

BEGIN TRANSACTION;
CREATE TABLE "ef_temp_Credentials" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Credentials" PRIMARY KEY,
    "AliasId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Notes" TEXT NULL,
    "ServiceId" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "Username" TEXT NULL,
    CONSTRAINT "FK_Credentials_Aliases_AliasId" FOREIGN KEY ("AliasId") REFERENCES "Aliases" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_Credentials_Services_ServiceId" FOREIGN KEY ("ServiceId") REFERENCES "Services" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_Credentials" ("Id", "AliasId", "CreatedAt", "Notes", "ServiceId", "UpdatedAt", "Username")
SELECT "Id", "AliasId", "CreatedAt", "Notes", "ServiceId", "UpdatedAt", "Username"
FROM "Credentials";

COMMIT;

PRAGMA foreign_keys = 0;

BEGIN TRANSACTION;
DROP TABLE "Credentials";

ALTER TABLE "ef_temp_Credentials" RENAME TO "Credentials";

COMMIT;

PRAGMA foreign_keys = 1;

BEGIN TRANSACTION;
CREATE INDEX "IX_Credentials_AliasId" ON "Credentials" ("AliasId");

CREATE INDEX "IX_Credentials_ServiceId" ON "Credentials" ("ServiceId");

COMMIT;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240812141727_1.3.1-MakeUsernameOptional', '9.0.4');

BEGIN TRANSACTION;
ALTER TABLE "Settings" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Services" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Passwords" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "EncryptionKeys" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Credentials" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Attachment" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Aliases" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240916105320_1.4.0-AddSyncSupport', '9.0.4');

ALTER TABLE "Attachment" RENAME TO "Attachments";

CREATE TABLE "ef_temp_Attachments" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Attachments" PRIMARY KEY,
    "Blob" BLOB NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "Filename" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    CONSTRAINT "FK_Attachments_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_Attachments" ("Id", "Blob", "CreatedAt", "CredentialId", "Filename", "IsDeleted", "UpdatedAt")
SELECT "Id", "Blob", "CreatedAt", "CredentialId", "Filename", "IsDeleted", "UpdatedAt"
FROM "Attachments";

COMMIT;

PRAGMA foreign_keys = 0;

BEGIN TRANSACTION;
DROP TABLE "Attachments";

ALTER TABLE "ef_temp_Attachments" RENAME TO "Attachments";

COMMIT;

PRAGMA foreign_keys = 1;

BEGIN TRANSACTION;
CREATE INDEX "IX_Attachments_CredentialId" ON "Attachments" ("CredentialId");

COMMIT;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240917191243_1.4.1-RenameAttachmentsPlural', '9.0.4');

BEGIN TRANSACTION;
CREATE TABLE "TotpCodes" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_TotpCodes" PRIMARY KEY,
    "Name" TEXT NOT NULL,
    "SecretKey" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_TotpCodes_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE INDEX "IX_TotpCodes_CredentialId" ON "TotpCodes" ("CredentialId");

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20250310131554_1.5.0-AddTotpCodes', '9.0.4');


PRAGMA foreign_keys = OFF;

-- Clean up any existing temp tables first
DROP TABLE IF EXISTS "__EFMigrationsHistory_temp";
DROP TABLE IF EXISTS "Aliases_temp";
DROP TABLE IF EXISTS "Services_temp";
DROP TABLE IF EXISTS "EncryptionKeys_temp";
DROP TABLE IF EXISTS "Settings_temp";
DROP TABLE IF EXISTS "Credentials_temp";
DROP TABLE IF EXISTS "Attachments_temp";
DROP TABLE IF EXISTS "Passwords_temp";
DROP TABLE IF EXISTS "TotpCodes_temp";

-- Create backup tables for all data
CREATE TABLE "__EFMigrationsHistory_temp" AS SELECT * FROM "__EFMigrationsHistory";
CREATE TABLE "Aliases_temp" AS SELECT * FROM "Aliases";
CREATE TABLE "Services_temp" AS SELECT * FROM "Services";
CREATE TABLE "EncryptionKeys_temp" AS SELECT * FROM "EncryptionKeys";
CREATE TABLE "Settings_temp" AS SELECT * FROM "Settings";
CREATE TABLE "Credentials_temp" AS SELECT * FROM "Credentials";
CREATE TABLE "Attachments_temp" AS SELECT * FROM "Attachments";
CREATE TABLE "Passwords_temp" AS SELECT * FROM "Passwords";
CREATE TABLE "TotpCodes_temp" AS SELECT * FROM "TotpCodes";

-- Delete orphaned records that do not have a valid FK to the credential object
DELETE FROM "Attachments_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");
DELETE FROM "Passwords_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");
DELETE FROM "TotpCodes_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");

-- Delete orphaned credentials that do not have valid FKs to alias or service objects
DELETE FROM "Credentials_temp" WHERE "AliasId" NOT IN (SELECT "Id" FROM "Aliases_temp");
DELETE FROM "Credentials_temp" WHERE "ServiceId" NOT IN (SELECT "Id" FROM "Services_temp");

-- After cleaning credentials, clean dependent tables again in case we removed credentials
DELETE FROM "Attachments_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");
DELETE FROM "Passwords_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");
DELETE FROM "TotpCodes_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");

-- Drop all existing tables
DROP TABLE "TotpCodes";
DROP TABLE "Passwords";
DROP TABLE "Attachments";
DROP TABLE "Credentials";
DROP TABLE "Settings";
DROP TABLE "EncryptionKeys";
DROP TABLE "Services";
DROP TABLE "Aliases";
DROP TABLE "__EFMigrationsHistory";

-- Recreate tables with proper constraints (no dependencies first)
CREATE TABLE "__EFMigrationsHistory" (
    "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY,
    "ProductVersion" TEXT NOT NULL
);

CREATE TABLE "Aliases" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Aliases" PRIMARY KEY,
    "BirthDate" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Email" TEXT NULL,
    "FirstName" VARCHAR NULL,
    "Gender" VARCHAR NULL,
    "LastName" VARCHAR NULL,
    "NickName" VARCHAR NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0
);

CREATE TABLE "Services" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Services" PRIMARY KEY,
    "Name" TEXT NULL,
    "Url" TEXT NULL,
    "Logo" BLOB NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0
);

CREATE TABLE "EncryptionKeys" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_EncryptionKeys" PRIMARY KEY,
    "PublicKey" TEXT NOT NULL,
    "PrivateKey" TEXT NOT NULL,
    "IsPrimary" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0
);

CREATE TABLE "Settings" (
    "Key" TEXT NOT NULL CONSTRAINT "PK_Settings" PRIMARY KEY,
    "Value" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0
);

-- Tables with foreign keys
CREATE TABLE "Credentials" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Credentials" PRIMARY KEY,
    "AliasId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Notes" TEXT NULL,
    "ServiceId" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "Username" TEXT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0,
    CONSTRAINT "FK_Credentials_Aliases_AliasId" FOREIGN KEY ("AliasId") REFERENCES "Aliases" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_Credentials_Services_ServiceId" FOREIGN KEY ("ServiceId") REFERENCES "Services" ("Id") ON DELETE CASCADE
);

CREATE TABLE "Attachments" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Attachments" PRIMARY KEY,
    "Blob" BLOB NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "Filename" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0,
    "UpdatedAt" TEXT NOT NULL,
    CONSTRAINT "FK_Attachments_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE TABLE "Passwords" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Passwords" PRIMARY KEY,
    "Value" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0,
    CONSTRAINT "FK_Passwords_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE TABLE "TotpCodes" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_TotpCodes" PRIMARY KEY,
    "Name" TEXT NOT NULL,
    "SecretKey" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0,
    CONSTRAINT "FK_TotpCodes_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);


-- Restore data from temp tables
INSERT INTO "__EFMigrationsHistory" SELECT * FROM "__EFMigrationsHistory_temp";
INSERT INTO "Aliases" SELECT * FROM "Aliases_temp";
INSERT INTO "Services" SELECT * FROM "Services_temp";
INSERT INTO "EncryptionKeys" SELECT * FROM "EncryptionKeys_temp";
INSERT INTO "Settings" SELECT * FROM "Settings_temp";
INSERT INTO "Credentials" SELECT * FROM "Credentials_temp";
INSERT INTO "Attachments" SELECT * FROM "Attachments_temp";
INSERT INTO "Passwords" SELECT * FROM "Passwords_temp";
INSERT INTO "TotpCodes" SELECT * FROM "TotpCodes_temp";

-- =====================================================================================
-- Date Format Normalization Migration
-- =====================================================================================
-- This migration normalizes ALL date fields to the standard format: 'yyyy-MM-dd HH:mm:ss.fff'
-- Previously the different clients used different date formats which complicate date parsing.
-- From version 0.24.0 onwards, all new dates are stored in this standard format.

-- Update Aliases table (CreatedAt, UpdatedAt, BirthDate)
UPDATE "Aliases" SET "CreatedAt" =
    CASE
        -- Already in correct format (yyyy-MM-dd HH:mm:ss.fff) - no change
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"

        -- ISO 8601 with milliseconds (yyyy-MM-ddTHH:mm:ss.fffZ) -> Replace T with space, remove Z and everything after .fff
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)

        -- Without milliseconds (yyyy-MM-dd HH:mm:ss or yyyy-MM-ddTHH:mm:ssZ) -> Add .000
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'

        -- Fallback: if none match, keep as-is (edge case)
        ELSE "CreatedAt"
    END;

UPDATE "Aliases" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- BirthDate: Always set time to 00:00:00 (no milliseconds for birth dates)
UPDATE "Aliases" SET "BirthDate" =
    CASE
        -- If empty or already '0001-01-01 00:00:00', keep as-is
        WHEN "BirthDate" = '' OR "BirthDate" = '0001-01-01 00:00:00'
            THEN "BirthDate"

        -- If already in correct format (yyyy-MM-dd 00:00:00), keep as-is
        WHEN "BirthDate" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] 00:00:00'
            THEN "BirthDate"

        -- Extract date part and set time to 00:00:00
        WHEN "BirthDate" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]*'
            THEN substr("BirthDate", 1, 10) || ' 00:00:00'

        -- Fallback
        ELSE "BirthDate"
    END;

-- Update Services table (CreatedAt, UpdatedAt)
UPDATE "Services" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Services" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update EncryptionKeys table (CreatedAt, UpdatedAt)
UPDATE "EncryptionKeys" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "EncryptionKeys" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update Settings table (CreatedAt, UpdatedAt)
UPDATE "Settings" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Settings" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update Credentials table (CreatedAt, UpdatedAt)
UPDATE "Credentials" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Credentials" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update Attachments table (CreatedAt, UpdatedAt)
UPDATE "Attachments" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Attachments" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update Passwords table (CreatedAt, UpdatedAt)
UPDATE "Passwords" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Passwords" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update TotpCodes table (CreatedAt, UpdatedAt)
UPDATE "TotpCodes" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "TotpCodes" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- =====================================================================================
-- End of Date Format Normalization Migration
-- =====================================================================================

-- Recreate indexes
CREATE INDEX "IX_Credentials_AliasId" ON "Credentials" ("AliasId");
CREATE INDEX "IX_Credentials_ServiceId" ON "Credentials" ("ServiceId");
CREATE INDEX "IX_Attachments_CredentialId" ON "Attachments" ("CredentialId");
CREATE INDEX "IX_Passwords_CredentialId" ON "Passwords" ("CredentialId");
CREATE INDEX "IX_TotpCodes_CredentialId" ON "TotpCodes" ("CredentialId");

-- Clean up temp tables
DROP TABLE "__EFMigrationsHistory_temp";
DROP TABLE "Aliases_temp";
DROP TABLE "Services_temp";
DROP TABLE "EncryptionKeys_temp";
DROP TABLE "Settings_temp";
DROP TABLE "Credentials_temp";
DROP TABLE "Attachments_temp";
DROP TABLE "Passwords_temp";
DROP TABLE "TotpCodes_temp";

PRAGMA foreign_keys = ON;


CREATE TABLE "Passkeys" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Passkeys" PRIMARY KEY,
    "RpId" TEXT COLLATE NOCASE NOT NULL,
    "UserHandle" BLOB NOT NULL,
    "PublicKey" TEXT NOT NULL,
    "PrivateKey" TEXT NOT NULL,
    "PrfKey" BLOB NULL,
    "DisplayName" TEXT NOT NULL,
    "AdditionalData" BLOB NULL,
    "CredentialId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_Passkeys_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE INDEX "IX_Passkeys_CredentialId" ON "Passkeys" ("CredentialId");

CREATE INDEX "IX_Passkeys_RpId" ON "Passkeys" ("RpId");

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20251014122838_1.6.0-AddPasskeys', '9.0.4');

COMMIT;

PRAGMA foreign_keys = OFF;

BEGIN TRANSACTION;
ALTER TABLE "TotpCodes" RENAME COLUMN "CredentialId" TO "ItemId";

DROP INDEX IF EXISTS "IX_TotpCodes_CredentialId";

CREATE INDEX IF NOT EXISTS "IX_TotpCodes_ItemId" ON "TotpCodes" ("ItemId");

ALTER TABLE "Passkeys" RENAME COLUMN "CredentialId" TO "ItemId";

DROP INDEX IF EXISTS "IX_Passkeys_CredentialId";

CREATE INDEX IF NOT EXISTS "IX_Passkeys_ItemId" ON "Passkeys" ("ItemId");

ALTER TABLE "Attachments" RENAME COLUMN "CredentialId" TO "ItemId";

DROP INDEX IF EXISTS "IX_Attachments_CredentialId";

CREATE INDEX IF NOT EXISTS "IX_Attachments_ItemId" ON "Attachments" ("ItemId");

CREATE TABLE "FieldDefinitions" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_FieldDefinitions" PRIMARY KEY,
    "FieldType" TEXT NOT NULL,
    "Label" TEXT NOT NULL,
    "IsMultiValue" INTEGER NOT NULL,
    "IsHidden" INTEGER NOT NULL,
    "EnableHistory" INTEGER NOT NULL,
    "Weight" INTEGER NOT NULL,
    "ApplicableToTypes" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL
);

CREATE TABLE "Folders" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Folders" PRIMARY KEY,
    "Name" TEXT NOT NULL,
    "ParentFolderId" TEXT NULL,
    "Weight" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_Folders_Folders_ParentFolderId" FOREIGN KEY ("ParentFolderId") REFERENCES "Folders" ("Id") ON DELETE CASCADE
);

CREATE TABLE "Logos" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Logos" PRIMARY KEY,
    "Source" TEXT NOT NULL,
    "FileData" BLOB NULL,
    "MimeType" TEXT NULL,
    "FetchedAt" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL
);

CREATE TABLE "Tags" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Tags" PRIMARY KEY,
    "Name" TEXT NOT NULL,
    "Color" TEXT NULL,
    "DisplayOrder" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL
);

CREATE TABLE "Items" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Items" PRIMARY KEY,
    "Name" TEXT NULL,
    "ItemType" TEXT NOT NULL,
    "LogoId" TEXT NULL,
    "DeletedAt" TEXT NULL,
    "FolderId" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_Items_Folders_FolderId" FOREIGN KEY ("FolderId") REFERENCES "Folders" ("Id") ON DELETE SET NULL,
    CONSTRAINT "FK_Items_Logos_LogoId" FOREIGN KEY ("LogoId") REFERENCES "Logos" ("Id") ON DELETE SET NULL
);

CREATE TABLE "FieldHistories" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_FieldHistories" PRIMARY KEY,
    "ItemId" TEXT NOT NULL,
    "FieldDefinitionId" TEXT NULL,
    "FieldKey" TEXT NULL,
    "ValueSnapshot" TEXT NOT NULL,
    "ChangedAt" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_FieldHistories_FieldDefinitions_FieldDefinitionId" FOREIGN KEY ("FieldDefinitionId") REFERENCES "FieldDefinitions" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_FieldHistories_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

CREATE TABLE "FieldValues" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_FieldValues" PRIMARY KEY,
    "ItemId" TEXT NOT NULL,
    "FieldDefinitionId" TEXT NULL,
    "FieldKey" TEXT NULL,
    "Value" TEXT NULL,
    "Weight" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_FieldValues_FieldDefinitions_FieldDefinitionId" FOREIGN KEY ("FieldDefinitionId") REFERENCES "FieldDefinitions" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_FieldValues_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

CREATE TABLE "ItemTags" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_ItemTags" PRIMARY KEY,
    "ItemId" TEXT NOT NULL,
    "TagId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_ItemTags_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_ItemTags_Tags_TagId" FOREIGN KEY ("TagId") REFERENCES "Tags" ("Id") ON DELETE CASCADE
);

CREATE INDEX "IX_FieldHistories_FieldDefinitionId" ON "FieldHistories" ("FieldDefinitionId");

CREATE INDEX "IX_FieldHistories_ItemId" ON "FieldHistories" ("ItemId");

CREATE INDEX "IX_FieldValues_FieldDefinitionId" ON "FieldValues" ("FieldDefinitionId");

CREATE INDEX "IX_FieldValues_FieldKey" ON "FieldValues" ("FieldKey");

CREATE INDEX "IX_FieldValues_ItemId" ON "FieldValues" ("ItemId");

CREATE INDEX "IX_FieldValues_ItemId_FieldDefinitionId_Weight" ON "FieldValues" ("ItemId", "FieldDefinitionId", "Weight");

CREATE INDEX "IX_FieldValues_ItemId_FieldKey" ON "FieldValues" ("ItemId", "FieldKey");

CREATE INDEX "IX_Folders_ParentFolderId" ON "Folders" ("ParentFolderId");

CREATE INDEX "IX_Items_FolderId" ON "Items" ("FolderId");

CREATE INDEX "IX_Items_LogoId" ON "Items" ("LogoId");

CREATE INDEX "IX_ItemTags_ItemId" ON "ItemTags" ("ItemId");

CREATE UNIQUE INDEX "IX_ItemTags_ItemId_TagId" ON "ItemTags" ("ItemId", "TagId");

CREATE INDEX "IX_ItemTags_TagId" ON "ItemTags" ("TagId");

CREATE UNIQUE INDEX "IX_Logos_Source" ON "Logos" ("Source");

CREATE INDEX "IX_Tags_Name" ON "Tags" ("Name");


                INSERT INTO Items (Id, Name, ItemType, LogoId, FolderId, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  c.Id,
                  s.Name AS Name,
                  CASE
                    WHEN a.Id IS NOT NULL AND (
                      (a.FirstName IS NOT NULL AND a.FirstName != '') OR
                      (a.LastName IS NOT NULL AND a.LastName != '') OR
                      (a.Gender IS NOT NULL AND a.Gender != '') OR
                      (a.BirthDate IS NOT NULL AND a.BirthDate != '' AND a.BirthDate NOT LIKE '0001-%')
                    ) THEN 'Alias'
                    ELSE 'Login'
                  END AS ItemType,
                  NULL AS LogoId,
                  NULL AS FolderId,
                  c.CreatedAt,
                  c.UpdatedAt,
                  c.IsDeleted
                FROM Credentials c
                LEFT JOIN Services s ON s.Id = c.ServiceId
                LEFT JOIN Aliases a ON a.Id = c.AliasId;
            


                INSERT INTO Logos (Id, Source, FileData, MimeType, FetchedAt, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  -- Extract and normalize hostname: remove protocol, path, lowercase, and www. prefix
                  REPLACE(
                    LOWER(
                      SUBSTR(
                        CASE
                          WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                          WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                          ELSE s.Url
                        END,
                        1,
                        CASE
                          WHEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') > 0
                          THEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') - 1
                          ELSE LENGTH(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END)
                        END
                      )
                    ),
                    'www.', ''
                  ) AS Source,
                  s.Logo AS FileData,
                  'image/png' AS MimeType,
                  NULL AS FetchedAt,
                  MIN(s.CreatedAt) AS CreatedAt,
                  MAX(s.UpdatedAt) AS UpdatedAt,
                  0 AS IsDeleted
                FROM Services s
                WHERE s.Logo IS NOT NULL AND s.Url IS NOT NULL AND s.Url != ''
                GROUP BY REPLACE(
                    LOWER(
                      SUBSTR(
                        CASE
                          WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                          WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                          ELSE s.Url
                        END,
                        1,
                        CASE
                          WHEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') > 0
                          THEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') - 1
                          ELSE LENGTH(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END)
                        END
                      )
                    ),
                    'www.', ''
                  );
            


                UPDATE Items
                SET LogoId = (
                  SELECT l.Id FROM Logos l
                  INNER JOIN Services s ON REPLACE(
                    LOWER(
                      SUBSTR(
                        CASE
                          WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                          WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                          ELSE s.Url
                        END,
                        1,
                        CASE
                          WHEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') > 0
                          THEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') - 1
                          ELSE LENGTH(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END)
                        END
                      )
                    ),
                    'www.', ''
                  ) = l.Source
                  INNER JOIN Credentials c ON c.ServiceId = s.Id
                  WHERE c.Id = Items.Id
                  LIMIT 1
                )
                WHERE EXISTS (
                  SELECT 1 FROM Credentials c
                  INNER JOIN Services s ON s.Id = c.ServiceId
                  WHERE c.Id = Items.Id AND s.Logo IS NOT NULL
                );
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'login.url' AS FieldKey,
                  s.Url AS Value,
                  0 AS Weight,
                  s.UpdatedAt AS CreatedAt,
                  s.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Services s ON s.Id = c.ServiceId
                WHERE s.Url IS NOT NULL AND s.Url != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'login.username' AS FieldKey,
                  c.Username AS Value,
                  0 AS Weight,
                  c.UpdatedAt AS CreatedAt,
                  c.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                WHERE c.Username IS NOT NULL AND c.Username != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'notes.content' AS FieldKey,
                  c.Notes AS Value,
                  0 AS Weight,
                  c.UpdatedAt AS CreatedAt,
                  c.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                WHERE c.Notes IS NOT NULL AND c.Notes != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  p.CredentialId AS ItemId,
                  NULL AS FieldDefinitionId,
                  'login.password' AS FieldKey,
                  p.Value AS Value,
                  0 AS Weight,
                  p.UpdatedAt AS CreatedAt,
                  p.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Passwords p
                INNER JOIN (
                  SELECT CredentialId, MAX(UpdatedAt) AS MaxUpdated, MAX(Id) AS MaxId
                  FROM Passwords
                  WHERE IsDeleted = 0
                  GROUP BY CredentialId
                ) pm ON p.CredentialId = pm.CredentialId AND p.UpdatedAt = pm.MaxUpdated AND p.Id = pm.MaxId
                WHERE p.IsDeleted = 0;
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'login.email' AS FieldKey,
                  a.Email AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.Email IS NOT NULL AND a.Email != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'alias.first_name' AS FieldKey,
                  a.FirstName AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.FirstName IS NOT NULL AND a.FirstName != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'alias.last_name' AS FieldKey,
                  a.LastName AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.LastName IS NOT NULL AND a.LastName != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'alias.gender' AS FieldKey,
                  a.Gender AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.Gender IS NOT NULL AND a.Gender != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'alias.birthdate' AS FieldKey,
                  SUBSTR(a.BirthDate, 1, 10) AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.BirthDate IS NOT NULL AND a.BirthDate != '' AND a.BirthDate NOT LIKE '0001-%';
            

DROP TABLE "Passwords";

DROP TABLE "Credentials";

DROP TABLE "Aliases";

DROP TABLE "Services";

COMMIT;

PRAGMA foreign_keys = ON;

BEGIN TRANSACTION;
CREATE TABLE "ef_temp_Attachments" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Attachments" PRIMARY KEY,
    "Blob" BLOB NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Filename" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    "ItemId" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    CONSTRAINT "FK_Attachments_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_Attachments" ("Id", "Blob", "CreatedAt", "Filename", "IsDeleted", "ItemId", "UpdatedAt")
SELECT "Id", "Blob", "CreatedAt", "Filename", "IsDeleted", "ItemId", "UpdatedAt"
FROM "Attachments";

CREATE TABLE "ef_temp_Passkeys" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Passkeys" PRIMARY KEY,
    "AdditionalData" BLOB NULL,
    "CreatedAt" TEXT NOT NULL,
    "DisplayName" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    "ItemId" TEXT NOT NULL,
    "PrfKey" BLOB NULL,
    "PrivateKey" TEXT NOT NULL,
    "PublicKey" TEXT NOT NULL,
    "RpId" TEXT COLLATE NOCASE NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "UserHandle" BLOB NOT NULL,
    CONSTRAINT "FK_Passkeys_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_Passkeys" ("Id", "AdditionalData", "CreatedAt", "DisplayName", "IsDeleted", "ItemId", "PrfKey", "PrivateKey", "PublicKey", "RpId", "UpdatedAt", "UserHandle")
SELECT "Id", "AdditionalData", "CreatedAt", "DisplayName", "IsDeleted", "ItemId", "PrfKey", "PrivateKey", "PublicKey", "RpId", "UpdatedAt", "UserHandle"
FROM "Passkeys";

CREATE TABLE "ef_temp_TotpCodes" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_TotpCodes" PRIMARY KEY,
    "CreatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    "ItemId" TEXT NOT NULL,
    "Name" TEXT NOT NULL,
    "SecretKey" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    CONSTRAINT "FK_TotpCodes_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_TotpCodes" ("Id", "CreatedAt", "IsDeleted", "ItemId", "Name", "SecretKey", "UpdatedAt")
SELECT "Id", "CreatedAt", "IsDeleted", "ItemId", "Name", "SecretKey", "UpdatedAt"
FROM "TotpCodes";

COMMIT;

PRAGMA foreign_keys = 0;

BEGIN TRANSACTION;
DROP TABLE "Attachments";

ALTER TABLE "ef_temp_Attachments" RENAME TO "Attachments";

DROP TABLE "Passkeys";

ALTER TABLE "ef_temp_Passkeys" RENAME TO "Passkeys";

DROP TABLE "TotpCodes";

ALTER TABLE "ef_temp_TotpCodes" RENAME TO "TotpCodes";

COMMIT;

PRAGMA foreign_keys = 1;

BEGIN TRANSACTION;
CREATE INDEX "IX_Attachments_ItemId" ON "Attachments" ("ItemId");

CREATE INDEX "IX_Passkeys_ItemId" ON "Passkeys" ("ItemId");

CREATE INDEX "IX_Passkeys_RpId" ON "Passkeys" ("RpId");

CREATE INDEX "IX_TotpCodes_ItemId" ON "TotpCodes" ("ItemId");

COMMIT;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20251213111207_1.7.0-FieldBasedDataModelUpdate', '9.0.4');

BEGIN TRANSACTION;
INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20260130221620_2.0.0-MajorVersionBump', '9.0.4');

COMMIT;
`,PE={1:`\uFEFFBEGIN TRANSACTION;
INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240708224522_1.0.1-EmptyTestMigration', '9.0.4');

COMMIT;`,2:`\uFEFFBEGIN TRANSACTION;
ALTER TABLE "Aliases" RENAME COLUMN "EmailPrefix" TO "Email";

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240711204207_1.0.2-ChangeEmailColumn', '9.0.4');

COMMIT;`,3:`\uFEFFBEGIN TRANSACTION;
CREATE TABLE "EncryptionKeys" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_EncryptionKeys" PRIMARY KEY,
    "PublicKey" TEXT NOT NULL,
    "PrivateKey" TEXT NOT NULL,
    "IsPrimary" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL
);

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240729105618_1.1.0-AddPkiTables', '9.0.4');

COMMIT;`,4:`\uFEFFBEGIN TRANSACTION;
CREATE TABLE "Settings" (
    "Key" TEXT NOT NULL CONSTRAINT "PK_Settings" PRIMARY KEY,
    "Value" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL
);

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240805073413_1.2.0-AddSettingsTable', '9.0.4');

COMMIT;`,5:`\uFEFFBEGIN TRANSACTION;
CREATE TABLE "ef_temp_Aliases" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Aliases" PRIMARY KEY,
    "BirthDate" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Email" TEXT NULL,
    "FirstName" VARCHAR NULL,
    "Gender" VARCHAR NULL,
    "LastName" VARCHAR NULL,
    "NickName" VARCHAR NULL,
    "UpdatedAt" TEXT NOT NULL
);

INSERT INTO "ef_temp_Aliases" ("Id", "BirthDate", "CreatedAt", "Email", "FirstName", "Gender", "LastName", "NickName", "UpdatedAt")
SELECT "Id", "BirthDate", "CreatedAt", "Email", "FirstName", "Gender", "LastName", "NickName", "UpdatedAt"
FROM "Aliases";

COMMIT;

PRAGMA foreign_keys = 0;

BEGIN TRANSACTION;
DROP TABLE "Aliases";

ALTER TABLE "ef_temp_Aliases" RENAME TO "Aliases";

COMMIT;

PRAGMA foreign_keys = 1;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240805122422_1.3.0-UpdateIdentityStructure', '9.0.4');`,6:`\uFEFFBEGIN TRANSACTION;
CREATE TABLE "ef_temp_Credentials" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Credentials" PRIMARY KEY,
    "AliasId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Notes" TEXT NULL,
    "ServiceId" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "Username" TEXT NULL,
    CONSTRAINT "FK_Credentials_Aliases_AliasId" FOREIGN KEY ("AliasId") REFERENCES "Aliases" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_Credentials_Services_ServiceId" FOREIGN KEY ("ServiceId") REFERENCES "Services" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_Credentials" ("Id", "AliasId", "CreatedAt", "Notes", "ServiceId", "UpdatedAt", "Username")
SELECT "Id", "AliasId", "CreatedAt", "Notes", "ServiceId", "UpdatedAt", "Username"
FROM "Credentials";

COMMIT;

PRAGMA foreign_keys = 0;

BEGIN TRANSACTION;
DROP TABLE "Credentials";

ALTER TABLE "ef_temp_Credentials" RENAME TO "Credentials";

COMMIT;

PRAGMA foreign_keys = 1;

BEGIN TRANSACTION;
CREATE INDEX "IX_Credentials_AliasId" ON "Credentials" ("AliasId");

CREATE INDEX "IX_Credentials_ServiceId" ON "Credentials" ("ServiceId");

COMMIT;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240812141727_1.3.1-MakeUsernameOptional', '9.0.4');`,7:`\uFEFFBEGIN TRANSACTION;
ALTER TABLE "Settings" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Services" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Passwords" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "EncryptionKeys" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Credentials" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Attachment" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

ALTER TABLE "Aliases" ADD "IsDeleted" INTEGER NOT NULL DEFAULT 0;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240916105320_1.4.0-AddSyncSupport', '9.0.4');

COMMIT;`,8:`\uFEFFBEGIN TRANSACTION;
ALTER TABLE "Attachment" RENAME TO "Attachments";

CREATE TABLE "ef_temp_Attachments" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Attachments" PRIMARY KEY,
    "Blob" BLOB NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "Filename" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    CONSTRAINT "FK_Attachments_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_Attachments" ("Id", "Blob", "CreatedAt", "CredentialId", "Filename", "IsDeleted", "UpdatedAt")
SELECT "Id", "Blob", "CreatedAt", "CredentialId", "Filename", "IsDeleted", "UpdatedAt"
FROM "Attachments";

COMMIT;

PRAGMA foreign_keys = 0;

BEGIN TRANSACTION;
DROP TABLE "Attachments";

ALTER TABLE "ef_temp_Attachments" RENAME TO "Attachments";

COMMIT;

PRAGMA foreign_keys = 1;

BEGIN TRANSACTION;
CREATE INDEX "IX_Attachments_CredentialId" ON "Attachments" ("CredentialId");

COMMIT;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20240917191243_1.4.1-RenameAttachmentsPlural', '9.0.4');`,9:`\uFEFFBEGIN TRANSACTION;
CREATE TABLE "TotpCodes" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_TotpCodes" PRIMARY KEY,
    "Name" TEXT NOT NULL,
    "SecretKey" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_TotpCodes_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE INDEX "IX_TotpCodes_CredentialId" ON "TotpCodes" ("CredentialId");

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20250310131554_1.5.0-AddTotpCodes', '9.0.4');

COMMIT;`,10:`\uFEFFBEGIN TRANSACTION;

PRAGMA foreign_keys = OFF;

-- Clean up any existing temp tables first
DROP TABLE IF EXISTS "__EFMigrationsHistory_temp";
DROP TABLE IF EXISTS "Aliases_temp";
DROP TABLE IF EXISTS "Services_temp";
DROP TABLE IF EXISTS "EncryptionKeys_temp";
DROP TABLE IF EXISTS "Settings_temp";
DROP TABLE IF EXISTS "Credentials_temp";
DROP TABLE IF EXISTS "Attachments_temp";
DROP TABLE IF EXISTS "Passwords_temp";
DROP TABLE IF EXISTS "TotpCodes_temp";

-- Create backup tables for all data
CREATE TABLE "__EFMigrationsHistory_temp" AS SELECT * FROM "__EFMigrationsHistory";
CREATE TABLE "Aliases_temp" AS SELECT * FROM "Aliases";
CREATE TABLE "Services_temp" AS SELECT * FROM "Services";
CREATE TABLE "EncryptionKeys_temp" AS SELECT * FROM "EncryptionKeys";
CREATE TABLE "Settings_temp" AS SELECT * FROM "Settings";
CREATE TABLE "Credentials_temp" AS SELECT * FROM "Credentials";
CREATE TABLE "Attachments_temp" AS SELECT * FROM "Attachments";
CREATE TABLE "Passwords_temp" AS SELECT * FROM "Passwords";
CREATE TABLE "TotpCodes_temp" AS SELECT * FROM "TotpCodes";

-- Delete orphaned records that do not have a valid FK to the credential object
DELETE FROM "Attachments_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");
DELETE FROM "Passwords_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");
DELETE FROM "TotpCodes_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");

-- Delete orphaned credentials that do not have valid FKs to alias or service objects
DELETE FROM "Credentials_temp" WHERE "AliasId" NOT IN (SELECT "Id" FROM "Aliases_temp");
DELETE FROM "Credentials_temp" WHERE "ServiceId" NOT IN (SELECT "Id" FROM "Services_temp");

-- After cleaning credentials, clean dependent tables again in case we removed credentials
DELETE FROM "Attachments_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");
DELETE FROM "Passwords_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");
DELETE FROM "TotpCodes_temp" WHERE "CredentialId" NOT IN (SELECT "Id" FROM "Credentials_temp");

-- Drop all existing tables
DROP TABLE "TotpCodes";
DROP TABLE "Passwords";
DROP TABLE "Attachments";
DROP TABLE "Credentials";
DROP TABLE "Settings";
DROP TABLE "EncryptionKeys";
DROP TABLE "Services";
DROP TABLE "Aliases";
DROP TABLE "__EFMigrationsHistory";

-- Recreate tables with proper constraints (no dependencies first)
CREATE TABLE "__EFMigrationsHistory" (
    "MigrationId" TEXT NOT NULL CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY,
    "ProductVersion" TEXT NOT NULL
);

CREATE TABLE "Aliases" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Aliases" PRIMARY KEY,
    "BirthDate" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Email" TEXT NULL,
    "FirstName" VARCHAR NULL,
    "Gender" VARCHAR NULL,
    "LastName" VARCHAR NULL,
    "NickName" VARCHAR NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0
);

CREATE TABLE "Services" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Services" PRIMARY KEY,
    "Name" TEXT NULL,
    "Url" TEXT NULL,
    "Logo" BLOB NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0
);

CREATE TABLE "EncryptionKeys" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_EncryptionKeys" PRIMARY KEY,
    "PublicKey" TEXT NOT NULL,
    "PrivateKey" TEXT NOT NULL,
    "IsPrimary" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0
);

CREATE TABLE "Settings" (
    "Key" TEXT NOT NULL CONSTRAINT "PK_Settings" PRIMARY KEY,
    "Value" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0
);

-- Tables with foreign keys
CREATE TABLE "Credentials" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Credentials" PRIMARY KEY,
    "AliasId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Notes" TEXT NULL,
    "ServiceId" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "Username" TEXT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0,
    CONSTRAINT "FK_Credentials_Aliases_AliasId" FOREIGN KEY ("AliasId") REFERENCES "Aliases" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_Credentials_Services_ServiceId" FOREIGN KEY ("ServiceId") REFERENCES "Services" ("Id") ON DELETE CASCADE
);

CREATE TABLE "Attachments" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Attachments" PRIMARY KEY,
    "Blob" BLOB NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "Filename" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0,
    "UpdatedAt" TEXT NOT NULL,
    CONSTRAINT "FK_Attachments_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE TABLE "Passwords" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Passwords" PRIMARY KEY,
    "Value" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0,
    CONSTRAINT "FK_Passwords_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE TABLE "TotpCodes" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_TotpCodes" PRIMARY KEY,
    "Name" TEXT NOT NULL,
    "SecretKey" TEXT NOT NULL,
    "CredentialId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL DEFAULT 0,
    CONSTRAINT "FK_TotpCodes_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);


-- Restore data from temp tables
INSERT INTO "__EFMigrationsHistory" SELECT * FROM "__EFMigrationsHistory_temp";
INSERT INTO "Aliases" SELECT * FROM "Aliases_temp";
INSERT INTO "Services" SELECT * FROM "Services_temp";
INSERT INTO "EncryptionKeys" SELECT * FROM "EncryptionKeys_temp";
INSERT INTO "Settings" SELECT * FROM "Settings_temp";
INSERT INTO "Credentials" SELECT * FROM "Credentials_temp";
INSERT INTO "Attachments" SELECT * FROM "Attachments_temp";
INSERT INTO "Passwords" SELECT * FROM "Passwords_temp";
INSERT INTO "TotpCodes" SELECT * FROM "TotpCodes_temp";

-- =====================================================================================
-- Date Format Normalization Migration
-- =====================================================================================
-- This migration normalizes ALL date fields to the standard format: 'yyyy-MM-dd HH:mm:ss.fff'
-- Previously the different clients used different date formats which complicate date parsing.
-- From version 0.24.0 onwards, all new dates are stored in this standard format.

-- Update Aliases table (CreatedAt, UpdatedAt, BirthDate)
UPDATE "Aliases" SET "CreatedAt" =
    CASE
        -- Already in correct format (yyyy-MM-dd HH:mm:ss.fff) - no change
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"

        -- ISO 8601 with milliseconds (yyyy-MM-ddTHH:mm:ss.fffZ) -> Replace T with space, remove Z and everything after .fff
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)

        -- Without milliseconds (yyyy-MM-dd HH:mm:ss or yyyy-MM-ddTHH:mm:ssZ) -> Add .000
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'

        -- Fallback: if none match, keep as-is (edge case)
        ELSE "CreatedAt"
    END;

UPDATE "Aliases" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- BirthDate: Always set time to 00:00:00 (no milliseconds for birth dates)
UPDATE "Aliases" SET "BirthDate" =
    CASE
        -- If empty or already '0001-01-01 00:00:00', keep as-is
        WHEN "BirthDate" = '' OR "BirthDate" = '0001-01-01 00:00:00'
            THEN "BirthDate"

        -- If already in correct format (yyyy-MM-dd 00:00:00), keep as-is
        WHEN "BirthDate" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] 00:00:00'
            THEN "BirthDate"

        -- Extract date part and set time to 00:00:00
        WHEN "BirthDate" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]*'
            THEN substr("BirthDate", 1, 10) || ' 00:00:00'

        -- Fallback
        ELSE "BirthDate"
    END;

-- Update Services table (CreatedAt, UpdatedAt)
UPDATE "Services" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Services" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update EncryptionKeys table (CreatedAt, UpdatedAt)
UPDATE "EncryptionKeys" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "EncryptionKeys" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update Settings table (CreatedAt, UpdatedAt)
UPDATE "Settings" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Settings" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update Credentials table (CreatedAt, UpdatedAt)
UPDATE "Credentials" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Credentials" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update Attachments table (CreatedAt, UpdatedAt)
UPDATE "Attachments" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Attachments" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update Passwords table (CreatedAt, UpdatedAt)
UPDATE "Passwords" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "Passwords" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- Update TotpCodes table (CreatedAt, UpdatedAt)
UPDATE "TotpCodes" SET "CreatedAt" =
    CASE
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "CreatedAt"
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr("CreatedAt", 12, 12)
        WHEN "CreatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("CreatedAt", 1, 10) || ' ' || substr(replace("CreatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "CreatedAt"
    END;

UPDATE "TotpCodes" SET "UpdatedAt" =
    CASE
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]'
            THEN "UpdatedAt"
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr("UpdatedAt", 12, 12)
        WHEN "UpdatedAt" GLOB '[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][T ][0-9][0-9]:[0-9][0-9]:[0-9][0-9]*'
            THEN substr("UpdatedAt", 1, 10) || ' ' || substr(replace("UpdatedAt", 'T', ' '), 12, 8) || '.000'
        ELSE "UpdatedAt"
    END;

-- =====================================================================================
-- End of Date Format Normalization Migration
-- =====================================================================================

-- Recreate indexes
CREATE INDEX "IX_Credentials_AliasId" ON "Credentials" ("AliasId");
CREATE INDEX "IX_Credentials_ServiceId" ON "Credentials" ("ServiceId");
CREATE INDEX "IX_Attachments_CredentialId" ON "Attachments" ("CredentialId");
CREATE INDEX "IX_Passwords_CredentialId" ON "Passwords" ("CredentialId");
CREATE INDEX "IX_TotpCodes_CredentialId" ON "TotpCodes" ("CredentialId");

-- Clean up temp tables
DROP TABLE "__EFMigrationsHistory_temp";
DROP TABLE "Aliases_temp";
DROP TABLE "Services_temp";
DROP TABLE "EncryptionKeys_temp";
DROP TABLE "Settings_temp";
DROP TABLE "Credentials_temp";
DROP TABLE "Attachments_temp";
DROP TABLE "Passwords_temp";
DROP TABLE "TotpCodes_temp";

PRAGMA foreign_keys = ON;


CREATE TABLE "Passkeys" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Passkeys" PRIMARY KEY,
    "RpId" TEXT COLLATE NOCASE NOT NULL,
    "UserHandle" BLOB NOT NULL,
    "PublicKey" TEXT NOT NULL,
    "PrivateKey" TEXT NOT NULL,
    "PrfKey" BLOB NULL,
    "DisplayName" TEXT NOT NULL,
    "AdditionalData" BLOB NULL,
    "CredentialId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_Passkeys_Credentials_CredentialId" FOREIGN KEY ("CredentialId") REFERENCES "Credentials" ("Id") ON DELETE CASCADE
);

CREATE INDEX "IX_Passkeys_CredentialId" ON "Passkeys" ("CredentialId");

CREATE INDEX "IX_Passkeys_RpId" ON "Passkeys" ("RpId");

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20251014122838_1.6.0-AddPasskeys', '9.0.4');

COMMIT;`,11:`\uFEFFPRAGMA foreign_keys = OFF;

BEGIN TRANSACTION;
ALTER TABLE "TotpCodes" RENAME COLUMN "CredentialId" TO "ItemId";

DROP INDEX IF EXISTS "IX_TotpCodes_CredentialId";

CREATE INDEX IF NOT EXISTS "IX_TotpCodes_ItemId" ON "TotpCodes" ("ItemId");

ALTER TABLE "Passkeys" RENAME COLUMN "CredentialId" TO "ItemId";

DROP INDEX IF EXISTS "IX_Passkeys_CredentialId";

CREATE INDEX IF NOT EXISTS "IX_Passkeys_ItemId" ON "Passkeys" ("ItemId");

ALTER TABLE "Attachments" RENAME COLUMN "CredentialId" TO "ItemId";

DROP INDEX IF EXISTS "IX_Attachments_CredentialId";

CREATE INDEX IF NOT EXISTS "IX_Attachments_ItemId" ON "Attachments" ("ItemId");

CREATE TABLE "FieldDefinitions" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_FieldDefinitions" PRIMARY KEY,
    "FieldType" TEXT NOT NULL,
    "Label" TEXT NOT NULL,
    "IsMultiValue" INTEGER NOT NULL,
    "IsHidden" INTEGER NOT NULL,
    "EnableHistory" INTEGER NOT NULL,
    "Weight" INTEGER NOT NULL,
    "ApplicableToTypes" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL
);

CREATE TABLE "Folders" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Folders" PRIMARY KEY,
    "Name" TEXT NOT NULL,
    "ParentFolderId" TEXT NULL,
    "Weight" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_Folders_Folders_ParentFolderId" FOREIGN KEY ("ParentFolderId") REFERENCES "Folders" ("Id") ON DELETE CASCADE
);

CREATE TABLE "Logos" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Logos" PRIMARY KEY,
    "Source" TEXT NOT NULL,
    "FileData" BLOB NULL,
    "MimeType" TEXT NULL,
    "FetchedAt" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL
);

CREATE TABLE "Tags" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Tags" PRIMARY KEY,
    "Name" TEXT NOT NULL,
    "Color" TEXT NULL,
    "DisplayOrder" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL
);

CREATE TABLE "Items" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Items" PRIMARY KEY,
    "Name" TEXT NULL,
    "ItemType" TEXT NOT NULL,
    "LogoId" TEXT NULL,
    "DeletedAt" TEXT NULL,
    "FolderId" TEXT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_Items_Folders_FolderId" FOREIGN KEY ("FolderId") REFERENCES "Folders" ("Id") ON DELETE SET NULL,
    CONSTRAINT "FK_Items_Logos_LogoId" FOREIGN KEY ("LogoId") REFERENCES "Logos" ("Id") ON DELETE SET NULL
);

CREATE TABLE "FieldHistories" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_FieldHistories" PRIMARY KEY,
    "ItemId" TEXT NOT NULL,
    "FieldDefinitionId" TEXT NULL,
    "FieldKey" TEXT NULL,
    "ValueSnapshot" TEXT NOT NULL,
    "ChangedAt" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_FieldHistories_FieldDefinitions_FieldDefinitionId" FOREIGN KEY ("FieldDefinitionId") REFERENCES "FieldDefinitions" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_FieldHistories_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

CREATE TABLE "FieldValues" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_FieldValues" PRIMARY KEY,
    "ItemId" TEXT NOT NULL,
    "FieldDefinitionId" TEXT NULL,
    "FieldKey" TEXT NULL,
    "Value" TEXT NULL,
    "Weight" INTEGER NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_FieldValues_FieldDefinitions_FieldDefinitionId" FOREIGN KEY ("FieldDefinitionId") REFERENCES "FieldDefinitions" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_FieldValues_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

CREATE TABLE "ItemTags" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_ItemTags" PRIMARY KEY,
    "ItemId" TEXT NOT NULL,
    "TagId" TEXT NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    CONSTRAINT "FK_ItemTags_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE,
    CONSTRAINT "FK_ItemTags_Tags_TagId" FOREIGN KEY ("TagId") REFERENCES "Tags" ("Id") ON DELETE CASCADE
);

CREATE INDEX "IX_FieldHistories_FieldDefinitionId" ON "FieldHistories" ("FieldDefinitionId");

CREATE INDEX "IX_FieldHistories_ItemId" ON "FieldHistories" ("ItemId");

CREATE INDEX "IX_FieldValues_FieldDefinitionId" ON "FieldValues" ("FieldDefinitionId");

CREATE INDEX "IX_FieldValues_FieldKey" ON "FieldValues" ("FieldKey");

CREATE INDEX "IX_FieldValues_ItemId" ON "FieldValues" ("ItemId");

CREATE INDEX "IX_FieldValues_ItemId_FieldDefinitionId_Weight" ON "FieldValues" ("ItemId", "FieldDefinitionId", "Weight");

CREATE INDEX "IX_FieldValues_ItemId_FieldKey" ON "FieldValues" ("ItemId", "FieldKey");

CREATE INDEX "IX_Folders_ParentFolderId" ON "Folders" ("ParentFolderId");

CREATE INDEX "IX_Items_FolderId" ON "Items" ("FolderId");

CREATE INDEX "IX_Items_LogoId" ON "Items" ("LogoId");

CREATE INDEX "IX_ItemTags_ItemId" ON "ItemTags" ("ItemId");

CREATE UNIQUE INDEX "IX_ItemTags_ItemId_TagId" ON "ItemTags" ("ItemId", "TagId");

CREATE INDEX "IX_ItemTags_TagId" ON "ItemTags" ("TagId");

CREATE UNIQUE INDEX "IX_Logos_Source" ON "Logos" ("Source");

CREATE INDEX "IX_Tags_Name" ON "Tags" ("Name");


                INSERT INTO Items (Id, Name, ItemType, LogoId, FolderId, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  c.Id,
                  s.Name AS Name,
                  CASE
                    WHEN a.Id IS NOT NULL AND (
                      (a.FirstName IS NOT NULL AND a.FirstName != '') OR
                      (a.LastName IS NOT NULL AND a.LastName != '') OR
                      (a.Gender IS NOT NULL AND a.Gender != '') OR
                      (a.BirthDate IS NOT NULL AND a.BirthDate != '' AND a.BirthDate NOT LIKE '0001-%')
                    ) THEN 'Alias'
                    ELSE 'Login'
                  END AS ItemType,
                  NULL AS LogoId,
                  NULL AS FolderId,
                  c.CreatedAt,
                  c.UpdatedAt,
                  c.IsDeleted
                FROM Credentials c
                LEFT JOIN Services s ON s.Id = c.ServiceId
                LEFT JOIN Aliases a ON a.Id = c.AliasId;
            


                INSERT INTO Logos (Id, Source, FileData, MimeType, FetchedAt, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  -- Extract and normalize hostname: remove protocol, path, lowercase, and www. prefix
                  REPLACE(
                    LOWER(
                      SUBSTR(
                        CASE
                          WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                          WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                          ELSE s.Url
                        END,
                        1,
                        CASE
                          WHEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') > 0
                          THEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') - 1
                          ELSE LENGTH(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END)
                        END
                      )
                    ),
                    'www.', ''
                  ) AS Source,
                  s.Logo AS FileData,
                  'image/png' AS MimeType,
                  NULL AS FetchedAt,
                  MIN(s.CreatedAt) AS CreatedAt,
                  MAX(s.UpdatedAt) AS UpdatedAt,
                  0 AS IsDeleted
                FROM Services s
                WHERE s.Logo IS NOT NULL AND s.Url IS NOT NULL AND s.Url != ''
                GROUP BY REPLACE(
                    LOWER(
                      SUBSTR(
                        CASE
                          WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                          WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                          ELSE s.Url
                        END,
                        1,
                        CASE
                          WHEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') > 0
                          THEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') - 1
                          ELSE LENGTH(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END)
                        END
                      )
                    ),
                    'www.', ''
                  );
            


                UPDATE Items
                SET LogoId = (
                  SELECT l.Id FROM Logos l
                  INNER JOIN Services s ON REPLACE(
                    LOWER(
                      SUBSTR(
                        CASE
                          WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                          WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                          ELSE s.Url
                        END,
                        1,
                        CASE
                          WHEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') > 0
                          THEN INSTR(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END, '/') - 1
                          ELSE LENGTH(
                            CASE
                              WHEN s.Url LIKE 'https://%' THEN SUBSTR(s.Url, 9)
                              WHEN s.Url LIKE 'http://%' THEN SUBSTR(s.Url, 8)
                              ELSE s.Url
                            END)
                        END
                      )
                    ),
                    'www.', ''
                  ) = l.Source
                  INNER JOIN Credentials c ON c.ServiceId = s.Id
                  WHERE c.Id = Items.Id
                  LIMIT 1
                )
                WHERE EXISTS (
                  SELECT 1 FROM Credentials c
                  INNER JOIN Services s ON s.Id = c.ServiceId
                  WHERE c.Id = Items.Id AND s.Logo IS NOT NULL
                );
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'login.url' AS FieldKey,
                  s.Url AS Value,
                  0 AS Weight,
                  s.UpdatedAt AS CreatedAt,
                  s.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Services s ON s.Id = c.ServiceId
                WHERE s.Url IS NOT NULL AND s.Url != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'login.username' AS FieldKey,
                  c.Username AS Value,
                  0 AS Weight,
                  c.UpdatedAt AS CreatedAt,
                  c.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                WHERE c.Username IS NOT NULL AND c.Username != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'notes.content' AS FieldKey,
                  c.Notes AS Value,
                  0 AS Weight,
                  c.UpdatedAt AS CreatedAt,
                  c.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                WHERE c.Notes IS NOT NULL AND c.Notes != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  p.CredentialId AS ItemId,
                  NULL AS FieldDefinitionId,
                  'login.password' AS FieldKey,
                  p.Value AS Value,
                  0 AS Weight,
                  p.UpdatedAt AS CreatedAt,
                  p.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Passwords p
                INNER JOIN (
                  SELECT CredentialId, MAX(UpdatedAt) AS MaxUpdated, MAX(Id) AS MaxId
                  FROM Passwords
                  WHERE IsDeleted = 0
                  GROUP BY CredentialId
                ) pm ON p.CredentialId = pm.CredentialId AND p.UpdatedAt = pm.MaxUpdated AND p.Id = pm.MaxId
                WHERE p.IsDeleted = 0;
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'login.email' AS FieldKey,
                  a.Email AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.Email IS NOT NULL AND a.Email != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'alias.first_name' AS FieldKey,
                  a.FirstName AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.FirstName IS NOT NULL AND a.FirstName != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'alias.last_name' AS FieldKey,
                  a.LastName AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.LastName IS NOT NULL AND a.LastName != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'alias.gender' AS FieldKey,
                  a.Gender AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.Gender IS NOT NULL AND a.Gender != '';
            


                INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
                SELECT
                  UPPER(SUBSTR(hex(randomblob(4)), 1, 8) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(2)), 1, 4) || '-' ||
                        SUBSTR(hex(randomblob(6)), 1, 12)) AS Id,
                  c.Id AS ItemId,
                  NULL AS FieldDefinitionId,
                  'alias.birthdate' AS FieldKey,
                  SUBSTR(a.BirthDate, 1, 10) AS Value,
                  0 AS Weight,
                  a.UpdatedAt AS CreatedAt,
                  a.UpdatedAt AS UpdatedAt,
                  0 AS IsDeleted
                FROM Credentials c
                INNER JOIN Aliases a ON a.Id = c.AliasId
                WHERE a.BirthDate IS NOT NULL AND a.BirthDate != '' AND a.BirthDate NOT LIKE '0001-%';
            

DROP TABLE "Passwords";

DROP TABLE "Credentials";

DROP TABLE "Aliases";

DROP TABLE "Services";

COMMIT;

PRAGMA foreign_keys = ON;

BEGIN TRANSACTION;
CREATE TABLE "ef_temp_Attachments" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Attachments" PRIMARY KEY,
    "Blob" BLOB NOT NULL,
    "CreatedAt" TEXT NOT NULL,
    "Filename" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    "ItemId" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    CONSTRAINT "FK_Attachments_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_Attachments" ("Id", "Blob", "CreatedAt", "Filename", "IsDeleted", "ItemId", "UpdatedAt")
SELECT "Id", "Blob", "CreatedAt", "Filename", "IsDeleted", "ItemId", "UpdatedAt"
FROM "Attachments";

CREATE TABLE "ef_temp_Passkeys" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_Passkeys" PRIMARY KEY,
    "AdditionalData" BLOB NULL,
    "CreatedAt" TEXT NOT NULL,
    "DisplayName" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    "ItemId" TEXT NOT NULL,
    "PrfKey" BLOB NULL,
    "PrivateKey" TEXT NOT NULL,
    "PublicKey" TEXT NOT NULL,
    "RpId" TEXT COLLATE NOCASE NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    "UserHandle" BLOB NOT NULL,
    CONSTRAINT "FK_Passkeys_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_Passkeys" ("Id", "AdditionalData", "CreatedAt", "DisplayName", "IsDeleted", "ItemId", "PrfKey", "PrivateKey", "PublicKey", "RpId", "UpdatedAt", "UserHandle")
SELECT "Id", "AdditionalData", "CreatedAt", "DisplayName", "IsDeleted", "ItemId", "PrfKey", "PrivateKey", "PublicKey", "RpId", "UpdatedAt", "UserHandle"
FROM "Passkeys";

CREATE TABLE "ef_temp_TotpCodes" (
    "Id" TEXT NOT NULL CONSTRAINT "PK_TotpCodes" PRIMARY KEY,
    "CreatedAt" TEXT NOT NULL,
    "IsDeleted" INTEGER NOT NULL,
    "ItemId" TEXT NOT NULL,
    "Name" TEXT NOT NULL,
    "SecretKey" TEXT NOT NULL,
    "UpdatedAt" TEXT NOT NULL,
    CONSTRAINT "FK_TotpCodes_Items_ItemId" FOREIGN KEY ("ItemId") REFERENCES "Items" ("Id") ON DELETE CASCADE
);

INSERT INTO "ef_temp_TotpCodes" ("Id", "CreatedAt", "IsDeleted", "ItemId", "Name", "SecretKey", "UpdatedAt")
SELECT "Id", "CreatedAt", "IsDeleted", "ItemId", "Name", "SecretKey", "UpdatedAt"
FROM "TotpCodes";

COMMIT;

PRAGMA foreign_keys = 0;

BEGIN TRANSACTION;
DROP TABLE "Attachments";

ALTER TABLE "ef_temp_Attachments" RENAME TO "Attachments";

DROP TABLE "Passkeys";

ALTER TABLE "ef_temp_Passkeys" RENAME TO "Passkeys";

DROP TABLE "TotpCodes";

ALTER TABLE "ef_temp_TotpCodes" RENAME TO "TotpCodes";

COMMIT;

PRAGMA foreign_keys = 1;

BEGIN TRANSACTION;
CREATE INDEX "IX_Attachments_ItemId" ON "Attachments" ("ItemId");

CREATE INDEX "IX_Passkeys_ItemId" ON "Passkeys" ("ItemId");

CREATE INDEX "IX_Passkeys_RpId" ON "Passkeys" ("RpId");

CREATE INDEX "IX_TotpCodes_ItemId" ON "TotpCodes" ("ItemId");

COMMIT;

INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20251213111207_1.7.0-FieldBasedDataModelUpdate', '9.0.4');`,12:`\uFEFFBEGIN TRANSACTION;
INSERT INTO "__EFMigrationsHistory" ("MigrationId", "ProductVersion")
VALUES ('20260130221620_2.0.0-MajorVersionBump', '9.0.4');

COMMIT;`},Ga=[{revision:1,version:"1.0.0",description:"Initial Migration",releaseVersion:"0.1.0",compatibleUpToVersion:"0.0.0"},{revision:2,version:"1.0.1",description:"Empty Test Migration",releaseVersion:"0.2.0",compatibleUpToVersion:"0.1.0"},{revision:3,version:"1.0.2",description:"Change Email Column",releaseVersion:"0.3.0",compatibleUpToVersion:"0.2.0"},{revision:4,version:"1.1.0",description:"Add Pki Tables",releaseVersion:"0.4.0",compatibleUpToVersion:"0.3.0"},{revision:5,version:"1.2.0",description:"Add Settings Table",releaseVersion:"0.4.0",compatibleUpToVersion:"0.3.0"},{revision:6,version:"1.3.0",description:"Update Identity Structure",releaseVersion:"0.5.0",compatibleUpToVersion:"0.4.0"},{revision:7,version:"1.3.1",description:"Make Username Optional",releaseVersion:"0.5.0",compatibleUpToVersion:"0.4.0"},{revision:8,version:"1.4.0",description:"Add Sync Support",releaseVersion:"0.6.0",compatibleUpToVersion:"0.5.0"},{revision:9,version:"1.4.1",description:"Rename Attachments Plural",releaseVersion:"0.6.0",compatibleUpToVersion:"0.13.0"},{revision:10,version:"1.5.0",description:"Add 2FA Tokens to credentials",releaseVersion:"0.14.0",compatibleUpToVersion:"0.23.0"},{revision:11,version:"1.6.0",description:"Add Passkey support",releaseVersion:"0.24.0",compatibleUpToVersion:"0.25.0"},{revision:12,version:"1.7.0",description:"Update to Field-Based Data Model",releaseVersion:"0.26.0",compatibleUpToVersion:"0.25.0"},{revision:13,version:"2.0.0",description:"Update to Field-Based Data Model",releaseVersion:"0.26.1",compatibleUpToVersion:"0.25.0"}],Ph=class{getCreateVaultSql(){try{return{success:!0,sqlCommands:[BE],version:Ga[Ga.length-1].version,migrationNumber:Ga[Ga.length-1].revision}}catch(t){return{success:!1,sqlCommands:[],version:"0.0.0",migrationNumber:0,error:t instanceof Error?t.message:"Unknown error creating vault SQL"}}}getUpgradeVaultSql(t,e){try{const n=e??Ga[Ga.length-1].revision,r=Ga.find(c=>c.revision===n);if(!r)return{success:!1,sqlCommands:[],version:"0.0.0",migrationNumber:0,error:`Target migration number ${n} not found`};if(t>=n)return{success:!0,sqlCommands:[],version:r.version,migrationNumber:n};const s=Ga.filter(c=>c.revision>t&&c.revision<=n),l=[];for(const c of s){const m=c.revision-1,p=PE[m];p&&l.push(p)}return{success:!0,sqlCommands:l,version:r.version,migrationNumber:n}}catch(n){return{success:!1,sqlCommands:[],version:"0.0.0",migrationNumber:0,error:n instanceof Error?n.message:"Unknown error generating upgrade SQL"}}}getUpgradeToLatestSql(t){return this.getUpgradeVaultSql(t)}getUpgradeToVersionSql(t,e){const n=Ga.find(r=>r.version===e);return n?this.getUpgradeVaultSql(t,n.revision):{success:!1,sqlCommands:[],version:"0.0.0",migrationNumber:0,error:`Target version ${e} not found`}}getVersionCheckSql(){return["SELECT name FROM sqlite_master WHERE type='table' AND name='Settings';","SELECT Value FROM Settings WHERE Key = 'vault_version' AND IsDeleted = 0 LIMIT 1;","SELECT Value FROM Settings WHERE Key = 'vault_migration_number' AND IsDeleted = 0 LIMIT 1;"]}getVaultValidationSql(){return`SELECT name FROM sqlite_master WHERE type='table' AND name IN
            ('Aliases', 'Services', 'Credentials', 'Passwords', 'Attachments', 'EncryptionKeys', 'Settings', 'TotpCodes');`}parseVaultVersionInfo(t,e,n){let r="0.0.0",s=0;t&&(e?r=e:(r="1.0.0",s=1),n&&(s=parseInt(n,10)));const l=Ga[Ga.length-1],c=s<l.revision,m=Ga.filter(p=>p.revision>s);return{currentVersion:r,currentMigrationNumber:s,targetVersion:l.version,targetMigrationNumber:l.revision,needsUpgrade:c,availableUpgrades:m}}validateVaultStructure(t){const e=["Aliases","Services","Credentials","Passwords","Attachments","EncryptionKeys","Settings","TotpCodes"];return t.filter(r=>e.includes(r)).length>=5}getAllVersions(){return[...Ga]}getLatestVersion(){return Ga[Ga.length-1]}getMigrationSql(t){return PE[t]}getCompleteSchemaSql(){return BE}};function OE(t){const n=/^(\d+)\.(\d+)\.(\d+)$/.exec(t);return n?{major:parseInt(n[1],10),minor:parseInt(n[2],10),patch:parseInt(n[3],10)}:null}function wM(t,e){const n=OE(t);if(!n)return{isCompatible:!1,databaseVersion:t,isKnownVersion:!1,isMajorVersionDifference:!1,isMinorVersionDifference:!1};const r=Ga.find(g=>g.version===t);if(r)return{isCompatible:!0,databaseVersion:t,clientVersion:r,isKnownVersion:!0,isMajorVersionDifference:!1,isMinorVersionDifference:!1};const s=e?Ga.find(g=>g.version===e)??jE():jE(),l=OE(s.version);if(!l)return{isCompatible:!1,databaseVersion:t,isKnownVersion:!1,isMajorVersionDifference:!1,isMinorVersionDifference:!1};const c=n.major!==l.major,m=!c&&(n.minor!==l.minor||n.patch!==l.patch);return{isCompatible:!c,databaseVersion:t,clientVersion:s,isKnownVersion:!1,isMajorVersionDifference:c,isMinorVersionDifference:m}}function jE(){return Ga[Ga.length-1]}function IM(t){const n=/_(\d+\.\d+\.\d+)-/.exec(t);return(n==null?void 0:n[1])??null}class Cd extends Error{constructor(e){super(e),this.name="VaultVersionIncompatibleError",Object.setPrototypeOf(this,Cd.prototype)}}const kw={loginTitle:"Log på AliasVault",username:"Brugernavn eller e-mail",usernamePlaceholder:"navn / navn@firma.dk",passwordPlaceholder:"Indtast din adgangskode",rememberMe:"Husk mig",loginButton:"Log på",noAccount:"Endnu ingen konto?",createVault:"Opret ny boks",twoFactorTitle:"Indtast autentificeringskoden fra din autentificeringsapp.",authCode:"Bekræftelseskode",authCodePlaceholder:"Indtast 6-cifret kode",verify:"Bekræft",twoFactorNote:"Bemærk: Hvis du ikke har adgang til din autentificeringsenhed, kan du nulstille din 2FA med en gendannelseskode ved at logge på via hjemmesiden.",masterPassword:"Hovedadgangskode",unlockVault:"Oplås",unlockWithPin:"Oplås med PIN-kode",enterPinToUnlock:"Indtast din pinkode for at låse op for din boks",useMasterPassword:"Anvend Hovedadgangskode",unlockTitle:"Lås Din Boks op",logoutConfirm:"Er du sikker på, at du vil logge ud?",unlockSuccessTitle:"Din boks er oplåst",unlockSuccessDescription:"Du kan nu bruge autofyld i login-formularer i din browser.",closePopup:"Luk denne popup",browseVault:"Gennemse boksens indhold",autoCloseUnlockPopup:"Luk automatisk ved fremtidige log in",connectingTo:"Forbinder til",switchAccounts:"Skift konto?",loginWithMobile:"Log ind via mobilapp",unlockWithMobile:"Lås op ved hjælp af Mobil App",scanQrCode:"Skan denne QR-kode med din AliasVault-mobilapp for at logge ind og låse din boks op.",passwordAttemptsWarning:"Forkert adgangskode. Du vil blive logget ud, hvis du indtaster den forkerte adgangskode {{remainingAttempts}} flere gange.",maxAttemptsReached:"For mange mislykkede forsøg på oplåsning. Du er blevet logget ud af sikkerhedsårsager."},xw={vault:"Boks",emails:"E-mails"},Lw={loading:"Indlæser...",notice:"Besked",error:"Fejl",cancel:"Annuller",confirm:"Bekræft",remove:"Fjern",back:"Tilbage",next:"Næste",use:"Brug",add:"Tilføj",delete:"Slet",undo:"Fortryd",save:"Gem",saving:"Gemmer...",edit:"Rediger",create:"Opret",or:"Eller",close:"Luk",dismiss:"Afvis",logout:"Log ud",copied:"Kopieret!",openInNewWindow:"Åbn i nyt vindue",enabled:"Aktiveret",disabled:"Deaktiveret",showPassword:"Vis adgangskode",hidePassword:"Skjul adgangskode",show:"Vis",hide:"Skjul",showDetails:"Vis detaljer",hideDetails:"Skjul detaljer",copyToClipboard:"Kopier til udklipsholder",loadingEmails:"Indlæser e-mails...",loadingTotpCodes:"Indlæser TOTP-koder...",attachments:"Vedhæftede filer",loadingAttachments:"Indlæser vedhæftede filer...",settings:"Indstillinger",recentEmails:"Seneste e-mails",credentials:"Logonoplysninger",customFields:"Brugerdefinerede felter",twoFactorAuthentication:"To-faktor autentificering",alias:"Alias",notes:"Noter",email:"E-mail",username:"Brugernavn",password:"Adgangskode",generate:"Generer",serviceName:"Tjenestenavn",loggedIn:"Logget ind",syncingVault:"Synkroniserer boks",checkingVaultUpdates:"Tjekker for opdateringer til boks",syncingUpdatedVault:"Synkroniserer opdateret boks",loadMore:"Indlæs flere",offline:"Offline",offlineMode:"Arbejder i offline-tilstand",pendingSync:"Synkroniserer...",mergingVaultChanges:"Fletter ændringer i boks...",uploadingVault:"Uploader boks...",errors:{serverNotAvailable:"AliasVault-serveren er ikke tilgængelig. Prøv venligst igen senere eller kontakt support, hvis problemet fortsætter.",clientVersionNotSupported:"Denne version af AliasVault-browserudvidelsen understøttes ikke længere af serveren. Opdater venligst din browserudvidelse til den nyeste version.",browserExtensionOutdated:"Denne browserudvidelse er forældet og kan ikke bruges til at få adgang til denne boks. Opdater venligst browserudvidelsen for at fortsætte.",serverVersionNotSupported:"AliasVault-serveren skal opdateres til en nyere version for at kunne bruge denne browserudvidelse. Kontakt venligst support, hvis du har brug for hjælp.",serverVersionTooOld:"AliasVault-serveren skal opdateres til en nyere version for at bruge denne funktion. Kontakt venligst serveradministratoren, hvis du har brug for hjælp.",unknownError:"Der opstod en ukendt fejl",unknownErrorTryAgain:"Der opstod en ukendt fejl. Prøv venligst igen.",vaultNotAvailable:"Boksen er ikke tilgængelig",vaultIsLocked:"Boksen er låst",passwordChanged:"Din adgangskode er blevet ændret siden sidste logon. Log venligst ind igen af sikkerhedsmæssige årsager.",syncConflictMaxRetries:"Kunne ikke synkronisere boksen efter flere forsøg. Prøv venligst igen senere.",mergeFailed:"Kunne ikke flette ændringer i boks. Prøv venligst igen.",vaultTooLarge:"Boksen er for stor til, at serveren kan acceptere. Prøv at fjerne nogle elementer eller vedhæftede filer for at reducere størrelsen og prøv igen.",invalidCode:"Indtast venligst en gyldig 6-cifret autentificeringskode.",serverError:"Kunne ikke få forbindelse til AliasVault-serveren. Prøv venligst igen senere eller kontakt support, hvis problemet fortsætter.",wrongPassword:"Forkert adgangskode. Prøv venligst igen.",sessionExpired:"Din session er udløbet. Log venligst ind igen.",mobileLoginRequestExpired:"Anmodning om mobil-logon udløb. Genindlæs siden og prøv igen."},apiErrors:{UNKNOWN_ERROR:"Der opstod en ukendt fejl. Prøv venligst igen.",ACCOUNT_LOCKED:"Kontoen er midlertidigt låst på grund af for mange mislykkede forsøg. Prøv venligst igen senere.",ACCOUNT_BLOCKED:"Din konto er blevet deaktiveret. Hvis du mener, at dette er en fejl, bedes du kontakte support.",USER_NOT_FOUND:"Ugyldigt brugernavn eller adgangskode. Prøv venligst igen.",INVALID_AUTHENTICATOR_CODE:"Ugyldig autentificeringskode. Prøv venligst igen.",INVALID_RECOVERY_CODE:"Ugyldig gendannelseskode. Prøv venligst igen.",REFRESH_TOKEN_REQUIRED:"Refresh-token er påkrævet.",INVALID_REFRESH_TOKEN:"Ugyldigt refresh-token.",PUBLIC_REGISTRATION_DISABLED:"Oprettelse af nye konti er i øjeblikket deaktiveret på denne server. Kontakt venligst administratoren.",USERNAME_REQUIRED:"Brugernavn er påkrævet.",USERNAME_ALREADY_IN_USE:"Brugernavnet er allerede i brug.",USERNAME_AVAILABLE:"Brugernavnet er ledigt.",USERNAME_MISMATCH:"Brugernavnet matcher ikke den nuværende bruger.",PASSWORD_MISMATCH:"Den angivne adgangskode matcher ikke din nuværende adgangskode.",ACCOUNT_SUCCESSFULLY_DELETED:"Kontoen blev slettet korrekt.",USERNAME_EMPTY_OR_WHITESPACE:"Brugernavn må ikke være tomt eller kun indeholde mellemrum.",USERNAME_TOO_SHORT:"Brugernavnet er for kort: skal være mindst 3 tegn langt.",USERNAME_TOO_LONG:"Brugernavnet er for langt: må ikke være længere end 40 tegn.",USERNAME_INVALID_EMAIL:"Ugyldig e-mailadresse.",USERNAME_INVALID_CHARACTERS:"Brugernavnet er ugyldigt; kan kun indeholde bogstaver eller tal.",VAULT_NOT_UP_TO_DATE:"Din boks er ikke opdateret. Synkroniser venligst din boks og prøv igen.",INTERNAL_SERVER_ERROR:"Intern serverfejl.",VAULT_ERROR:"Den lokale boks er ikke opdateret. Synkroniser venligst din boks ved at genindlæse siden og prøv igen."}},Dw={or:"eller",new:"Ny",vaultLocked:"AliasVault er låst.",creatingNewAlias:"Opretter nyt alias...",noMatchesFound:"Ingen match fundet",searchVault:"Søg i boks...",enterServiceName:"Indtast tjenestenavn",enterEmailAddress:"Indtast e-mailadresse",enterUsername:"Indtast brugernavn",hideFor1Hour:"Skjul i 1 time (nuværende side)",hidePermanently:"Skjul permanent (nuværende side)",createRandomAlias:"Opret tilfældigt alias",createUsernamePassword:"Opret brugernavn/adgangskode",randomAlias:"Tilfældigt alias",usernamePassword:"Brugernavn/adgangskode",createAndSaveAlias:"Opret og gem alias",createAndSaveCredential:"Opret og gem logonoplysning",randomIdentityDescription:"Generer en tilfældig identitet med en tilfældig e-mailadresse, der er tilgængelig i AliasVault.",randomIdentityDescriptionDropdown:"Tilfældig identitet med tilfældig e-mail",manualCredentialDescription:"Angiv din egen e-mailadresse og brugernavn.",manualCredentialDescriptionDropdown:"Manuelt brugernavn og adgangskode",failedToCreateIdentity:"Kunne ikke oprette identitet. Prøv venligst igen.",enterEmailAndOrUsername:"Indtast e-mail og/eller brugernavn",autofillWithAliasVault:"Autofyld med AliasVault",generateRandomPassword:"Generer tilfældig adgangskode (kopier til udklipsholder)",generateNewPassword:"Generer ny adgangskode",togglePasswordVisibility:"Vis/skjul adgangskode",passwordCopiedToClipboard:"Adgangskode kopieret til udklipsholder",openAliasVaultToUpgrade:"Åbn AliasVault for at opgradere",vaultUpgradeRequired:"Opgradering af boks påkrævet.",dismissPopup:"Luk popup",noTotpItemsFound:"Ingen 2FA kode match fundet",close:"Luk",savePrompt:{title:"Gem i AliasVault?",neverForThisSite:"Aldrig for dette websted",addUrlTitle:"Tilføj URL til legitimationsoplysninger?"}},Rw={title:"Elementer",itemName:"Navn",loginCredentials:"Logonoplysninger",cardInformation:"Kortoplysninger",addItem:"Tilføj element",addNewItem:"Tilføj nyt element",saveItem:"Gem element",itemDetails:"Elementdetaljer",editItem:"Rediger element",untitled:"Uden titel",newFolder:"Ny mappe",createFolder:"Opret mappe",editFolder:"Rediger mappe",folderName:"Mappenavn",folderNameRequired:"Mappenavn er påkrævet",folder:"Mappe",welcomeTitle:"Velkommen til AliasVault!",welcomeDescription:"For at bruge AliasVault-browserudvidelsen: Gå til et websted og brug AliasVault-autofyld-popup'en til at oprette en ny logonoplysning.",noMatchingItems:"Ingen elementer matcher det valgte filter.",noMatchingItemsSearch:'Ingen elementer matcher "{{search}}"',noMatchingItemsWithFilter:'Ingen {{filter}}-elementer matcher "{{search}}"',clearSearch:"Ryd søgning",clearFilter:"Ryd filter",emptyFolderHint:"Denne mappe er tom. For at flytte elementer til denne mappe, skal du redigere elementet og trykke på mappe-ikonet i navnefeltet.",allItemsInFolders:"Alle dine elementer er organiseret i mapper. Klik på en mappe ovenfor for at se dine oplysninger, eller brug søgefunktionen til at finde specifikke elementer.",deleteFolder:"Slet mappe",deleteFolderKeepItems:"Slet kun mappe",deleteFolderKeepItemsDescription:"Punkter vil blive flyttet til den overordnede mappe.",deleteFolderAndItems:"Slet mappe og alle elementer",deleteFolderAndItemsDescription:"{{count}} element(er) vil blive flyttet til Senest Slettede.",filters:{folders:"Mapper",passkeys:"Passkeys",totp:"2FA Koder"},sort:{title:"Sorter efter",oldestFirst:"Ældste først",newestFirst:"Nyeste først",alphabetical:"Alfabetisk (A-Å)"},deleteItemTitle:"Slet element",deleteItemConfirm:"Er du sikker på, at du vil slette dette element?",viewHistory:"Vis historik",history:"Historik",noHistoryAvailable:"Ingen historik tilgængelig",tags:"Tags",changePasswordComplexity:"Skift adgangskodens kompleksitet",passwordLength:"Adgangskodens længde",includeLowercase:"Inkluder små bogstaver",includeUppercase:"Inkluder store bogstaver",includeNumbers:"Inkluder tal",includeSpecialChars:"Inkluder specialtegn",avoidAmbiguousChars:"Undgå tvetydige tegn (o, 0 osv.)",privateEmailTitle:"Privat e-mail",privateEmailAliasVaultServer:"AliasVault-server",privateEmailDescription:"E2E-krypteret, fuldt privat.",publicEmailTitle:"Offentlige midlertidige e-mailudbydere",publicEmailDescription:"Anonym men begrænset privatliv. E-mailindhold kan læses af alle, der kender adressen.",validation:{required:"Dette felt er påkrævet"}},Uw={selectType:"Tilføj nyt element",typeLabel:"Elementtype",creating:"Opretter",editing:"Redigerer",regenerateAlias:"Gengenerer alias",addCustomField:"Tilføj brugerdefineret felt",fieldLabel:"Feltnavn",enterFieldName:"Indtast feltnavn",fieldType:"Felttype",fieldTypes:{text:"Tekst",hidden:"Skjult (maskeret tekst)",email:"E-mail",url:"URL",phone:"Telefon",number:"Nummer",date:"Dato",textArea:"Tekstområde"},login:{title:"Log på"},alias:{title:"Alias"},creditCard:{title:"Betalingskort"},note:{title:"Sikker note"}},Mw={"login.url":"Websteds-URL","login.username":"Brugernavn","login.password":"Adgangskode","alias.first_name":"Fornavn","alias.last_name":"Efternavn","alias.gender":"Køn","alias.birthdate":"Fødselsdato","login.email":"E-mail","notes.content":"Noter","card.cardholder_name":"Kortholders navn","card.number":"Kortnummer","card.expiry_month":"Udløbsmåned","card.expiry_year":"Udløbsår","card.cvv":"CVV","card.pin":"PIN-kode"},_w={addCode:"Tilføj 2FA-kode",instructions:"Indtast den hemmelige nøgle (secret key), der vises af webstedet, hvor du vil tilføje to-faktor autentificering.",nameOptional:"Navn (valgfrit)",secretKey:"Hemmelig nøgle",saveToViewCode:"Gem for at se kode",defaultName:"Godkender",deleteTotpCodeTitle:"Slet 2FA Kode",deleteTotpCodeConfirmation:'Er du sikker på, at du vil slette 2FA koden "{{name}}"?',errors:{invalidSecretKey:"Ugyldigt format for hemmelig nøgle."}},Fw={uploading:"Uploader...",uploadSuccess:"Filer blev uploadet korrekt.",deleteSuccess:"Vedhæftet fil slettet korrekt.",firefoxExpandRequired:"Brug det udvidede vindue for at uploade filer.",openExpandedWindow:"Åbn udvidet vindue"},Bw={title:"E-mails",deleteEmailTitle:"Slet e-mail",deleteEmailConfirm:"Er du sikker på, at du vil slette denne e-mail permanent?",from:"Fra",to:"Til",date:"Dato",emailContent:"E-mailindhold",emailNotFound:"E-mail blev ikke fundet",noEmails:"Ingen e-mails fundet",noEmailsDescription:"Du har endnu ikke modtaget nogen e-mails på dine private e-mailadresser. Når du modtager en ny e-mail, vil den blive vist her.",offlineMessage:"Du er offline. Opret venligst forbindelse til internettet for at indlæse dine e-mails.",loadMore:"Indlæs flere ({{count}} tilbage)",dateFormat:{justNow:"lige nu",minutesAgo_single:"{{count}} min siden",minutesAgo_plural:"{{count}} min siden",hoursAgo_single:"{{count}} time siden",hoursAgo_plural:"{{count}} timer siden",yesterday:"i går"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Den valgte e-mailadresse er allerede i brug. Skift venligst e-mailadressen ved at redigere denne logonoplysning.",CLAIM_DOES_NOT_EXIST:"Der opstod en fejl under indlæsning af e-mails. Prøv venligst at redigere og gemme logonoplysningen for at synkronisere databasen, og prøv derefter igen."}},Pw={serverUrl:"Server-URL",language:"Sprog",autofillEnabled:"Aktiver autofyld",version:"Version",openWebApp:"Åbn web-app",lock:"Lås",globalSettings:"Globale indstillinger",activeOnAllSites:"Aktiv på alle websteder (medmindre deaktiveret nedenfor)",disabledOnAllSites:"Deaktiveret på alle websteder",rightClickContextMenu:"Højreklik-kontekstmenu",autofillMatching:"Autofyld-matching",autofillMatchingMode:"Matching-tilstand for autofyld",autofillMatchingModeDescription:"Bestemmer hvilke logonoplysninger der anses for at være et match og vises som forslag i autofyld-popup'en for et givet websted.",autofillMatchingDefault:"URL + underdomæne + navn wildcard",autofillMatchingUrlSubdomain:"URL + underdomæne",autofillMatchingUrlExact:"Kun eksakt URL-domæne",siteSpecificSettings:"Webstedsspecifikke indstillinger",enabledForThisSite:"Aktiveret for dette websted",disabledForThisSite:"Deaktiveret for dette websted",resetAllSiteSettings:"Nulstil alle webstedsspecifikke indstillinger",disabledSites:"Deaktiverede websteder",disabledSitesDescription:"Websteder hvor popup-vinduet for autofyld ikke vises.",clearAllDisabledSites:"Ryd alle deaktiverede websteder",temporaryUntil:"indtil",appearance:"Udseende",theme:"Tema",useDefault:"Brug standard",light:"Lys",dark:"Mørk",keyboardShortcuts:"Tastaturgenveje",configureKeyboardShortcuts:"Konfigurer tastaturgenveje",configure:"Konfigurer",clipboardClearTimeout:"Ryd udklipsholder efter kopiering",clipboardClearTimeoutDescription:"Ryd automatisk udklipsholderen efter kopiering af følsomme data",clipboardClearDisabled:"Ryd aldrig",clipboardClear5Seconds:"Ryd efter 5 sekunder",clipboardClear10Seconds:"Ryd efter 10 sekunder",clipboardClear15Seconds:"Ryd efter 15 sekunder",autoLockTimeout:"Auto-lås timeout",autoLockTimeoutDescription:"Lås automatisk boksen efter en periode med inaktivitet",autoLockTimeoutHelp:"Boksen vil kun låse efter den angivne periode med inaktivitet (ingen brug af autofyld eller åbning af udvidelsen). Boksen vil altid låse, når browseren lukkes, uanset denne indstilling.",autoLockNever:"Aldrig",autoLock15Seconds:"15 sekunder",autoLock30Seconds:"30 sekunder",autoLock1Minute:"1 minut",autoLock5Minutes:"5 minutter",autoLock15Minutes:"15 minutter",autoLock30Minutes:"30 minutter",autoLock1Hour:"1 time",autoLock4Hours:"4 timer",autoLock8Hours:"8 timer",autoLock24Hours:"24 timer",versionPrefix:"Version ",autofillSettings:"Indstillinger for autofyld",clipboardSettings:"Indstillinger for udklipsholder",contextMenuSettings:"Indstillinger for kontekstmenu",passkeySettings:"Indstillinger for passkey",contextMenuDescription:"Højreklik på inputfelter for at få adgang til AliasVault-funktioner",selectLanguage:"Vælg sprog",serverConfiguration:"Serverkonfiguration",serverConfigurationDescription:"Konfigurer AliasVault server-URL for selv-hostede instanser",customApiUrl:"API-URL",customClientUrl:"Klient-URL",apiUrlHint:"URL til API-endpoint (normalt klient-URL + /api)",clientUrlHint:"Web-interfacets URL for din selv-hostede instans",autofillSettingsDescription:"Aktiver eller deaktiver autofyld-popup på websider",autofillEnabledDescription:"Autofyld-forslag vil blive vist i login-formularer",autofillDisabledDescription:"Autofyld-forslag er deaktiveret globalt",languageSettings:"Sprog",validation:{apiUrlRequired:"API-URL er påkrævet",apiUrlInvalid:"Indtast venligst en gyldig API-URL",clientUrlRequired:"Klient-URL er påkrævet",clientUrlInvalid:"Indtast venligst en gyldig klient-URL"},identityGenerator:"Identitetsgenerator",identityGeneratorSettings:{description:"Konfigurer standardsprog og kønspræference for generering af nye identiteter.",languageSection:"Sprog",languageDescription:"Indstil det sprog, der skal bruges ved generering af nye identiteter.",genderSection:"Køn",genderDescription:"Indstil kønspræference for generering af nye identiteter.",ageRangeSection:"Aldersgruppe",ageRangeDescription:"Indstil aldersgruppen for generering af nye identiteter.",genderOptions:{random:"Tilfældig",male:"Mand",female:"Kvinde"}},credentialAutofill:"Loginoplysninger autofyld",credentialAutofillDescription:"Vis popup for automatisk udfyldning når brugernavn/adgangskodefelter detekteres",totpAutofill:"2FA kode autofyld",totpAutofillDescription:"Vis popup for autofyld når 2FA-kode felter detekteres",autoCopyTotpOnAutofill:"Auto-kopiere 2FA til udklipsholder",autoCopyTotpOnAutofillDescription:"Kopier automatisk den første 2FA-kode til udklipsholderen efter automatisk udfyldning af legitimationsoplysninger",loginSave:{title:"Gem Login-prompt",description:"Vis en prompt for at gemme loginoplysninger, når du indsender en login-formular på et websted.",blockedSites:"Blokerede websteder",blockedSitesDescription:"Websteder, hvor den gemte prompt aldrig vises.",clearAllBlockedSites:"Slet alle blokerede websteder"},unlockMethod:{title:"Oplåsningsmetode for boks",introText:"Vælg hvordan du vil låse din boks op. Du kan bruge din hovedadgangskode (altid tilgængelig) eller opsætte en PIN-kode for hurtigere adgang. Efter 3 mislykkede PIN-forsøg skal du bruge din hovedadgangskode.",password:"Hovedadgangskode",pin:"PIN-kode",pinDescription:"Lås boks op med PIN-kode",setupPin:"Opsæt PIN-kode",enterNewPinDescription:"Indtast en PIN-kode på mindst 6 cifre",confirmPin:"Bekræft PIN-kode",confirmPinDescription:"Indtast din PIN-kode igen for at bekræfte",invalidPinFormat:"Ugyldigt PIN-format",pinMismatch:"PIN-koderne matcher ikke",incorrectPin:"Forkert PIN-kode. {{attemptsRemaining}} forsøg tilbage.",incorrectPinSingular:"Forkert PIN-kode. 1 forsøg tilbage.",enableSuccess:"PIN-oplåsning blev aktiveret korrekt!",pinLocked:"PIN-oplåsning er blevet deaktiveret. Brug venligst din hovedadgangskode til at låse din boks op.",pinSecurityWarning:"PIN-oplåsning i browserudvidelsen kan være mindre sikker end din hovedadgangskode, da PIN-koder typisk har lavere entropi og kan brute-forces, hvis din enhed er kompromitteret. Brug det kun på enheder, du stoler fuldt på."}},Ow={passkey:"Passkey",site:"Websted",helpText:"Passkeys oprettes på webstedet, når du bliver bedt om det. De kan ikke redigeres manuelt. For at fjerne denne passkey kan du slette den fra denne logonoplysning. For at erstatte denne passkey eller oprette en ny, skal du besøge webstedet og følge dets anvisninger.",passkeyMarkedForDeletion:"Passkey markeret til sletning",passkeyWillBeDeleted:"Denne passkey slettes, når du gemmer denne logonoplysning.",useBrowserPasskey:"Brug browser-passkey",bypass:{description:"Hvor længe vil du bruge browserens passkey-udbyder for {{origin}}?",thisTimeOnly:"Kun denne gang",alwaysForSite:"Altid for dette websted"},authenticate:{title:"Log ind med passkey",signInFor:"Log ind med passkey for",selectPasskey:"Vælg en passkey for at logge ind:",noPasskeysFound:"Ingen passkeys fundet for dette websted"},create:{title:"Opret passkey",createFor:"Opret en ny passkey for",titleLabel:"Titel",titlePlaceholder:"Indtast et navn til denne passkey",createButton:"Opret passkey",selectPasskeyToReplace:"Vælg en passkey der skal erstattes:",createNewPasskey:"Opret ny passkey",replacingPasskey:"Erstatter passkey: {{displayName}}",confirmReplace:"Bekræft erstatning",selectExistingLogin:"Tilføj til eksisterende login:",selectExistingLoginDescription:"Forbind denne passkey til en eksisterende logonoplysning for dette websted.",attachingToCredential:"Tilføjer passkey til: {{serviceName}}",attachPasskey:"Tilføj passkey"},settings:{passkeyProvider:"Passkey-udbyder",passkeyProviderOn:"Passkey-udbyder på "}},jw={title:"Senest slettede",noItems:"Ingen slettede elementer",noItemsDescription:"Elementer du sletter vises her i {{days}} dage før de fjernes permanent.",description:"Disse elementer slettes permanent efter {{days}} dage. Du kan gendanne dem eller slette dem med det samme.",restore:"Gendan",deletePermanently:"Slet permanent",emptyAll:"Tøm alle",daysRemaining_one:"{{count}} dag tilbage",daysRemaining_other:"{{count}} dage tilbage",expiringSoon:"Udløber snart",confirmDeleteTitle:"Slet permanent?",confirmDeleteMessage:"Dette element vil blive slettet permanent og kan ikke gendannes.",confirmEmptyAllTitle:"Tøm senest slettede?",confirmEmptyAllMessage:"Alle {{count}} elementer vil blive slettet permanent og kan ikke gendannes."},Hw={title:"Opgrader boks",subtitle:"AliasVault er blevet opdateret, og din boks skal opgraderes. Dette bør kun tage et par sekunder.",versionInformation:"Versionsinformation",yourVault:"Din boks-version:",newVersion:"Ny tilgængelig version:",upgrade:"Opgrader boks",upgrading:"Opgraderer...",whatsNew:"Hvad er nyt",whatsNewDescription:"En opgradering er påkrævet for at understøtte følgende ændringer:",noDescriptionAvailable:"Ingen beskrivelse tilgængelig for denne version.",alerts:{unableToGetVersionInfo:"Kunne ikke hente versionsinformation. Prøv venligst igen.",selfHostedServer:"Selv-hosted server",selfHostedWarning:"Hvis du bruger en selv-hosted server, skal du sørge for også at opdatere din selv-hostede instans, da logon til webklienten ellers vil stoppe med at virke.",continueUpgrade:"Fortsæt opgradering",upgradeFailed:"Opgradering fejlede",failedToApplyMigration:"Kunne ikke anvende migrering ({{current}} af {{total}})"}},Vw={unsyncedChangesTitle:"Ikke-synkroniserede ændringer",unsyncedChangesWarning:"Du har ændringer, der ikke er synkroniseret, som vil gå tabt, hvis du logger ud nu. Er du sikker på, at du vil fortsætte?",logoutAnyway:"Log ud alligevel"},zw={offline:"Offline",tapToRetry:"Tryk for at prøve synkronisering igen",syncErrorTitle:"Synkronisering Mislykkedes",syncErrorDismiss:"Afvis"},Qw={auth:kw,menu:xw,common:Lw,content:Dw,items:Rw,itemTypes:Uw,fieldLabels:Mw,totp:_w,attachmentUploader:Fw,emails:Bw,settings:Pw,passkeys:Ow,recentlyDeleted:jw,upgrade:Hw,logout:Vw,sync:zw},CM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:Fw,auth:kw,common:Lw,content:Dw,default:Qw,emails:Bw,fieldLabels:Mw,itemTypes:Uw,items:Rw,logout:Vw,menu:xw,passkeys:Ow,recentlyDeleted:jw,settings:Pw,sync:zw,totp:_w,upgrade:Hw},Symbol.toStringTag,{value:"Module"})),Kw={loginTitle:"Bei AliasVault anmelden",username:"Benutzername oder E-Mail-Adresse",usernamePlaceholder:"Name / name@unternehmen.com",passwordPlaceholder:"Gib Dein Passwort ein",rememberMe:"Angemeldet bleiben",loginButton:"Anmelden",noAccount:"Noch kein Konto?",createVault:"Neuen Tresor erstellen",twoFactorTitle:"Bitte gib den Sicherheits-Code aus Deiner Authentifizierungs-App ein.",authCode:"Sicherheits-Code",authCodePlaceholder:"Gib den 6-stelligen Sicherheits-Code ein",verify:"Bestätige",twoFactorNote:"Hinweis: Wenn Du keinen Zugriff auf Dein Authentifizierungsgerät hast, kannst Du Deine Zwei-Faktor-Authentifizierung (2FA) mit einem Wiederherstellungscode zurücksetzen, indem Du Dich über die Website anmeldest.",masterPassword:"Master-Passwort",unlockVault:"Entsperren",unlockWithPin:"Mit PIN entsperren",enterPinToUnlock:"Bitte gib Deine PIN zum Entsperren des Tresors ein",useMasterPassword:"Master-Passwort verwenden",unlockTitle:"Entsperre Deinen Tresor",logoutConfirm:"Bist Du sicher, dass Du Dich abmelden möchtest?",unlockSuccessTitle:"Dein Tresor wurde erfolgreich entsperrt",unlockSuccessDescription:"Du kannst jetzt die Autofill-Funktion in Anmeldeformularen in Deinem Browser nutzen.",closePopup:"Popup schließen",browseVault:"Tresor durchsuchen",autoCloseUnlockPopup:"Bei zukünftigen Anmeldungen automatisch schließen",connectingTo:"Verbinde zu",switchAccounts:"Konto wechseln?",loginWithMobile:"Mit mobiler App anmelden",unlockWithMobile:"Mit mobiler App entsperren",scanQrCode:"Scanne diesen QR-Code mit Deiner AliasVault-App, um Dich anzumelden und Deinen Tresor zu entsperren.",passwordAttemptsWarning:"Ungültiges Passwort. Noch {{remainingAttempts}} Versuche bis zur Abmeldung.",maxAttemptsReached:"Zu viele fehlgeschlagene Entsperrversuche. Du wurdest aus Sicherheitsgründen abgemeldet."},Gw={vault:"Tresor",emails:"E-Mails"},Ww={loading:"Laden...",notice:"Hinweis",error:"Fehler",cancel:"Abbrechen",confirm:"Bestätigen",remove:"Entfernen",back:"Zurück",next:"Weiter",use:"Verwenden",add:"Hinzufügen",delete:"Löschen",undo:"Rückgängig machen",save:"Speichern",saving:"Wird gespeichert ...",edit:"Bearbeiten",create:"Erstellen",or:"oder",close:"Schließen",dismiss:"Schließen",logout:"Abmelden",copied:"Kopiert!",openInNewWindow:"In neuem Fenster öffnen",enabled:"Aktiviert",disabled:"Deaktiviert",showPassword:"Passwort anzeigen",hidePassword:"Passwort ausblenden",show:"Anzeigen",hide:"Ausblenden",showDetails:"Details anzeigen",hideDetails:"Details ausblenden",copyToClipboard:"In die Zwischenablage kopieren",loadingEmails:"E-Mails werden geladen...",loadingTotpCodes:"TOTP-Codes werden geladen...",attachments:"Anhänge",loadingAttachments:"Anhänge werden geladen...",settings:"Einstellungen",recentEmails:"Neueste E-Mails",credentials:"Zugangsdaten",customFields:"Benutzerdefinierte Felder",twoFactorAuthentication:"Zwei-Faktor-Authentifizierung",alias:"Alias",notes:"Notizen",email:"E-Mail-Adresse",username:"Benutzername",password:"Passwort",generate:"Erzeugen",serviceName:"Name des Dienstes",loggedIn:"Angemeldet",syncingVault:"Tresor wird synchronisiert",checkingVaultUpdates:"Prüfe auf Tresor-Änderungen",syncingUpdatedVault:"Geänderter Tresor-Inhalt wird synchronisiert",loadMore:"Mehr laden",offline:"Offline",offlineMode:"Arbeitet im Offline-Modus",pendingSync:"Synchronisierung läuft...",mergingVaultChanges:"Tresor Änderungen zusammenführen...",uploadingVault:"Tresor wird hochgeladen...",errors:{serverNotAvailable:"Der AliasVault-Server ist nicht erreichbar. Bitte versuche es später noch einmal oder kontaktiere den Support, falls das Problem weiterhin besteht.",clientVersionNotSupported:"Diese Version der AliasVault-Browser-Erweiterung wird vom Server nicht mehr unterstützt. Bitte aktualisiere Deine Browser-Erweiterung auf die neueste Version.",browserExtensionOutdated:"Diese Browser-Erweiterung ist veraltet und kann nicht verwendet werden, um auf diesen Tresor zuzugreifen. Bitte aktualisiere die Browser-Erweiterung, um fortzufahren.",serverVersionNotSupported:"Der AliasVault-Server muss auf eine neuere Version aktualisiert werden, um diese Browser-Erweiterung nutzen zu können. Bitte kontaktiere den Support, falls Du Hilfe benötigst.",serverVersionTooOld:"Der AliasVault-Server muss auf eine neuere Version aktualisiert werden, um dieses Feature nutzen zu können. Bitte kontaktiere den Administrator des Servers, falls Du Hilfe benötigst.",unknownError:"Ein unbekannter Fehler ist aufgetreten",unknownErrorTryAgain:"Ein unbekannter Fehler ist aufgetreten. Bitte versuche es erneut.",vaultNotAvailable:"Tresor nicht verfügbar",vaultIsLocked:"Der Tresor ist gesperrt",passwordChanged:"Dein Passwort hat sich seit Deiner letzten Anmeldung geändert. Bitte melden Dich aus Sicherheitsgründen erneut an.",syncConflictMaxRetries:"Tresor konnte trotz mehrmaliger Versuche nicht synchronisiert werden. Bitte versuche es später erneut.",mergeFailed:"Fehler beim Zusammenführen der Tresor-Änderungen. Bitte versuchen Sie es erneut.",vaultTooLarge:"Der Tresor ist zu groß für den Server. Versuche einige Elemente oder Anhänge zu entfernen, um die Größe zu verringern und versuche es dann erneut.",invalidCode:"Bitte gib einen gültigen 6-stelligen Sicherheits-Code ein.",serverError:"Der AliasVault-Server ist nicht erreichbar. Bitte versuche es später noch einmal oder kontaktiere den Support, falls das Problem weiterhin besteht.",wrongPassword:"Falsches Passwort. Bitte versuche es erneut.",sessionExpired:"Deine Sitzung ist abgelaufen. Bitte melde Dich erneut an.",mobileLoginRequestExpired:"Zeitüberschreitung für mobile Anmeldeanforderung. Bitte lade die Seite neu und versuche es erneut."},apiErrors:{UNKNOWN_ERROR:"Ein unbekannter Fehler ist aufgetreten. Bitte versuche es erneut.",ACCOUNT_LOCKED:"Das Konto wurde wegen zu vieler fehlgeschlagener Anmeldeversuche vorübergehend gesperrt. Bitte versuche es später erneut.",ACCOUNT_BLOCKED:"Dein Konto wurde deaktiviert. Wenn Du glaubst, dass dies ein Fehler ist, kontaktiere bitte den Support.",USER_NOT_FOUND:"Ungültiger Benutzername oder Passwort. Bitte versuche es erneut.",INVALID_AUTHENTICATOR_CODE:"Ungültiger Sicherheits-Code. Bitte versuche es erneut.",INVALID_RECOVERY_CODE:"Ungültiger Wiederherstellungscode. Bitte versuche es erneut.",REFRESH_TOKEN_REQUIRED:"Aktualisierungstoken ist erforderlich.",INVALID_REFRESH_TOKEN:"Ungültiger Aktualisierungstoken.",PUBLIC_REGISTRATION_DISABLED:"Die Registrierung eines neuen Kontos ist auf diesem Server derzeit deaktiviert. Bitte kontaktiere den Administrator.",USERNAME_REQUIRED:"Der Benutzername ist erforderlich.",USERNAME_ALREADY_IN_USE:"Benutzername ist bereits vergeben.",USERNAME_AVAILABLE:"Der Benutzername ist verfügbar.",USERNAME_MISMATCH:"Der Benutzername stimmt nicht mit dem aktuellen Benutzer überein.",PASSWORD_MISMATCH:"Das angegebene Passwort stimmt nicht mit Deinem aktuellen Passwort überein.",ACCOUNT_SUCCESSFULLY_DELETED:"Konto erfolgreich gelöscht.",USERNAME_EMPTY_OR_WHITESPACE:"Der Benutzername darf nicht leer sein.",USERNAME_TOO_SHORT:"Der Benutzername ist zu kurz. Er muss mindestens 3 Zeichen lang sein.",USERNAME_TOO_LONG:"Der Benutzername ist zu lang. Er darf höchstens 40 Zeichen lang sein.",USERNAME_INVALID_EMAIL:"Ungültige E-Mail-Adresse.",USERNAME_INVALID_CHARACTERS:"Der Benutzername ist ungültig. Er darf nur aus Buchstaben oder Ziffern bestehen.",VAULT_NOT_UP_TO_DATE:"Dein Tresor ist nicht aktuell. Bitte synchronisiere Deinen Tresor und versuche es erneut.",INTERNAL_SERVER_ERROR:"Interner Server Fehler.",VAULT_ERROR:"Der lokale Tresor ist nicht aktuell. Bitte synchronisiere Deinen Tresor, indem Du die Seite aktualisierst, und versuche es erneut."}},qw={or:"oder",new:"Neu",vaultLocked:"AliasVault ist gesperrt.",creatingNewAlias:"Neuen Alias erstellen...",noMatchesFound:"Keine Treffer gefunden",searchVault:"Tresor durchsuchen...",enterServiceName:"Name des Dienstes eingeben",enterEmailAddress:"E-Mail-Adresse eingeben",enterUsername:"Benutzername eingeben",hideFor1Hour:"Für 1 Stunde ausblenden (aktuelle Seite)",hidePermanently:"Dauerhaft ausblenden (aktuelle Seite)",createRandomAlias:"Zufälligen Alias generieren",createUsernamePassword:"Benutzername/Passwort erstellen",randomAlias:"Zufälliger Alias",usernamePassword:"Benutzername/Passwort",createAndSaveAlias:"Alias erstellen und speichern",createAndSaveCredential:"Zugang erstellen und speichern",randomIdentityDescription:"Generiere eine zufällige Identität mit einer zufälligen E-Mail-Adresse von AliasVault.",randomIdentityDescriptionDropdown:"Zufällige Identität mit zufälliger E-Mail-Adresse",manualCredentialDescription:"Gebe Deine eigene E-Mail-Adresse und Benutzernamen an.",manualCredentialDescriptionDropdown:"Manueller Benutzername und Passwort",failedToCreateIdentity:"Das Erstellen der Identität ist fehlgeschlagen. Bitte versuche es erneut.",enterEmailAndOrUsername:"E-Mail-Adresse und/oder Benutzername eingeben",autofillWithAliasVault:"Autofill mit AliasVault",generateRandomPassword:"Zufälliges Passwort erzeugen (wird in die Zwischenablage kopiert)",generateNewPassword:"Neues Passwort erzeugen",togglePasswordVisibility:"Passwort ein-/ausblenden",passwordCopiedToClipboard:"Passwort in die Zwischenablage kopiert",openAliasVaultToUpgrade:"Zum Aktualisieren AliasVault öffnen",vaultUpgradeRequired:"Aktualisierung des Tresors erforderlich.",dismissPopup:"Popup schließen",noTotpItemsFound:"Kein passender 2FA-Code gefunden",close:"Schließen",savePrompt:{title:"In AliasVault speichern?",neverForThisSite:"Niemals für diese Webseite",addUrlTitle:"URL zu Anmeldeinformationen hinzufügen?"}},Yw={title:"Elemente",itemName:"Name",loginCredentials:"Zugangsdaten",cardInformation:"Karteninformationen",addItem:"Element hinzufügen",addNewItem:"Neues Element hinzufügen",saveItem:"Element speichern",itemDetails:"Details",editItem:"Element bearbeiten",untitled:"Unbenannt",newFolder:"Neuer Ordner",createFolder:"Ordner erstellen",editFolder:"Ordner bearbeiten",folderName:"Ordnername",folderNameRequired:"Ordnername ist erforderlich",folder:"Ordner",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"Du möchtest die AliasVault-Browser-Erweiterung verwenden? Navigiere zu einer Website und verwende das AliasVault-Popup-Fenster um einen neuen Zugang zu erstellen.",noMatchingItems:"Keine Elemente entsprechen den ausgewählten Filtern.",noMatchingItemsSearch:'Keine passenden Elemente "{{search}}"',noMatchingItemsWithFilter:'Keine {{filter}} Elemente passend zu "{{search}}"',clearSearch:"Suche löschen",clearFilter:"Filter löschen",emptyFolderHint:"Dieser Ordner ist leer. Um Elemente in diesen Ordner zu verschieben, bearbeiten Sie das Element und wählen Sie diesen Ordner.",allItemsInFolders:"Alle Ihre Elemente sind in Ordnern organisiert. Tippen Sie auf einen Ordner oben, um Ihre Anmeldedaten anzuzeigen, oder verwenden Sie die Suche, um bestimmte Elemente zu finden.",deleteFolder:"Ordner löschen",deleteFolderKeepItems:"Nur Ordner löschen",deleteFolderKeepItemsDescription:"Elemente werden in den übergeordneten Ordner verschoben.",deleteFolderAndItems:"Ordner und alle Elemente löschen",deleteFolderAndItemsDescription:'{{count}} Element(e) nach "Kürzlich gelöscht" verschoben.',filters:{folders:"Ordner",passkeys:"Passkeys",totp:"2FA-Codes"},sort:{title:"Sortieren nach",oldestFirst:"Älteste zuerst",newestFirst:"Neuste zuerst",alphabetical:"Alphabetisch (A-Z)"},deleteItemTitle:"Element löschen",deleteItemConfirm:"Bist Du sicher, dass Du dieses Element löschen möchtest?",viewHistory:"Historie ansehen",history:"Historie",noHistoryAvailable:"Keine Historie verfügbar",tags:"Schlagwörter",changePasswordComplexity:"Komplexität des Passworts ändern",passwordLength:"Passwortlänge",includeLowercase:"Kleinbuchstaben (a-z)",includeUppercase:"Großbuchstaben (A-Z)",includeNumbers:"Ziffern (0-9)",includeSpecialChars:"Sonderzeichen (!@#$%^&*)",avoidAmbiguousChars:"Mehrdeutige Zeichen (1, l, I, 0, O, etc.) vermeiden",privateEmailTitle:"Private E-Mail-Adresse",privateEmailAliasVaultServer:"AliasVault-Server",privateEmailDescription:"Ende-zu-Ende verschlüsselt, vollständig privat.",publicEmailTitle:"Öffentliche Temp-E-Mail-Anbieter",publicEmailDescription:"Anonyme, aber beschränkte Privatsphäre. E-Mail-Inhalt ist für jeden lesbar, der die Adresse kennt.",validation:{required:"Dieses Feld ist ein Pflichtfeld"}},Jw={selectType:"Neues Element hinzufügen",typeLabel:"Elementtyp",creating:"Wird erstellt",editing:"Bearbeiten",regenerateAlias:"Alias neu generieren",addCustomField:"Benutzerdefiniertes Feld hinzufügen",fieldLabel:"Feldbezeichnung",enterFieldName:"Feldnamen eingeben",fieldType:"Feldtyp",fieldTypes:{text:"Text",hidden:"Versteckt (maskierter Text)",email:"E-Mail",url:"URL",phone:"Telefon",number:"Nummer",date:"Datum",textArea:"Mehrzeiliger Text"},login:{title:"Anmeldung"},alias:{title:"Alias"},creditCard:{title:"Kreditkarte"},note:{title:"Sichere Notiz"}},Xw={"login.url":"Webseiten-URL","login.username":"Benutzername","login.password":"Passwort","alias.first_name":"Vorname","alias.last_name":"Nachname","alias.gender":"Geschlecht","alias.birthdate":"Geburtsdatum","login.email":"E-Mail","notes.content":"Notizen","card.cardholder_name":"Name des Karteninhabers","card.number":"Kartennummer","card.expiry_month":"Ablaufmonat","card.expiry_year":"Ablaufjahr","card.cvv":"Sicherheitscode","card.pin":"PIN"},$w={addCode:"2FA-Code hinzufügen",instructions:"Gib den Secret-Key ein, der von der Website angezeigt wird, bei der Du die Zwei-Faktor-Authentifizierung hinzufügen möchtest.",nameOptional:"Name (optional)",secretKey:"Secret-Key",saveToViewCode:"Speichern, um den Code anzuzeigen",defaultName:"Authenticator",deleteTotpCodeTitle:"Lösche 2FA-Code",deleteTotpCodeConfirmation:'Bist du sicher, dass du den 2FA-Code "{{name}}" löschen willst?',errors:{invalidSecretKey:"Ungültiges Format des Secret-Key"}},Zw={uploading:"Hochladen...",uploadSuccess:"Dateien erfolgreich hochgeladen.",deleteSuccess:"Anhang wurde erfolgreich gelöscht.",firefoxExpandRequired:"Um Dateien hochzuladen, benutze das erweiterte Fenster.",openExpandedWindow:"Erweitertes Fenster öffnen"},eI={title:"E-Mails",deleteEmailTitle:"E-Mail löschen",deleteEmailConfirm:"Bist Du sicher, dass Du diese E-Mail unwiderruflich löschen möchtest?",from:"Von",to:"An",date:"Datum",emailContent:"Inhalt der E-Mail",emailNotFound:"E-Mail nicht gefunden",noEmails:"Keine E-Mails gefunden",noEmailsDescription:"Du hast bisher keine E-Mails an Deine privaten E-Mail-Adressen erhalten. Neue E-Mails werden hier angezeigt, sobald sie eintreffen.",offlineMessage:"Keine Verbindung. Bitte verbinde Dich mit dem Internet, um Deine E-Mails zu laden.",loadMore:"Weitere laden ({{count}} verbleibend)",dateFormat:{justNow:"gerade eben",minutesAgo_single:"vor {{count}} Minute",minutesAgo_plural:"vor {{count}} Minuten",hoursAgo_single:"vor {{count}} Stunde",hoursAgo_plural:"vor {{count}} Stunden",yesterday:"gestern"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Die aktuell gewählte E-Mail-Adresse wird bereits verwendet. Bitte ändere die E-Mail-Adresse, indem Du diese Zugangsdaten bearbeitest.",CLAIM_DOES_NOT_EXIST:"Beim Laden der E-Mails ist ein Fehler aufgetreten. Bitte bearbeite und speichere das Element, um die Datenbank zu synchronisieren, und versuche es dann erneut."}},tI={serverUrl:"URL des Servers",language:"Sprache",autofillEnabled:"Autofill aktivieren",version:"Version",openWebApp:"Web-App öffnen",lock:"Sperren",globalSettings:"Allgemeine Einstellungen",activeOnAllSites:"Auf allen Seiten aktiv (sofern nicht unten deaktiviert)",disabledOnAllSites:"Auf allen Seiten deaktiviert",rightClickContextMenu:"Kontextmenü mit Rechtsklick",autofillMatching:"Autofill-Übereinstimmung",autofillMatchingMode:"Autofill-Übereinstimmungs-Modus",autofillMatchingModeDescription:"Legt fest, welche Zugangsdaten als Übereinstimmung angesehen und als Vorschlag im Autofill-Popup für eine bestimmte Website angezeigt werden.",autofillMatchingDefault:"URL + Subdomain + Wildcard-Name",autofillMatchingUrlSubdomain:"URL + Subdomain",autofillMatchingUrlExact:"Nur exakte URL-Domain",siteSpecificSettings:"Seitenspezifische Einstellungen",enabledForThisSite:"Für diese Seite aktiviert",disabledForThisSite:"Für diese Seite deaktivieren",resetAllSiteSettings:"Alle seitenspezifischen Einstellungen zurücksetzen",disabledSites:"Deaktivierte Webseiten",disabledSitesDescription:"Webseiten, wo das Autofill-Popup nicht angezeigt wird.",clearAllDisabledSites:"List der deaktivierten Webseiten leeren",temporaryUntil:"bis",appearance:"Erscheinungsbild",theme:"Thema",useDefault:"Standard verwenden",light:"Hell",dark:"Dunkel",keyboardShortcuts:"Tastaturkürzel",configureKeyboardShortcuts:"Tastaturkürzel konfigurieren",configure:"Konfigurieren",clipboardClearTimeout:"Zwischenablage nach dem Kopieren automatisch löschen",clipboardClearTimeoutDescription:"Zwischenablage nach dem Kopieren sensibler Daten automatisch löschen",clipboardClearDisabled:"Niemals löschen",clipboardClear5Seconds:"Nach 5 Sekunden löschen",clipboardClear10Seconds:"Nach 10 Sekunden löschen",clipboardClear15Seconds:"Nach 15 Sekunden löschen",autoLockTimeout:"Sperr-Timeout",autoLockTimeoutDescription:"Tresor bei Inaktivität automatisch sperren",autoLockTimeoutHelp:"Der Tresor wird erst nach dem angegebenen Zeitraum der Inaktivität gesperrt (keine Nutzung von Auto-Fill oder Öffnen des Erweiterungs-Popups). Der Tresor wird immer gesperrt, wenn der Browser geschlossen wird, unabhängig von dieser Einstellung.",autoLockNever:"Niemals",autoLock15Seconds:"15 Sekunden",autoLock30Seconds:"30 Sekunden",autoLock1Minute:"1 Minute",autoLock5Minutes:"5 Minuten",autoLock15Minutes:"15 Minuten",autoLock30Minutes:"30 Minuten",autoLock1Hour:"1 Stunde",autoLock4Hours:"4 Stunden",autoLock8Hours:"8 Stunden",autoLock24Hours:"24 Stunden",versionPrefix:"Version ",autofillSettings:"Autofill-Einstellungen",clipboardSettings:"Zwischenablage-Einstellungen",contextMenuSettings:"Kontextmenü-Einstellungen",passkeySettings:"Passkey-Einstellungen",contextMenuDescription:"Rechtsklicke auf Eingabefelder, um auf AliasVault-Optionen zuzugreifen",selectLanguage:"Sprache auswählen",serverConfiguration:"Serverkonfiguration",serverConfigurationDescription:"AliasVault-Server-URL für selbstgehostete Instanzen konfigurieren",customApiUrl:"API-URL",customClientUrl:"Client-URL",apiUrlHint:"Die API-Endpunkt-URL (normalerweise Client-URL + /api)",clientUrlHint:"Die URL der Webschnittstelle Deiner selbst gehosteten Instanz",autofillSettingsDescription:"Aktiviere oder deaktiviere das Autofill-Popup auf Webseiten",autofillEnabledDescription:"Autofill-Vorschläge werden auf den Anmeldeformularen angezeigt",autofillDisabledDescription:"Autofill-Vorschläge sind global deaktiviert",languageSettings:"Sprache",validation:{apiUrlRequired:"API-URL ist erforderlich",apiUrlInvalid:"Bitte gib eine gültige API-URL ein",clientUrlRequired:"Client-URL ist erforderlich",clientUrlInvalid:"Bitte gib eine gültige Client-URL ein"},identityGenerator:"Identitätsgenerator",identityGeneratorSettings:{description:"Lege die Standardsprache und Geschlechtspräferenz für die Erstellung neuer Identitäten fest.",languageSection:"Sprache",languageDescription:"Lege die Sprache fest, die bei der Erstellung neuer Identitäten verwendet wird.",genderSection:"Geschlecht",genderDescription:"Lege die Geschlechtspräferenz für die Erstellung neuer Identitäten fest.",ageRangeSection:"Altersspanne",ageRangeDescription:"Lege die Altersspanne für die Erstellung neuer Identitäten fest.",genderOptions:{random:"Zufällig",male:"Männlich",female:"Weiblich"}},credentialAutofill:"Anmeldeinformationen-Autofill",credentialAutofillDescription:"Zeige Autofill Popup wenn Benutzername/Passwort-Felder erkannt wurden",totpAutofill:"2FA-Code Autofill",totpAutofillDescription:"Zeige Autofill-Popup wenn 2FA-Code-Felder erkannt wurden",autoCopyTotpOnAutofill:"2FA-Code automatisch in die Zwischenablage kopieren",autoCopyTotpOnAutofillDescription:"Kopiere automatisch den nächsten 2FA-Code in die Zwischenablage wenn die Zugangsdaten per Autofill ausgefüllt wurden",loginSave:{title:"Aufforderung zum Speichern von Anmeldedaten anzeigen",description:"Zeige eine Aufforderung zum Speichern von Anmeldedaten, wenn Du ein Anmeldeformular einer Webseite ausfüllst.",blockedSites:"Gesperrte Webseiten",blockedSitesDescription:"Webseiten wo keine Speicheraufforderung angezeigt wird.",clearAllBlockedSites:"Alle gesperrten Webseiten zurücksetzen"},unlockMethod:{title:"Methode zum Entsperren des Tresors",introText:"Wähle, wie Du Deinen Tresor entsperren möchtest. Du kannst Dein Master-Passwort verwenden (immer verfügbar) oder einen PIN-Code für einen schnelleren Zugriff einrichten. Nach drei fehlgeschlagenen PIN-Versuchen musst Du Dein Master-Passwort verwenden.",password:"Master-Passwort",pin:"PIN-Code",pinDescription:"Tresor mit PIN entsperren",setupPin:"PIN-Code einrichten",enterNewPinDescription:"PIN-Code aus mindestens 6 Ziffern eingeben",confirmPin:"PIN bestätigen",confirmPinDescription:"Zur Bestätigung PIN erneut eingeben",invalidPinFormat:"Ungültiges PIN-Format",pinMismatch:"PINs stimmen nicht überein",incorrectPin:"Falsche PIN. {{attemptsRemaining}} verbleibende Versuche.",incorrectPinSingular:"Falsche PIN. Ein Versuch übrig.",enableSuccess:"PIN-Sperre erfolgreich aktiviert!",pinLocked:"Die PIN-Sperre wurde deaktiviert. Bitte nutze Dein Master-Passwort, um Deinen Tresor zu entsperren.",pinSecurityWarning:"Die PIN-Entsperre in der Browser-Erweiterung kann weniger sicher Dein Master-Passwort sein, da PINs typischerweise eine niedrigere Entropie haben und möglicherweise gebruteforced werden können, wenn Dein Gerät kompromittiert wird. Benutze es nur auf Geräten, denen Du vollkommen vertraust."}},aI={passkey:"Passkey",site:"Seite",helpText:"Passkeys werden auf der Webseite erzeugt. Sie können nicht manuell erstellt oder bearbeitet werden. Um diesen Passkey zu entfernen, kannst Du ihn von diesem Zugang löschen. Um einen Passkey zu ersetzen oder neu zu erstellen, rufe die entsprechende Webseite auf und folge den dortigen Anweisungen.",passkeyMarkedForDeletion:"Passkey zum Löschen vorgemerkt",passkeyWillBeDeleted:"Dieser Passkey wird gelöscht, wenn Du den Zugang speicherst.",useBrowserPasskey:"Browser-Passkey verwenden",bypass:{description:"Wie lange möchtest Du den Passkey-Anbieter des Browsers für {{origin}} verwenden?",thisTimeOnly:"Nur dieses Mal",alwaysForSite:"Immer für diese Webseite"},authenticate:{title:"Mit Passkey anmelden",signInFor:"Mit Passkey anmelden für",selectPasskey:"Wähle einen Passkey zum Anmelden aus:",noPasskeysFound:"Kein Passkey für diese Seite gefunden"},create:{title:"Passkey erstellen",createFor:"Neuen Passkey erstellen für",titleLabel:"Titel",titlePlaceholder:"Gib einen Namen für diesen Passkey ein",createButton:"Passkey erstellen",selectPasskeyToReplace:"Wähle einen Passkey zum Ersetzen:",createNewPasskey:"Neuen Passkey erstellen",replacingPasskey:"Ersetzen des Passkeys: {{displayName}}",confirmReplace:"Ersetzen bestätigen",selectExistingLogin:"Zu bestehendem Login hinzufügen:",selectExistingLoginDescription:"Diesen Passkey zu bestehenden Anmeldedaten für diese Webseite hinzufügen.",attachingToCredential:"Passkey zu {{serviceName}} hinzufügen",attachPasskey:"Passkey hinzufügen"},settings:{passkeyProvider:"Passkey-Anbieter",passkeyProviderOn:"Passkey-Anbieter an "}},nI={title:"Kürzlich gelöscht",noItems:"Keine gelöschten Elemente",noItemsDescription:"Elemente, die Du löscht, werden hier {{days}} Tage lang erscheinen, bevor sie endgültig entfernt werden.",description:"Diese Elemente werden nach {{days}} Tagen endgültig gelöscht. Du kannst sie wiederherstellen oder sofort löschen.",restore:"Wiederherstellen",deletePermanently:"Endgültig löschen",emptyAll:"Alle leeren",daysRemaining_one:"Noch {{count}} Tage",daysRemaining_other:"Noch {{count}} Tage",expiringSoon:"Läuft bald ab",confirmDeleteTitle:"Endgültig löschen?",confirmDeleteMessage:"Dieses Element wird dauerhaft gelöscht und kann nicht wiederhergestellt werden.",confirmEmptyAllTitle:"Zuletzt gelöscht leeren?",confirmEmptyAllMessage:"Alle {{count}} Elemente werden dauerhaft gelöscht und können nicht wiederhergestellt werden."},iI={title:"Tresor aktualisieren",subtitle:"AliasVault wurde aktualisiert. Dadurch muss auch Dein Tresor aktualisiert werden. Dies sollte nur wenige Sekunden dauern.",versionInformation:"Versionsinformationen",yourVault:"Version Deines Tresors:",newVersion:"Neue verfügbare Version:",upgrade:"Tresor aktualisieren",upgrading:"Aktualisieren...",whatsNew:"Neu in dieser Version",whatsNewDescription:"Eine Aktualisierung ist erforderlich, um die folgenden Änderungen zu unterstützen:",noDescriptionAvailable:"Für diese Version ist keine Beschreibung vorhanden.",alerts:{unableToGetVersionInfo:"Versionsinformationen konnten nicht abgerufen werden. Bitte versuche es erneut.",selfHostedServer:"Selbst gehosteter Server",selfHostedWarning:"Nutzt Du einen selbst gehosteten Server, musst Du Deine Instanz ebenfalls updaten. Andernfalls kannst Du Dich im Web-Client nicht mehr anmelden.",continueUpgrade:"Aktualisierung fortsetzen",upgradeFailed:"Aktualisierung fehlgeschlagen",failedToApplyMigration:"Migration fehlgeschlagen ({{current}} von {{total}})"}},rI={unsyncedChangesTitle:"Nicht synchronisierte Änderungen",unsyncedChangesWarning:"Sie haben nicht synchronisierte Änderungen, die verloren gehen, wenn Sie sich jetzt abmelden. Sind Sie sicher, dass Sie fortfahren möchten?",logoutAnyway:"Trotzdem abmelden"},sI={offline:"Offline",tapToRetry:"Tippen, um die Synchronisierung erneut zu probieren",syncErrorTitle:"Synchronisierung fehlgeschlagen",syncErrorDismiss:"Schließen"},oI={auth:Kw,menu:Gw,common:Ww,content:qw,items:Yw,itemTypes:Jw,fieldLabels:Xw,totp:$w,attachmentUploader:Zw,emails:eI,settings:tI,passkeys:aI,recentlyDeleted:nI,upgrade:iI,logout:rI,sync:sI},SM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:Zw,auth:Kw,common:Ww,content:qw,default:oI,emails:eI,fieldLabels:Xw,itemTypes:Jw,items:Yw,logout:rI,menu:Gw,passkeys:aI,recentlyDeleted:nI,settings:tI,sync:sI,totp:$w,upgrade:iI},Symbol.toStringTag,{value:"Module"})),lI={loginTitle:"Log in to AliasVault",username:"Username or email",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Log in",noAccount:"No account yet?",createVault:"Create new vault",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Authentication Code",authCodePlaceholder:"Enter 6-digit code",verify:"Verify",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Master Password",unlockVault:"Unlock",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Connecting to",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},dI={vault:"Vault",emails:"Emails"},cI={loading:"Loading...",notice:"Notice",error:"Error",cancel:"Cancel",confirm:"Confirm",remove:"Remove",back:"Back",next:"Next",use:"Use",add:"Add",delete:"Delete",undo:"Undo",save:"Save",saving:"Saving...",edit:"Edit",create:"Create",or:"Or",close:"Close",dismiss:"Dismiss",logout:"Logout",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Show password",hidePassword:"Hide password",show:"Show",hide:"Hide",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Attachments",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Two-factor authentication",alias:"Alias",notes:"Notes",email:"Email",username:"Username",password:"Password",generate:"Generate",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Load more",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"An unknown error occurred. Please try again.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"An unknown error occurred. Please try again.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},uI={or:"or",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill username/password",autofillTotp:"Autofill 2FA",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Close",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},mI={title:"Items",itemName:"Name",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},gI={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Email",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},pI={"login.url":"Website URL","login.username":"Username","login.password":"Password","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"Email","notes.content":"Notes","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},hI={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},fI={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},AI={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},yI={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},EI={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Title",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},bI={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},vI={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},wI={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},II={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},CI={auth:lI,menu:dI,common:cI,content:uI,items:mI,itemTypes:gI,fieldLabels:pI,totp:hI,attachmentUploader:fI,emails:AI,settings:yI,passkeys:EI,recentlyDeleted:bI,upgrade:vI,logout:wI,sync:II},TM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:fI,auth:lI,common:cI,content:uI,default:CI,emails:AI,fieldLabels:pI,itemTypes:gI,items:mI,logout:wI,menu:dI,passkeys:EI,recentlyDeleted:bI,settings:yI,sync:II,totp:hI,upgrade:vI},Symbol.toStringTag,{value:"Module"})),SI={loginTitle:"Iniciar sesión en AliasVault",username:"Nombre de usuario o correo electrónico",usernamePlaceholder:"nombre / nombre@empresa.com",passwordPlaceholder:"Introduzca su contraseña",rememberMe:"Recordar mis datos",loginButton:"Iniciar sesión",noAccount:"¿Sin cuenta todavía?",createVault:"Crear nueva bóveda",twoFactorTitle:"Por favor, introduzca el código de autenticación de su aplicación de autenticación.",authCode:"Código de autenticación",authCodePlaceholder:"Introduzca código de 6 dígitos",verify:"Verificar",twoFactorNote:"Nota: si no tiene acceso a su dispositivo de autenticación, puede restablecer su 2FA con un código de recuperación iniciando sesión a través del sitio web.",masterPassword:"Contraseña Maestra",unlockVault:"Desbloquear",unlockWithPin:"Desbloquear con PIN",enterPinToUnlock:"Introduzca su PIN para desbloquear su bóveda",useMasterPassword:"Usar Contraseña Maestra",unlockTitle:"Desbloquear tu Bóveda",logoutConfirm:"¿Estás seguro de que quieres cerrar sesión?",unlockSuccessTitle:"Tu bóveda se ha desbloqueado correctamente",unlockSuccessDescription:"Ahora puede utilizar el autocompletado en los formularios de inicio de sesión en su navegador.",closePopup:"Cerrar esta ventana emergente",browseVault:"Navegar en el contenido de la bóveda",autoCloseUnlockPopup:"Auto-cerrar en futuros inicios de sesión",connectingTo:"Conectando con",switchAccounts:"¿Cambiar de cuenta?",loginWithMobile:"Iniciar sesión con la aplicación móvil",unlockWithMobile:"Desbloquear con la aplicación móvil",scanQrCode:"Escanea este código QR con tu aplicación móvil de AliasVault para iniciar sesión y desbloquear tu bóveda.",passwordAttemptsWarning:"Contraseña incorrecta. Se cerrará la sesión si introduce la contraseña incorrecta {{remainingAttempts}} más veces.",maxAttemptsReached:"Demasiados intentos de desbloqueo fallidos. Se ha cerrado la sesión por razones de seguridad."},TI={vault:"Bóveda",emails:"Correos electrónicos"},NI={loading:"Cargando...",notice:"Aviso",error:"Error",cancel:"Cancelar",confirm:"Confirmar",remove:"Eliminar",back:"Atrás",next:"Siguiente",use:"Usar",add:"Añadir",delete:"Borrar",undo:"Deshacer",save:"Guardar",saving:"Guardando...",edit:"Edit",create:"Crear",or:"O",close:"Cerrar",dismiss:"Descartar",logout:"Cerrar sesión",copied:"¡Copiado!",openInNewWindow:"Abrir en una ventana nueva",enabled:"Habilitado",disabled:"Desactivado",showPassword:"Mostrar contraseña",hidePassword:"Ocultar contraseña",show:"Mostrar",hide:"Esconder",showDetails:"Mostrar detalles",hideDetails:"Ocultar detalles",copyToClipboard:"Copiar al portapapeles",loadingEmails:"Cargando email...",loadingTotpCodes:"Cargando códigos TOTP...",attachments:"Archivos adjuntos",loadingAttachments:"Cargando archivos adjuntos...",settings:"Configuración",recentEmails:"Correos recientes",credentials:"Credenciales",customFields:"Campos Personalizados",twoFactorAuthentication:"Autenticación de doble factor",alias:"Alias",notes:"Notas",email:"Email",username:"Nombre de usuario",password:"Contraseña",generate:"Generar",serviceName:"Nombre del servicio",loggedIn:"Sesión iniciada",syncingVault:"Sincronizando bóveda",checkingVaultUpdates:"Comprobando actualizaciones de bóveda",syncingUpdatedVault:"Sincronizando bóveda actualizada",loadMore:"Cargar más",offline:"Desconectado",offlineMode:"Funcionando en modo sin conexión",pendingSync:"Sincronizando...",mergingVaultChanges:"Combinando cambios en la bóveda...",uploadingVault:"Subiendo bóveda...",errors:{serverNotAvailable:"El servidor AliasVault no está disponible. Por favor, inténtelo de nuevo más tarde o póngase en contacto con el soporte técnico si el problema persiste.",clientVersionNotSupported:"Esta versión de la extensión del navegador AliasVault ya no es compatible con el servidor. Por favor, actualice la extensión de su navegador a la última versión.",browserExtensionOutdated:"Esta extensión del navegador está desactualizada y no se puede utilizar para acceder a esta bóveda. Por favor, actualice esta extensión del navegador para continuar.",serverVersionNotSupported:"El servidor AliasVault necesita ser actualizado a una versión más reciente para poder usar esta extensión del navegador. Póngase en contacto con el soporte si necesita ayuda.",serverVersionTooOld:"El servidor AliasVault necesita ser actualizado a una versión más reciente para poder utilizar esta característica. Por favor, contacte con el administrador del servidor si necesita ayuda.",unknownError:"Se produjo un error desconocido",unknownErrorTryAgain:"Se ha producido un error desconocido. Por favor, inténtelo de nuevo.",vaultNotAvailable:"Bóveda no disponible",vaultIsLocked:"La bóveda está bloqueada",passwordChanged:"Tu contraseña ha cambiado desde la última vez que iniciaste sesión. Por favor, inicia sesión de nuevo por razones de seguridad.",syncConflictMaxRetries:"No se pudo sincronizar la bóveda después de múltiples intentos. Inténtalo de nuevo más tarde.",mergeFailed:"Error al combinar cambios en la bóveda. Por favor, inténtalo de nuevo.",vaultTooLarge:"La bóveda es demasiado grande para que el servidor lo acepte. Intente eliminar algunos elementos o archivos adjuntos para reducir el tamaño y vuelva a intentarlo.",invalidCode:"Por favor, introduzca un código de autenticación de 6 dígitos válido.",serverError:"No se pudo llegar al servidor AliasVault. Por favor, inténtelo de nuevo más tarde o póngase en contacto con el soporte si el problema persiste.",wrongPassword:"Contraseña incorrecta. Por favor, inténtelo de nuevo.",sessionExpired:"Su sesión ha caducado. Por favor, inicie sesión de nuevo.",mobileLoginRequestExpired:"Se ha agotado el tiempo de inicio de sesión del móvil. Por favor, vuelva a cargar la página e inténtelo de nuevo."},apiErrors:{UNKNOWN_ERROR:"Se ha producido un error desconocido. Por favor, inténtelo de nuevo.",ACCOUNT_LOCKED:"Cuenta bloqueada temporalmente debido a demasiados intentos fallidos. Por favor, inténtelo de nuevo.",ACCOUNT_BLOCKED:"Tu cuenta ha sido desactivada. Si crees que esto es un error, ponte en contacto con soporte.",USER_NOT_FOUND:"Nombre de usuario o contraseña no válidos. Por favor, inténtelo de nuevo.",INVALID_AUTHENTICATOR_CODE:"Código de autenticación inválido. Por favor, inténtelo de nuevo.",INVALID_RECOVERY_CODE:"Código de recuperación inválido. Por favor, inténtelo de nuevo.",REFRESH_TOKEN_REQUIRED:"Se requiere un token de actualización.",INVALID_REFRESH_TOKEN:"Token de actualización inválido.",PUBLIC_REGISTRATION_DISABLED:"El registro de nueva cuenta está actualmente deshabilitado en este servidor. Por favor, contacte con el administrador.",USERNAME_REQUIRED:"Se requiere un nombre de usuario.",USERNAME_ALREADY_IN_USE:"El nombre de usuario ya está en uso.",USERNAME_AVAILABLE:"El nombre de usuario está disponible.",USERNAME_MISMATCH:"El nombre de usuario no coincide con el usuario actual.",PASSWORD_MISMATCH:"La contraseña proporcionada no coincide con su contraseña actual.",ACCOUNT_SUCCESSFULLY_DELETED:"Cuenta eliminada con éxito.",USERNAME_EMPTY_OR_WHITESPACE:"El nombre de usuario no puede estar vacío o en blanco.",USERNAME_TOO_SHORT:"Nombre de usuario demasiado corto: debe tener al menos 3 caracteres.",USERNAME_TOO_LONG:"Nombre de usuario demasiado largo: no puede tener más de 40 caracteres.",USERNAME_INVALID_EMAIL:"Dirección de correo electrónico inválida.",USERNAME_INVALID_CHARACTERS:"El nombre de usuario inválido, solo puede contener letras o dígitos.",VAULT_NOT_UP_TO_DATE:"Su bóveda no está actualizada. Por favor, sincronice su bóveda e inténtelo de nuevo.",INTERNAL_SERVER_ERROR:"Error interno del servidor.",VAULT_ERROR:"La bóveda local no está actualizada. Por favor, sincronice su bóveda actualizando la página e inténtelo de nuevo."}},kI={or:"o",new:"Nuevo",vaultLocked:"AliasVault está bloqueado.",creatingNewAlias:"Creando nuevo alias...",noMatchesFound:"No se han encontrado resultados",searchVault:"Buscar bóveda...",enterServiceName:"Introduzca el nombre del servicio",enterEmailAddress:"Introduzca la dirección de correo electrónico",enterUsername:"Introduzca nombre de usuario",hideFor1Hour:"Ocultar durante 1 hora (sitio actual)",hidePermanently:"Ocultar permanentemente (sitio actual)",createRandomAlias:"Crear alias aleatorio",createUsernamePassword:"Crear nombre de usuario / contraseña",randomAlias:"Alias aleatorio",usernamePassword:"Nombre de usuario/Contraseña",createAndSaveAlias:"Crear y guardar alias",createAndSaveCredential:"Crear y guardar credencial",randomIdentityDescription:"Generar una identidad aleatoria con una dirección de correo electrónico aleatoria accesible en AliasVault.",randomIdentityDescriptionDropdown:"Identidad aleatoria con correo electrónico aleatorio",manualCredentialDescription:"Especifique su propia dirección de correo electrónico y nombre de usuario.",manualCredentialDescriptionDropdown:"Nombre de usuario y contraseña manual",failedToCreateIdentity:"Error al crear la identidad. Por favor, inténtalo de nuevo.",enterEmailAndOrUsername:"Introduzca email y/o nombre de usuario",autofillWithAliasVault:"AutoFill con AliasVault",generateRandomPassword:"Generar contraseña aleatoria (copiar al portapapeles)",generateNewPassword:"Generar nueva contraseña",togglePasswordVisibility:"Cambiar la visibilidad de la contraseña",passwordCopiedToClipboard:"Contraseña copiada al portapapeles",openAliasVaultToUpgrade:"Abrir AliasVault para actualizar",vaultUpgradeRequired:"Actualización de bóveda requerida.",dismissPopup:"Descartar aviso",noTotpItemsFound:"Ningún código 2FA encontrado",close:"Cerrar",savePrompt:{title:"¿Guardar en AliasVault?",neverForThisSite:"Nunca para este sitio",addUrlTitle:"¿Añadir URL a la credencial?"}},xI={title:"Elementos",itemName:"Nombre",loginCredentials:"Credenciales de inicio de sesión",cardInformation:"Información de la tarjeta",addItem:"Añadir elemento",addNewItem:"Añadir nuevo elemento",saveItem:"Guardar elemento",itemDetails:"Detalles del elemento",editItem:"Editar elemento",untitled:"Untitled",newFolder:"Nueva carpeta",createFolder:"Create Folder",editFolder:"Editar carpeta",folderName:"Nombre de la carpeta",folderNameRequired:"El nombre de la carpeta es obligatorio",folder:"Folder",welcomeTitle:"¡Bienvenido a AliasVault!",welcomeDescription:"Para utilizar la extensión del navegador AliasVault: vaya a un sitio web y utilice la ventana de autocompletado de AliasVault para crear una nueva credencial.",noMatchingItems:"No hay elementos que coincidan con el filtro.",noMatchingItemsSearch:'No hay elementos que coincidan con "{{search}}"',noMatchingItemsWithFilter:'No hay elementos {{filter}} que coincidan con "{{search}}"',clearSearch:"Limpiar búsqueda",clearFilter:"Eliminar filtros",emptyFolderHint:"Esta carpeta está vacía. Para mover elementos a esta carpeta, edite el elemento y pulse el icono de la carpeta en el campo nombre.",allItemsInFolders:"Todos sus elementos están organizados en carpetas. Haga clic en una carpeta para ver sus credenciales o utilice la búsqueda para encontrar elementos específicos.",deleteFolder:"Borrar carpeta",deleteFolderKeepItems:"Eliminar solo la carpeta",deleteFolderKeepItemsDescription:"Los elementos se moverán a la carpeta principal.",deleteFolderAndItems:"Eliminar carpeta y todos los elementos",deleteFolderAndItemsDescription:"{{count}} elemento(s) serán movidos a Borrados Recientemente.",filters:{folders:"Carpetas",passkeys:"Llaves de acceso",totp:"Códigos 2FA"},sort:{title:"Ordenar por",oldestFirst:"Más antiguos primero",newestFirst:"Más nuevos primero",alphabetical:"Alfabéticamente (A-Z)"},deleteItemTitle:"Eliminar elemento",deleteItemConfirm:"¿Está seguro de querer borrar este ítem?",viewHistory:"Ver historial",history:"Historial",noHistoryAvailable:"Sin historial disponible",tags:"Tags",changePasswordComplexity:"Cambiar complejidad de contraseña",passwordLength:"Longitud de la contraseña",includeLowercase:"Incluye letras minúsculas",includeUppercase:"Incluye letras mayúsculas",includeNumbers:"Incluye números",includeSpecialChars:"Incluye caracteres especiales",avoidAmbiguousChars:"Evita caracteres ambiguos (o, 0, etc.)",privateEmailTitle:"Correo electrónico privado",privateEmailAliasVaultServer:"Servidor AliasVault",privateEmailDescription:"E2E cifrado, totalmente privado.",publicEmailTitle:"Proveedores de Correo Temporal Públicos",publicEmailDescription:"Privacidad anónima pero limitada. Contenido de correo electrónico puede ser leído por cualquiera que conozca la dirección.",validation:{required:"Se requiere este campo"}},LI={selectType:"Añadir nuevo elemento",typeLabel:"Tipo de elemento",creating:"Creando",editing:"Editando",regenerateAlias:"Regenerar alias",addCustomField:"Añadir campo personalizado",fieldLabel:"Etiqueta del campo",enterFieldName:"Introduzca el nombre del campo",fieldType:"Tipo de campo",fieldTypes:{text:"Texto",hidden:"Oculto (texto enmascarado)",email:"Correo",url:"URL",phone:"Teléfono",number:"Número",date:"Date",textArea:"Área de texto"},login:{title:"Iniciar sesión"},alias:{title:"Alias"},creditCard:{title:"Tarjeta de crédito"},note:{title:"Nota segura"}},DI={"login.url":"URL de la web","login.username":"Nombre de usuario","login.password":"Contraseña","alias.first_name":"Nombre","alias.last_name":"Apellido","alias.gender":"Género","alias.birthdate":"Fecha de nacimiento","login.email":"Correo","notes.content":"Notas","card.cardholder_name":"Nombre titular","card.number":"Número de Tarjeta","card.expiry_month":"Mes de expiración","card.expiry_year":"Año de expiración","card.cvv":"CVV","card.pin":"PIN"},RI={addCode:"Añadir código 2FA",instructions:"Introduzca la clave secreta mostrada por el sitio web donde desea añadir autenticación de dos factores.",nameOptional:"Nombre (Opcional)",secretKey:"Clave secreta",saveToViewCode:"Guardar para ver el código",defaultName:"Autentificador",deleteTotpCodeTitle:"Eliminar código 2FA",deleteTotpCodeConfirmation:'¿Está seguro que desea eliminar el código 2FA "{{name}}"?',errors:{invalidSecretKey:"Formato de clave secreta inválida."}},UI={uploading:"Subiendo...",uploadSuccess:"Archivos subidos con éxito.",deleteSuccess:"Adjunto eliminado correctamente.",firefoxExpandRequired:"Para subir archivos, utilice la ventana ampliada.",openExpandedWindow:"Abrir ventana ampliada"},MI={title:"Correos electrónicos",deleteEmailTitle:"Eliminar correo",deleteEmailConfirm:"¿Está seguro que desea eliminar permanentemente este correo electrónico?",from:"De",to:"Para",date:"Fecha",emailContent:"Contenido del correo electrónico",emailNotFound:"Correo electrónico no encontrado",noEmails:"No se han encontrado correos electrónicos",noEmailsDescription:"No has recibido ningún correo electrónico en tus direcciones privadas todavía. Cuando recibas un nuevo correo electrónico, aparecerá aquí.",offlineMessage:"Está desconectado. Por favor, conéctese a Internet para cargar sus correos electrónicos.",loadMore:"Cargar más ({{count}} restantes)",dateFormat:{justNow:"ahora mismo",minutesAgo_single:"Hace {{count}} min",minutesAgo_plural:"Hace {{count}} min",hoursAgo_single:"Hace {{count}} h",hoursAgo_plural:"Hace {{count}} h",yesterday:"ayer"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"La dirección de correo electrónico elegida actualmente ya está en uso. Por favor, cambie la dirección de correo electrónico editando esta credencial.",CLAIM_DOES_NOT_EXIST:"Ocurrió un error mientras se trataba de cargar los correos electrónicos. Por favor, intente editar y guardar la entrada de credenciales para sincronizar la base de datos, y vuelva a intentarlo."}},_I={serverUrl:"URL del servidor",language:"Idioma",autofillEnabled:"Activar autocompletado",version:"Versión",openWebApp:"Abrir la aplicación web",lock:"Bloquear",globalSettings:"Ajustes globales",activeOnAllSites:"Activo en todos los sitios (a menos que se deshabilite debajo)",disabledOnAllSites:"Deshabilitado en todos los sitios",rightClickContextMenu:"Menú contextual del clic derecho",autofillMatching:"Coincidencia de autocompletado",autofillMatchingMode:"Modo de coincidencia de autocompletado",autofillMatchingModeDescription:"Determina qué credenciales se consideran coincidentes y se muestran como sugerencias en el popup de autorrelleno de un sitio web determinado.",autofillMatchingDefault:"URL + subdominio + nombre wildcard",autofillMatchingUrlSubdomain:"URL + subdominio",autofillMatchingUrlExact:"Solo URL exacta",siteSpecificSettings:"Ajustes específicos del sitio",enabledForThisSite:"Habilitado para este sitio",disabledForThisSite:"Deshabilitado para este sitio",resetAllSiteSettings:"Reiniciar todos los ajustes específicos del sitio",disabledSites:"Sitios desactivados",disabledSitesDescription:"Sitios donde el popup de autorrelleno no aparecerá.",clearAllDisabledSites:"Borrar todos los sitios desactivados",temporaryUntil:"hasta",appearance:"Apariencia",theme:"Tema",useDefault:"Uso por defecto",light:"Claro",dark:"Oscuro",keyboardShortcuts:"Atajos de teclado",configureKeyboardShortcuts:"Configurar atajos de teclado",configure:"Configurar",clipboardClearTimeout:"Limpiar portapapeles después de copiar",clipboardClearTimeoutDescription:"Limpiar automáticamente el portapapeles después de copiar datos sensibles",clipboardClearDisabled:"Nunca limpiar",clipboardClear5Seconds:"Limpiar después 5 segundos",clipboardClear10Seconds:"Limpiar después 10 segundos",clipboardClear15Seconds:"Limpiar después 15 segundos",autoLockTimeout:"Tiempo de bloqueo automático",autoLockTimeoutDescription:"Bloquear automáticamente la bóveda después de un período de inactividad",autoLockTimeoutHelp:"La bóveda sólo se bloqueará después del período especificado de inactividad (no se abrirá el uso de autocompletado o la ventana emergente). La bóveda siempre se bloqueará cuando el navegador esté cerrado, independientemente de esta configuración.",autoLockNever:"Nunca",autoLock15Seconds:"15 segundos",autoLock30Seconds:"30 segundos",autoLock1Minute:"1 minuto",autoLock5Minutes:"5 minutos",autoLock15Minutes:"15 minutos",autoLock30Minutes:"30 minutos",autoLock1Hour:"1 hora",autoLock4Hours:"4 horas",autoLock8Hours:"8 horas",autoLock24Hours:"24 horas",versionPrefix:"Versión ",autofillSettings:"Ajustes de autocompletado",clipboardSettings:"Ajustes del portapapeles",contextMenuSettings:"Ajustes del menú contextual",passkeySettings:"Ajustes de llaves de acceso",contextMenuDescription:"Haga clic derecho en los campos de entrada para acceder a las opciones de AliasVault",selectLanguage:"Seleccionar idioma",serverConfiguration:"Configuración del servidor",serverConfigurationDescription:"Configurar la URL del servidor AliasVault para instancias self-hosted",customApiUrl:"API URL",customClientUrl:"URL de Cliente",apiUrlHint:"La URL del endpoint de la API (generalmente URL del cliente + /api)",clientUrlHint:"La URL de la interfaz web de su instancia self-hosted",autofillSettingsDescription:"Activar o desactivar la ventana emergente de autorrelleno en páginas web",autofillEnabledDescription:"Las sugerencias de autorrelleno aparecerán en los formularios de inicio de sesión",autofillDisabledDescription:"Las sugerencias de autorrelleno están desactivadas globalmente",languageSettings:"Idioma",validation:{apiUrlRequired:"La URL de la API es necesaria",apiUrlInvalid:"Por favor, introduzca una URL de API válida",clientUrlRequired:"La URL de cliente es necesaria",clientUrlInvalid:"Por favor, introduzca una URL de cliente válida"},identityGenerator:"Generador de identidad",identityGeneratorSettings:{description:"Configurar el idioma por defecto y la preferencia de género para generar nuevas identidades.",languageSection:"Idioma",languageDescription:"Establece el idioma que se utilizará al generar nuevas identidades.",genderSection:"Género",genderDescription:"Establecer la preferencia de género para generar nuevas identidades.",ageRangeSection:"Rango de edad",ageRangeDescription:"Establecer el rango de edad para generar nuevas identidades.",genderOptions:{random:"Aleatorio",male:"Hombre",female:"Mujer"}},credentialAutofill:"Autorrelleno de credenciales",credentialAutofillDescription:"Mostrar ventana emergente de autorrelleno cuando se detectan campos de nombre de usuario/contraseña",totpAutofill:"Codigo 2FA de autorelleno",totpAutofillDescription:"Mostrar ventana emergente de autorrelleno cuando se detectan campos de código 2FA",autoCopyTotpOnAutofill:"Auto-copiar 2FA al portapapeles",autoCopyTotpOnAutofillDescription:"Copiar automáticamente el primer código 2FA al portapapeles después de rellenar automáticamente las credenciales",loginSave:{title:"Guardar registro",description:"Mostrar un mensaje para guardar las credenciales de inicio de sesión cuando envíe un formulario de inicio de sesión en un sitio web.",blockedSites:"Sitios bloqueados",blockedSitesDescription:"Sitios donde el indicador de guardado nunca aparecerá.",clearAllBlockedSites:"Borrar todos los sitios bloqueados"},unlockMethod:{title:"Método de desbloqueo de la bóveda",introText:"Elija cómo desea desbloquear su bóveda. Puede utilizar su contraseña maestra (siempre disponible) o configurar un código PIN para un acceso más rápido. Después de 3 intentos fallidos de PIN, necesitarás usar tu contraseña maestra.",password:"Contraseña Maestra",pin:"Código PIN",pinDescription:"Desbloquear bóveda con código PIN",setupPin:"Configurar código PIN",enterNewPinDescription:"Introduzca un código PIN que contenga un mínimo de 6 dígitos",confirmPin:"Confirmar PIN",confirmPinDescription:"Introduzca su PIN de nuevo para confirmar",invalidPinFormat:"Formato PIN inválido",pinMismatch:"Los PINs no coinciden",incorrectPin:"PIN incorrecto, {{attemptsRemaining}} intentos restantes.",incorrectPinSingular:"PIN incorrecto. 1 intento restante.",enableSuccess:"¡PIN activado con éxito!",pinLocked:"El desbloqueo con PIN ha sido deshabilitado. Por favor, utiliza tu contraseña maestra para desbloquear tu bóveda.",pinSecurityWarning:"El PIN de desbloqueo en la extensión del navegador puede ser menos seguro que su contraseña maestra, ya que los PIN típicamente tienen menos entropía y se pueden obtener por fuerza bruta si su dispositivo está en peligro. Úselo sólo en dispositivos en los que confíe plenamente."}},FI={passkey:"Llave de acceso",site:"Sitio",helpText:"Las llaves de acceso se crean en el sitio web cuando se le solicite. No pueden ser editadas manualmente. Para eliminar esta clave, puede eliminarla de esta credencial. Para reemplazar esta clave de acceso o crear una nueva, visite el sitio web y siga sus indicaciones.",passkeyMarkedForDeletion:"Llave de acceso marcada para eliminar",passkeyWillBeDeleted:"Esta llave de acceso se eliminará cuando guarde esta credencial.",useBrowserPasskey:"Usar llave de acceso del navegador",bypass:{description:"¿Cuánto tiempo quieres usar el proveedor de llaves de acceso del navegador para {{origin}}?",thisTimeOnly:"Solo esta vez",alwaysForSite:"Siempre para este sitio"},authenticate:{title:"Iniciar sesión con llave de acceso",signInFor:"Iniciar sesión con llave para",selectPasskey:"Seleccione una llave de acceso para iniciar sesión:",noPasskeysFound:"No se encontraron llaves de acceso para este sitio"},create:{title:"Crear llave de acceso",createFor:"Crear nueva llave de acceso para",titleLabel:"Título",titlePlaceholder:"Introduzca un nombre para esta llave de acceso",createButton:"Crear llave de acceso",selectPasskeyToReplace:"Seleccione una llave de acceso para reemplazar:",createNewPasskey:"Crear nueva llave de acceso",replacingPasskey:"Reemplazando llave de acceso: {{displayName}}",confirmReplace:"Confirmar reemplazo",selectExistingLogin:"Añadir al inicio de sesión existente:",selectExistingLoginDescription:"Adjuntar esta llave a una credencial de inicio de sesión existente para este sitio.",attachingToCredential:"Añadiendo llave a: {{serviceName}}",attachPasskey:"Añadir llave de acceso"},settings:{passkeyProvider:"Proveedor de llave de acceso",passkeyProviderOn:"Proveedor de llave de acceso en "}},BI={title:"Eliminados recientemente",noItems:"No hay elementos eliminados",noItemsDescription:"Los elementos que borre aparecerán aquí durante {{days}} días antes de ser eliminados permanentemente.",description:"Estos elementos serán eliminados permanentemente después de {{days}} días. Puedes restaurarlos o eliminarlos inmediatamente.",restore:"Restaurar",deletePermanently:"Eliminar permanentemente",emptyAll:"Vaciar todo",daysRemaining_one:"{{count}} día restante",daysRemaining_other:"{{count}} días restantes",expiringSoon:"Caduca pronto",confirmDeleteTitle:"¿Eliminar permanentemente?",confirmDeleteMessage:"Este elemento se eliminará permanentemente y no se puede recuperar.",confirmEmptyAllTitle:"¿Vaciar los recientemente eliminados?",confirmEmptyAllMessage:"Todos los elementos {{count}} se eliminarán permanentemente y no se podrán recuperar."},PI={title:"Actualizar bóveda",subtitle:"AliasVault se ha actualizado y tu bóveda necesita ser actualizada. Esto solo debería tardar unos segundos.",versionInformation:"Información de versión",yourVault:"Tu versión de bóveda:",newVersion:"Nueva versión disponible:",upgrade:"Actualizar bóveda",upgrading:"Actualizando...",whatsNew:"Novedades",whatsNewDescription:"Se requiere una actualización para soportar los siguientes cambios:",noDescriptionAvailable:"Ninguna descripción disponible para esta versión.",alerts:{unableToGetVersionInfo:"No se pudo obtener información de la versión. Por favor, inténtalo de nuevo.",selfHostedServer:"Servidor autoalojado",selfHostedWarning:"Si está utilizando un servidor autoalojado, asegúrese de actualizar su instancia autoalojada, ya que de lo contrario iniciar sesión en el cliente web dejará de funcionar.",continueUpgrade:"Continuar actualización",upgradeFailed:"Actualización fallida",failedToApplyMigration:"Error al migrar de ({{current}} a {{total}})"}},OI={unsyncedChangesTitle:"Cambios no sincronizados",unsyncedChangesWarning:"Tienes cambios no sincronizados que se perderán si te desconectas ahora. ¿Estás seguro de que quieres continuar?",logoutAnyway:"Cerrar sesión de todos modos"},jI={offline:"Sin conexión",tapToRetry:"Toca para reintentar sincronizar",syncErrorTitle:"Error de sincronización",syncErrorDismiss:"Descartar"},HI={auth:SI,menu:TI,common:NI,content:kI,items:xI,itemTypes:LI,fieldLabels:DI,totp:RI,attachmentUploader:UI,emails:MI,settings:_I,passkeys:FI,recentlyDeleted:BI,upgrade:PI,logout:OI,sync:jI},NM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:UI,auth:SI,common:NI,content:kI,default:HI,emails:MI,fieldLabels:DI,itemTypes:LI,items:xI,logout:OI,menu:TI,passkeys:FI,recentlyDeleted:BI,settings:_I,sync:jI,totp:RI,upgrade:PI},Symbol.toStringTag,{value:"Module"})),VI={loginTitle:"Kirjaudu sisään AliasVaultiin",username:"Käyttäjänimi tai sähköposti",usernamePlaceholder:"nimi / nimi@yritys.fi",passwordPlaceholder:"Syötä salasanasi",rememberMe:"Muista minut",loginButton:"Kirjaudu sisään",noAccount:"Eikö tiliä vielä ole?",createVault:"Luo uusi holvi",twoFactorTitle:"Syötä tunnistautumiskoodi tunnistautumissovelluksestasi.",authCode:"Tunnistautumiskoodi",authCodePlaceholder:"Syötä 6-numeroinen koodi",verify:"Vahvista",twoFactorNote:"Huomautus: jos sinulla ei ole pääsyä tunnistautumislaitteeseen, voit palauttaa 2FA:n palautuskoodilla kirjautumalla sisään sivuston kautta.",masterPassword:"Pääsalasana",unlockVault:"Avaa lukitus",unlockWithPin:"Avaa PIN-koodilla",enterPinToUnlock:"Syötä PIN-koodi avataksesi holvisi",useMasterPassword:"Käytä pääsalasanaa",unlockTitle:"Avaa holvisi lukitus",logoutConfirm:"Oletko varma, että haluat kirjautua ulos?",unlockSuccessTitle:"Holvisi lukitus on avattu",unlockSuccessDescription:"Voit nyt käyttää automaattista täyttöä sisäänkirjautumislomakkeissa selaimessasi.",closePopup:"Sulje tämä ponnahdusikkuna",browseVault:"Selaa holvin sisältöä",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Yhdistetään kohteeseen",switchAccounts:"Vaihdetaanko tiliä?",loginWithMobile:"Kirjaudu sisään mobiilisovelluksella",unlockWithMobile:"Avaa käyttämällä mobiilisovellusta",scanQrCode:"Skannaa tämä QR-koodi AliasVault-mobiilisovelluksellasi kirjautuaksesi sisään ja avataksesi holvisi.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},zI={vault:"Holvi",emails:"Sähköpostit"},QI={loading:"Ladataan...",notice:"Huomautus",error:"Virhe",cancel:"Peruuta",confirm:"Vahvista",remove:"Remove",back:"Takaisin",next:"Seuraava",use:"Käytä",add:"Lisää",delete:"Poista",undo:"Kumoa",save:"Tallenna",saving:"Saving...",edit:"Muokkaa",create:"Luo",or:"Tai",close:"Sulje",dismiss:"Dismiss",logout:"Uloskirjautuminen",copied:"Kopioitu!",openInNewWindow:"Avaa uudessa ikkunassa",enabled:"Otettu käyttöön",disabled:"Pois käytöstä",showPassword:"Näytä salasana",hidePassword:"Piilota salasana",show:"Show",hide:"Hide",showDetails:"Näytä tiedot",hideDetails:"Piilota tiedot",copyToClipboard:"Kopioi leikepöydälle",loadingEmails:"Ladataan sähköposteja...",loadingTotpCodes:"Ladataan TOTP-koodeja...",attachments:"Liitteet",loadingAttachments:"Ladataan liitteitä...",settings:"Asetukset",recentEmails:"Viimeaikaiset sähköpostit",credentials:"Tunnistetiedot",customFields:"Räätälöidyt kentät",twoFactorAuthentication:"Kaksivaiheinen tunnistautuminen",alias:"Alias",notes:"Huomautukset",email:"Sähköposti",username:"Käyttäjänimi",password:"Salasana",generate:"Generate",serviceName:"Palvelun nimi",loggedIn:"Sisäänkirjautuneena",syncingVault:"Synkronoidaan holvia",checkingVaultUpdates:"Tarkistetaan holvin päivitysten varalta",syncingUpdatedVault:"Synkronoidaan päivitettyä holvia",loadMore:"Lataa lisää",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Yhdistetään holvin muutoksia...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"AliasVault-palvelin ei ole käytettävissä. Yritä myöhemmin uudelleen tai ota yhteyttä tukeen, jos ongelma jatkuu.",clientVersionNotSupported:"Palvelin ei enää tue tätä AliasVault-selainlaajennuksen versiota. Päivitä selaimen laajennus uusimpaan versioon.",browserExtensionOutdated:"Tämä selainlaajennus on vanhentunut, eikä sillä voi saada pääsyä tähän holviin. Päivitä tämä selainlaajennus jatkaaksesi.",serverVersionNotSupported:"AliasVault-palvelin on päivitettävä uudempaan versioon, jotta voit käyttää tätä selainlaajennusta. Ota yhteyttä tukeen, jos tarvitset apua.",serverVersionTooOld:"AliasVault-palvelin on päivitettävä uudempaan versioon, jotta se voi käyttää tätä ominaisuutta. Ota yhteyttä palvelimen ylläpitäjään jos tarvitset apua.",unknownError:"Tapahtui tuntematon virhe",unknownErrorTryAgain:"Tapahtui tuntematon virhe. Yritä uudelleen.",vaultNotAvailable:"Holvi ei käytettävissä",vaultIsLocked:"Holvi on lukittu",passwordChanged:"Salasanasi on muuttunut edellisen sisäänkirjautumisen jälkeen. Kirjaudu sisään uudelleen turvallisuussyistä.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Syötä kelvollinen 6-numeroinen tunnistautumiskoodi.",serverError:"AliasVault-palvelimeen ei saatu yhteyttä. Yritä myöhemmin uudelleen tai ota yhteyttä tukeen, jos ongelma jatkuu.",wrongPassword:"Virheellinen salasana. Yritä uudelleen. ",sessionExpired:"Istuntosi on vanhentunut. Kirjaudu sisään uudelleen.",mobileLoginRequestExpired:"Mobiilikirjautumispyyntö aikakatkaistiin. Lataa sivu uudelleen ja yritä uudelleen."},apiErrors:{UNKNOWN_ERROR:"Tapahtui tuntematon virhe. Yritä uudelleen.",ACCOUNT_LOCKED:"Tili tilapäisesti lukittu liian monen epäonnistuneen yrityksen vuoksi. Yritä myöhemmin uudelleen.",ACCOUNT_BLOCKED:"Tilisi on poistettu käytöstä. Jos uskot, että tämä on virhe, ota yhteyttä tukeen.",USER_NOT_FOUND:"Virheellinen käyttäjänimi tai salasana. Yritä uudelleen.",INVALID_AUTHENTICATOR_CODE:"Virheellinen tunnistautumiskoodi. Yritä uudelleen.",INVALID_RECOVERY_CODE:"Virheellinen palautuskoodi. Yritä uudelleen.",REFRESH_TOKEN_REQUIRED:"Virkistyspoletti vaaditaan.",INVALID_REFRESH_TOKEN:"Virheellinen virkistyspoletti.",PUBLIC_REGISTRATION_DISABLED:"Uuden tilin rekisteröinti on tällä hetkellä poistettu käytöstä tällä palvelimella. Ota yhteyttä järjestelmänvalvojaan.",USERNAME_REQUIRED:"Käyttäjänimi vaaditaan.",USERNAME_ALREADY_IN_USE:"Käyttäjänimi on jo käytössä.",USERNAME_AVAILABLE:"Käyttäjänimi on saatavilla.",USERNAME_MISMATCH:"Käyttäjänimi ei vastaa nykyistä käyttäjää.",PASSWORD_MISMATCH:"Annettu salasana ei vastaa nykyistä salasanaasi.",ACCOUNT_SUCCESSFULLY_DELETED:"Tili poistettu.",USERNAME_EMPTY_OR_WHITESPACE:"Käyttäjänimi ei voi olla tyhjä eikä siinä voi olla välilyöntejä.",USERNAME_TOO_SHORT:"Käyttäjänimi liian lyhyt: sen on oltava vähintään 3 merkkiä pitkä.",USERNAME_TOO_LONG:"Käyttäjänimi liian pitkä: ei saa olla yli 40 merkkiä pidempi.",USERNAME_INVALID_EMAIL:"Virheellinen sähköpostiosoite.",USERNAME_INVALID_CHARACTERS:"Käyttäjänimi on virheellinen, voi sisältää vain kirjaimia tai numeroita.",VAULT_NOT_UP_TO_DATE:"Holvisi ei ole ajan tasalla. Synkronoi holvisi ja yritä uudelleen.",INTERNAL_SERVER_ERROR:"Sisäinen palvelinvirhe.",VAULT_ERROR:"Paikallinen holvi ei ole ajan tasalla. Synkronoi holvisi virkistämällä sivu ja yritä uudelleen."}},KI={or:"tai",new:"Uusi",vaultLocked:"AliasVault on lukittu.",creatingNewAlias:"Luodaan uutta aliasta...",noMatchesFound:"Osumia ei löytynyt",searchVault:"Etsi holvi...",enterServiceName:"Syötä palvelun nimi",enterEmailAddress:"Syötä sähköpostiosoite",enterUsername:"Syötä käyttäjänimi",hideFor1Hour:"Piilota tunnin ajan (nykyinen sivusto)",hidePermanently:"Piilota pysyvästi (nykyinen sivu)",createRandomAlias:"Luo sattumanvarainen alias",createUsernamePassword:"Luo käyttäjänimi/salasana",randomAlias:"Sattumanvarainen alias",usernamePassword:"Käyttäjänimi/Salasana",createAndSaveAlias:"Luo ja tallenna alias",createAndSaveCredential:"Luo ja tallenna tunnistetieto",randomIdentityDescription:"Luo satunnainen identiteetti, jolla on satunnainen sähköpostiosoite, johon on pääsy AliasVaultissa.",randomIdentityDescriptionDropdown:"Satunnainen identiteetti satunnaisen sähköpostiosoitteen kanssa",manualCredentialDescription:"Määritä oma sähköpostiosoitteesi ja käyttäjänimesi.",manualCredentialDescriptionDropdown:"Manuaalinen käyttäjänimi ja salasana",failedToCreateIdentity:"Identiteetin luominen epäonnistui. Yritä uudelleen.",enterEmailAndOrUsername:"Syötä sähköpostiosoite ja/tai käyttäjänimi",autofillWithAliasVault:"Automaattinen täyttö AliasVaultilla",generateRandomPassword:"Luo sattumanvarainen salasana (kopioi leikepöydälle)",generateNewPassword:"Luo uusi salasana",togglePasswordVisibility:"Salasanan näkyvyyden päälle/pois päältä kytkeminen",passwordCopiedToClipboard:"Salasana kopioitu leikepöydälle",openAliasVaultToUpgrade:"Avaa AliasVault päivittääksesi",vaultUpgradeRequired:"Holvin päivitys vaaditaan.",dismissPopup:"Hylkää ponnahdusikkuna",noTotpItemsFound:"No 2FA code matches found",close:"Sulje",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},GI={title:"Tiedot",itemName:"Nimi",loginCredentials:"Sisäänkirjautumistunnistetiedot",cardInformation:"Korttitiedot",addItem:"Lisää tieto",addNewItem:"Lisää uusi tieto",saveItem:"Tallenna tieto",itemDetails:"Näytä yksityiskohdat",editItem:"Muokkaa tietoa",untitled:"Nimetön",newFolder:"New Folder",createFolder:"Luo kansio",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Kansio",welcomeTitle:"Tervetuloa AliasVaultiin!",welcomeDescription:"Käyttääksesi AliasVault-selainlaajennusta, siirry jollekin verkkosivustolle ja käytä AliasVaultin automaattisen täytön ponnahdusikkunaa luodaksesi uuden tunnistetiedon.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Sala-avaimet",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Poista kohde",deleteItemConfirm:"Haluatko varmasti poistaa tämän kohteen?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tunnisteet",changePasswordComplexity:"Muuta salasanan monimutkaisuutta",passwordLength:"Salasanan pituus",includeLowercase:"Sisällytä pienet kirjaimet",includeUppercase:"Sisällytä isot kirjaimet",includeNumbers:"Sisällytä numerot",includeSpecialChars:"Sisällytä erikoismerkit",avoidAmbiguousChars:"Vältä epäselviä merkkejä (o, 0, jne.)",privateEmailTitle:"Yksityinen sähköposti",privateEmailAliasVaultServer:"AliasVault-palvelin",privateEmailDescription:"Päästä päähän (E2E) salattu, täysin yksityinen.",publicEmailTitle:"Julkiset väliaikaisten sähköpostiosoitteiden tarjoajat (PTEP)",publicEmailDescription:"Anonyymi, mutta rajoitettu yksityisyys. Sähköpostin sisällön voi lukea kuka tahansa, joka tietää osoitteen.",validation:{required:"Tämä kenttä on pakollinen"}},WI={selectType:"Add New Item",typeLabel:"Item Type",creating:"Luodaan",editing:"Muokaataan",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Kentän otsikko",enterFieldName:"Anna kentän nimi",fieldType:"Kentän tyyppi",fieldTypes:{text:"Teksti",hidden:"Hidden (masked text)",email:"Sähköposti",url:"URL",phone:"Puhelin",number:"Numero",date:"Päivämäärä",textArea:"Tekstialue"},login:{title:"Kirjaudu sisään"},alias:{title:"Alias"},creditCard:{title:"Luottokortti"},note:{title:"Secure Note"}},qI={"login.url":"Web-sivuston URL-osoite","login.username":"Käyttäjänimi","login.password":"Salasana","alias.first_name":"Etunimi","alias.last_name":"Sukunimi","alias.gender":"Sukupuoli","alias.birthdate":"Syntymäpäivä","login.email":"Sähköposti","notes.content":"Huomautukset","card.cardholder_name":"Kortinhaltijan nimi","card.number":"Kortin numero","card.expiry_month":"Vanhenemiskuukausi","card.expiry_year":"Vanhenemisvuosi","card.cvv":"CVV","card.pin":"PIN-koodi"},YI={addCode:"Lisää 2FA TOTP -koodi",instructions:"Syötä salainen avain, joka näkyy sivustossa, jossa haluat lisätä kaksivaiheisen tunnistautumisen",nameOptional:"Nimi (valinnainen)",secretKey:"Salainen avain",saveToViewCode:"Tallenna nähdäksesi koodin",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Virheellinen salatun avaimen muoto."}},JI={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},XI={title:"Sähköpostit",deleteEmailTitle:"Poista sähköposti",deleteEmailConfirm:"Oletko varma, että haluat poistaa tämän sähköpostin pysyvästi?",from:"Lähettäjä",to:"Vastaanottaja",date:"Päivämäärä",emailContent:"Sähköpostin sisältö",emailNotFound:"Sähköpostia ei löytynyt",noEmails:"Sähköposteja ei löytynyt",noEmailsDescription:"Et ole vielä vastaanottanut sähköposteja yksityisissä sähköpostiosoitteissasi. Kun saat uuden sähköpostiviestin, se näkyy täällä.",offlineMessage:"Olet offline-tilassa. Ole hyvä ja yhdistä internetiin ladataksesi sähköpostiosoitteesi.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"juuri nyt",minutesAgo_single:"{{count}} min sitten",minutesAgo_plural:"{{count}} minuuttia sitten",hoursAgo_single:"{{count}} tunti sitten",hoursAgo_plural:"{{count}} tuntia sitten",yesterday:"eilen"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Nykyinen valittu sähköpostiosoite on jo käytössä. Vaihda sähköpostiosoite muokkaamalla tätä tunnistetietoa.",CLAIM_DOES_NOT_EXIST:"Tapahtui virhe ladattaessa sähköposteja. Yritä muokata ja tallentaa tunnistetiedot synkronoidaksesi tietokannan, ja yritä sitten uudelleen."}},$I={serverUrl:"Palvelimen URL-osoite",language:"Kieli",autofillEnabled:"Ota automaattinen täyttö käyttöön",version:"Versio",openWebApp:"Avaa verkkosovellus",lock:"Lukitse",globalSettings:"Yleisesti pätevät asetukset",activeOnAllSites:"Aktiivisena kaikilla sivustoilla (ellei sitä ole poistettu käytöstä alla)",disabledOnAllSites:"Pois käytöstä kaikilla sivustoilla",rightClickContextMenu:"Oikea-napsauta kontekstivalikkoa",autofillMatching:"Automaattisen täytön täsmäytys",autofillMatchingMode:"Automaattisen täytön täsmäytystila",autofillMatchingModeDescription:"Määrittää, mitkä tunnistetiedot katsotaan osumiksi ja näytetään ehdotuksina tietyn verkkosivuston automaattisen täytön ponnahdusikkunassa.",autofillMatchingDefault:"URL + aliverkkotunnus + nimi jokerimerkki",autofillMatchingUrlSubdomain:"URL + aliverkkotunnus",autofillMatchingUrlExact:"Tarkka URL-verkkotunnus vain",siteSpecificSettings:"Sivustokohtaiset asetukset",enabledForThisSite:"Otettu käyttöön tällä sivustolla",disabledForThisSite:"Poistettu käytöstä tällä sivustolla",resetAllSiteSettings:"Nollaa kaikki sivustokohtaiset asetukset",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Ulkoasu",theme:"Teema",useDefault:"Käytä oletusta",light:"Vaalea",dark:"Tumma",keyboardShortcuts:"Näppäimistön pikanppäimet",configureKeyboardShortcuts:"Määritä näppäimistön pikanäppäimet",configure:"Määritä",clipboardClearTimeout:"Tyhjennä leikepöytä kopioimisen jälkeen",clipboardClearTimeoutDescription:"Tyhjennä leikepöytä automaattisesti arkaluonteisten tietojen kopioimisen jälkeen",clipboardClearDisabled:"Älä koskaan tyhjennä",clipboardClear5Seconds:"Tyhjennä 5 sekunnin jälkeen",clipboardClear10Seconds:"Tyhjennä 10 sekunnin jälkeen",clipboardClear15Seconds:"Tyhjennä 15 sekunnin jälkeen",autoLockTimeout:"Automaattisen lukituksen aikakatkaisu",autoLockTimeoutDescription:"Lukitse holvi automaattisesti käyttämättömyysjakson jälkeen",autoLockTimeoutHelp:"Holvi lukittuu vasta määritetyn käyttämättömyysjakson jälkeen (ei automaattista täyttöä tai laajennusten ponnahdusikkunoita ole avattu). Holvi lukittuu aina, kun selain suljetaan, tästä asetuksesta riippumatta.",autoLockNever:"Ei koskaan",autoLock15Seconds:"15 sekuntia",autoLock30Seconds:"30 sekuntia",autoLock1Minute:"1 minuutti",autoLock5Minutes:"5 minuuttia",autoLock15Minutes:"15 minuuttia",autoLock30Minutes:"30 minuuttia",autoLock1Hour:"1 tunti",autoLock4Hours:"4 tuntia",autoLock8Hours:"8 tuntia",autoLock24Hours:"24 tuntia",versionPrefix:"Versio",autofillSettings:"Automaatisen täytön asetukset",clipboardSettings:"Leikepöydän asetukset",contextMenuSettings:"Kontekstivalikon asetukset",passkeySettings:"Todennusavainten asetukset",contextMenuDescription:"Oikea-napsauta syöttökenttiä päästäksesi AliasVaultin vaihtoehtoihin",selectLanguage:"Valitse kieli",serverConfiguration:"Palvelimen asetukset",serverConfigurationDescription:"Määritä AliasVault-palvelimen URL-osoite itse isännöityille instanssille",customApiUrl:"API-URL-osoite",customClientUrl:"Asiakas-URL-osoite",apiUrlHint:"API päätepisteen URL (yleensä asiakkaan URL + /api)",clientUrlHint:"Web-käyttöliittymän URL-osoite itse isännöidyssä instanssissa",autofillSettingsDescription:"Ota käyttöön tai poista käytöstä automaattisen täytön ponnahdusikkuna verkkosivuilta",autofillEnabledDescription:"Automaattisen täytön ehdotukset näkyvät kirjautumislomakkeissa",autofillDisabledDescription:"Automaattitäyttöehdotukset on poistettu käytöstä kaikkialla",languageSettings:"Keili",validation:{apiUrlRequired:"API-URL-osoite vaaditaan",apiUrlInvalid:"Syötä kelvollinen API-URL-osoite",clientUrlRequired:"Asiakkaan URL-osoite vaaditaan",clientUrlInvalid:"Syötä kelvollinen asiakas-URL-osoite"},identityGenerator:"Identiteetin luonti",identityGeneratorSettings:{description:"Määritä oletuskieli- ja sukupuoliasetukset uusien käyttäjätunnusten luontia varten.",languageSection:"Kieli",languageDescription:"Aseta kieli, jota käytetään luotaessa uusia henkilöllisyyksiä.",genderSection:"Sukupuoli",genderDescription:"Aseta oletussukupuoli uusien henkilöllisyyksien luomiseksi. ",ageRangeSection:"Ikähaarukka",ageRangeDescription:"Aseta ikähaarukka uusia henkilöllisyyksien luomisessa",genderOptions:{random:"Satunnainen",male:"Mies",female:"Nainen"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Holvin lukituksen avausmenetelmä",introText:"Valitse, miten haluat avata holvisi. Voit käyttää pääsalasanaa (aina saatavilla) tai määrittää nopean 4-8 numeroisen PIN-koodin nopeampaa käyttöä varten. Kolmen epäonnistuneen PIN-yrityksen jälkeen sinun on käytettävä pääsalasanaa.",password:"Pääsalasana",pin:"PIN-koodi",pinDescription:"Avaa holvi PIN-koodilla",setupPin:"PIN-koodin määrittäminen",enterNewPinDescription:"Syötä PIN-koodi, jossa on vähintään 6 numeroa",confirmPin:"Vahvista PIN",confirmPinDescription:"Syötä PIN-koodi uudelleen vahvistaaksesi",invalidPinFormat:"Virheellinen PIN-muoto",pinMismatch:"PIN-koodit eivät täsmää",incorrectPin:"Väärä PIN-koodi. {{attemptsRemaining}} yritystä jäljellä.",incorrectPinSingular:"Virheellinen PIN-koodi. 1 yritys jäljellä.",enableSuccess:"PIN-lukituksen avaus käytössä onnistuneesti!",pinLocked:"PIN-lukituksen avaus on poistettu käytöstä. Ole hyvä ja käytä pääsalasanaa avataksesi holvisi.",pinSecurityWarning:"PIN-koodin lukituksen poisto selaimen laajennuksessa voi olla vähemmän turvallista kuin pääsalasana, koska PIN-koodit ovat tyypillisesti alempia entropia ja voi olla brute-pakko jos laite on vaarassa. Käytä sitä vain laitteissa, joihin täysin luotat."}},ZI={passkey:"Sala-avain",site:"Sivusto",helpText:"Todennusavaimet, Passkeys, luodaan sivustolle pyydettäessä. Niitä ei voi manuaalisesti muokata. Voit poistaa tämän salasanan, voit poistaa sen tästä käyttäjätunnuksesta. Voit korvata tämän salasanan tai luoda uuden, käy verkkosivuilla ja seuraa sen kehotuksia.",passkeyMarkedForDeletion:"Todennusavain merkitty poistettavaksi",passkeyWillBeDeleted:"Tämä todennusavain poistetaan, kun tallennat tämän käyttäjätiedon.",useBrowserPasskey:"Käytä selaimen sala-avainta",bypass:{description:"Kuinka kauan haluat käyttää selaimen todennusavaimen tarjoajaa {{origin}}?",thisTimeOnly:"Vain tällä kertaa",alwaysForSite:"Aina tällä sivustolla"},authenticate:{title:"Kirjaudu sisään todennusavaimella",signInFor:"Kirjaudu sisään todennusavaimella saadaksesi",selectPasskey:"Valitse todennusavain jolla kirjaudutaan",noPasskeysFound:"Tällä sivustolla ei löytynyt todennusavaimia"},create:{title:"Luo Passkey, todennusavain",createFor:"Luo uusi Passkey, todennusavain",titleLabel:"Otsikko",titlePlaceholder:"Anna nimi tälle todennusavaimelle",createButton:"Luo todennusavain, Passkey",selectPasskeyToReplace:"Valitse todennusavain, johon korvataan",createNewPasskey:"Luo uusi sala-avain",replacingPasskey:"Korvaava todennusavain: {{displayName}}",confirmReplace:"Vahvista korvaaminen",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Todennusavaimen toimittaja",passkeyProviderOn:"Todennusavaimen toimittaja käytössä "}},eC={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},tC={title:"Päivitä holvi",subtitle:"AliasVault on päivitetty ja holvisi on päivitettävä. Tämän pitäisi kestää vain muutama sekunti.",versionInformation:"Versiotiedot",yourVault:"Holvisi versio:",newVersion:"Uusi saatavilla oleva versio:",upgrade:"Päivitä holvi",upgrading:"Päivitetään...",whatsNew:"Mitä uutta?",whatsNewDescription:"Päivitys vaaditaan seuraavien muutosten tukemiseksi:",noDescriptionAvailable:"Tälle versiolle ei ole saatavilla kuvausta.",alerts:{unableToGetVersionInfo:"Versiotietojen hakeminen epäonnistui. Yritä uudelleen.",selfHostedServer:"Itseisännöity palvelin",selfHostedWarning:"Jos käytät itseisännöityä palvelinta, muista päivittää myös itseisännöity instanssisi, koska muuten verkkoasiakassovellukseen kirjautuminen lakkaa toimimasta.",continueUpgrade:"Jatka päivitystä",upgradeFailed:"Päivitys epäonnistui",failedToApplyMigration:"Siirron käyttöönotto epäonnistui ({{current}} / {{total}})"}},aC={unsyncedChangesTitle:"Synkronoimattomat muutokset",unsyncedChangesWarning:"Sinulla on synkronoimattomia muutoksia, jotka menetetään, jos kirjaudut ulos nyt. Oletko varma, että haluat jatkaa?",logoutAnyway:"Kirjaudu ulos joka tapauksessa"},nC={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},iC={auth:VI,menu:zI,common:QI,content:KI,items:GI,itemTypes:WI,fieldLabels:qI,totp:YI,attachmentUploader:JI,emails:XI,settings:$I,passkeys:ZI,recentlyDeleted:eC,upgrade:tC,logout:aC,sync:nC},kM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:JI,auth:VI,common:QI,content:KI,default:iC,emails:XI,fieldLabels:qI,itemTypes:WI,items:GI,logout:aC,menu:zI,passkeys:ZI,recentlyDeleted:eC,settings:$I,sync:nC,totp:YI,upgrade:tC},Symbol.toStringTag,{value:"Module"})),rC={loginTitle:"Se connecter à AliasVault",username:"Nom d'utilisateur ou email",usernamePlaceholder:"nom / nom@entreprise.com",passwordPlaceholder:"Saisissez votre mot de passe",rememberMe:"Se souvenir de moi",loginButton:"Se connecter",noAccount:"Pas de compte ?",createVault:"Créer un nouveau coffre",twoFactorTitle:"Veuillez entrer le code d'authentification de votre application d'authentification.",authCode:"Code d'authentification",authCodePlaceholder:"Saisissez le code à 6 chiffres",verify:"Vérifier",twoFactorNote:"Remarque : si vous n'avez pas accès à votre appareil d'authentification, vous pouvez réinitialiser votre authentification à double facteur avec un code de récupération en vous connectant via le site web.",masterPassword:"Mot de passe principal",unlockVault:"Déverrouiller",unlockWithPin:"Déverrouiller avec un code PIN",enterPinToUnlock:"Entrez votre code PIN pour déverrouiller votre coffre",useMasterPassword:"Utiliser le mot de passe principal",unlockTitle:"Déverrouiller votre coffre",logoutConfirm:"Êtes-vous sûr de vouloir vous déconnecter ?",unlockSuccessTitle:"Votre coffre a été déverrouillé avec succès",unlockSuccessDescription:"Vous pouvez maintenant utiliser le remplissage automatique des formulaires de connexion dans votre navigateur.",closePopup:"Fermer cette popup",browseVault:"Parcourir le contenu du coffre",autoCloseUnlockPopup:"Fermeture automatique lors des connexions futures",connectingTo:"Connexion à",switchAccounts:"Changer de compte ?",loginWithMobile:"Se connecter à l'aide de l'application mobile",unlockWithMobile:"Déverrouiller en utilisant l'application mobile",scanQrCode:"Scannez ce code QR avec votre application mobile AliasVault pour vous connecter et déverrouiller votre coffre.",passwordAttemptsWarning:"Mot de passe incorrect. Vous serez déconnecté si vous entrez le mauvais mot de passe plus de {{remainingAttempts}} fois.",maxAttemptsReached:"Trop de tentatives de déverrouillage échouées. Vous avez été déconnecté pour des raisons de sécurité."},sC={vault:"Coffre-fort",emails:"Emails"},oC={loading:"Chargement...",notice:"Notification",error:"Erreur",cancel:"Annuler",confirm:"Confirmer",remove:"Supprimer",back:"Retour",next:"Suivant",use:"Utiliser",add:"Ajouter",delete:"Supprimer",undo:"Annuler",save:"Sauvegarder",saving:"Sauvegarde...",edit:"Editer",create:"Créer",or:"Ou",close:"Fermer",dismiss:"Ignorer",logout:"Déconnexion",copied:"Copié !",openInNewWindow:"Ouvrir dans une nouvelle fenêtre",enabled:"Activé",disabled:"Désactivé",showPassword:"Afficher le mot de passe",hidePassword:"Cacher le mot de passe",show:"Afficher",hide:"Masquer",showDetails:"Afficher les détails",hideDetails:"Masquer les détails",copyToClipboard:"Copier dans le presse-papiers",loadingEmails:"Chargement des emails...",loadingTotpCodes:"Chargement des codes TOTP...",attachments:"Pièces jointes",loadingAttachments:"Chargement des pièces jointes...",settings:"Réglages",recentEmails:"Emails récents",credentials:"Identifiants",customFields:"Champs Personnalisés",twoFactorAuthentication:"Authentification à double facteur",alias:"Alias",notes:"Notes",email:"Email",username:"Nom d'utilisateur",password:"Mot de passe",generate:"Générer",serviceName:"Nom du service",loggedIn:"Connecté(e)",syncingVault:"Synchronisation du coffre",checkingVaultUpdates:"Vérification des mises à jour du coffre",syncingUpdatedVault:"Synchronisation du coffre mis à jour",loadMore:"Voir plus",offline:"Hors ligne",offlineMode:"Fonctionnement en mode hors ligne",pendingSync:"Synchronisation...",mergingVaultChanges:"Fusion des modifications du coffre...",uploadingVault:"Envoi du coffre...",errors:{serverNotAvailable:"Le serveur d'AliasVault n'est pas disponible. Veuillez réessayer plus tard ou contacter le support si le problème persiste.",clientVersionNotSupported:"Cette version de l'extension de navigateur AliasVault n'est plus prise en charge par le serveur. Veuillez mettre à jour votre extension de navigateur à la dernière version.",browserExtensionOutdated:"Cette extension de navigateur est obsolète et ne peut pas être utilisée pour accéder à ce coffre-fort. Veuillez la mettre à jour pour continuer.",serverVersionNotSupported:"Le serveur d'AliasVault doit être mis à jour vers une version plus récente afin d'utiliser cette extension de navigateur. Veuillez contacter le support si vous avez besoin d'aide.",serverVersionTooOld:"Le serveur AliasVault doit être mis à jour vers une version plus récente pour pouvoir utiliser cette fonctionnalité. Veuillez contacter l'administrateur du serveur si vous avez besoin d'aide.",unknownError:"Une erreur inconnue s'est produite",unknownErrorTryAgain:"Une erreur inconnue s'est produite. Merci de réessayer.",vaultNotAvailable:"Coffre non disponible",vaultIsLocked:"Le coffre est verrouillé",passwordChanged:"Votre mot de passe a changé depuis la dernière fois que vous vous êtes connecté. Veuillez vous reconnecter pour des raisons de sécurité.",syncConflictMaxRetries:"Impossible de synchroniser le coffre après plusieurs tentatives. Veuillez réessayer plus tard.",mergeFailed:"Impossible de fusionner les modifications du coffre. Veuillez réessayer.",vaultTooLarge:"Le coffre est trop grand pour que le serveur l'accepte. Essayez de supprimer certains éléments ou pièces jointes pour réduire la taille et réessayez.",invalidCode:"Veuillez entrer un code d'authentification valide à 6 chiffres.",serverError:"Impossible d'accéder au serveur AliasVault. Veuillez réessayer plus tard ou contacter le support si le problème persiste.",wrongPassword:"Mot de passe incorrect, veuillez réessayer.",sessionExpired:"Votre session a expiré. Veuillez vous reconnecter.",mobileLoginRequestExpired:"La demande de connexion de l'application mobile a expiré. Veuillez recharger la page et réessayer."},apiErrors:{UNKNOWN_ERROR:"Une erreur inconnue s'est produite. Merci de réessayer.",ACCOUNT_LOCKED:"Compte temporairement verrouillé en raison d'un trop grand nombre de tentatives infructueuses. Veuillez réessayer plus tard.",ACCOUNT_BLOCKED:"Votre compte a été désactivé. Si vous pensez que c'est une erreur, veuillez contacter le support.",USER_NOT_FOUND:"Nom d'utilisateur ou mot de passe invalide. Veuillez réessayer.",INVALID_AUTHENTICATOR_CODE:"Code d'authentification invalide. Veuillez réessayer.",INVALID_RECOVERY_CODE:"Code de récupération invalide. Veuillez réessayer.",REFRESH_TOKEN_REQUIRED:"Un jeton d'actualisation est requis.",INVALID_REFRESH_TOKEN:"Jeton d'actualisation invalide.",PUBLIC_REGISTRATION_DISABLED:"L'enregistrement d'un nouveau compte est actuellement désactivé sur ce serveur. Veuillez contacter l'administrateur.",USERNAME_REQUIRED:"Nom d’utilisateur requis.",USERNAME_ALREADY_IN_USE:"Nom d'utilisateur déjà utilisé.",USERNAME_AVAILABLE:"Ce nom d'utilisateur est disponible.",USERNAME_MISMATCH:"Le nom d'utilisateur ne correspond pas à l'utilisateur actuel.",PASSWORD_MISMATCH:"Le mot de passe indiqué ne correspond pas à votre mot de passe actuel.",ACCOUNT_SUCCESSFULLY_DELETED:"Compte supprimé avec succès.",USERNAME_EMPTY_OR_WHITESPACE:"Le nom d'utilisateur ne peut pas être vide ou contenir un espace.",USERNAME_TOO_SHORT:"Le nom d'utilisateur est trop court : il doit comporter au moins 3 caractères.",USERNAME_TOO_LONG:"Le nom d'utilisateur est trop long : il ne peut pas contenir plus de 40 caractères.",USERNAME_INVALID_EMAIL:"Adresse e-mail invalide.",USERNAME_INVALID_CHARACTERS:"Le nom d'utilisateur n'est pas valide, il ne peut contenir que des lettres ou des chiffres.",VAULT_NOT_UP_TO_DATE:"Votre coffre n'est pas à jour. Veuillez synchroniser votre coffre et réessayer.",INTERNAL_SERVER_ERROR:"Erreur interne du serveur.",VAULT_ERROR:"Le coffre local n'est pas à jour. Veuillez synchroniser votre coffre en rafraîchissant la page et réessayez."}},lC={or:"ou",new:"Nouveau",vaultLocked:"AliasVault est verrouillé.",creatingNewAlias:"Création de nouveaux alias...",noMatchesFound:"Aucun résultat trouvé",searchVault:"Rechercher élément...",enterServiceName:"Entrez le nom du service",enterEmailAddress:"Entrer l'adresse email",enterUsername:"Entrez le nom d'utilisateur",hideFor1Hour:"Cacher pendant 1 heure (site actuel)",hidePermanently:"Masquer définitivement (site actuel)",createRandomAlias:"Créer un alias aléatoire",createUsernamePassword:"Créer un nom d'utilisateur/mot de passe",randomAlias:"Alias aléatoire",usernamePassword:"Nom d’utilisateur / mot de passe",createAndSaveAlias:"Créer et enregistrer l'alias",createAndSaveCredential:"Créer et enregistrer les identifiants",randomIdentityDescription:"Générer une identité aléatoire avec une adresse email aléatoire accessible dans AliasVault.",randomIdentityDescriptionDropdown:"Identité aléatoire avec email aléatoire",manualCredentialDescription:"Spécifiez votre propre adresse email et nom d'utilisateur.",manualCredentialDescriptionDropdown:"Identifiant et mot de passe manuels",failedToCreateIdentity:"Échec de la création de l'identité. Veuillez réessayer.",enterEmailAndOrUsername:"Entrez l'adresse email et/ou le nom d'utilisateur",autofillWithAliasVault:"Remplissage automatique avec AliasVault",generateRandomPassword:"Générer un mot de passe aléatoire (copier dans le presse-papier)",generateNewPassword:"Générer un nouveau mot de passe",togglePasswordVisibility:"Afficher ou masquer le mot de passe",passwordCopiedToClipboard:"Mot de passe copié dans le presse-papiers",openAliasVaultToUpgrade:"Ouvrez AliasVault pour améliorer",vaultUpgradeRequired:"Mise à niveau du coffre requise.",dismissPopup:"Fermer",noTotpItemsFound:"Aucun code 2FA correspondant",close:"Fermer",savePrompt:{title:"Enregistrer dans AliasVault?",neverForThisSite:"Jamais pour ce site",addUrlTitle:"Ajouter l'URL à l'identifiant?"}},dC={title:"Éléments",itemName:"Nom",loginCredentials:"Identifiants de connexion",cardInformation:"Informations de la carte",addItem:"Ajouter un élément",addNewItem:"Ajouter un nouvel élément",saveItem:"Enregistrer l'élément",itemDetails:"Détails de l’élément",editItem:"Editer l'élément",untitled:"Untitled",newFolder:"Nouveau dossier",createFolder:"Nouveau dossier",editFolder:"Éditer le dossier",folderName:"Nom du dossier",folderNameRequired:"Le nom du dossier est requis",folder:"Dossier",welcomeTitle:"Bienvenue dans AliasVault !",welcomeDescription:"Pour utiliser l'extension de navigateur AliasVault : accédez à un site web et utilisez la fenêtre de saisie automatique AliasVault pour créer un nouvel identifiant.",noMatchingItems:"Aucun élément ne correspond au filtre sélectionné.",noMatchingItemsSearch:'Aucun élément correspondant à "{{search}}"',noMatchingItemsWithFilter:'Aucun élément {{filter}} correspondant à "{{search}}"',clearSearch:"Effacer la recherche",clearFilter:"Effacer le filtre",emptyFolderHint:"Ce dossier est vide. Pour déplacer des éléments vers ce dossier, éditez l'élément et appuyez sur l'icône du dossier dans le champ nom.",allItemsInFolders:"Tous vos éléments sont organisés dans des dossiers. Appuyez sur un dossier ci-dessus pour voir vos identifiants, ou utilisez la recherche pour trouver des éléments spécifiques.",deleteFolder:"Supprimer le dossier",deleteFolderKeepItems:"Supprimer le dossier uniquement",deleteFolderKeepItemsDescription:"Les éléments seront déplacés dans le dossier parent.",deleteFolderAndItems:"Supprimer le dossier et tous les éléments",deleteFolderAndItemsDescription:"{{count}} élément(s) vont être déplacés vers Récemment supprimés.",filters:{folders:"Dossiers",passkeys:"Clés d'accès",totp:"Codes 2FA"},sort:{title:"Trier par",oldestFirst:"Plus anciens en premier",newestFirst:"Les plus récents en premier",alphabetical:"Alphabétique (A-Z)"},deleteItemTitle:"Supprimer l'élement",deleteItemConfirm:"Êtes-vous certain de vouloir supprimer cet élément?",viewHistory:"Voir l'historique",history:"Historique",noHistoryAvailable:"Pas d'historique disponible",tags:"Mots-clés",changePasswordComplexity:"Changer la complexité du mot de passe",passwordLength:"Longueur du mot de passe",includeLowercase:"Inclure les lettres minuscules",includeUppercase:"Inclure les lettres majuscules",includeNumbers:"Inclure des chiffres",includeSpecialChars:"Inclure des caractères spéciaux",avoidAmbiguousChars:"Éviter les caractères ambigus (o, 0, etc.)",privateEmailTitle:"E-mail privé",privateEmailAliasVaultServer:"Serveur AliasVault",privateEmailDescription:"E2E chiffré, entièrement privé.",publicEmailTitle:"Fournisseurs d'email public temporaires",publicEmailDescription:"Anonyme mais confidentiel limitée. Le contenu des e-mails est lisible par toute personne qui connaît l'adresse.",validation:{required:"Ce champ est requis"}},cC={selectType:"Ajouter un nouvel élément",typeLabel:"Type d'élément",creating:"Création",editing:"Édition",regenerateAlias:"Régénérer l'alias",addCustomField:"Ajouter un champ personnalisé",fieldLabel:"Intitulé du champ",enterFieldName:"Entrez le nom du champ",fieldType:"Type de champ",fieldTypes:{text:"Texte",hidden:"Caché (texte masqué)",email:"Email",url:"URL",phone:"Téléphone",number:"Numéro",date:"Date",textArea:"Zone de texte"},login:{title:"Identifiant"},alias:{title:"Alias"},creditCard:{title:"Carte de crédit"},note:{title:"Note sécurisée"}},uC={"login.url":"URL du site","login.username":"Username","login.password":"Mot de passe","alias.first_name":"Prénom","alias.last_name":"Nom","alias.gender":"Genre","alias.birthdate":"Date de naissance","login.email":"Email","notes.content":"Notes","card.cardholder_name":"Nom du titulaire de la carte","card.number":"Numéro de la carte","card.expiry_month":"Mois d'expiration","card.expiry_year":"Année d'expiration","card.cvv":"CVV","card.pin":"PIN"},mC={addCode:"Ajouter un code 2FA",instructions:"Entrez la clé secrète affichée par le site Web où vous souhaitez ajouter l'authentification à deux facteurs.",nameOptional:"Nom (facultatif)",secretKey:"Clé secrète",saveToViewCode:"Enregistrer pour afficher le code",defaultName:"Authentificateur",deleteTotpCodeTitle:"Supprimer le code 2FA",deleteTotpCodeConfirmation:'Êtes-vous sûr de vouloir supprimer le code 2FA "{{name}} " ?',errors:{invalidSecretKey:"Format de clé secrète invalide."}},gC={uploading:"Envoi...",uploadSuccess:"Fichiers envoyés avec succès.",deleteSuccess:"Pièce jointe supprimée avec succès.",firefoxExpandRequired:"Pour envoyer des fichiers, utilisez la fenêtre étendue.",openExpandedWindow:"Ouvrir la fenêtre étendue"},pC={title:"Emails",deleteEmailTitle:"Supprimer l'email",deleteEmailConfirm:"Êtes-vous sûr de vouloir supprimer définitivement cet email ?",from:"De",to:"À",date:"Date",emailContent:"Contenu de l'email",emailNotFound:"Email introuvable",noEmails:"Aucun email trouvé",noEmailsDescription:"Vous n'avez pas encore reçu d'emails dans vos adresses email privées. Quand vous recevez un nouvel email, il apparaîtra ici.",offlineMessage:"Vous êtes déconnecté. Veuillez vous connecter à internet pour charger vos e-mails.",loadMore:"Charger plus ({{count}} restants)",dateFormat:{justNow:"maintenant",minutesAgo_single:"Il y a {{count}} minute",minutesAgo_plural:"Il y a {{count}} minutes",hoursAgo_single:"Il y a {{count}} heure",hoursAgo_plural:"Il y a {{count}} heures",yesterday:"hier"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"L'adresse email actuelle est déjà utilisée. Veuillez modifier l'adresse email en modifiant cet identifiant.",CLAIM_DOES_NOT_EXIST:"Une erreur s'est produite en essayant de charger les emails. Veuillez essayer de modifier et enregistrer les informations d'identification pour synchroniser la base de données, puis réessayez."}},hC={serverUrl:"URL du serveur",language:"Langue",autofillEnabled:"Activer le remplissage automatique",version:"Version",openWebApp:"Ouvrir l’application web",lock:"Verrouiller",globalSettings:"Paramètres généraux",activeOnAllSites:"Activé sur tous les sites (sauf si désactivé ci-dessous)",disabledOnAllSites:"Désactivé sur tous les sites",rightClickContextMenu:"Clic-droit sur le menu contextuel",autofillMatching:"Correspondance de remplissage automatique",autofillMatchingMode:"Remplir automatiquement le mode correspondant",autofillMatchingModeDescription:"Détermine quels identifiants sont considérés comme une correspondance et sont affichés comme des suggestions dans la fenêtre de saisie automatique pour un site web donné.",autofillMatchingDefault:"URL + sous-domaine + nom générique",autofillMatchingUrlSubdomain:"URL + sous-domaine",autofillMatchingUrlExact:"Domaine d'URL exact uniquement",siteSpecificSettings:"Paramètres spécifiques au site",enabledForThisSite:"Activé pour ce site",disabledForThisSite:"Désactivé pour ce site",resetAllSiteSettings:"Réinitialiser tous les paramètres spécifiques au site",disabledSites:"Sites désactivés",disabledSitesDescription:"Les sites où la fenêtre de saisie automatique n'apparaîtra pas.",clearAllDisabledSites:"Effacer tous les sites désactivés",temporaryUntil:"jusqu'au",appearance:"Apparence",theme:"Thème",useDefault:"Utiliser par défaut",light:"Clair",dark:"Sombre",keyboardShortcuts:"Raccourcis clavier",configureKeyboardShortcuts:"Configurer les raccourcis clavier",configure:"Configurer",clipboardClearTimeout:"Effacer le presse-papiers après copie",clipboardClearTimeoutDescription:"Effacer automatiquement le presse-papiers après copie des données sensibles",clipboardClearDisabled:"Ne jamais effacer",clipboardClear5Seconds:"Effacer après 5 secondes",clipboardClear10Seconds:"Effacer après 10 secondes",clipboardClear15Seconds:"Effacer après 15 secondes",autoLockTimeout:"Délai de verrouillage automatique",autoLockTimeoutDescription:"Verrouiller automatiquement le coffre après une période d'inactivité",autoLockTimeoutHelp:"Le coffre ne se verrouille qu'après la période d'inactivité spécifiée (aucune fenêtre pop-up de saisie automatique ou d'extension). Le coffre sera toujours verrouillé lorsque le navigateur sera fermé, quel que soit ce paramètre.",autoLockNever:"Jamais",autoLock15Seconds:"15 secondes",autoLock30Seconds:"30 secondes",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 heure",autoLock4Hours:"4 heures",autoLock8Hours:"8 heures",autoLock24Hours:"24 heures",versionPrefix:"Version ",autofillSettings:"Paramètres du remplissage automatique",clipboardSettings:"Paramètres du presse-papiers",contextMenuSettings:"Paramètres du menu contextuel",passkeySettings:"Paramètres de la clé d'accès",contextMenuDescription:"Faites un clic droit sur les champs de saisie pour accéder aux options d'AliasVault",selectLanguage:"Sélectionner une langue",serverConfiguration:"Configuration du serveur",serverConfigurationDescription:"Configurer l'URL du serveur AliasVault pour les instances auto-hébergées",customApiUrl:"URL de l'API",customClientUrl:"URL du client",apiUrlHint:"L'URL du point de terminaison de l'API (généralement l'URL du client + /api)",clientUrlHint:"L'URL de l'interface web de votre instance auto-hébergée",autofillSettingsDescription:"Activer ou désactiver la popup de saisie automatique sur les pages web",autofillEnabledDescription:"Les suggestions de saisie automatique apparaîtront dans les formulaires de connexion",autofillDisabledDescription:"Les suggestions de saisie automatique sont désactivées globalement",languageSettings:"Langue",validation:{apiUrlRequired:"L'URL de l'API est requise",apiUrlInvalid:"Veuillez entrer une URL d'API valide",clientUrlRequired:"L'URL du client est requise",clientUrlInvalid:"Veuillez entrer une URL de client valide"},identityGenerator:"Générateur d'identité",identityGeneratorSettings:{description:"Configurer la langue par défaut et la préférence de genre pour la génération de nouvelles identités.",languageSection:"Langue",languageDescription:"Définit la langue qui sera utilisée lors de la génération de nouvelles identités.",genderSection:"Genre",genderDescription:"Définissez la préférence de genre pour la génération de nouvelles identités.",ageRangeSection:"Tranche d'âge",ageRangeDescription:"Définit la tranche d'âge pour la génération de nouvelles identités.",genderOptions:{random:"Aléatoire",male:"Homme",female:"Femme"}},credentialAutofill:"Remplissage automatique des identifiants",credentialAutofillDescription:"Afficher la popup de saisie automatique lorsque les champs nom d'utilisateur/mot de passe sont détectés",totpAutofill:"Remplissage automatique du code 2FA",totpAutofillDescription:"Afficher la popup de saisie automatique lorsque des champs de code 2FA sont détectés",autoCopyTotpOnAutofill:"Copie automatique du code 2FA dans le presse-papiers",autoCopyTotpOnAutofillDescription:"Copier automatiquement le premier code 2FA dans le presse-papiers après le remplissage automatique des identifiants",loginSave:{title:"Enregistrer l'invite de connexion",description:"Afficher une invite pour enregistrer les identifiants de connexion lorsque vous soumettez un formulaire de connexion sur un site Web.",blockedSites:"Sites bloqués",blockedSitesDescription:"Les sites où l'invite de sauvegarde n'apparaîtra jamais.",clearAllBlockedSites:"Effacer tous les sites bloqués"},unlockMethod:{title:"Méthode de déverrouillage du coffre",introText:"Choisissez comment vous voulez déverrouiller votre coffre. Vous pouvez utiliser votre mot de passe principal (toujours disponible) ou configurer un code PIN pour un accès rapide. Après 3 tentatives de PIN échouées, vous devrez utiliser votre mot de passe maître.",password:"Mot de passe maître",pin:"Code PIN",pinDescription:"Déverrouiller le coffre avec le code PIN",setupPin:"Configurer le code PIN",enterNewPinDescription:"Entrez un code PIN composé d'au moins 6 chiffres",confirmPin:"Confirmer le code PIN",confirmPinDescription:"Saisissez à nouveau votre code PIN pour confirmer",invalidPinFormat:"Format de code PIN invalide",pinMismatch:"Les codes PIN ne correspondent pas",incorrectPin:"Code PIN incorrect, {{attemptsRemaining}} tentatives restantes.",incorrectPinSingular:"Code PIN incorrect. 1 tentative restante.",enableSuccess:"Déverrouillage par code PIN activé avec succès!",pinLocked:"Le déverrouillage par code PIN a été désactivé. Veuillez utiliser votre mot de passe maître pour déverrouiller votre coffre.",pinSecurityWarning:"Le déverrouillage par code PIN dans l'extension du navigateur peut être moins sécurisé que votre mot de passe principal, car les codes PIN ont généralement une entropie plus faible et peuvent être trouvés par brute force si votre appareil est compromis. Ne l'utilisez que sur les appareils de confiance totale."}},fC={passkey:"Clé d'accès",site:"Site",helpText:"Les clés d'accès sont créées sur le site Web lorsque vous y êtes invité. Elles ne peuvent pas être modifiées manuellement. Pour supprimer cette clé d'accès, vous pouvez la supprimer de cet identifiant. Pour remplacer cette clé d'accès ou en créer une nouvelle, visitez le site Web et suivez ses instructions.",passkeyMarkedForDeletion:"Clé d'accès marquée pour suppression",passkeyWillBeDeleted:"Cette clé d'accès sera supprimée lorsque vous enregistrerez cet identifiant.",useBrowserPasskey:"Utiliser la clé d'accès du navigateur",bypass:{description:"Combien de temps souhaitez-vous utiliser le fournisseur de clé d'accès du navigateur pour {{origin}}?",thisTimeOnly:"Cette fois seulement",alwaysForSite:"Toujours pour ce site"},authenticate:{title:"Se connecter avec une clé d’accès",signInFor:"Se connecter avec une clé d’accès pour",selectPasskey:"Sélectionnez une clé d'accès pour vous connecter:",noPasskeysFound:"Aucune clé d'accès trouvée pour ce site"},create:{title:"Créer une clé d'accès",createFor:"Créer une nouvelle clé d'accès pour",titleLabel:"Titre",titlePlaceholder:"Entrez un nom pour cette clé d'accès",createButton:"Créer clé d'accès",selectPasskeyToReplace:"Sélectionnez une clé d'accès à remplacer:",createNewPasskey:"Créer une nouvelle clé d'accès",replacingPasskey:"Remplacement de la clé d'accès : {{displayName}}",confirmReplace:"Confirmer le remplacement",selectExistingLogin:"Ajouter à l'identifiant existant :",selectExistingLoginDescription:"Joindre cette clé d'accès à un identifiant de connexion existant pour ce site.",attachingToCredential:"Ajout de la clé d'accès à : {{serviceName}}",attachPasskey:"Ajouter une clé d'accès"},settings:{passkeyProvider:"Fournisseur de clés d'accès",passkeyProviderOn:"Fournisseur de clé d'accès activé "}},AC={title:"Supprimé récemment",noItems:"Aucun élément supprimé",noItemsDescription:"Les éléments que vous supprimez apparaîtront ici pendant {{days}} jours avant d'être définitivement supprimés.",description:"Ces éléments seront définitivement supprimés après {{days}} jours. Vous pouvez les restaurer ou les supprimer immédiatement.",restore:"Restaurer",deletePermanently:"Supprimer définitivement",emptyAll:"Vider tout",daysRemaining_one:"{{count}} jour restant",daysRemaining_other:"{{count}} jours restants",expiringSoon:"Expirant bientôt",confirmDeleteTitle:"Supprimer définitivement?",confirmDeleteMessage:"Cet élément sera définitivement supprimé et ne pourra pas être récupéré.",confirmEmptyAllTitle:"Vider récemment supprimé ?",confirmEmptyAllMessage:"Tous les {{count}} éléments seront définitivement supprimés et ne pourront pas être récupérés."},yC={title:"Mettre à niveau le coffre",subtitle:"AliasVault a mis à jour et votre coffre doit être mis à niveau. Cela ne devrait prendre que quelques secondes.",versionInformation:"Informations de version",yourVault:"Votre version de coffre-fort :",newVersion:"Nouvelle version valable :",upgrade:"Mettre le coffre à niveau",upgrading:"Mise à niveau...",whatsNew:"Nouveautés",whatsNewDescription:"Une mise à niveau est nécessaire pour prendre en charge les modifications suivantes :",noDescriptionAvailable:"Aucune description disponible pour cette version.",alerts:{unableToGetVersionInfo:"Impossible d'obtenir les informations de version. Veuillez réessayer.",selfHostedServer:"Serveur auto-hébergé",selfHostedWarning:"Si vous utilisez un serveur auto-hébergé, assurez-vous également de mettre à jour votre instance auto-hébergée, sinon la connexion au client web cessera de fonctionner.",continueUpgrade:"Continuer la mise à jour",upgradeFailed:"Échec de la mise à niveau",failedToApplyMigration:"Impossible d'appliquer la migration ({{current}} sur {{total}})"}},EC={unsyncedChangesTitle:"Changements non synchronisés",unsyncedChangesWarning:"Vous avez des modifications non synchronisées qui seront perdues si vous vous déconnectez maintenant. Êtes-vous sûr de vouloir continuer ?",logoutAnyway:"Se déconnecter quand même"},bC={offline:"Hors ligne",tapToRetry:"Appuyez pour réessayer",syncErrorTitle:"Synchronisation échouée",syncErrorDismiss:"Ignorer"},vC={auth:rC,menu:sC,common:oC,content:lC,items:dC,itemTypes:cC,fieldLabels:uC,totp:mC,attachmentUploader:gC,emails:pC,settings:hC,passkeys:fC,recentlyDeleted:AC,upgrade:yC,logout:EC,sync:bC},xM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:gC,auth:rC,common:oC,content:lC,default:vC,emails:pC,fieldLabels:uC,itemTypes:cC,items:dC,logout:EC,menu:sC,passkeys:fC,recentlyDeleted:AC,settings:hC,sync:bC,totp:mC,upgrade:yC},Symbol.toStringTag,{value:"Module"})),wC={loginTitle:"כניסה ל־AliasVault",username:"שם משתמש או דוא״ל",usernamePlaceholder:"שם / name@company.com",passwordPlaceholder:"נא למלא את הסיסמה שלך",rememberMe:"לזכור אותי",loginButton:"כניסה",noAccount:"אין לך חשבון עדיין?",createVault:"יצירת כספת חדשה",twoFactorTitle:"נא למלא את קוד האימות מיישומון המאמת שלך.",authCode:"קוד אימות",authCodePlaceholder:"נא למלא קוד באורך 6 ספרות",verify:"אימות",twoFactorNote:"לתשומת ליבך: אם אין לך גישה להתקן המאמת (authenticator) שלך, אפשר לאפס אימות דו־שלבי עם קוד שחזור על ידי כניסה דרך האתר.",masterPassword:"סיסמת על",unlockVault:"שחרור נעילה",unlockWithPin:"שחרור נעילה עם קוד אישי",enterPinToUnlock:"נא למלא את הקוד האישי שלך כדי לשחרר את הכספת שלך",useMasterPassword:"להשתמש בסיסמה על",unlockTitle:"שחרור נעילת הכספת שלך",logoutConfirm:"לצאת?",unlockSuccessTitle:"נעילת הכספת שלך נפתחה בהצלחה",unlockSuccessDescription:"מעתה ניתן להשתמש בהשלמה אוטומטית בטופסי כניסה בדפדפן שלך.",closePopup:"סגירת החלונית הצצה הזאת",browseVault:"עיון בתוכן הכספת",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"מתבצעת התחברות אל",switchAccounts:"להחליף חשבונות?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},IC={vault:"Vault",emails:"הודעות דוא״ל"},CC={loading:"בטעינה…",notice:"לתשומת ליבך",error:"שגיאה",cancel:"ביטול",confirm:"אישור",remove:"Remove",back:"חזרה",next:"הבא",use:"להשתמש",add:"Add",delete:"מחיקה",undo:"הסגה",save:"שמירה",saving:"Saving...",edit:"עריכה",create:"יצירה",or:"או",close:"סגירה",dismiss:"Dismiss",logout:"יציאה",copied:"הועתק!",openInNewWindow:"פתיחה בחלון חדש",enabled:"פעיל",disabled:"כבוי",showPassword:"הצגת סיסמה",hidePassword:"הסתרת סיסמה",show:"Show",hide:"Hide",showDetails:"הצגת פרטים",hideDetails:"הסתרת פרטים",copyToClipboard:"העתקה ללוח הגזירים",loadingEmails:"הודעות הדוא״ל נטענות…",loadingTotpCodes:"הקודים החד־פעמיים הזמניים נטענים…",attachments:"צרופות",loadingAttachments:"הצרופות נטענות…",settings:"הגדרות",recentEmails:"הודעות דוא״ל אחרונות",credentials:"פרטי גישה",customFields:"Custom Fields",twoFactorAuthentication:"אימות דו־שלבי",alias:"כינוי",notes:"הערות",email:"דוא״ל",username:"שם משתמש",password:"סיסמה",generate:"Generate",serviceName:"שם השירות",loggedIn:"נכנסת",syncingVault:"הכספת מסתנכרת",checkingVaultUpdates:"מתבצעת בדיקה לשינויים בכספת",syncingUpdatedVault:"הכספת העדכנית מסתנכרת",loadMore:"לטעון עוד",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"שרת ה־AliasVault לא זמין. נא לנסות שוב מאוחר יותר או ליצור קשר עם התמיכה אם הבעיה נשנית.",clientVersionNotSupported:"הגרסה הזאת של הרחבת הדפדפן של AliasVault לא נתמכת עוד על ידי השרת. נא לעדכן את הרחבת הדפדפן שלך לגרסה העדכנית ביותר.",browserExtensionOutdated:"הרחבת הדפדפן הזאת לא עדכנית ואי אפשר להשתמש בה כדי לגשת לכספת הזאת. נא לעדכן את הרחבת הדפדפן הזאת כדי להמשיך.",serverVersionNotSupported:"יש לעדכן את שרת AliasVault לגרסה חדשה יותר כדי להשתמש בהרחבת הדפדפן הזאת. נא ליצור קשר עם התמיכה לקבלת עזרה.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"אירעה שגיאה לא ידועה",unknownErrorTryAgain:"אירעה שגיאה לא ידועה, נא לנסות שוב.",vaultNotAvailable:"הכספת לא זמינה",vaultIsLocked:"הכספת נעולה",passwordChanged:"הסיסמה שלך השתנתה מאז הפעם האחרונה שנכנסת למערכת. נא להיכנס שוב מטעמי אבטחת מידע.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"נא למלא קוד אימות באורך 6 ספרות.",serverError:"לא ניתן ליצור קשר עם השרת של AliasVault. נא לנסות שוב מאוחר יותר או ליצור קשר עם התמיכה אם הבעיה נשנית.",wrongPassword:"סיסמה שגויה. נא לנסות שוב.",sessionExpired:"תוקף ההפעלה שלך פג. נא להיכנס מחדש.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"אירעה שגיאה לא ידועה, נא לנסות שוב.",ACCOUNT_LOCKED:"החשבון נעול זמנית עקב ריבוי ניסיונות כושלים. נא לנסות שוב מאוחר יותר.",ACCOUNT_BLOCKED:"החשבון שלך הושבת. אם לדעתך מדובר בטעות, נא ליצור קשר עם התמיכה.",USER_NOT_FOUND:"שם המשתמש או הסיסמה שגויים. נא לנסות שוב.",INVALID_AUTHENTICATOR_CODE:"קוד מאמת שגוי. נא לנסות שוב.",INVALID_RECOVERY_CODE:"קוד שחזור שגוי. נא לנסות שוב.",REFRESH_TOKEN_REQUIRED:"אסימון ריענון חובה.",INVALID_REFRESH_TOKEN:"אסימון ריענון שגוי.",PUBLIC_REGISTRATION_DISABLED:"רישום חשבון חדש מושבת כרגע בשרת הזה. נא ליצור קשר עם ההנהלה.",USERNAME_REQUIRED:"שם משתמש חובה.",USERNAME_ALREADY_IN_USE:"שם המשתמש כבר תפוס.",USERNAME_AVAILABLE:"שם המשתמש פנוי.",USERNAME_MISMATCH:"שם המשתמש לא מתאים למשתמש הנוכחי.",PASSWORD_MISMATCH:"הסיסמה שסופקה לא תואמת לסיסמה הנוכחית שלך.",ACCOUNT_SUCCESSFULLY_DELETED:"החשבון נמחק בהצלחה.",USERNAME_EMPTY_OR_WHITESPACE:"שם המשתמש לא יכול להיות ריק או מורכב מרווחים בלבד.",USERNAME_TOO_SHORT:"שם המשתמש קצר מדי: חייב להיות באורך 3 תווים לפחות.",USERNAME_TOO_LONG:"שם המשתמש ארוך מדי: לא יכול להיות ארוך מ־40 תווים.",USERNAME_INVALID_EMAIL:"כתובת דוא״ל שגויה.",USERNAME_INVALID_CHARACTERS:"שם המשתמש שגוי, יכול להכיל רק תווים או ספרות.",VAULT_NOT_UP_TO_DATE:"הכספת שלך אינה עדכנית. נא לסנכרן את הכספת שלך ולנסות שוב.",INTERNAL_SERVER_ERROR:"שגיאת שרת פנימית.",VAULT_ERROR:"הכספת המקומית אינה עדכנית. נא לסנכרן את הכספת שלך על ידי ריענון העמוד ולנסות שוב."}},SC={or:"או",new:"חדש",vaultLocked:"AliasVault נעול.",creatingNewAlias:"נוצר כינוי חדש...",noMatchesFound:"לא נמצאו תוצאות",searchVault:"חיפוש בכספת…",enterServiceName:"נא למלא את שם השירות",enterEmailAddress:"נא למלא כתובת דוא״ל",enterUsername:"נא למלא שם משתמש",hideFor1Hour:"הסתרה למשך שעה (האתר הנוכחי)",hidePermanently:"הסתרה לצמיתות (האתר הנוכחי)",createRandomAlias:"יצירת כינוי אקראי",createUsernamePassword:"יצירת שם משתמש/סיסמה",randomAlias:"כינוי אקראי",usernamePassword:"שם משתמש/סיסמה",createAndSaveAlias:"יצירה ושמירה של כינוי",createAndSaveCredential:"יצירה ושמירה של פרטי גישה",randomIdentityDescription:"יצירת זהות אקראית עם כתובת דוא״ל אקראית שנגישה דרך AliasVault.",randomIdentityDescriptionDropdown:"זהות אקראיות עם דוא״ל אקראי",manualCredentialDescription:"נא לציין כתובת דוא״ל ושם משתמש משלך.",manualCredentialDescriptionDropdown:"שם משתמש וסיסמה ידניים",failedToCreateIdentity:"יצירת הזהות נכשלה. נא לנסות שוב.",enterEmailAndOrUsername:"נא למלא דוא״ל ו/או שם משתמש",autofillWithAliasVault:"השלמה אוטומטית עם AliasVault",generateRandomPassword:"יצירת סיסמה אקראית (העתקה ללוח הגזירים)",generateNewPassword:"יצירת סיסמה חדשה",togglePasswordVisibility:"הצגת/הסתרת סיסמה",passwordCopiedToClipboard:"הסיסמה הועתקה ללוח הגזירים",openAliasVaultToUpgrade:"יש לפתוח את AliasVault כדי לשדרג",vaultUpgradeRequired:"יש לשדרג את הכספת.",dismissPopup:"התעלמות מחלונית",noTotpItemsFound:"No 2FA code matches found",close:"סגירה",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},TC={title:"Items",itemName:"שם",loginCredentials:"פרטי הגישה",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"יצירת תיקייה",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"תיקייה",welcomeTitle:"ברוך בואך ל־AliasVault!",welcomeDescription:"כדי להשתמש בהרחבת הדפדפן של AliasVault: יש לנווט לאתר ולהשתמש בחלונית ההשלמה האוטומטית של AliasVault כדי ליצור פרטי גישה חדשים.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"תגיות",changePasswordComplexity:"החלפת מורכבת הסיסמה",passwordLength:"אורך הסיסמה",includeLowercase:"לכלול אותיות קטנות",includeUppercase:"לכלול אותיות גדולות",includeNumbers:"לכלול מספרים",includeSpecialChars:"לכלול תווים מיוחדים",avoidAmbiguousChars:"עדיף להימנע מאותיות וספרות שדומים זה לזה (o,‏ 0 וכו׳)",privateEmailTitle:"כתובת דוא״ל פרטית",privateEmailAliasVaultServer:"שרת AliasVault",privateEmailDescription:"הצפנה מקצה לקצה, פרטיות מלאה.",publicEmailTitle:"ספקי תיבת דוא״ל זמנית ציבוריים",publicEmailDescription:"פרטיות אלמונית אך מוגבלת. תוכן הדוא״ל נגיש לכל מי שיודע את הכתובת.",validation:{required:"שדה חובה"}},NC={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"דוא״ל",url:"URL",phone:"Phone",number:"Number",date:"תאריך",textArea:"Text Area"},login:{title:"כניסה"},alias:{title:"כינוי"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},kC={"login.url":"Website URL","login.username":"שם משתמש","login.password":"סיסמה","alias.first_name":"שם פרטי","alias.last_name":"שם משפחה","alias.gender":"מגדר","alias.birthdate":"תאריך לידה","login.email":"דוא״ל","notes.content":"הערות","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},xC={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"שם (רשות)",secretKey:"מפתח סודי",saveToViewCode:"יש לשמור כדי לצפות בקוד",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},LC={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},DC={title:"הודעות דוא״ל",deleteEmailTitle:"מחיקת הודעת דוא״ל",deleteEmailConfirm:"למחוק את הודעת הדוא״ל הזאת לצמיתות?",from:"מאת",to:"אל",date:"תאריך",emailContent:"תוכן הודעת דוא״ל",emailNotFound:"הודעת הדוא״ל לא נמצאה",noEmails:"לא נמצאו הודעות דוא״ל",noEmailsDescription:"לא קיבלת הודעות דוא״ל כלשהן לכתובות הדוא״ל הפרטיות שלך עדיין. כשמגיעה הודעה חדשה היא תופיע כאן.",offlineMessage:"החיבור שלך מנותק. נא להתחבר לאינטרנט כדי לטעון את הודעות הדוא״ל שלך.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"ממש הרגע",minutesAgo_single:"לפני דקה",minutesAgo_plural:"לפני {{count}} דקות",hoursAgo_single:"לפני שעה",hoursAgo_plural:"לפני {{count}} שעות",yesterday:"אתמול"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"כתובת הדוא״ל שנבחרה תפוסה. נא לשנות את כתובת הדוא״ל על ידי עריכת פרטי הגישה.",CLAIM_DOES_NOT_EXIST:"אירעה שגיאה בניסיון לטעון את הודעות הדוא״ל. נא לנסות לערוך ולשמור את רשומת פרטי הקשר כדי לסנכרן את מסד הנתונים ואז לנסות שוב."}},RC={serverUrl:"כתובת שרת",language:"שפה",autofillEnabled:"הפעלת השלמה אוטומטית",version:"גרסה",openWebApp:"פתיחת אתר",lock:"נעילה",globalSettings:"הגדרות מקיפות",activeOnAllSites:"פעיל בכל האתרים (למעט אם נכבה להלן)",disabledOnAllSites:"כבוי בכל האתרים",rightClickContextMenu:"תפריט הקשר בלחיצה ימנית",autofillMatching:"התאמת השלמה אוטומטית",autofillMatchingMode:"מצב התאמת השלמה אוטומטית",autofillMatchingModeDescription:"הגדרה אילו פרטי גישה נחשבים תואמים ויופיעו כהצעות בחלונית ההשלמה האוטומטית לאתר מסוים.",autofillMatchingDefault:"כתובת + שם תת־תחום + תו כל על שם",autofillMatchingUrlSubdomain:"כתובת + שם תת־תחום",autofillMatchingUrlExact:"תחום כתובת מדויקת בלבד",siteSpecificSettings:"הגדרות תואמות אתר",enabledForThisSite:"פעיל לאתר הזה",disabledForThisSite:"כבוי לאתר הזה",resetAllSiteSettings:"איפוס כל ההגדרות הנקודתיות לאתרים",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"מראה",theme:"ערכת עיצוב",useDefault:"להשתמש בברירת המחדל",light:"בהירה",dark:"כהה",keyboardShortcuts:"קיצורי מקלדת",configureKeyboardShortcuts:"הגדרת קיצורי מקלדת",configure:"הגדרה",clipboardClearTimeout:"לפנות את לוח הגזירים לאחר העתקה",clipboardClearTimeoutDescription:"לפנות את לוח הגזירים אוטומטית לאחר העתקת נתונים רגישים",clipboardClearDisabled:"אף פעם לא לפנות",clipboardClear5Seconds:"לפנות אחרי 5 שניות",clipboardClear10Seconds:"לפנות אחרי 10 שניות",clipboardClear15Seconds:"לפנות אחרי 15 שניות",autoLockTimeout:"תום המתנה לנעילה אוטומטית",autoLockTimeoutDescription:"לנעול את הכספת אוטומטית לאחר פרק זמן של חוסר פעילות",autoLockTimeoutHelp:"הכספת תינעל רק לאחר משך זמן של חוסר פעילות (אין שימוש בהשלמה אוטומטית או פתיחת חלונית הרחבה). הכספת תמיד תינעל עם סגירת הדפדפן, ללא תלות בהגדרה הזאת.",autoLockNever:"אף פעם",autoLock15Seconds:"15 שניות",autoLock30Seconds:"30 שניות",autoLock1Minute:"דקה",autoLock5Minutes:"5 דקות",autoLock15Minutes:"15 דקות",autoLock30Minutes:"30 דקות",autoLock1Hour:"שעה",autoLock4Hours:"4 שעות",autoLock8Hours:"8 שעות",autoLock24Hours:"24 שעות",versionPrefix:"גרסה ",autofillSettings:"הגדרות השלמה אוטומטית",clipboardSettings:"הגדרות לוח הגזירים",contextMenuSettings:"הגדרות תפריט הקשר",passkeySettings:"Passkey Settings",contextMenuDescription:"ניתן ללחוץ על שדה עם הלחצן הימני כדי לגשת לאפשרויות AliasVault",selectLanguage:"בחירת שפה",serverConfiguration:"הגדרות שרת",serverConfigurationDescription:"הגדרת כתובת שרת AliasVault לעותקים באירוח עצמי",customApiUrl:"כתובת API",customClientUrl:"כתובת לקוח",apiUrlHint:"נקודת הקצה של ה־API (בדרך כלל כתובת לקוח + ‎/api)",clientUrlHint:"כתובת ממשק המשתמש הדפדפני של העותק באירוע העצמי שלך",autofillSettingsDescription:"הפעלת או כיבוי חלוניות השלמה אוטומטית בעמודי אתרים",autofillEnabledDescription:"הצעות השלמה אוטומטית בטופסי כניסה למערכות",autofillDisabledDescription:"הצעות השלמה אוטומטית כבויות באופן מקיף",languageSettings:"שפה",validation:{apiUrlRequired:"כתובת API חובה",apiUrlInvalid:"נא למלא כתובת API תקפה",clientUrlRequired:"כתובת לקוח חובה",clientUrlInvalid:"נא למלא כתובת לקוח תקפה"},identityGenerator:"מייצר זהויות",identityGeneratorSettings:{description:"להגדיר את העדפת השפה והמגדר ליצירת זהויות חדשות כברירת מחדל.",languageSection:"שפה",languageDescription:"נא להגדיר את השפה שתשמש ליצירת זהויות חדשות.",genderSection:"מגדר",genderDescription:"להגדיר את אפשרויות המגדר ליצירת זהויות חדשות.",ageRangeSection:"טווח גילים",ageRangeDescription:"הגדרת טווח גילים ליצירת זהויות חדשות.",genderOptions:{random:"אקראי",male:"זכר",female:"נקבה"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"שיטת שחרור נעילת כספת",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"סיסמת על",pin:"קוד אישי",pinDescription:"שחרור כספת עם קוד אישי",setupPin:"הגדרת קוד גישה אישי",enterNewPinDescription:"נא למלא קוד אישי שמורכב מ־6 ספרות לפחות",confirmPin:"אישור קוד אישי",confirmPinDescription:"נא למלא את הקוד האישי שלך שוב לאישור",invalidPinFormat:"תבנית הקוד האישי שגויה",pinMismatch:"הקודים האישיים לא תואמים",incorrectPin:"קוד אישי שגוי. נותרו {{attemptsRemaining}} ניסיונות.",incorrectPinSingular:"קוד אישי שגוי. נותר עוד ניסיון.",enableSuccess:"שחרור קוד אישי הופעל בהצלחה!",pinLocked:"שחרור נעילה עם קוד אישי הושבתה. נא להשתמש בסיסמת העל שלך כדי לשחרר את הכספת שלך.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},UC={passkey:"Passkey",site:"אתר",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"בפעם הזאת בלבד",alwaysForSite:"תמיד לאתר הזה"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"כותרת",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"אישור החלפה",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},MC={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},_C={title:"שדרוג כספת",subtitle:"AliasVault התעדכן וצריך לשדרג את הכספת שלך. הפעולה הזאת אמורה לארוך מספר שניות.",versionInformation:"פרטי גרסה",yourVault:"גרסת הכספת שלך:",newVersion:"הגרסה החדשה הזמינה:",upgrade:"שדרוג כספת",upgrading:"משתדרגת…",whatsNew:"מה חדש",whatsNewDescription:"יש לשדרג כדי שתהיה תמיכה בשינויים הבאים:",noDescriptionAvailable:"אין תיאור זמין לגרסה הזאת.",alerts:{unableToGetVersionInfo:"לא ניתן לקבל את פרטי הגרסה. נא לנסות שוב מאוחר יותר.",selfHostedServer:"שרת באירוח עצמי",selfHostedWarning:"אם מדובר בשרת שמתארח עצמאית, נא לוודא שהעותק שמתארח אצלך גם כן מתעדכן כי אחרת הכניסה לאתר תפסיק לעבוד.",continueUpgrade:"להמשיך בשדרוג",upgradeFailed:"השדרוג נכשל",failedToApplyMigration:"החלת ההסבה נכשלה ({{current}} מתוך {{total}})"}},FC={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},BC={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},PC={auth:wC,menu:IC,common:CC,content:SC,items:TC,itemTypes:NC,fieldLabels:kC,totp:xC,attachmentUploader:LC,emails:DC,settings:RC,passkeys:UC,recentlyDeleted:MC,upgrade:_C,logout:FC,sync:BC},LM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:LC,auth:wC,common:CC,content:SC,default:PC,emails:DC,fieldLabels:kC,itemTypes:NC,items:TC,logout:FC,menu:IC,passkeys:UC,recentlyDeleted:MC,settings:RC,sync:BC,totp:xC,upgrade:_C},Symbol.toStringTag,{value:"Module"})),OC={loginTitle:"Accedi ad AliasVaultriem",username:"Nome utente o mail",usernamePlaceholder:"nome / nome@azienda.com",passwordPlaceholder:"Inserisci la tua password",rememberMe:"Ricordati di me",loginButton:"Accedi",noAccount:"Non hai ancora un account?",createVault:"Crea una nuova cassaforte",twoFactorTitle:"Inserisci il codice di autenticazione dalla tua app di autenticazione.",authCode:"Codice di Autenticazione",authCodePlaceholder:"Inserisci il codice a 6 cifre",verify:"Verifica",twoFactorNote:"Nota: se non hai accesso al tuo dispositivo di autenticazione, puoi reimpostare il tuo 2FA con un codice di recupero accedendo tramite il sito web.",masterPassword:"Password principale",unlockVault:"Sblocca",unlockWithPin:"Sblocca con PIN",enterPinToUnlock:"Inserisci il PIN per sbloccare la cassaforte",useMasterPassword:"Usa La Password Principale",unlockTitle:"Sblocca la tua cassaforte",logoutConfirm:"Sei sicuro di volerti disconnettere?",unlockSuccessTitle:"La cassaforte è stata sbloccata con successo",unlockSuccessDescription:"Ora puoi usare l'auto-riempimento nei moduli di accesso nel tuo browser.",closePopup:"Chiudi questo popup",browseVault:"Sfoglia i contenuti della cassaforte",autoCloseUnlockPopup:"Chiusura automatica ai futuri accessi",connectingTo:"Connessione a",switchAccounts:"Cambia account",loginWithMobile:"Accedi con l'App Mobile",unlockWithMobile:"Sblocca con l'App Mobile",scanQrCode:"Scansiona questo codice QR con l'app mobile di AliasVault per accedere e sbloccare la cassaforte.",passwordAttemptsWarning:"Password errata. Sarai disconnesso se inserisci la password errata {{remainingAttempts}} altre volte.",maxAttemptsReached:"Troppi tentativi di sblocco falliti. Sei stato disconnesso per motivi di sicurezza."},jC={vault:"Cassaforte",emails:"E-Mail"},HC={loading:"Caricamento in corso...",notice:"Avviso",error:"Errore",cancel:"Annulla",confirm:"Conferma",remove:"Rimuovi",back:"Indietro",next:"Avanti",use:"Usa",add:"Aggiungi",delete:"Elimina",undo:"Annulla",save:"Salva",saving:"Salvataggio...",edit:"Modifica",create:"Creare",or:"O",close:"Chiudi",dismiss:"Annulla",logout:"Esci",copied:"Copiato!",openInNewWindow:"Apri in una nuova finestra",enabled:"Abilitato",disabled:"Disabilitato",showPassword:"Mostra password",hidePassword:"Nascondi password",show:"Mostra",hide:"Nascondi",showDetails:"Mostra dettagli",hideDetails:"Nascondi dettagli",copyToClipboard:"Copia negli appunti",loadingEmails:"Caricamento e-mail in corso...",loadingTotpCodes:"Caricamento codici TOTP in corso...",attachments:"Allegati",loadingAttachments:"Caricamento allegati in corso...",settings:"Impostazioni",recentEmails:"E-mail recenti",credentials:"Credenziali",customFields:"Campi Personalizzati",twoFactorAuthentication:"Autenticazione a due fattori",alias:"Alias",notes:"Note",email:"E-mail",username:"Nome utente",password:"Password",generate:"Genera",serviceName:"Nome Servizio",loggedIn:"Accesso effettuato",syncingVault:"Sincronizzazione cassaforte",checkingVaultUpdates:"Controllo aggiornamenti cassaforte",syncingUpdatedVault:"Sincronizzazione cassaforte aggiornata",loadMore:"Carica altro",offline:"Offline",offlineMode:"Funzionamento in modalità offline",pendingSync:"Sincronizzazione...",mergingVaultChanges:"Sincronizzzazione modifiche della cassaforte...",uploadingVault:"Caricamento cassaforte in corso...",errors:{serverNotAvailable:"Il server di AliasVault non è disponibile. Riprova più tardi o contatta il supporto se il problema persiste.",clientVersionNotSupported:"Questa versione dell'estensione del browser AliasVault non è più supportata dal server. Aggiorna l'estensione alla versione più recente.",browserExtensionOutdated:"Questa estensione del browser è obsoleta e non può essere utilizzata per accedere a questa cassaforte. Si prega di aggiornare questa estensione per continuare.",serverVersionNotSupported:"Il server di AliasVault necessita un aggiornamento a una versione più recente per poter usare questa estensione. Contatta il supporto se hai bisogno di assistenza.",serverVersionTooOld:"Il server AliasVault deve essere aggiornato a una versione più recente per poter utilizzare questa app mobile. Se hai bisogno di aiuto, contatta il supporto.",unknownError:"Si è verificato un errore sconosciuto",unknownErrorTryAgain:"Si è verificato un errore sconosciuto. Riprova.",vaultNotAvailable:"Cassaforte non disponibile",vaultIsLocked:"La cassaforte è bloccata",passwordChanged:"La tua password è cambiata dall'ultima volta che hai effettuato l'accesso. Effettua nuovamente l'accesso per motivi di sicurezza.",syncConflictMaxRetries:"Impossibile sincronizzare la cassaforte dopo più tentativi. Riprova più tardi.",mergeFailed:"Sincronizzazione della cassaforte non riuscita. Riprovare.",vaultTooLarge:"La cassaforte è troppo grande perché il server possa accettarla. Provare a rimuovere alcuni elementi o allegati per ridurre le dimensioni e riprovare.",invalidCode:"Inserisci un codice di autenticazione a 6 cifre valido.",serverError:"Impossibile raggiungere il server AliasVault. Riprova più tardi o contatta il supporto se il problema persiste.",wrongPassword:"Password errata. Riprovare.",sessionExpired:"La tua sessione è scaduta. Effettua di nuovo il login.",mobileLoginRequestExpired:"Richiesta di accesso mobile scaduta. Ricarica la pagina e riprova."},apiErrors:{UNKNOWN_ERROR:"Si è verificato un errore sconosciuto. Riprova.",ACCOUNT_LOCKED:"Account temporaneamente bloccato a causa di troppi tentativi falliti. Riprova più tardi.",ACCOUNT_BLOCKED:"Il tuo account è stato disabilitato. Se ritieni che sia un errore, contatta il supporto.",USER_NOT_FOUND:"Nome utente o password non validi. Riprova.",INVALID_AUTHENTICATOR_CODE:"Codice di autenticazione non valido. Riprova.",INVALID_RECOVERY_CODE:"Codice di recupero non valido. Riprova.",REFRESH_TOKEN_REQUIRED:"È necessario aggiornare il token.",INVALID_REFRESH_TOKEN:"Token di aggiornamento non valido",PUBLIC_REGISTRATION_DISABLED:"La registrazione di nuovi account è attualmente disabilitata su questo server. Contatta l'amministratore.",USERNAME_REQUIRED:"È richiesto il nome utente.",USERNAME_ALREADY_IN_USE:"Il nome utente è già in uso.",USERNAME_AVAILABLE:"Il nome utente è disponibile.",USERNAME_MISMATCH:"Il nome utente non corrisponde all'utente corrente.",PASSWORD_MISMATCH:"La password fornita non corrisponde alla password attuale.",ACCOUNT_SUCCESSFULLY_DELETED:"Account eliminato con successo.",USERNAME_EMPTY_OR_WHITESPACE:"Il nome utente non può essere vuoto o contenere spazi.",USERNAME_TOO_SHORT:"Nome utente troppo corto: deve contenere almeno 3 caratteri.",USERNAME_TOO_LONG:"Nome utente troppo lungo: non può superare i 40 caratteri.",USERNAME_INVALID_EMAIL:"Indirizzo email non valido.",USERNAME_INVALID_CHARACTERS:"Il nome utente non è valido, può contenere solo lettere o cifre.",VAULT_NOT_UP_TO_DATE:"La tua cassaforte non è aggiornata. Sincronizzala e riprova.",INTERNAL_SERVER_ERROR:"Errore interno del server.",VAULT_ERROR:"La cassaforte locale non è aggiornata. Sincronizzala ricaricando la pagina e riprova."}},VC={or:"o",new:"Nuovo",vaultLocked:"AliasVault è bloccato.",creatingNewAlias:"Creazione nuovo alias...",noMatchesFound:"Nessun risultato trovato",searchVault:"Cerca nella cassaforte...",enterServiceName:"Inserisci nome servizio",enterEmailAddress:"Inserisci indirizzo email",enterUsername:"Inserisci nome utente",hideFor1Hour:"Nascondi per 1 ora (sito corrente)",hidePermanently:"Nascondi permanentemente (sito corrente)",createRandomAlias:"Crea alias casuale",createUsernamePassword:"Crea nome utente/password",randomAlias:"Alias casuale",usernamePassword:"Nome utente/password",createAndSaveAlias:"Crea e salva alias",createAndSaveCredential:"Crea e salva credenziali",randomIdentityDescription:"Genera un'identità casuale con un indirizzo email casuale accessibile in AliasVault.",randomIdentityDescriptionDropdown:"Identità casuale con email casuale",manualCredentialDescription:"Specifica il tuo indirizzo email e nome utente.",manualCredentialDescriptionDropdown:"Nome utente e password manuali",failedToCreateIdentity:"Impossibile creare identità. Riprova.",enterEmailAndOrUsername:"Inserisci email e/o nome utente",autofillWithAliasVault:"Compilazione automatica con AliasVault",generateRandomPassword:"Genera password casuale (copia negli appunti)",generateNewPassword:"Genera nuova password",togglePasswordVisibility:"Mostra/Nascondi password",passwordCopiedToClipboard:"Password copiata negli appunti",openAliasVaultToUpgrade:"Apri AliasVault per aggiornare",vaultUpgradeRequired:"Aggiornamento della cassaforte richiesto.",dismissPopup:"Chiudi finestra",noTotpItemsFound:"Nessun codice 2FA trovato",close:"Chiudi",savePrompt:{title:"Salvare su AliasVault?",neverForThisSite:"Mai per questo sito",addUrlTitle:"Aggiungere URL alle credenziali?"}},zC={title:"Elementi",itemName:"Nome",loginCredentials:"Credenziali di accesso",cardInformation:"Informazioni sulla scheda",addItem:"Aggiungi Elemento",addNewItem:"Aggiungi nuovo elemento",saveItem:"Salva Elemento",itemDetails:"Dettagli Elemento",editItem:"Modifica Elemento",untitled:"Senza titolo",newFolder:"Nuova Cartella",createFolder:"Crea cartella",editFolder:"Modifica Cartella",folderName:"Nome Cartella",folderNameRequired:"Il nome della cartella è obbligatorio",folder:"Cartella",welcomeTitle:"Benvenuto in AliasVault!",welcomeDescription:"Per usare l'estensione browser AliasVault: naviga su un sito e usa la finestra di compilazione automatica per creare una nuova credenziale.",noMatchingItems:"Nessun elemento corrisponde ai filtri selezionati",noMatchingItemsSearch:'Nessun elemento corrispondente "{{search}}"',noMatchingItemsWithFilter:'Nessun elemento {{filter}} corrispondente "{{search}}"',clearSearch:"Cancella ricerca",clearFilter:"Cancella filtro",emptyFolderHint:"Questa cartella è vuota. Per spostare gli elementi in questa cartella, modificare l'elemento e toccare l'icona della cartella nel campo nome.",allItemsInFolders:"Tutti gli elementi sono organizzati in cartelle. Fare clic su una cartella qui sopra per visualizzare le credenziali o utilizzare la ricerca per trovare elementi specifici.",deleteFolder:"Elimina Cartella",deleteFolderKeepItems:"Elimina solo la cartella",deleteFolderKeepItemsDescription:"Gli elementi verranno spostati nella cartella principale.",deleteFolderAndItems:"Elimina cartella e tutti gli elementi",deleteFolderAndItemsDescription:"{{count}} oggetto(i) verrà spostato in Eliminato Recentemente.",filters:{folders:"Cartelle",passkeys:"Passkey",totp:"Codici 2FA"},sort:{title:"Ordina per",oldestFirst:"Prima i più vecchi",newestFirst:"Prima i più recenti",alphabetical:"Alfabetico (A-Z)"},deleteItemTitle:"Elimina elemento",deleteItemConfirm:"Sei sicuro di voler rimuovere questo elemento?",viewHistory:"Visualizza cronologia",history:"Cronologia",noHistoryAvailable:"Nessuna cronologia disponibile",tags:"Tags",changePasswordComplexity:"Modifica complessità password",passwordLength:"Lunghezza password",includeLowercase:"Includi lettere minuscole",includeUppercase:"Includi lettere maiuscole",includeNumbers:"Includi numeri",includeSpecialChars:"Includi caratteri speciali",avoidAmbiguousChars:"Evita caratteri ambigui (o, 0, ecc.)",privateEmailTitle:"Email Privata",privateEmailAliasVaultServer:"Server AliasVault",privateEmailDescription:"E2E crittografato, completamente privato.",publicEmailTitle:"Fornitori Pubblici di Email Temporanee",publicEmailDescription:"Anonimi ma con privacy ridotta. Accessibile a chiunque conosca l'indirizzo.",validation:{required:"Campo obbligatorio"}},QC={selectType:"Aggiungi Nuovo Elemento",typeLabel:"Tipo Elemento",creating:"Creazione in corso",editing:"Modifica",regenerateAlias:"Rigenera alias",addCustomField:"Aggiungere un campo personalizzato",fieldLabel:"Etichetta del campo",enterFieldName:"Inserisci il nome del campo",fieldType:"Tipo di campo",fieldTypes:{text:"Testo",hidden:"Nascosto (testo mascherato)",email:"Email",url:"URL",phone:"Telefono",number:"Numero",date:"Data",textArea:"Area di testo"},login:{title:"Accesso"},alias:{title:"Alias"},creditCard:{title:"Carta Di Credito"},note:{title:"Nota sicura"}},KC={"login.url":"URL del sito","login.username":"Nome Utente","login.password":"Password","alias.first_name":"Nome","alias.last_name":"Cognome","alias.gender":"Genere","alias.birthdate":"Data di nascita","login.email":"Email","notes.content":"Note","card.cardholder_name":"Nome del titolare della carta","card.number":"Numero della Carta","card.expiry_month":"Mese di Scadenza","card.expiry_year":"Anno di Scadenza","card.cvv":"CVV","card.pin":"PIN"},GC={addCode:"Aggiungi Codice 2FA",instructions:"Inserisci la chiave segreta mostrata dal sito in cui vuoi aggiungere un'autenticazione a due fattori.",nameOptional:"Nome (facoltativo)",secretKey:"Chiave segreta",saveToViewCode:"Salva per visualizzare il codice",defaultName:"Autenticazione",deleteTotpCodeTitle:"Elimina Il Codice 2FA",deleteTotpCodeConfirmation:'Sei sicuro di voler eliminare il codice 2FA "{{name}}"?',errors:{invalidSecretKey:"Formato chiave segreta non valido."}},WC={uploading:"Caricamento...",uploadSuccess:"File caricati correttamente",deleteSuccess:"Allegato eliminato con successo.",firefoxExpandRequired:"Per caricare i file, usa la finestra estesa.",openExpandedWindow:"Apri Finestra Estesa"},qC={title:"Email",deleteEmailTitle:"Elimina Email",deleteEmailConfirm:"Sei sicuro di voler eliminare definitivamente questa email?",from:"Da",to:"A",date:"Data",emailContent:"Contenuto email",emailNotFound:"Email non trovata",noEmails:"Nessuna email trovata",noEmailsDescription:"Non hai ancora ricevuto email ai tuoi indirizzi email privati. Quando ne riceverai una nuova, apparirà qui.",offlineMessage:"Sei offline. Collegati a internet per caricare le email.",loadMore:"Carica altro ({{count}} rimanenti)",dateFormat:{justNow:"proprio ora",minutesAgo_single:"{{count}} min fa",minutesAgo_plural:"{{count}} min fa",hoursAgo_single:"{{count}} ora fa",hoursAgo_plural:"{{count}} ore fa",yesterday:"ieri"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"L'indirizzo email attualmente scelto è già in uso. Cambia l'indirizzo modificando queste credenziali.",CLAIM_DOES_NOT_EXIST:"Si è verificato un errore durante il caricamento delle email. Prova a modificare e salvare le credenziali per sincronizzare il database, poi riprova."}},YC={serverUrl:"URL del server",language:"Lingua",autofillEnabled:"Abilita compilazione automatica",version:"Versione",openWebApp:"Apri app web",lock:"Blocca",globalSettings:"Impostazioni globali",activeOnAllSites:"Attivo su tutti i siti (a meno che non sia disabilitato sotto)",disabledOnAllSites:"Disabilitato su tutti i siti",rightClickContextMenu:"Menu contestuale clic destro",autofillMatching:"Riconoscimento campi automatica.",autofillMatchingMode:"Modalità riconoscimento capi automatica",autofillMatchingModeDescription:"Determina quali credenziali vengono considerate corrispondenti e mostrate come suggerimenti nel popup di compilazione automatica per un determinato sito web.",autofillMatchingDefault:"URL + sottodominio + nome wildcard",autofillMatchingUrlSubdomain:"URL + sottodominio",autofillMatchingUrlExact:"Solo dominio URL esatto",siteSpecificSettings:"Impostazioni specifiche per sito",enabledForThisSite:"Abilitato per questo sito",disabledForThisSite:"Disabilitato per questo sito",resetAllSiteSettings:"Reimposta tutte le impostazioni specifiche per sito",disabledSites:"Siti disabilitati",disabledSitesDescription:"Siti in cui non apparirà il popup di riempimento automatico.",clearAllDisabledSites:"Cancella tutti i siti disabilitati",temporaryUntil:"fino al",appearance:"Aspetto",theme:"Tema",useDefault:"Usa predefinito",light:"Chiaro",dark:"Scuro",keyboardShortcuts:"Scorciatoie da tastiera",configureKeyboardShortcuts:"Configura scorciatoie da tastiera",configure:"Configura",clipboardClearTimeout:"Cancella appunti dopo la copia",clipboardClearTimeoutDescription:"Cancella automaticamente gli appunti dopo aver copiato i dati sensibili",clipboardClearDisabled:"Non pulire mai",clipboardClear5Seconds:"Cancella dopo 5 secondi",clipboardClear10Seconds:"Cancella dopo 10 secondi",clipboardClear15Seconds:"Cancella dopo 15 secondi",autoLockTimeout:"Timeout Blocco Automatico",autoLockTimeoutDescription:"Blocca automaticamente la cassaforte dopo un periodo di inattività",autoLockTimeoutHelp:"La cassaforte si bloccherà solo dopo il periodo specificato di inattività (nessun utilizzo di riempimento automatico o estensione popup aperto). La cassaforte si bloccherà sempre quando il browser è chiuso, indipendentemente da questa impostazione.",autoLockNever:"Mai",autoLock15Seconds:"15 secondi",autoLock30Seconds:"30 secondi",autoLock1Minute:"1 minuto",autoLock5Minutes:"5 minuti",autoLock15Minutes:"15 minuti",autoLock30Minutes:"30 minuti",autoLock1Hour:"1 ora",autoLock4Hours:"4 ore",autoLock8Hours:"8 ore",autoLock24Hours:"24 ore",versionPrefix:"Versione ",autofillSettings:"Impostazioni di riempimento automatico",clipboardSettings:"Impostazioni appunti",contextMenuSettings:"Preferenze menu contestuale",passkeySettings:"Impostazioni Passkey",contextMenuDescription:"Click destro sui campi di input per accedere alle opzioni di AliasVault",selectLanguage:"Seleziona la lingua",serverConfiguration:"Configurazione del server",serverConfigurationDescription:"Configurare l'URL del server AliasVault per le istanze self-hosted",customApiUrl:"API URL",customClientUrl:"Url Client",apiUrlHint:"L'URL endpoint API (di solito URL client + /api)",clientUrlHint:"L'URL dell'interfaccia web della tua istanza self-hosted",autofillSettingsDescription:"Abilita o disabilita il popup di riempimento automatico sulle pagine web",autofillEnabledDescription:"I suggerimenti di riempimento automatico appariranno nei moduli di accesso",autofillDisabledDescription:"I suggerimenti di riempimento automatico sono disabilitati",languageSettings:"Lingua",validation:{apiUrlRequired:"L'URL API è obbligatorio",apiUrlInvalid:"Inserisci un URL API valido",clientUrlRequired:"L'URL del client è obbligatorio",clientUrlInvalid:"Inserisci un URL del client valido"},identityGenerator:"Generatore di identità",identityGeneratorSettings:{description:"Configura lingua e preferenze di genere per la generazione di nuove identità.",languageSection:"Lingua",languageDescription:"Imposta la lingua usata per generare nuove identità.",genderSection:"Genere",genderDescription:"Imposta la preferenza di genere per generare nuove identità.",ageRangeSection:"Fascia d'età",ageRangeDescription:"Imposta la fascia di età per generare nuove identità.",genderOptions:{random:"Casuale",male:"Maschio",female:"Femmina"}},credentialAutofill:"Riempimento automatico credenziali",credentialAutofillDescription:"Mostra popup di riempimento automatico quando vengono rilevati campi username/password",totpAutofill:"Codice di autoriempimento 2FA",totpAutofillDescription:"Mostra popup di riempimento automatico quando vengono rilevati i campi del codice 2FA",autoCopyTotpOnAutofill:"Copia automaticamente 2FA negli appunti",autoCopyTotpOnAutofillDescription:"Copia automaticamente il primo codice 2FA negli appunti dopo l'auto-compilazione delle credenziali",loginSave:{title:"Salva Avviso Di Login",description:"Mostra un prompt per salvare le credenziali di accesso quando si invia un modulo di accesso su un sito web.",blockedSites:"Siti bloccati",blockedSitesDescription:"Siti in cui il prompt di salvataggio non apparirà mai.",clearAllBlockedSites:"Cancella tutti i siti bloccati"},unlockMethod:{title:"Metodo di sblocco cassaforte",introText:"Scegli come sbloccare la cassaforte. Puoi usare la tua password principale (sempre disponibile) o impostare un codice PIN per un accesso più veloce. Dopo 3 tentativi di PIN falliti, è necessario utilizzare la password principale.",password:"Password Principale",pin:"Codice PIN",pinDescription:"Sblocca la cassaforte con codice PIN",setupPin:"Imposta Codice Pin",enterNewPinDescription:"Inserisci un codice PIN composto da almeno 6 cifre",confirmPin:"Conferma PIN",confirmPinDescription:"Inserisci di nuovo il tuo PIN per confermare",invalidPinFormat:"Formato PIN non valido",pinMismatch:"I PIN non corrispondono",incorrectPin:"PIN errato. {{attemptsRemaining}} tentativi rimanenti.",incorrectPinSingular:"Pin non corretto. 1 tentativo rimanente.",enableSuccess:"Sblocco PIN abilitato con successo!",pinLocked:"Il PIN sblocco è stato disabilitato. Utilizza la tua password principale per sbloccare la cassaforte.",pinSecurityWarning:"Lo sblocco PIN nell'estensione del browser può essere meno sicuro della tua password principale, poichè i PIN hanno tipicamente entropia inferiore e possono essere brutalmente forzati se il dispositivo è compromesso. Usalo solo su dispositivi che ti fidi completamente."}},JC={passkey:"Passkey",site:"Sito",helpText:"Le chiavi di accesso vengono create sul sito web quando richiesto. Non possono essere modificate manualmente. Per rimuovere questa chiave di accesso, è possibile eliminarla da questa credenziale. Per sostituire questa passkey o crearne una nuova, visitare il sito web e seguire i relativi suggerimenti.",passkeyMarkedForDeletion:"Passkey contrassegnata per l'eliminazione",passkeyWillBeDeleted:"Questa passkey verrà eliminata quando si salva questa credenziale.",useBrowserPasskey:"Usa Browser Passkey",bypass:{description:"Per quanto tempo vorresti usare il provider di chiavi di accesso del browser per {{origin}}?",thisTimeOnly:"Solo questa volta",alwaysForSite:"Sempre per questo sito"},authenticate:{title:"Accedi con Passkey",signInFor:"Accedi con passkey per",selectPasskey:"Selezionare una passkey per accedere:",noPasskeysFound:"Nessuna passkey trovata per questo sito"},create:{title:"Crea Passkey",createFor:"Crea una nuova passkey per",titleLabel:"Titolo",titlePlaceholder:"Inserisci un nome per questa passkey",createButton:"Crea Passkey",selectPasskeyToReplace:"Selezionare una chiave di accesso da sostituire:",createNewPasskey:"Crea Nuova Passkey",replacingPasskey:"Sostituzione passkey: {{displayName}}",confirmReplace:"Conferma la sostituzione",selectExistingLogin:"Aggiungere al login esistente:",selectExistingLoginDescription:"Allega questa passkey a una credenziale di accesso esistente per questo sito.",attachingToCredential:"Aggiunta passkey a: {{serviceName}}",attachPasskey:"Aggiungi Passkey"},settings:{passkeyProvider:"Provider Passkey",passkeyProviderOn:"Passkey Provider attivo"}},XC={title:"Eliminato di Recente",noItems:"Nessun elemento eliminato",noItemsDescription:"Gli elementi che elimini appariranno qui per {{days}} giorni prima di essere definitivamente rimossi.",description:"Questi elementi saranno eliminati definitivamente dopo {{days}} giorni. Puoi ripristinarli o eliminarli immediatamente.",restore:"Ripristina",deletePermanently:"Elimina Definitivamente",emptyAll:"Svuota Tutto",daysRemaining_one:"{{count}} giorno rimanente",daysRemaining_other:"{{count}} giorni rimanenti",expiringSoon:"In scadenza a breve",confirmDeleteTitle:"Elimina definitivamente?",confirmDeleteMessage:"Questo elemento verrà eliminato definitivamente e non può essere recuperato.",confirmEmptyAllTitle:'Svuotare "Eliminati di recente"?',confirmEmptyAllMessage:"Questi {{count}} elementi verranno eliminati permanentemente e non potranno essere recuperati."},$C={title:"Aggiorna Cassaforte",subtitle:"AliasVault è stato aggiornato e la tua cassaforte deve essere aggiornata. Dovrebbe richiedere solo pochi secondi.",versionInformation:"Informazioni sulla versione",yourVault:"Versione della tua cassaforte:",newVersion:"Nuova versione disponibile:",upgrade:"Aggiorna cassaforte",upgrading:"Aggiornamento in corso...",whatsNew:"Novità",whatsNewDescription:"È richiesto un aggiornamento per supportare le seguenti modifiche:",noDescriptionAvailable:"Nessuna descrizione disponibile per questa versione.",alerts:{unableToGetVersionInfo:"Impossibile ottenere informazioni sulla versione. Riprova.",selfHostedServer:"Server Autospitato",selfHostedWarning:"Se usi un server autospitato, assicurati di aggiornare anche la tua istanza, altrimenti l'accesso al client web smetterà di funzionare.",continueUpgrade:"Continua aggiornamento",upgradeFailed:"Aggiornamento non riuscito",failedToApplyMigration:"Impossibile eseguire la migrazione ({{current}} di {{total}})"}},ZC={unsyncedChangesTitle:"Modifiche non Sincronizzate",unsyncedChangesWarning:"Hai delle modifiche non sincronizzate che andranno perse se ti disconnetti ora. Sei sicuro di voler continuare?",logoutAnyway:"Esci comunque"},eS={offline:"Offline",tapToRetry:"Tocca per riprovare la sincronizzazione",syncErrorTitle:"Sincronizzazione non riuscita",syncErrorDismiss:"Annulla"},tS={auth:OC,menu:jC,common:HC,content:VC,items:zC,itemTypes:QC,fieldLabels:KC,totp:GC,attachmentUploader:WC,emails:qC,settings:YC,passkeys:JC,recentlyDeleted:XC,upgrade:$C,logout:ZC,sync:eS},DM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:WC,auth:OC,common:HC,content:VC,default:tS,emails:qC,fieldLabels:KC,itemTypes:QC,items:zC,logout:ZC,menu:jC,passkeys:JC,recentlyDeleted:XC,settings:YC,sync:eS,totp:GC,upgrade:$C},Symbol.toStringTag,{value:"Module"})),aS={loginTitle:"Inloggen bij AliasVault",username:"Gebruikersnaam of e-mail",usernamePlaceholder:"naam / naam@bedrijf.com",passwordPlaceholder:"Voer je wachtwoord in",rememberMe:"Onthoud mij",loginButton:"Inloggen",noAccount:"Nog geen account?",createVault:"Nieuwe vault aanmaken",twoFactorTitle:"Voer de authenticatiecode van je authenticator-app in.",authCode:"Authenticatiecode",authCodePlaceholder:"Voer 6-cijferige code in",verify:"Verifiëren",twoFactorNote:"Opmerking: als je geen toegang hebt tot je authenticator, kunt je je 2FA resetten door met een in te loggen via de website.",masterPassword:"Hoofdwachtwoord",unlockVault:"Ontgrendelen",unlockWithPin:"Ontgrendelen met PIN",enterPinToUnlock:"Voer je pincode in om je vault te ontgrendelen",useMasterPassword:"Gebruik hoofdwachtwoord",unlockTitle:"Ontgrendel je vault",logoutConfirm:"Weet je zeker dat je wilt uitloggen?",unlockSuccessTitle:"Je vault is succesvol ontgrendeld",unlockSuccessDescription:"Je kunt nu automatisch invullen gebruiken in inlogformulieren in je browser.",closePopup:"Sluit deze popup",browseVault:"Bekijk vault inhoud",autoCloseUnlockPopup:"Automatisch sluiten bij toekomstige logins",connectingTo:"Verbinden met",switchAccounts:"Wisselen van account?",loginWithMobile:"Log in via de mobiele app",unlockWithMobile:"Ontgrendel met mobiele app",scanQrCode:"Scan deze QR-code met de AliasVault mobiele app om in te loggen en je kluis te ontgrendelen.",passwordAttemptsWarning:"Onjuist wachtwoord. Je wordt uitgelogd als je het verkeerde wachtwoord {{remainingAttempts}} keer vaker invult.",maxAttemptsReached:"Te veel mislukte ontgrendel pogingen. Je bent uitgelogd om veiligheidsredenen."},nS={vault:"Vault",emails:"E-mails"},iS={loading:"Laden...",notice:"Melding",error:"Fout",cancel:"Annuleren",confirm:"Bevestigen",remove:"Verwijderen",back:"Terug",next:"Volgende",use:"Gebruik",add:"Toevoegen",delete:"Verwijderen",undo:"Ongedaan maken",save:"Opslaan",saving:"Opslaan...",edit:"Bewerken",create:"Aanmaken",or:"Of",close:"Sluiten",dismiss:"Sluiten",logout:"Uitloggen",copied:"Gekopieerd!",openInNewWindow:"Openen in nieuw venster",enabled:"Ingeschakeld",disabled:"Uitgeschakeld",showPassword:"Wachtwoord tonen",hidePassword:"Wachtwoord verbergen",show:"Toon",hide:"Verberg",showDetails:"Toon details",hideDetails:"Verberg details",copyToClipboard:"Naar klembord kopiëren",loadingEmails:"E-mails laden...",loadingTotpCodes:"TOTP-codes laden...",attachments:"Bijlagen",loadingAttachments:"Bijlagen laden...",settings:"Instellingen",recentEmails:"Recente e-mails",credentials:"Credentials",customFields:"Extra velden",twoFactorAuthentication:"Tweestapsverificatie",alias:"Alias",notes:"Notities",email:"E-mail",username:"Gebruikersnaam",password:"Wachtwoord",generate:"Genereren",serviceName:"Naam",loggedIn:"Ingelogd",syncingVault:"Vault synchroniseren",checkingVaultUpdates:"Controleren op vault updates",syncingUpdatedVault:"Bijgewerkte vault synchroniseren",loadMore:"Laad meer",offline:"Offline",offlineMode:"Offline modus",pendingSync:"Synchroniseren...",mergingVaultChanges:"Vault wijzigingen mergen...",uploadingVault:"Vault opslaan...",errors:{serverNotAvailable:"De AliasVault server is niet beschikbaar. Probeer het later opnieuw of neem contact op met de ondersteuning als het probleem aanhoudt.",clientVersionNotSupported:"Deze versie van de AliasVault browserextensie wordt niet meer ondersteund door de server. Update je browserextensie naar de nieuwste versie.",browserExtensionOutdated:"Deze browserextensie is verouderd en kan niet worden gebruikt om toegang te krijgen tot deze vault. Update deze browserextensie om door te gaan.",serverVersionNotSupported:"De AliasVault server moet worden bijgewerkt naar een nieuwere versie om deze browserextensie te kunnen gebruiken. Neem contact op met support als je hulp nodig hebt.",serverVersionTooOld:"De AliasVault server moet bijgewerkt worden naar een nieuwere versie om deze functie te kunnen gebruiken. Neem contact op met support als je hulp nodig hebt.",unknownError:"Er is een onbekende fout opgetreden",unknownErrorTryAgain:"Er is een onbekende fout opgetreden. Probeer het opnieuw.",vaultNotAvailable:"Vault niet beschikbaar",vaultIsLocked:"Vault is vergrendeld",passwordChanged:"Je wachtwoord is veranderd sinds de laatste keer dat je bent ingelogd. Log opnieuw in.",syncConflictMaxRetries:"Kan de vault niet synchroniseren na meerdere pogingen. Probeer het later opnieuw.",mergeFailed:"Samenvoegen vault wijzigingen mislukt. Probeer het opnieuw.",vaultTooLarge:"De vault is te groot voor de server om te accepteren. Probeer sommige items of bijlagen te verwijderen om de grootte te verkleinen en probeer het opnieuw.",invalidCode:"Voer een geldige 6-cijferige code in.",serverError:"Kon de AliasVault server niet bereiken. Probeer het later opnieuw of neem contact op met support als het probleem aanhoudt.",wrongPassword:"Onjuist wachtwoord. Probeer het opnieuw.",sessionExpired:"Je sessie is verlopen. Log opnieuw in.",mobileLoginRequestExpired:"De QR-code is verlopen. Herlaad de pagina en probeer opnieuw."},apiErrors:{UNKNOWN_ERROR:"Er is een onbekende fout opgetreden. Probeer het opnieuw.",ACCOUNT_LOCKED:"Account tijdelijk vergrendeld vanwege te veel mislukte pogingen. Probeer het later opnieuw.",ACCOUNT_BLOCKED:"Je account is uitgeschakeld. Als je denkt dat dit een vergissing is, neem dan contact op met support.",USER_NOT_FOUND:"Gebruikersnaam of wachtwoord is onjuist. Probeer het opnieuw.",INVALID_AUTHENTICATOR_CODE:"Ongeldige authenticator code. Probeer het opnieuw.",INVALID_RECOVERY_CODE:"Ongeldige herstelcode. Probeer het opnieuw.",REFRESH_TOKEN_REQUIRED:"Refresh token is vereist.",INVALID_REFRESH_TOKEN:"Ongeldig refresh token.",PUBLIC_REGISTRATION_DISABLED:"Registratie van nieuwe accounts is momenteel uitgeschakeld op deze server. Neem contact op met de beheerder.",USERNAME_REQUIRED:"Gebruikersnaam is vereist.",USERNAME_ALREADY_IN_USE:"Gebruikersnaam is al in gebruik.",USERNAME_AVAILABLE:"Gebruikersnaam is beschikbaar.",USERNAME_MISMATCH:"Gebruikersnaam komt niet overeen met de huidige gebruiker.",PASSWORD_MISMATCH:"Het opgegeven wachtwoord komt niet overeen met je huidige wachtwoord.",ACCOUNT_SUCCESSFULLY_DELETED:"Account succesvol verwijderd.",USERNAME_EMPTY_OR_WHITESPACE:"Gebruikersnaam mag niet leeg zijn of alleen uit spaties bestaan.",USERNAME_TOO_SHORT:"Gebruikersnaam te kort: moet minimaal 3 tekens lang zijn.",USERNAME_TOO_LONG:"Gebruikersnaam te lang: mag niet langer zijn dan 40 tekens.",USERNAME_INVALID_EMAIL:"Ongeldig e-mailadres.",USERNAME_INVALID_CHARACTERS:"Gebruikersnaam is ongeldig, mag alleen letters of cijfers bevatten.",VAULT_NOT_UP_TO_DATE:"Je vault is niet up-to-date. Synchroniseer je vault en probeer het opnieuw.",INTERNAL_SERVER_ERROR:"Interne serverfout.",VAULT_ERROR:"Je lokale vault is niet up-to-date. Synchroniseer je vault door de pagina te vernieuwen en probeer het opnieuw."}},rS={or:"of",new:"Nieuw",vaultLocked:"AliasVault is vergrendeld.",creatingNewAlias:"Nieuwe alias aanmaken...",noMatchesFound:"Geen resultaten gevonden",searchVault:"Vault doorzoeken...",enterServiceName:"Voer servicenaam in",enterEmailAddress:"Voer e-mailadres in",enterUsername:"Voer gebruikersnaam in",hideFor1Hour:"Verberg voor 1 uur (huidige site)",hidePermanently:"Permanent verbergen (huidige site)",createRandomAlias:"Willekeurige alias aanmaken",createUsernamePassword:"Gebruikersnaam/wachtwoord aanmaken",randomAlias:"Alias",usernamePassword:"Gebruikersnaam/wachtwoord",createAndSaveAlias:"Alias aanmaken",createAndSaveCredential:"Credential aanmaken",randomIdentityDescription:"Genereer een willekeurige identiteit met een willekeurig e-mailadres toegankelijk in AliasVault.",randomIdentityDescriptionDropdown:"Willekeurige identiteit met willekeurige e-mail",manualCredentialDescription:"Specificeer je eigen e-mailadres en/of gebruikersnaam.",manualCredentialDescriptionDropdown:"Handmatige gebruikersnaam en wachtwoord",failedToCreateIdentity:"Identiteit aanmaken mislukt. Probeer opnieuw.",enterEmailAndOrUsername:"Voer e-mail en/of gebruikersnaam in",autofillWithAliasVault:"Autofill met AliasVault",generateRandomPassword:"Willekeurig wachtwoord genereren (kopiëren naar klembord)",generateNewPassword:"Genereer nieuw wachtwoord",togglePasswordVisibility:"Schakel zichtbaarheid van wachtwoord in/uit",passwordCopiedToClipboard:"Wachtwoord gekopieerd naar klembord",openAliasVaultToUpgrade:"Open AliasVault om te upgraden",vaultUpgradeRequired:"Update is vereist.",dismissPopup:"Pop-up sluiten",noTotpItemsFound:"Geen 2FA code overeenkomsten gevonden",close:"Sluiten",savePrompt:{title:"Opslaan in AliasVault?",neverForThisSite:"Nooit voor deze site",addUrlTitle:"URL naar inloggegevens toevoegen?"}},sS={title:"Items",itemName:"Naam",loginCredentials:"Inloggegevens",cardInformation:"Kaartgegevens",addItem:"Item toevoegen",addNewItem:"Nieuw item toevoegen",saveItem:"Item opslaan",itemDetails:"Item details",editItem:"Item bewerken",untitled:"Naamloos",newFolder:"Nieuwe map",createFolder:"Map aanmaken",editFolder:"Map bewerken",folderName:"Mapnaam",folderNameRequired:"Mapnaam is verplicht",folder:"Map",welcomeTitle:"Welkom bij AliasVault!",welcomeDescription:"Om de AliasVault browser extensie te gebruiken: navigeer naar een website en gebruik de AliasVault autofill popup om nieuwe credentials aan te maken.",noMatchingItems:"Geen items gevonden die overeenkomen met het geselecteerde filter.",noMatchingItemsSearch:'Geen items die overeenkomen met "{{search}}"',noMatchingItemsWithFilter:'Geen {{filter}} items die overeenkomen met "{{search}}"',clearSearch:"Wis zoekopdracht",clearFilter:"Wis filter",emptyFolderHint:"Deze map is leeg. Om items naar deze map te verplaatsen, wijzig het item en selecteer deze map.",allItemsInFolders:"Al je items zijn georganiseerd in mappen. Klik op een map hierboven om je gegevens te bekijken, of gebruik de zoekopdracht om specifieke items te vinden.",deleteFolder:"Map verwijderen",deleteFolderKeepItems:"Verwijder alleen map",deleteFolderKeepItemsDescription:"Items zullen worden verplaatst naar de bovenliggende map.",deleteFolderAndItems:"Verwijder map en alle items",deleteFolderAndItemsDescription:"{{count}} item(s) zullen worden verplaatst naar recent verwijderd.",filters:{folders:"Mappen",passkeys:"Passkeys",totp:"2FA codes"},sort:{title:"Sorteren op",oldestFirst:"Oudste eerst",newestFirst:"Nieuwste eerst",alphabetical:"Alfabetisch (A-Z)"},deleteItemTitle:"Verwijder item",deleteItemConfirm:"Weet je zeker dat je dit item wilt verwijderen?",viewHistory:"Toon geschiedenis",history:"Geschiedenis",noHistoryAvailable:"Nog geen geschiedenis",tags:"Labels",changePasswordComplexity:"Wijzig wachtwoord complexiteit",passwordLength:"Wachtwoordlengte",includeLowercase:"Inclusief kleine letters",includeUppercase:"Inclusief hoofdletters",includeNumbers:"Inclusief cijfers",includeSpecialChars:"Inclusief speciale karakters",avoidAmbiguousChars:"Onduidelijke tekens vermijden (o, 0, etc.)",privateEmailTitle:"Privé e-mail",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E versleuteld, volledig privé.",publicEmailTitle:"Publieke tijdelijke e-mailproviders",publicEmailDescription:"Anoniem maar beperkte privacy. E-mail inhoud is leesbaar door iedereen die het adres kent.",validation:{required:"Dit veld is verplicht"}},oS={selectType:"Nieuw item toevoegen",typeLabel:"Itemtype",creating:"Aanmaken",editing:"Bewerken",regenerateAlias:"Alias opnieuw genereren",addCustomField:"Voeg eigen veld toe",fieldLabel:"Veldlabel",enterFieldName:"Voer de veldnaam in",fieldType:"Veldtype",fieldTypes:{text:"Tekst",hidden:"Verborgen (gemaskeerde tekst)",email:"E-mail",url:"URL",phone:"Telefoon",number:"Nummer",date:"Datum",textArea:"Tekstvak"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Creditcard"},note:{title:"Veilige notitie"}},lS={"login.url":"Website URL","login.username":"Gebruikersnaam","login.password":"Wachtwoord","alias.first_name":"Voornaam","alias.last_name":"Achternaam","alias.gender":"Geslacht","alias.birthdate":"Geboortedatum","login.email":"E-mail","notes.content":"Notities","card.cardholder_name":"Naam kaarthouder","card.number":"Kaartnummer","card.expiry_month":"Vervalmaand","card.expiry_year":"Vervaljaar","card.cvv":"CVV","card.pin":"Pincode"},dS={addCode:"2FA-code toevoegen",instructions:"Voer de secret key in die door de website wordt weergegeven waar je tweestapsverificatie wilt toevoegen.",nameOptional:"Naam (optioneel)",secretKey:"Secret key",saveToViewCode:"Opslaan om code te bekijken",defaultName:"Authenticator",deleteTotpCodeTitle:"2FA code verwijderen",deleteTotpCodeConfirmation:'Weet je zeker dat je deze credential wilt verwijderen "{{name}}"?',errors:{invalidSecretKey:"Ongeldig formaat."}},cS={uploading:"Uploaden...",uploadSuccess:"Bestand succesvol geüpload.",deleteSuccess:"Bijlage is succesvol verwijderd.",firefoxExpandRequired:"Gebruik het grote venster om bestanden te uploaden.",openExpandedWindow:"Open groot venster"},uS={title:"E-mails",deleteEmailTitle:"E-mail verwijderen",deleteEmailConfirm:"Weet je zeker dat je deze e-mail definitief wilt verwijderen?",from:"Van",to:"Naar",date:"Datum",emailContent:"E-mailinhoud",emailNotFound:"E-mail niet gevonden",noEmails:"Geen e-mails gevonden",noEmailsDescription:"Je hebt nog geen e-mails ontvangen op je privé e-mailadressen. Wanneer je een nieuwe e-mail ontvangt, zal deze hier verschijnen.",offlineMessage:"Je bent offline. Maak verbinding met het internet om je e-mails te laden.",loadMore:"Meer laden ({{count}} resterend)",dateFormat:{justNow:"zojuist",minutesAgo_single:"{{count}} min geleden",minutesAgo_plural:"{{count}} min. geleden",hoursAgo_single:"{{count}} uur geleden",hoursAgo_plural:"{{count}} uur geleden",yesterday:"gisteren"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Het huidige gekozen e-mailadres is al in gebruik. Wijzig het e-mailadres door deze credential te bewerken.",CLAIM_DOES_NOT_EXIST:"Er is een fout opgetreden bij het laden van e-mails. Probeer de credential te bewerken en op te slaan om de database te synchroniseren, en probeer het opnieuw."}},mS={serverUrl:"Server URL",language:"Taal",autofillEnabled:"Autofill",version:"Versie",openWebApp:"Web-app openen",lock:"Vergrendelen",globalSettings:"Globale Instellingen",activeOnAllSites:"Actief voor alle sites (tenzij hieronder uitgeschakeld)",disabledOnAllSites:"Uitgeschakeld op alle sites",rightClickContextMenu:"Rechtermuisknop menu",autofillMatching:"Autofill matching",autofillMatchingMode:"Autofill matching modus",autofillMatchingModeDescription:"Bepaalt op welke manier credentials worden beschouwd als matches en worden getoond als suggestie in de autofill popup voor een bepaalde website.",autofillMatchingDefault:"URL + subdomein + naam wildcard",autofillMatchingUrlSubdomain:"URL + subdomein",autofillMatchingUrlExact:"Exacte URL-domein",siteSpecificSettings:"Site-specifieke Instellingen",enabledForThisSite:"Ingeschakeld voor deze site",disabledForThisSite:"Uitgeschakeld voor deze site",resetAllSiteSettings:"Alle site-specifieke instellingen resetten",disabledSites:"Uitgeschakelde sites",disabledSitesDescription:"Websites waar de autofill popup niet verschijnt.",clearAllDisabledSites:"Alle uitgeschakelde sites wissen",temporaryUntil:"tot",appearance:"Uiterlijk",theme:"Thema",useDefault:"Standaard gebruiken",light:"Licht",dark:"Donker",keyboardShortcuts:"Snelkoppelingen",configureKeyboardShortcuts:"Snelkoppelingen configureren",configure:"Configureren",clipboardClearTimeout:"Automatisch klembord wissen na kopiëren",clipboardClearTimeoutDescription:"Automatisch het klembord wissen na kopiëren van gevoelige gegevens",clipboardClearDisabled:"Nooit wissen",clipboardClear5Seconds:"Wis na 5 seconden",clipboardClear10Seconds:"Wis na 10 seconden",clipboardClear15Seconds:"Wis na 15 seconden",autoLockTimeout:"Automatisch vergrendelen",autoLockTimeoutDescription:"Vergrendel de vault automatisch na inactiviteit",autoLockTimeoutHelp:"De vault zal alleen vergrendelen na de opgegeven periode van inactiviteit (geen automatisch invullen of extensie geopend). De vault wordt altijd vergrendeld wanneer de browser wordt afgesloten, ongeacht deze instelling.",autoLockNever:"Nooit",autoLock15Seconds:"15 seconden",autoLock30Seconds:"30 seconden",autoLock1Minute:"1 minuut",autoLock5Minutes:"5 minuten",autoLock15Minutes:"15 minuten",autoLock30Minutes:"30 minuten",autoLock1Hour:"1 uur",autoLock4Hours:"4 uur",autoLock8Hours:"8 uur",autoLock24Hours:"24 uur",versionPrefix:"Versie ",autofillSettings:"Autofill instellingen",clipboardSettings:"Klembord instellingen",contextMenuSettings:"Context menu instellingen",passkeySettings:"Passkey instellingen",contextMenuDescription:"Klik met de rechtermuisknop op invoervelden om AliasVault opties te zien",selectLanguage:"Selecteer taal",serverConfiguration:"Serverconfiguratie",serverConfigurationDescription:"Configureer de AliasVault server URL voor self-hosted omgevingen",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"De API endpoint URL (meestal client URL + /api)",clientUrlHint:"De webinterface URL van je self-hosted omgeving",autofillSettingsDescription:"Schakel de autofill pop-up in of uit op webpagina's",autofillEnabledDescription:"Autofill suggesties verschijnen op login formulieren",autofillDisabledDescription:"Autofill suggesties zijn uitgeschakeld",languageSettings:"Taal",validation:{apiUrlRequired:"API URL is vereist",apiUrlInvalid:"Voer een geldige API URL in",clientUrlRequired:"Client URL is vereist",clientUrlInvalid:"Voer een geldige client URL in"},identityGenerator:"Identiteit generator",identityGeneratorSettings:{description:"Configureer de standaardtaal en geslachtsvoorkeur voor het genereren van nieuwe identiteiten.",languageSection:"Taal",languageDescription:"Stel de taal in die wordt gebruikt bij het genereren van nieuwe identiteiten.",genderSection:"Geslacht",genderDescription:"Stel de geslachtsvoorkeur in voor het genereren van nieuwe identiteiten.",ageRangeSection:"Leeftijdsrange",ageRangeDescription:"Stel de standaard leeftijdsrange in voor het genereren van nieuwe identiteiten.",genderOptions:{random:"Willekeurig",male:"Mannelijk",female:"Vrouwelijk"}},credentialAutofill:"Automatisch invullen van inloggegevens",credentialAutofillDescription:"Automatisch invullen popup weergeven wanneer gebruikersnaam/wachtwoord velden worden gedetecteerd",totpAutofill:"Automatisch invullen van 2FA code",totpAutofillDescription:"Automatisch invullen popup tonen wanneer 2FA code-velden worden gedetecteerd",autoCopyTotpOnAutofill:"2FA automatisch naar klembord kopiëren",autoCopyTotpOnAutofillDescription:"Automatisch de eerste 2FA-code kopiëren naar het klembord na het invullen van de inloggegevens",loginSave:{title:"Inloggegevens opslaan",description:"Toon een melding om inloggegevens op te slaan wanneer je inlogt op een website.",blockedSites:"Geblokkeerde websites",blockedSitesDescription:"Sites waar de inloggegevens opslaan prompt niet zal verschijnen.",clearAllBlockedSites:"Alle uitgeschakelde sites wissen"},unlockMethod:{title:"Vault ontgrendelmethode",introText:"Kies hoe je je vault wilt ontgrendelen. Je kunt je hoofdwachtwoord gebruiken (altijd beschikbaar) of een pincode instellen voor snellere toegang. Na 3 mislukte PIN-pogingen moet je je hoofdwachtwoord gebruiken.",password:"Hoofdwachtwoord",pin:"Pincode",pinDescription:"Ontgrendel vault met pincode",setupPin:"Pincode instellen",enterNewPinDescription:"Voer een pincode in van minimaal 6 cijfers",confirmPin:"Bevestig pincode",confirmPinDescription:"Voer je pincode nogmaals in om te bevestigen",invalidPinFormat:"Ongeldige pincode",pinMismatch:"Pincodes komen niet overeen",incorrectPin:"Onjuiste PIN. {{attemptsRemaining}} pogingen resterend.",incorrectPinSingular:"Onjuiste PIN. 1 poging resterend.",enableSuccess:"Pincode succesvol ingeschakeld!",pinLocked:"Pincode is uitgeschakeld. Gebruik je hoofdwachtwoord om je kluis te ontgrendelen.",pinSecurityWarning:"Pincode ontgrendeling in de browserextensie kan minder veilig zijn dan je hoofdwachtwoord, omdat een pincode makkelijker kan worden gebruteforced als iemand toegang heeft tot je apparaat. Gebruik deze optie daarom alleen op apparaten die je volledig vertrouwt."}},gS={passkey:"Passkey",site:"Website",helpText:"Passkeys worden aangemaakt op de website wanneer er om wordt gevraagd. Ze kunnen niet handmatig worden bewerkt. Om deze toegangssleutel te verwijderen, kun je deze verwijderen uit deze credential. Om deze passkey te vervangen of een nieuwe te maken, bezoek de website in kwestie en volg de instructies.",passkeyMarkedForDeletion:"Passkey gemarkeerd om te verwijderen",passkeyWillBeDeleted:"Deze passkey zal worden verwijderd wanneer je deze credential opslaat.",useBrowserPasskey:"Gebruik browser passkey",bypass:{description:"Hoe lang wilt je de browser passkey voor {{origin}} gebruiken?",thisTimeOnly:"Alleen deze keer",alwaysForSite:"Altijd voor deze site"},authenticate:{title:"Inloggen met passkey",signInFor:"Inloggen met passkey voor",selectPasskey:"Selecteer een passkey om in te loggen:",noPasskeysFound:"Geen passkeys gevonden voor deze site"},create:{title:"Passkey aanmaken",createFor:"Maak een nieuwe passkey voor",titleLabel:"Titel",titlePlaceholder:"Voer een naam in voor deze passkey",createButton:"Passkey aanmaken",selectPasskeyToReplace:"Selecteer een passkey om te vervangen:",createNewPasskey:"Passkey aanmaken",replacingPasskey:"Passkey vervangen: {{displayName}}",confirmReplace:"Bevestig vervanging",selectExistingLogin:"Toevoegen aan bestaande login:",selectExistingLoginDescription:"Deze passkey toevoegen aan een bestaande inloggegevens voor deze site.",attachingToCredential:"Passkey toevoegen aan: {{serviceName}}",attachPasskey:"Passkey toevoegen"},settings:{passkeyProvider:"Passkey provider",passkeyProviderOn:"Passkey provider ingeschakeld"}},pS={title:"Recent verwijderd",noItems:"Geen verwijderde items",noItemsDescription:"Items die je verwijdert verschijnen hier voor {{days}} dagen voordat ze permanent worden verwijderd.",description:"Deze items worden permanent verwijderd na {{days}} dagen. Je kunt ze herstellen of direct verwijderen.",restore:"Herstel",deletePermanently:"Permanent verwijderen",emptyAll:"Alles verwijderen",daysRemaining_one:"{{count}} dag resterend",daysRemaining_other:"{{count}} dagen resterend",expiringSoon:"Vervalt binnenkort",confirmDeleteTitle:"Permanent verwijderen?",confirmDeleteMessage:"Dit item zal permanent worden verwijderd en kan niet worden hersteld.",confirmEmptyAllTitle:"Recent verwijderd leegmaken?",confirmEmptyAllMessage:"Alle {{count}} items zullen permanent worden verwijderd en kunnen niet worden hersteld."},hS={title:"Vault upgraden",subtitle:"AliasVault is vernieuwd en je vault moet worden bijgewerkt. Dit kan enkele seconden duren.",versionInformation:"Versie-informatie",yourVault:"Jouw vault versie:",newVersion:"Nieuwe beschikbare versie:",upgrade:"Vault upgraden",upgrading:"Aan het upgraden...",whatsNew:"Wat is er nieuw",whatsNewDescription:"Een upgrade is vereist vanwege de volgende wijzigingen:",noDescriptionAvailable:"Voor deze versie is geen beschrijving beschikbaar.",alerts:{unableToGetVersionInfo:"Kan versie-informatie niet ophalen. Probeer het opnieuw.",selfHostedServer:"Self-hosted server",selfHostedWarning:"Als je een self-hosted server gebruikt, zorg er dan voor dat je ook je eigen self-hosted instantie bijwerkt, omdat anders het inloggen via de web client niet meer zal werken.",continueUpgrade:"Verdergaan",upgradeFailed:"Upgrade mislukt",failedToApplyMigration:"Kon migratie niet toepassen ({{current}} van {{total}})"}},fS={unsyncedChangesTitle:"Niet-gesynchroniseerde wijzigingen",unsyncedChangesWarning:"Er zijn niet gesynchroniseerde wijzigingen die verloren zullen gaan als je nu uitlogt. Weet je zeker dat je wilt doorgaan?",logoutAnyway:"Toch uitloggen"},AS={offline:"Offline",tapToRetry:"Probeer sync opnieuw",syncErrorTitle:"Synchronisatie mislukt",syncErrorDismiss:"Negeer"},yS={auth:aS,menu:nS,common:iS,content:rS,items:sS,itemTypes:oS,fieldLabels:lS,totp:dS,attachmentUploader:cS,emails:uS,settings:mS,passkeys:gS,recentlyDeleted:pS,upgrade:hS,logout:fS,sync:AS},RM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:cS,auth:aS,common:iS,content:rS,default:yS,emails:uS,fieldLabels:lS,itemTypes:oS,items:sS,logout:fS,menu:nS,passkeys:gS,recentlyDeleted:pS,settings:mS,sync:AS,totp:dS,upgrade:hS},Symbol.toStringTag,{value:"Module"})),ES={loginTitle:"Zaloguj się do AliasVault",username:"Nazwa użytkownika lub e-mail",usernamePlaceholder:"nazwa / nazwa@firma.com",passwordPlaceholder:"Wprowadź swoje hasło ",rememberMe:"Zapamiętaj mnie",loginButton:"Zaloguj się",noAccount:"Nie masz jeszcze konta?",createVault:"Utwórz nowy sejf",twoFactorTitle:"Wprowadź kod uwierzytelniający z aplikacji uwierzytelniającej.",authCode:"Kod uwierzytelniania",authCodePlaceholder:"Wpisz 6-cyfrowy kod",verify:"Potwierdź",twoFactorNote:"Uwaga: Jeśli nie masz dostępu do swojego urządzenia uwierzytelniającego, możesz zresetować swój kod 2FA za pomocą kodu odzyskiwania, logując się za pośrednictwem strony internetowej.",masterPassword:"Hasło główne",unlockVault:"Odblokuj",unlockWithPin:"Odblokuj za pomocą kodu PIN",enterPinToUnlock:"Wprowadź swój kod PIN, aby odblokować sejf",useMasterPassword:"Użyj hasła głównego",unlockTitle:"Odblokuj swój sejf",logoutConfirm:"Czy na pewno chcesz się wylogować?",unlockSuccessTitle:"Twój sejf został pomyślnie odblokowany.",unlockSuccessDescription:"Możesz teraz używać automatycznego uzupełniania w formularzach logowania w przeglądarce.",closePopup:"Zamknij to okno.",browseVault:"Przeglądaj zawartość sejfu",autoCloseUnlockPopup:"Automatyczne zamykanie przyszłych logowań",connectingTo:"Łączenie z",switchAccounts:"Przełącz konto",loginWithMobile:"Zaloguj się za pomocą aplikacji mobilnej",unlockWithMobile:"Odblokuj za pomocą aplikacji mobilnej",scanQrCode:"Zeskanuj ten kod QR za pomocą aplikacji mobilnej AliasVault, aby się zalogować i odblokować sejf.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},bS={vault:"Sejf",emails:"Skrzynka odbiorcza"},vS={loading:"Wczytywanie…",notice:"Uwaga",error:"Błąd",cancel:"Anuluj",confirm:"Potwierdź",remove:"Usuń",back:"Powrót",next:"Dalej",use:"Użyj",add:"Dodaj",delete:"Usuń",undo:"Cofnij",save:"Zapisz",saving:"Zapisywanie...",edit:"Edytuj",create:"Utwórz",or:"lub",close:"Zamknąć",dismiss:"Odrzuć",logout:"Wyloguj się",copied:"Skopiowano",openInNewWindow:"Otwórz w nowym oknie.",enabled:"Aktywne",disabled:"Nie aktywne",showPassword:"Pokaż hasło",hidePassword:"Ukryj hasło",show:"Pokaż",hide:"Ukryj",showDetails:"Pokaż szczegóły",hideDetails:"Ukryj szczegóły",copyToClipboard:"Skopiuj do schowka",loadingEmails:"Ładowanie wiadomości e-mail...",loadingTotpCodes:"Ładowanie kodów TOTP...",attachments:"Załączniki",loadingAttachments:"Ładowanie załączników...",settings:"Ustawienia",recentEmails:"Ostatnie wiadomości e-mail",credentials:"Dane logowania",customFields:"Pola niestandardowe",twoFactorAuthentication:"Weryfikacja dwuetapowa (2FA)",alias:"Alias",notes:"Notatki",email:"Adres e-mail",username:"Nazwa użytkownika",password:"Hasło",generate:"Wygeneruj",serviceName:"Nazwa usługi",loggedIn:"Zalogowano",syncingVault:"Synchronizacja sejfu",checkingVaultUpdates:"Sprawdzanie aktualizacji sejfu",syncingUpdatedVault:"Synchronizacja zaktualizowanego sejfu",loadMore:"Załaduj więcej",offline:"Jesteś w trybie offline",offlineMode:"Praca w trybie offline",pendingSync:"Synchronizowanie...",mergingVaultChanges:"Łączenie zmian w sejfie...",uploadingVault:"Ładowanie sejfu...",errors:{serverNotAvailable:"Serwer AliasVault jest niedostępny. Spróbuj ponownie później lub skontaktuj się z pomocą techniczną, jeśli problem nadal występuje.",clientVersionNotSupported:"Ta wersja rozszerzenia przeglądarki AliasVault nie jest już obsługiwana przez serwer. Zaktualizuj rozszerzenie przeglądarki do najnowszej wersji.",browserExtensionOutdated:"To rozszerzenie przeglądarki jest nieaktualne i nie można go używać do uzyskania dostępu do tego sejfu. Aby kontynuować, zaktualizuj to rozszerzenie przeglądarki.",serverVersionNotSupported:"Aby korzystać z tego rozszerzenia przeglądarki, należy zaktualizować serwer AliasVault do nowszej wersji. Jeśli potrzebujesz pomocy, skontaktuj się z działem pomocy technicznej.",serverVersionTooOld:"Aby korzystać z tej funkcji, serwer AliasVault musi zostać zaktualizowany do nowszej wersji. Jeśli potrzebujesz pomocy, skontaktuj się z administratorem serwera.",unknownError:"Wystąpił nieznany błąd",unknownErrorTryAgain:"Wystąpił nieznany błąd. Spróbuj ponownie.",vaultNotAvailable:"Sejf niedostępny",vaultIsLocked:"Sejf jest zablokowany",passwordChanged:"Twoje hasło uległo zmianie od czasu ostatniego logowania. Ze względów bezpieczeństwa prosimy o ponowne zalogowanie się.",syncConflictMaxRetries:"Nie można zsynchronizować sejfu po wielu próbach. Spróbuj ponownie później.",mergeFailed:"Nie udało się scalić zmian w sejfie. Spróbuj ponownie.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Wprowadź prawidłowy 6-cyfrowy kod uwierzytelniający.",serverError:"Nie można połączyć się z serwerem AliasVault. Spróbuj ponownie później lub skontaktuj się z pomocą techniczną, jeśli problem nadal występuje.",wrongPassword:"Nieprawidłowe hasło. Spróbuj ponownie.",sessionExpired:"Twoja sesja wygasła. Prosimy o zalogowanie się ponownie.",mobileLoginRequestExpired:"Limit czasu logowania upłynął. Proszę odświeżyć stronę i spróbować ponownie."},apiErrors:{UNKNOWN_ERROR:"Wystąpił nieznany błąd. Spróbuj ponownie.",ACCOUNT_LOCKED:"Konto zostało tymczasowo zablokowane z powodu zbyt wielu nieudanych prób. Spróbuj ponownie później.",ACCOUNT_BLOCKED:"Twoje konto zostało zablokowane. Jeśli uważasz, że to pomyłka, skontaktuj się z pomocą techniczną.",USER_NOT_FOUND:"Nieprawidłowa nazwa użytkownika lub hasło. Spróbuj ponownie.",INVALID_AUTHENTICATOR_CODE:"Nieprawidłowy kod uwierzytelniający. Spróbuj ponownie.",INVALID_RECOVERY_CODE:"Nieprawidłowy kod odzyskiwania. Spróbuj ponownie.",REFRESH_TOKEN_REQUIRED:"Wymagany jest token odświeżania.",INVALID_REFRESH_TOKEN:"Nieprawidłowy token odświeżania.",PUBLIC_REGISTRATION_DISABLED:"Rejestracja nowych kont jest obecnie wyłączona na tym serwerze. Skontaktuj się z administratorem.",USERNAME_REQUIRED:"Wymagane jest podanie nazwy użytkownika.",USERNAME_ALREADY_IN_USE:"Nazwa użytkownika jest już używana.",USERNAME_AVAILABLE:"Nazwa użytkownika jest już używana.",USERNAME_MISMATCH:"Nazwa użytkownika nie pasuje do aktualnego użytkownika.",PASSWORD_MISMATCH:"Podane hasło nie zgadza się z Twoim aktualnym hasłem.",ACCOUNT_SUCCESSFULLY_DELETED:"Konto zostało pomyślnie usunięte.",USERNAME_EMPTY_OR_WHITESPACE:"Nazwa użytkownika nie może być pusta ani zawierać spacji.",USERNAME_TOO_SHORT:"Nazwa użytkownika jest zbyt krótka: musi mieć co najmniej 3 znaki.",USERNAME_TOO_LONG:"Nazwa użytkownika jest zbyt długa: nie może przekraczać 40 znaków.",USERNAME_INVALID_EMAIL:"Nieprawidłowy adres e-mail.",USERNAME_INVALID_CHARACTERS:"Nazwa użytkownika jest nieprawidłowa, może zawierać tylko litery lub cyfry.",VAULT_NOT_UP_TO_DATE:"Twój sejf nie jest aktualny. Zsynchronizuj sejf i spróbuj ponownie.",INTERNAL_SERVER_ERROR:"Wewnętrzny błąd serwera.",VAULT_ERROR:"Lokalny sejf nie jest aktualny. Zsynchronizuj sejf, odświeżając stronę, i spróbuj ponownie."}},wS={or:"lub",new:"Nowy",vaultLocked:"AliasVault jest zablokowany.",creatingNewAlias:"Tworzenie nowego aliasu...",noMatchesFound:"Nie znaleziono żadnych wyników",searchVault:"Przeszukaj sejf...",enterServiceName:"Wprowadź nazwę usługi",enterEmailAddress:"Wprowadź adres e-mail",enterUsername:"Wprowadź nazwę użytkownika",hideFor1Hour:"Ukryj na 1 godzinę (bieżąca strona)",hidePermanently:"Ukryj na stałe (bieżąca strona)",createRandomAlias:"Utwórz losowy alias",createUsernamePassword:"Utwórz nazwę użytkownika/hasło",randomAlias:"Losowy alias",usernamePassword:"Nazwa użytkownika/hasło",createAndSaveAlias:"Utwórz i zapisz alias",createAndSaveCredential:"Utwórz i zapisz dane uwierzytelniające",randomIdentityDescription:"Wygeneruj losową tożsamość z losowym adresem e-mail dostępnym w AliasVault.",randomIdentityDescriptionDropdown:"Losowa tożsamość z losowym adresem e-mail",manualCredentialDescription:"Określ swój adres e-mail i nazwę użytkownika.",manualCredentialDescriptionDropdown:"Ręczne wprowadzanie nazwy użytkownika i hasła",failedToCreateIdentity:"Nie udało się utworzyć tożsamości. Spróbuj ponownie.",enterEmailAndOrUsername:"Wprowadź adres e-mail i/lub nazwę użytkownika",autofillWithAliasVault:"Autouzupełnianie za pomocą AliasVault",generateRandomPassword:"Wygeneruj losowe hasło (skopiuj do schowka)",generateNewPassword:"Wygeneruj nowe hasło",togglePasswordVisibility:"Przełącz widoczność hasła",passwordCopiedToClipboard:"Hasło skopiowane do schowka",openAliasVaultToUpgrade:"Otwórz AliasVault, aby dokonać aktualizacji",vaultUpgradeRequired:"Wymagana aktualizacja sejfu.",dismissPopup:"Zamknij wyskakujące okienko",noTotpItemsFound:"Nie znaleziono kodu 2FA",close:"Zamknij",savePrompt:{title:"Zapisać w AliasVault?",neverForThisSite:"Nigdy dla tej strony",addUrlTitle:"Dodaj nowe dane logowania?"}},IS={title:"Elementy",itemName:"Nazwa",loginCredentials:"Dane logowania",cardInformation:"Informacje o karcie",addItem:"Dodaj element",addNewItem:"Dodaj nowy element",saveItem:"Zapisz element",itemDetails:"Szczegóły produktu",editItem:"Edytuj element",untitled:"Bez tytułu",newFolder:"Nowy folder",createFolder:"Utwórz folder",editFolder:"Edytuj folder",folderName:"Nazwa folderu",folderNameRequired:"Nazwa folderu jest wymagana",folder:"Katalog",welcomeTitle:"Witamy w AliasVault!",welcomeDescription:"Aby skorzystać z rozszerzenia przeglądarki AliasVault - przejdź do strony internetowej i użyj okienka autozupelniania, aby utworzyć nowa tożsamość.",noMatchingItems:"Żaden element nie pasuje do wybranego filtra.",noMatchingItemsSearch:"Nie znaleziono żadnych elementów pasujących do „{{search}}”",noMatchingItemsWithFilter:"Brak elementów {{filter}} pasujących do „{{search}}”",clearSearch:"Wyczyść wyszukiwanie",clearFilter:"Usuń filtr",emptyFolderHint:"Ten folder jest pusty. Aby przenieść elementy do tego folderu, edytuj element i wybierz ten folder.",allItemsInFolders:"Wszystkie Twoje elementy są uporządkowane w folderach. Kliknij folder powyżej, aby wyświetlić swoje dane logowania, lub skorzystaj z wyszukiwarki, aby znaleźć konkretne elementy.",deleteFolder:"Usuń folder",deleteFolderKeepItems:"Usuń tylko folder",deleteFolderKeepItemsDescription:"Elementy zostaną przeniesione do folderu nadrzędnego.",deleteFolderAndItems:"Usuń folder i wszystkie elementy",deleteFolderAndItemsDescription:"{{count}} element(ów) zostaną przeniesione do Ostatnio usunięte.",filters:{folders:"Foldery",passkeys:"Klucze dostępu",totp:"Kody 2FA"},sort:{title:"Sortuj według",oldestFirst:"Od najstarszych",newestFirst:"Od najnowszych",alphabetical:"Alfabetycznie (A-Z)"},deleteItemTitle:"Usuń element",deleteItemConfirm:"Czy na pewno chcesz usunąć ten element?",viewHistory:"Pokaż historię",history:"Historia",noHistoryAvailable:"Brak dostępnej historii",tags:"Znaczniki",changePasswordComplexity:"Zmień komplikację hasła",passwordLength:"Długość hasła",includeLowercase:"Uwzględnij małe litery",includeUppercase:"Uwzględnij wielkie litery",includeNumbers:"Uwzględnij numery",includeSpecialChars:"Uwzględnij znaki specjalne",avoidAmbiguousChars:"Unikaj dwuznacznych znaków (o, 0, itp.)",privateEmailTitle:"Prywatny adres e-mail",privateEmailAliasVaultServer:"Serwer AliasVault",privateEmailDescription:"Szyfrowane E2E, w pełni prywatne.",publicEmailTitle:"Publiczni dostawcy tymczasowych adresów e-mail",publicEmailDescription:"Anonimowe, ale ograniczają prywatność. Treść wiadomości e-mail jest dostępna dla każdego, kto zna adres.",validation:{required:"To pole jest wymagane"}},CS={selectType:"Dodaj nowy element",typeLabel:"Typ elementu",creating:"Tworzenie",editing:"Edytowanie",regenerateAlias:"Ponownie wygeneruj alias",addCustomField:"Dodaj pole niestandardowe",fieldLabel:"Etykieta pola",enterFieldName:"Wprowadź nazwę pola",fieldType:"Typ pola",fieldTypes:{text:"Tekst",hidden:"Ukryty (zamaskowany tekst)",email:"Skrzynka odbiorcza",url:"adres URL",phone:"Numer telefonu",number:"Numer",date:"Data",textArea:"Obszar tekst"},login:{title:"Zaloguj się"},alias:{title:"Tożsamość (Alias)"},creditCard:{title:"Karta płatnicza"},note:{title:"Bezpieczna notatka"}},SS={"login.url":"URL strony internetowej","login.username":"Nazwa użytkownika","login.password":"Hasło","alias.first_name":"Imię","alias.last_name":"Nazwisko","alias.gender":"Płeć","alias.birthdate":"Data urodzenia","login.email":"Skrzynka odbiorcza","notes.content":"Notatki","card.cardholder_name":"Imię i nazwisko posiadacza karty","card.number":"Numer karty","card.expiry_month":"Miesiąc wygaśnięcia","card.expiry_year":"Rok wygaśnięcia","card.cvv":"Kod CVV","card.pin":"Kod PIN"},TS={addCode:"Dodaj kod 2FA",instructions:"Wprowadź tajny klucz wyświetlony na stronie internetowej, na której chcesz dodać uwierzytelnianie dwuskładnikowe.",nameOptional:"Nazwa (opcjonalnie)",secretKey:"Tajny klucz",saveToViewCode:"Zapisz, aby wyświetlić kod",defaultName:"Uwierzytelnianie",deleteTotpCodeTitle:"Usuń kod 2FA",deleteTotpCodeConfirmation:'Czy na pewno chcesz usunąć ten kod TOTP "{{name}}?',errors:{invalidSecretKey:"Nieprawidłowy format tajnego klucza."}},NS={uploading:"Przesyłanie...",uploadSuccess:"Plik został przesłany pomyślnie.",deleteSuccess:"Element został pomyślnie usunięty.",firefoxExpandRequired:"Aby przesłać pliki, użyj rozszerzonego okna.",openExpandedWindow:"Otwórz rozszerzone okno"},kS={title:"Skrzynka odbiorcza",deleteEmailTitle:"Usuń e-mail",deleteEmailConfirm:"Czy na pewno chcesz trwale usunąć ten e-mail?",from:"Od",to:"Do",date:"Data",emailContent:"Treść wiadomości e-mail",emailNotFound:"Nie znaleziono wiadomości e-mail",noEmails:"Nie znaleziono wiadomości e-mail",noEmailsDescription:"Nie otrzymałeś jeszcze żadnych wiadomości e-mail na prywatne adresy e-mail. Kiedy otrzymasz nowy e-mail, pojawi się on tutaj.",offlineMessage:"Jesteś offline. Połącz się z Internetem, aby załadować wiadomości e-mail.",loadMore:"Załaduj więcej (pozostało {{count}})",dateFormat:{justNow:"w tej chwili",minutesAgo_single:"{{count}} minut temu",minutesAgo_plural:"{{count}} minut temu",hoursAgo_single:"{{count}} godzinę temu",hoursAgo_plural:"{{count}} godzin temu",yesterday:"wczoraj"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Wybrany adres e-mail jest już w użyciu. Proszę zmienić adres e-mail poprzez edycję danych logowania.",CLAIM_DOES_NOT_EXIST:"Wystąpił błąd podczas próby załadowania wiadomości e-mail. Spróbuj edytować i zapisać wpis logowania, aby zsynchronizować bazę danych, a następnie spróbuj ponownie."}},xS={serverUrl:"Adres URL serwera",language:"Język",autofillEnabled:"Włącz autouzupełnianie",version:"Wersja",openWebApp:"Otwórz aplikację internetową",lock:"Zablokuj",globalSettings:"Ustawienia ogólne",activeOnAllSites:"Aktywne we wszystkich witrynach (chyba że jest wyłączone)",disabledOnAllSites:"Wyłączone na wszystkich witrynach",rightClickContextMenu:"Aktywacja menu kontekstowego",autofillMatching:"Dopasowanie autouzupełniania",autofillMatchingMode:"Tryb dopasowania autouzupełniania",autofillMatchingModeDescription:"Określa, które dane logowania są uważane za dopasowane i wyświetlane jako sugestie w oknie autouzupełniania dla danej strony internetowej.",autofillMatchingDefault:"Adres URL + subdomena + nazwa wieloznaczna",autofillMatchingUrlSubdomain:"Adres URL + subdomena",autofillMatchingUrlExact:"Dokładna domena adresu URL",siteSpecificSettings:"Ustawienia dotyczące witryny",enabledForThisSite:"Włączone dla tej witryny",disabledForThisSite:"Wyłączone dla tej witryny",resetAllSiteSettings:"Zresetuj wszystkie ustawienia witryny",disabledSites:"Wyłączone witryny",disabledSitesDescription:"Witryny, w których okienko autouzupełniania nie będzie wyświetlane.",clearAllDisabledSites:"Usuń wszystkie wyłączone witryny",temporaryUntil:"do",appearance:"Wygląd",theme:"Motyw",useDefault:"Użyj domyślnego",light:"Jasny",dark:"Ciemny",keyboardShortcuts:"Skróty klawiaturowe",configureKeyboardShortcuts:"Skonfiguruj skróty klawiaturowe",configure:"Konfiguracja",clipboardClearTimeout:"Wyczyść schowek po skopiowaniu",clipboardClearTimeoutDescription:"Automatycznie wyczyść schowek po skopiowaniu poufnych danych",clipboardClearDisabled:"Nigdy nie czyść",clipboardClear5Seconds:"Wyczyść po 5 sekundach",clipboardClear10Seconds:"Wyczyść po 10 sekundach",clipboardClear15Seconds:"Wyczyść po 15 sekundach",autoLockTimeout:"Blokada rozszerzenia",autoLockTimeoutDescription:"Automatycznie zablokuj sejf po okresie bezczynności",autoLockTimeoutHelp:"Sejf zostanie zablokowany dopiero po określonym okresie nieaktywności (żadne użycie autouzupełniania lub okienko rozszerzenia nie zostało otwarte). Sejf zostanie zablokowany, gdy przeglądarka zostanie zamknięta, niezależnie od tego ustawienia.",autoLockNever:"Nigdy",autoLock15Seconds:"15 sekund",autoLock30Seconds:"30 sekund",autoLock1Minute:"1 minuta",autoLock5Minutes:"5 minut",autoLock15Minutes:"15 minut",autoLock30Minutes:"30 minut",autoLock1Hour:"1 godzina",autoLock4Hours:"4 godziny",autoLock8Hours:"8 godzin",autoLock24Hours:"24 godziny",versionPrefix:"Wersja ",autofillSettings:"Ustawienia autouzupełniania",clipboardSettings:"Ustawienia schowka",contextMenuSettings:"Ustawienia menu kontekstowego",passkeySettings:"Ustawienia kluczy dostępu",contextMenuDescription:"Kliknij prawym przyciskiem myszy na pola wejściowe, aby uzyskać dostęp do opcji AliasVault",selectLanguage:"Wybierz język",serverConfiguration:"Konfiguracja serwera",serverConfigurationDescription:"Skonfiguruj adres URL serwera sejfu AliasVault",customApiUrl:"Adres URL interfejsu API",customClientUrl:"Adresy URL klienta",apiUrlHint:"Adres URL punktu końcowego API (zazwyczaj adres URL klienta + /api)",clientUrlHint:"Adres URL interfejsu sieci web dla twojej samodzielnej instancji",autofillSettingsDescription:"Włącz lub wyłącz okno autouzupełniania na stronach internetowych",autofillEnabledDescription:"Sugestie autouzupełniania pojawią się na formularzach logowania",autofillDisabledDescription:"Podpowiedzi wyłączone we wszystkich polach",languageSettings:"Język",validation:{apiUrlRequired:"API URL jest wymagane",apiUrlInvalid:"Wprowadź poprawny adres URL API",clientUrlRequired:"Adres URL klienta jest wymagany",clientUrlInvalid:"Wprowadź prawidłowy adres URL klienta"},identityGenerator:"Generator tożsamości",identityGeneratorSettings:{description:"Skonfiguruj domyślny język i preferencje dotyczące płci dla generowania nowych tożsamości.",languageSection:"Wybierz język",languageDescription:"Ustaw język, który będzie używany podczas generowania nowych tożsamości.",genderSection:"Płeć",genderDescription:"Ustaw preferencje dotyczące płci dla generowania nowych tożsamości.",ageRangeSection:"Zakres wieku",ageRangeDescription:"Ustaw zakres wieku dla generowania nowych tożsamości.",genderOptions:{random:"Losowy",male:"Mężczyzna",female:"Kobieta"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Zapisz monit logowania",description:"Pokaż monit o zapisanie danych logowania podczas przesyłania formularza logowania na stronie internetowej.",blockedSites:"Zablokowane witryny",blockedSitesDescription:"Witryny, w których nie pojawi się monit zapisu.",clearAllBlockedSites:"Wyczyść wszystkie zablokowane strony"},unlockMethod:{title:"Metoda odblokowania skarbca",introText:"Wybierz sposób odblokowania sejfu. Możesz użyć hasła głównego (zawsze dostępnego) lub skonfigurować kod PIN, aby uzyskać szybszy dostęp. Po 3 nieudanych próbach wprowadzenia kodu PIN konieczne będzie użycie hasła głównego.",password:"Hasło główne",pin:"Kod PIN",pinDescription:"Odblokuj sejf za pomocą kodu PIN",setupPin:"Ustaw kod PIN",enterNewPinDescription:"Wprowadź kod PIN składający się z co najmniej 6 cyfr",confirmPin:"Potwierdź kod PIN",confirmPinDescription:"Wprowadź ponownie swój kod PIN, aby potwierdzić",invalidPinFormat:"Nieprawidłowy format kodu PIN",pinMismatch:"Kody PIN nie są zgodne",incorrectPin:"Nieprawidłowy kod PIN. Pozostało {{attemptsRemaining}} prób.",incorrectPinSingular:"Nieprawidłowy kod PIN. Pozostała 1 próba.",enableSuccess:"Odblokowanie za pomocą kodu PIN zostało aktywowane!",pinLocked:"Odblokowanie za pomocą kodu PIN zostało wyłączone. Aby odblokować sejf, użyj hasła głównego.",pinSecurityWarning:"Odblokowanie za pomocą kodu PIN w rozszerzeniu przeglądarki może być mniej bezpieczne niż hasło główne, ponieważ kody PIN mają zazwyczaj niższą entropię i mogą zostać złamane metodą Brute-Force, jeśli urządzenie zostanie naruszone. Używaj tej funkcji tylko na urządzeniach, którym w pełni ufasz."}},LS={passkey:"Kod dostępu",site:"Strona internetowa",helpText:"Klucze dostępu są tworzone na stronie internetowej po wyświetleniu monitu. Nie można ich edytować ręcznie. Aby usunąć ten klucz dostępu, można go usunąć z tych poświadczeń. Aby zastąpić ten klucz dostępu lub utworzyć nowy, należy odwiedzić stronę internetową i postępować zgodnie z wyświetlanymi instrukcjami.",passkeyMarkedForDeletion:"Klucz dostępu oznaczony do usunięcia",passkeyWillBeDeleted:"To hasło zostanie usunięte po zapisaniu tych danych logowania.",useBrowserPasskey:"Użyj klucza dostępu przeglądarki",bypass:{description:"Jak długo chcesz korzystać z dostawcy kluczy przeglądarki dla {{origin}}?",thisTimeOnly:"Tylko tym razem",alwaysForSite:"Zawsze dla tej witryny"},authenticate:{title:"Zaloguj się za pomocą klucza bezpieczeństwa",signInFor:"Zaloguj się za pomocą klucza bezpieczeństwa dla",selectPasskey:"Wybierz klucz dostępu, aby się zalogować:",noPasskeysFound:"Nie znaleziono kluczy dostępu dla tej witryny"},create:{title:"Utwórz klucz dostępu",createFor:"Utwórz nowy klucz dostępu dla",titleLabel:"Tytuł",titlePlaceholder:"Wprowadź nazwę dla tego klucza dostępu",createButton:"Utwórz klucz dostępu",selectPasskeyToReplace:"Wybierz klucz dostępu, który chcesz zastąpić:",createNewPasskey:"Utwórz nowy klucz dostępu",replacingPasskey:"Zamiana klucza dostępu: {{displayName}}",confirmReplace:"Potwierdź zamianę",selectExistingLogin:"Dodaj do istniejącego loginu:",selectExistingLoginDescription:"Dołącz ten klucz dostępu do istniejącego logowania dla tej witryny.",attachingToCredential:"Dodawanie klucza dostępu do: {{serviceName}}",attachPasskey:"Dodaj klucz dostępu"},settings:{passkeyProvider:"Dostawca klucza dostępu",passkeyProviderOn:"Dostawca klucza dostępu włączony "}},DS={title:"Ostatnio usunięte",noItems:"Brak usuniętych elementów",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Przywróć",deletePermanently:"Usuń bezpowrotnie",emptyAll:"Opróżnij wszystkie",daysRemaining_one:"Pozostało {{count}} dni",daysRemaining_other:"Pozostało {{count}} dni",expiringSoon:"Wkrótce wygasa",confirmDeleteTitle:"Usunąć trwale?",confirmDeleteMessage:"Ten element zostanie trwale usunięty i nie będzie można go odzyskać.",confirmEmptyAllTitle:"Opróżnij ostatnio usunięte?",confirmEmptyAllMessage:"Wszystkie elementy {{count}} zostaną trwale usunięte i nie mogą zostać odzyskane."},RS={title:"Aktualizacja sejfu",subtitle:"Wersja AliasVault jest nieaktualna i konieczna jest aktualizacja Twojego sejfu. Zajmie to tylko kilka sekund.",versionInformation:"Informacje o wersji",yourVault:"Twoja wersja sejfu:",newVersion:"Nowa dostępna wersja:",upgrade:"Aktualizuj sejf",upgrading:"Aktualizacja...",whatsNew:"Co nowego",whatsNewDescription:"Uaktualnienie jest wymagane do obsługi następujących zmian:",noDescriptionAvailable:"Brak dostępnego opisu dla tej wersji.",alerts:{unableToGetVersionInfo:"Nie można uzyskać informacji o wersji. Spróbuj ponownie.",selfHostedServer:"Serwer własny",selfHostedWarning:"Jeśli używasz własnego serwera, upewnij się, że zaktualizujesz swoją samodzielną instancję, ponieważ w przeciwnym razie logowanie się do klienta internetowego przestanie działać.",continueUpgrade:"Kontynuuj aktualizację",upgradeFailed:"Aktualizacja nie powiodła się",failedToApplyMigration:"Nie udało się zastosować migracji ({{current}} of {{total}})"}},US={unsyncedChangesTitle:"Zmiany niesynchronizowane",unsyncedChangesWarning:"Masz niezsynchronizowane zmiany, które zostaną utracone, jeśli się teraz wylogujesz. Czy na pewno chcesz kontynuować?",logoutAnyway:"Wyloguj się mimo wszystko"},MS={offline:"Jesteś w trybie offline",tapToRetry:"Dotknij, aby ponowić synchronizację",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Odrzuć"},_S={auth:ES,menu:bS,common:vS,content:wS,items:IS,itemTypes:CS,fieldLabels:SS,totp:TS,attachmentUploader:NS,emails:kS,settings:xS,passkeys:LS,recentlyDeleted:DS,upgrade:RS,logout:US,sync:MS},UM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:NS,auth:ES,common:vS,content:wS,default:_S,emails:kS,fieldLabels:SS,itemTypes:CS,items:IS,logout:US,menu:bS,passkeys:LS,recentlyDeleted:DS,settings:xS,sync:MS,totp:TS,upgrade:RS},Symbol.toStringTag,{value:"Module"})),FS={loginTitle:"Fazer login no AliasVault",username:"Nome de usuário ou e-mai",usernamePlaceholder:"nome / nome@empresa.com",passwordPlaceholder:"Digite sua senha",rememberMe:"Lembrar-me",loginButton:"Entrar",noAccount:"Não possui conta?",createVault:"Criar novo cofre",twoFactorTitle:"Por favor, insira o código de autenticação do seu aplicativo de autenticação.",authCode:"Código de Autenticação",authCodePlaceholder:"Digite o código de 6 dígitos",verify:"Verificar",twoFactorNote:"Nota: se você não tem acesso ao seu aparelho de verificação, você pode resetar seu 2FA com um código de recuperação fazendo login no site.",masterPassword:"Senha Mestre",unlockVault:"Desbloquear",unlockWithPin:"Desbloquear com PIN",enterPinToUnlock:"Digite seu PIN para desbloquear seu cofre",useMasterPassword:"Utilizar Senha Mestre",unlockTitle:"Desbloquear Seu Cofre",logoutConfirm:"Tem certeza que deseja sair?",unlockSuccessTitle:"O seu cofre foi desbloqueado com sucesso",unlockSuccessDescription:"Agora você pode utilizar o preenchimento automático nos formulários de login no seu navegador.",closePopup:"Fechar este pop-up",browseVault:"Navegar por conteúdo do cofre",autoCloseUnlockPopup:"Fechar automaticamente nos próximos acessos",connectingTo:"Conectando à",switchAccounts:"Mudar de conta?",loginWithMobile:"Entrar utilizado Dispositivo Móvel",unlockWithMobile:"Desbloquear utilizando Dispositivo Móvel",scanQrCode:"Escaneie este código QR com seu aplicativo AliasVault para dispositivo móvel para entrar e desbloquear seu cofre.",passwordAttemptsWarning:"Senha incorreta. Você será desconectado se você digitar a senha incorretamente mais {{remainingAttempts}} vezes.",maxAttemptsReached:"Muitas tentativas de desbloqueio falharam. Você foi desconectado por motivos de segurança."},BS={vault:"Cofre",emails:"E-mails"},PS={loading:"Carregando...",notice:"Aviso",error:"Erro",cancel:"Cancelar",confirm:"Confirmar",remove:"Remover",back:"Voltar",next:"Próximo",use:"Utilizar",add:"Adicionar",delete:"Excluir",undo:"Desfazer",save:"Salvar",saving:"Salvando...",edit:"Editar",create:"Criar",or:"Ou",close:"Fechar",dismiss:"Ignorar",logout:"Sair",copied:"Copiado!",openInNewWindow:"Abrir em uma nova janela",enabled:"Habilitado",disabled:"Desabilitado",showPassword:"Mostrar senha",hidePassword:"Ocultar senha",show:"Mostrar",hide:"Esconder",showDetails:"Exibir detalhes",hideDetails:"Esconder detalhes",copyToClipboard:"Copiar para a área de transferência",loadingEmails:"Carregando e-mails...",loadingTotpCodes:"Carregando códigos TOTP...",attachments:"Anexos",loadingAttachments:"Carregando anexos...",settings:"Configurações",recentEmails:"E-mails recentes",credentials:"Credenciais",customFields:"Campos Personalizados",twoFactorAuthentication:"Autenticação de dois fatores",alias:"Alias",notes:"Notas",email:"E-mail",username:"Nome de Usuário",password:"Senha",generate:"Gerar",serviceName:"Nome do Serviço",loggedIn:"Logado",syncingVault:"Sincronizando cofre",checkingVaultUpdates:"Verificando atualizações do cofre",syncingUpdatedVault:"Sincronizando cofre atualizado",loadMore:"Carregar mais",offline:"Offline",offlineMode:"Operando em modo offline",pendingSync:"Sincronizando...",mergingVaultChanges:"Integrando mudanças do cofre...",uploadingVault:"Fazendo upload do cofre...",errors:{serverNotAvailable:"O servidor AliasVault não está disponível. Por favor, tente novamente mais tarde ou entre em contato com o suporte caso o problema persista.",clientVersionNotSupported:"Esta versão da extensão AliasVault para o navegador não é mais suportada pelo servidor. Por favor, atualize sua extensão para a última versão.",browserExtensionOutdated:"Esta extensão do navegador está desatualizada e não pode ser utilizada para acessar este cofre. Por favor, atualize esta extensão para continuar.",serverVersionNotSupported:"O servidor AliasVault precisa ser atualizado para uma nova versão para poder utilizar esta extensão de navegador. Por favor, entre em contato com o suporte caso precise de ajuda.",serverVersionTooOld:"O servidor do AliasVault deve ser atualizado para uma versão mais recente para utilizar esta função. Por favor, entre em contato com o administrador do servidor se precisar de ajuda.",unknownError:"Ocorreu um erro desconhecido",unknownErrorTryAgain:"Ocorreu um erro inesperado. Por favor, tente novamente.",vaultNotAvailable:"Cofre não disponível",vaultIsLocked:"O cofre está bloqueado",passwordChanged:"Sua senha mudou desde o último login. Por favor, realize login novamente por questões de segurança.",syncConflictMaxRetries:"Não foi possível sincronizar seu cofre após várias tentativas. Por favor, tente novamente mais tarde.",mergeFailed:"Falha ao combinar mudanças do cofre. Por favor, tente novamente.",vaultTooLarge:"O cofre é grande demais para o servidor aceitar. Tente remover alguns itens ou anexos para reduzir o tamanho e tente novamente.",invalidCode:"Por favor digite o código de autenticação de 6 dígitos.",serverError:"Não foi possível conectar ao servidor do AliasVault. Por favor tente novamente mais tarde ou entre em contato com o suporte caso o problema persista.",wrongPassword:"Senha incorreta. Por favor tente novamente.",sessionExpired:"Sua sessão expirou. Por favor, faça login novamente.",mobileLoginRequestExpired:"Requisição de login pelo dispositivo móvel demorou muito. Por favor, atualize a página e tente novamente."},apiErrors:{UNKNOWN_ERROR:"Um erro desconhecido ocorreu. Por favor, tente novamente.",ACCOUNT_LOCKED:"Conta temporariamente bloqueada por muitas tentativas de login falhas. Por favor, tente novamente mais tarde.",ACCOUNT_BLOCKED:"Sua conta foi desabilitada. Se você acredita que isto foi um erro, por favor, entre em contato com o suporte.",USER_NOT_FOUND:"Usuário ou senha incorretos. Por favor, tente novamente.",INVALID_AUTHENTICATOR_CODE:"Código de autenticação incorreto. Por favor, tente novamente.",INVALID_RECOVERY_CODE:"Código de recuperação inválido. Por favor, tente novamente.",REFRESH_TOKEN_REQUIRED:"Token de atualização é obrigatório.",INVALID_REFRESH_TOKEN:"Token de atualização inválido.",PUBLIC_REGISTRATION_DISABLED:"Registro de novas contas está atualmente desabilitado neste servidor. Por favor entre em contato com o administrador.",USERNAME_REQUIRED:"Nome de usuário é obrigatório.",USERNAME_ALREADY_IN_USE:"Nome de usuário já está em uso.",USERNAME_AVAILABLE:"Nome de usuário está disponível.",USERNAME_MISMATCH:"Nome de usuário não corresponde ao usuário atual.",PASSWORD_MISMATCH:"A senha digitada não corresponde á sua senha atual.",ACCOUNT_SUCCESSFULLY_DELETED:"Conta excluída com sucesso.",USERNAME_EMPTY_OR_WHITESPACE:"Nome de usuário não pode estar vazio ou em branco.",USERNAME_TOO_SHORT:"Nome de usuário muito curto: deve ter pelo menos 3 caracteres.",USERNAME_TOO_LONG:"Nome de usuário muito longo: não pode conter mais de 40 caracteres.",USERNAME_INVALID_EMAIL:"Endereço de e-mail inválido.",USERNAME_INVALID_CHARACTERS:"Nome de usuário é inválido, deve conter apenas letras ou números.",VAULT_NOT_UP_TO_DATE:"Seu cofre não está atualizado. Por favor, sincronize seu cofre e tente novamente.",INTERNAL_SERVER_ERROR:"Erro intero do servidor.",VAULT_ERROR:"O cofre local não está atualizado. Por favor, sincronize seu cofre recarregando a página e tente novamente."}},OS={or:"ou",new:"Novo",vaultLocked:"AliasVault está bloqueado.",creatingNewAlias:"Criando novo alias...",noMatchesFound:"Nenhum resultado encontrado",searchVault:"Pesquisar cofre...",enterServiceName:"Digite o nome do serviço",enterEmailAddress:"Digite o endereço de e-mail",enterUsername:"Digite o nome de usuário",hideFor1Hour:"Ocultar por 1 hora (site atual)",hidePermanently:"Ocultar permanentemente (site atual)",createRandomAlias:"Criar alias aleatório",createUsernamePassword:"Criar nome de usuário/senha",randomAlias:"Alias aleatório",usernamePassword:"Nome de usuário/senha",createAndSaveAlias:"Criar e salvar alias",createAndSaveCredential:"Criar e salvar credencial",randomIdentityDescription:"Gerar uma identidade aleatória com um endereço de e-mail aleatório acessível pelo AliasVault.",randomIdentityDescriptionDropdown:"Identidade aleatória com e-mail aleatório",manualCredentialDescription:"Especifique seu próprio endereço de e-mail e nome de usuário.",manualCredentialDescriptionDropdown:"Nome de usuário e senha manuais",failedToCreateIdentity:"Falha ao criar identidade. Por favor, tente novamente.",enterEmailAndOrUsername:"Digite o e-mail e/ou nome de usuário",autofillWithAliasVault:"Preenchimento Automático com AliasVault",generateRandomPassword:"Gerar senha aleatória (copiar para a área de transferência)",generateNewPassword:"Gerar nova senha",togglePasswordVisibility:"Alternar visibilidade da senha",passwordCopiedToClipboard:"Senha copiada para a área de transferência",openAliasVaultToUpgrade:"Abra o AliasVault para atualizar",vaultUpgradeRequired:"Atualização de cofre necessária.",dismissPopup:"Ignorar pop-up",noTotpItemsFound:"Nenhum código 2FA encontrado",close:"Fechar",savePrompt:{title:"Salvar no AliasVault?",neverForThisSite:"Nunca para este site",addUrlTitle:"Adicionar URL na credencial?"}},jS={title:"Itens",itemName:"Nome",loginCredentials:"Credenciais de Login",cardInformation:"Informações do Cartão",addItem:"Adicionar Item",addNewItem:"Adicionar novo item",saveItem:"Salvar Item",itemDetails:"Detalhes do Item",editItem:"Editar Item",untitled:"Sem Título",newFolder:"Nova Pasta",createFolder:"Criar Pasta",editFolder:"Editar Pasta",folderName:"Nome da Pasta",folderNameRequired:"Nome da pasta é obrigatório",folder:"Pasta",welcomeTitle:"Boas-vindas ao AliasVault!",welcomeDescription:"Para utilizar a extensão de navegador do AliasVault: navegue para um site e utilize o pop-up de preenchimento automático do AliasVault para criar uma nova credencial.",noMatchingItems:"Nenhum item corresponde ao filtro selecionado.",noMatchingItemsSearch:'Nenhum item corresponde à "{{search}}"',noMatchingItemsWithFilter:'Nenhum item com o filtro {{filter}} corresponde à "{{search}}"',clearSearch:"Limpar pesquisa",clearFilter:"Limpar filtro",emptyFolderHint:"Esta pasta está vazia. Para mover itens para esta pasta, edite o item e toque no ícone da pasta no campo de nome.",allItemsInFolders:"Todos os seus itens estão organizados em pastas. Clique em uma pasta acima para ver suas credenciais, ou utilize a busca para encontrar itens específicos.",deleteFolder:"Excluir Pasta",deleteFolderKeepItems:"Excluir apenas a pasta",deleteFolderKeepItemsDescription:"Itens serão movidos para a pasta superior.",deleteFolderAndItems:"Excluir pasta e todos os itens",deleteFolderAndItemsDescription:"{{count}} item(s) será(ão) movido(s) para Recentemente Excluídos.",filters:{folders:"Pastas",passkeys:"Passkeys",totp:"Códigos de 2FA"},sort:{title:"Ordenar por",oldestFirst:"Mais antigos primeiro",newestFirst:"Mais novos primeiro",alphabetical:"Ordem Alfabética (A-Z)"},deleteItemTitle:"Excluir Item",deleteItemConfirm:"Tem certeza que deseja excluir este item?",viewHistory:"Visualizar histórico",history:"Histórico",noHistoryAvailable:"Histórico não disponível",tags:"Tags",changePasswordComplexity:"Alterar complexidade de senha",passwordLength:"Tamanho da senha",includeLowercase:"Incluir letras minúsculas",includeUppercase:"Incluir letras maiúsculas",includeNumbers:"Incluir números",includeSpecialChars:"Incluir caracteres especiais",avoidAmbiguousChars:"Evitar caracteres ambíguos (o, 0, etc.)",privateEmailTitle:"E-mail Privado",privateEmailAliasVaultServer:"Servidor AliasVault",privateEmailDescription:"Criptografia E2E, totalmente privado.",publicEmailTitle:"Provedores Públicos de E-mail Temporário",publicEmailDescription:"Anônimo mas com privacidade limitada. Conteúdo do e-mail pode ser lido por qualquer um que souber o endereço.",validation:{required:"Este campo é obrigatório"}},HS={selectType:"Adicionar Novo Item",typeLabel:"Tipo do Item",creating:"Criando",editing:"Editando",regenerateAlias:"Gerar alias novamente",addCustomField:"Adicionar campo personalizado",fieldLabel:"Nome do Campo",enterFieldName:"Digite o nome do campo",fieldType:"Tipo do Campo",fieldTypes:{text:"Texto",hidden:"Escondido (texto mascarado)",email:"E-mail",url:"URL",phone:"Telefone",number:"Número",date:"Data",textArea:"Área de Texto"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Cartão de Crédito"},note:{title:"Nota Segura"}},VS={"login.url":"URL do Website","login.username":"Nome de usuário","login.password":"Senha","alias.first_name":"Primeiro Nome","alias.last_name":"Sobrenome","alias.gender":"Gênero","alias.birthdate":"Data de nascimento","login.email":"E-mail","notes.content":"Notas","card.cardholder_name":"Nome do Titular do Cartão","card.number":"Número do Cartão","card.expiry_month":"Mês de Expiração","card.expiry_year":"Ano de Expiração","card.cvv":"CVV","card.pin":"Senha"},zS={addCode:"Adicionar Código de Autenticação de Dois Fatores",instructions:"Digite a chave secreta exibida pelo website que você quer adicionar a autenticação de dois fatores.",nameOptional:"Nome (opcional)",secretKey:"Chave Secreta",saveToViewCode:"Salvar para ver código",defaultName:"Autenticador",deleteTotpCodeTitle:"Excluir Código 2FA",deleteTotpCodeConfirmation:'Tem certeza que deseja excluir o código 2FA "{{name}}"?',errors:{invalidSecretKey:"Formato de chave secreta inválido."}},QS={uploading:"Fazendo upload...",uploadSuccess:"Arquivos enviados com sucesso.",deleteSuccess:"Anexo excluído com sucesso.",firefoxExpandRequired:"Para fazer o upload dr arquivos, use a tela expandida.",openExpandedWindow:"Abrir Tela Expandida"},KS={title:"E-mails",deleteEmailTitle:"Excluir E-mail",deleteEmailConfirm:"Tem certeza de que deseja excluir permanentemente este e-mail?",from:"De",to:"Para",date:"Data",emailContent:"Conteúdo do email",emailNotFound:"E-mail não encontrado",noEmails:"Nenhum e-mail encontrado",noEmailsDescription:"Você ainda não recebeu nenhum e-mail em seus endereços de e-mail privados. Quando receber um novo e-mail, ele aparecerá aqui.",offlineMessage:"Você está offline. Por favor, conecte-se à internet para carregar seus e-mails.",loadMore:"Carregar Mais ({{count}} restante(s))",dateFormat:{justNow:"agora",minutesAgo_single:"há {{count}} minuto",minutesAgo_plural:"há {{count}} minutos",hoursAgo_single:"há {{count}} hora",hoursAgo_plural:"há {{count}} horas",yesterday:"ontem"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"O e-mail escolhido já está em uso. Por favor, altere o endereço de e-mail editando esta credencial.",CLAIM_DOES_NOT_EXIST:"Ocorreu um erro ao tentar carregar os e-mails. Por favor, tente editar e salvar a credencial para sincronizar com o banco de dados, e tente novamente."}},GS={serverUrl:"URL do servidor",language:"Idioma",autofillEnabled:"Ativar o Preenchimento Automático",version:"Versão",openWebApp:"Abrir aplicativo web",lock:"Bloquear",globalSettings:"Configurações Gerais",activeOnAllSites:"Ativado em todos os sites (a menos que esteja desabilitado abaixo)",disabledOnAllSites:"Desativado em todos os sites",rightClickContextMenu:"Menu do botão direito",autofillMatching:"Correspondência de Preenchimento Automático",autofillMatchingMode:"Modo de correspondência de preenchimento automático",autofillMatchingModeDescription:"Determina quais credenciais são consideradas uma correspondência e mostradas como sugestões no pop-up de preenchimento automático para um determinado site.",autofillMatchingDefault:"Wildcard URL + subdomínio + nome",autofillMatchingUrlSubdomain:"URL + subdomínio",autofillMatchingUrlExact:"Apenas URL exato do domínio",siteSpecificSettings:"Configurações Específicas do Site",enabledForThisSite:"Habilitado para este site",disabledForThisSite:"Desabilitado para este site",resetAllSiteSettings:"Redefinir todas as configurações específicas do site",disabledSites:"Sites desabilitados",disabledSitesDescription:"Sites onde o popup de autopreenchimento não vão aparecer.",clearAllDisabledSites:"Limpar todos os sites desabilitados",temporaryUntil:"até",appearance:"Aparência",theme:"Tema",useDefault:"Utilizar padrão",light:"Claro",dark:"Escuro",keyboardShortcuts:"Atalhos do Teclado",configureKeyboardShortcuts:"Configurar atalhos do teclado",configure:"Configurar",clipboardClearTimeout:"Limpar área de transferência após copiar",clipboardClearTimeoutDescription:"Limpar automaticamente a área de transferência após copiar dados sensíveis",clipboardClearDisabled:"Nunca limpar",clipboardClear5Seconds:"Limpar após 5 segundos",clipboardClear10Seconds:"Limpar após 10 segundos",clipboardClear15Seconds:"Limpar após 15 segundos",autoLockTimeout:"Tempo para bloqueio automático",autoLockTimeoutDescription:"Bloquear o cofre automaticamente após período de inatividade",autoLockTimeoutHelp:"O cofre será bloqueado apenas após o período de inatividade especificado (nenhuma utilização de preenchimento automático ou pop-up da extensão abertos). O cofre sempre será bloqueado quando o navegador for fechado, independentemente desta configuração.",autoLockNever:"Nunca",autoLock15Seconds:"15 segundos",autoLock30Seconds:"30 segundos",autoLock1Minute:"1 minuto",autoLock5Minutes:"5 minutos",autoLock15Minutes:"15 minutos",autoLock30Minutes:"30 minutos",autoLock1Hour:"1 hora",autoLock4Hours:"4 horas",autoLock8Hours:"8 horas",autoLock24Hours:"24 horas",versionPrefix:"Versão ",autofillSettings:"Configurações de Preenchimento Automático",clipboardSettings:"Configurações da Área de Transferência",contextMenuSettings:"Configurações do Menu de Contexto",passkeySettings:"Configurações de Passkey",contextMenuDescription:"Clique com o botão direito nos campos para acessar as opções do AliasVault",selectLanguage:"Selecionar Idioma",serverConfiguration:"Configurações do Servidor",serverConfigurationDescription:"Configure o URL do servidor do AliasVault para instâncias self-hosted",customApiUrl:"URL da API",customClientUrl:"URL do Cliente",apiUrlHint:"O URL do endpoint da API (geralmente o URL do cliente + /api)",clientUrlHint:"O URL da interface web da sua instância self-hosted",autofillSettingsDescription:"Habilite ou desabilite o popup de autopreenchimento em páginas web",autofillEnabledDescription:"Sugestões de autopreenchimento aparecerão em formulários de login",autofillDisabledDescription:"Sugestões de autopreenchimento estão desabilitadas globalmente",languageSettings:"Idioma",validation:{apiUrlRequired:"URL de API é obrigatório",apiUrlInvalid:"Por favor, digite um URL de API válido",clientUrlRequired:"URL de Cliente é obrigatório",clientUrlInvalid:"Por favor, digite um URL de cliente válido"},identityGenerator:"Gerador de Identidade",identityGeneratorSettings:{description:"Configure o idioma padrão e preferência de gênero para geração de novas identidades.",languageSection:"Idioma",languageDescription:"Defina o idioma que será utilizado ao gerar novas identidades.",genderSection:"Gênero",genderDescription:"Defina a preferência de gênero para geração de novas identidades.",ageRangeSection:"Faixa Etária",ageRangeDescription:"Selecione a faixa etária para geração de novas identidades.",genderOptions:{random:"Aleatório",male:"Masculino",female:"Feminino"}},credentialAutofill:"Preenchimento automático de credenciais",credentialAutofillDescription:"Mostrar pop-up de preenchimento automático quando campos de nome de usuário/senha forem detectados",totpAutofill:"Preenchimento automático de código de 2FA",totpAutofillDescription:"Mostrar pop-up de preenchimento automático quando campos de 2FA forem detectados",autoCopyTotpOnAutofill:"Copiar código 2FA para a área de transferência automaticamente",autoCopyTotpOnAutofillDescription:"Copiar automaticamente o primeiro código 2FA para a área de transferência após preencher as credenciais automaticamente",loginSave:{title:"Salvar Prompt de Login",description:"Mostra um prompt para salvar credenciais de login quando você faz login em algum website.",blockedSites:"Sites bloqueados",blockedSitesDescription:"Sites onde o prompt para salvar nunca vão aparecer.",clearAllBlockedSites:"Limpar todos os sites bloqueados"},unlockMethod:{title:"Método de Desbloqueio do Cofre",introText:"Escolha como você quer desbloquear seu cofre. Você pode utilizar sua senha mestre (sempre disponível), ou configurar um PIN para facilitar o acesso. Após 3 tentativas incorretas de PIN, você deverá utilizar sua senha mestre.",password:"Senha Mestre",pin:"Código PIN",pinDescription:"Desbloquear cofre com código PIN",setupPin:"Configurar Código PIN",enterNewPinDescription:"Digite um PIN que consista de, pelo menos, 6 dígitos",confirmPin:"Confirmar PIN",confirmPinDescription:"Digite seu PIN novamente para confirmar",invalidPinFormat:"Formato de PIN inválido",pinMismatch:"PINs não correspondem",incorrectPin:"PIN incorreto. {{attemptsRemaining}} tentativas restantes.",incorrectPinSingular:"PIN incorreto. 1 tentativa restante.",enableSuccess:"Desbloqueio por PIN habilitado com sucesso!",pinLocked:"Desbloqueio por PIN foi desabilitado. Por favor, utilize sua senha mestre para desbloquear o cofre.",pinSecurityWarning:"Desbloqueio por PIN na extensão de navegador pode ser menos segura que sua senha mestre, uma vez que PINs geralmente tem uma entropia menor e podem ser vulneráveis à tentativas forçadas caso seu dispositivo esteja comprometido. Utilize apenas em dispositivos que tenha total confiança."}},WS={passkey:"Passkey",site:"Site",helpText:"Passkeys são criadas no website quando solicitado. Elas não podem ser editadas manualmente. Para remover esta passkey, você pode excluí-la desta credencial. Para trocar esta passkey ou gerar uma nova, visite o website e siga as instruções.",passkeyMarkedForDeletion:"Passkey marcada para ser excluída",passkeyWillBeDeleted:"Esta passkey será excluída quando você salvar esta credencial.",useBrowserPasskey:"Utilizar Passkey do Navegador",bypass:{description:"Por quanto tempo você deseja utilizar o provedor de passkey do navegador para {{origin}}?",thisTimeOnly:"Apenas desta vez",alwaysForSite:"Sempre para este site"},authenticate:{title:"Fazer login com uma Passkey",signInFor:"Fazer login com uma passkey para",selectPasskey:"Selecione uma passkey para fazer login:",noPasskeysFound:"Nenhuma passkey foi encontrada para este site"},create:{title:"Criar Passkey",createFor:"Criar nova passkey para",titleLabel:"Título",titlePlaceholder:"Digite um nome para esta passkey",createButton:"Criar Passkey",selectPasskeyToReplace:"Selecione uma passkey para alterar:",createNewPasskey:"Criar Nova Passkey",replacingPasskey:"Alternado passkey: {{displayName}}",confirmReplace:"Confirmar Alterações",selectExistingLogin:"Adicionar à login existente:",selectExistingLoginDescription:"Adicionar este passkey em uma credencial de login para este site.",attachingToCredential:"Adicionando passkey em: {{serviceName}}",attachPasskey:"Adicionar Passkey"},settings:{passkeyProvider:"Provedor de Passkey",passkeyProviderOn:"Provedor de Passkey em "}},qS={title:"Recentemente Excluídos",noItems:"Nenhum item excluído",noItemsDescription:"Itens que você excluir aparecerão aqui por {{days}} dias antes de serem permanentemente removidos.",description:"Estes itens serão excluídos permanentemente após {{days}} dias. Você pode restaurá-los ou excluí-los imediatamente.",restore:"Restaurar",deletePermanently:"Excluir Permanentemente",emptyAll:"Esvaziar Tudo",daysRemaining_one:"{{count}} dia restante",daysRemaining_other:"{{count}} dias restantes",expiringSoon:"Expirando em breve",confirmDeleteTitle:"Excluir Permanentemente?",confirmDeleteMessage:"Este item será excluído permanentemente, e não poderá ser restaurado.",confirmEmptyAllTitle:"Esvaziar Recentemente Excluídos?",confirmEmptyAllMessage:"Todos os {{count}} itens serão excluídos permanentemente, e não poderão ser restaurados."},YS={title:"Atualizar Cofre",subtitle:"AliasVault foi atualizado e seu cofre precisa ser atualizado. Isso deve levar apenas alguns segundos.",versionInformation:"Informação de Versão",yourVault:"Versão do seu cofre:",newVersion:"Nova versão disponível:",upgrade:"Atualizar Cofre",upgrading:"Atualizando...",whatsNew:"O Que Há de Novo",whatsNewDescription:"Uma atualização é necessária para utilizar as seguintes mudanças:",noDescriptionAvailable:"Nenhuma descrição disponível para esta versão.",alerts:{unableToGetVersionInfo:"Não foi possível solicitar informações da versão. Por favor, tente novamente.",selfHostedServer:"Servidor Self-Hosted",selfHostedWarning:"Se você está utilizando um servidor self-hosted, faça também a atualização da instância self-hosted, caso contrário o login no cliente web vai parar de funcionar.",continueUpgrade:"Continuar Atualização",upgradeFailed:"Atualização Falhou",failedToApplyMigration:"Falha ao aplicar migração ({{current}} de {{total}})"}},JS={unsyncedChangesTitle:"Alterações Dessincronizadas",unsyncedChangesWarning:"Você tem alterações dessincronizadas que serão perdidas caso você saia da sua conta agora. Têm certeza que deseja continuar?",logoutAnyway:"Sair assim mesmo"},XS={offline:"Offline",tapToRetry:"Toque para tentar sincronizar novamente",syncErrorTitle:"Sincronização Falhou",syncErrorDismiss:"Ignorar"},$S={auth:FS,menu:BS,common:PS,content:OS,items:jS,itemTypes:HS,fieldLabels:VS,totp:zS,attachmentUploader:QS,emails:KS,settings:GS,passkeys:WS,recentlyDeleted:qS,upgrade:YS,logout:JS,sync:XS},MM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:QS,auth:FS,common:PS,content:OS,default:$S,emails:KS,fieldLabels:VS,itemTypes:HS,items:jS,logout:JS,menu:BS,passkeys:WS,recentlyDeleted:qS,settings:GS,sync:XS,totp:zS,upgrade:YS},Symbol.toStringTag,{value:"Module"})),ZS={loginTitle:"Autentificare în AliasVault",username:"Numele de utilizator sau adresa de e-mail",usernamePlaceholder:"nume / nume@companie.com",passwordPlaceholder:"Introdu parola",rememberMe:"Ține-mă minte",loginButton:"Autentificare",noAccount:"Nu ai încă un cont?",createVault:"Creează un seif nou",twoFactorTitle:"Introdu codul de autentificare din aplicația ta de autentificare.",authCode:"Cod de autentificare",authCodePlaceholder:"Introdu codul din 6 cifre",verify:"Verifică",twoFactorNote:"Notă: dacă nu ai acces la dispozitivul de autentificare, poți reseta 2FA cu un cod de recuperare autentificându-te prin intermediul site-ului web.",masterPassword:"Parolă principală",unlockVault:"Deblochează",unlockWithPin:"Deblochează cu PIN",enterPinToUnlock:"Introdu codul PIN pentru a debloca seiful",useMasterPassword:"Folosește parola principală",unlockTitle:"Deblochează seiful",logoutConfirm:"Sigur vrei să te deconectezi?",unlockSuccessTitle:"Seiful a fost deblocat cu succes",unlockSuccessDescription:"Acum poți folosi completarea automată pentru câmpurile cu date de autentificare în browserul tău.",closePopup:"Închide această fereastră",browseVault:"Răsfoiește conținutul seifului",autoCloseUnlockPopup:"Închidere automată la următoarele autentificări",connectingTo:"Conectare la",switchAccounts:"Treci la alt cont?",loginWithMobile:"Autentificare prin aplicația mobilă",unlockWithMobile:"Deblochează prin aplicația mobilă",scanQrCode:"Scanează acest cod QR cu aplicația mobilă AliasVault pentru a te autentifica și debloca seiful.",passwordAttemptsWarning:"Parolă incorectă. Vei fi deconectat dacă introduci parola greșită de încă {{remainingAttempts}} ori.",maxAttemptsReached:"Prea multe încercări eșuate de deblocare. Ai fost deconectat din motive de securitate."},eT={vault:"Seif",emails:"E-mailuri"},tT={loading:"Se încarcă...",notice:"Notificare",error:"Eroare",cancel:"Anulează",confirm:"Confirmă",remove:"Elimină",back:"Înapoi",next:"Înainte",use:"Folosește",add:"Adaugă",delete:"Șterge",undo:"Revocă",save:"Salvează",saving:"Se salvează...",edit:"Editează",create:"Creează",or:"Sau",close:"Închide",dismiss:"Închide",logout:"Deconectare",copied:"Copiat!",openInNewWindow:"Deschide în fereastră nouă",enabled:"Activat",disabled:"Dezactivat",showPassword:"Afișează parola",hidePassword:"Ascunde parola",show:"Afișează",hide:"Ascunde",showDetails:"Afișează detalii",hideDetails:"Ascunde detalii",copyToClipboard:"Copiază în clipboard",loadingEmails:"Se încarcă e-mailurile...",loadingTotpCodes:"Se încarcă codurile TOTP...",attachments:"Atașamente",loadingAttachments:"Se încarcă atașamentele...",settings:"Setări",recentEmails:"E-mailuri recente",credentials:"Date de autentificare",customFields:"Câmpuri personalizate",twoFactorAuthentication:"Autentificare cu doi factori",alias:"Alias",notes:"Note",email:"E-mail",username:"Utilizator",password:"Parolă",generate:"Generează",serviceName:"Nume Serviciu",loggedIn:"Autentificat",syncingVault:"Se sincronizează seiful",checkingVaultUpdates:"Se verifică actualizările seifului",syncingUpdatedVault:"Se sincronizează seiful actualizat",loadMore:"Încarcă mai multe",offline:"Deconectat",offlineMode:"Funcționează în modul offline",pendingSync:"Se sincronizează...",mergingVaultChanges:"Se îmbină modificările seifului...",uploadingVault:"Se încarcă seiful...",errors:{serverNotAvailable:"Serverul AliasVault nu este disponibil. Încearcă mai târziu sau contactează asistența.",clientVersionNotSupported:"Această versiune a extensiei AliasVault nu mai este compatibilă cu serverul. Actualizează extensia la cea mai recentă versiune.",browserExtensionOutdated:"Versiune extensie incompatibilă. Pentru a accesa seiful, actualizează extensia AliasVault la ultima versiune disponibilă.",serverVersionNotSupported:"Serverul AliasVault trebuie actualizat la o versiune mai nouă pentru a folosi această extensie. Contactează asistența pentru ajutor.",serverVersionTooOld:"Serverul AliasVault trebuie actualizat la o versiune mai nouă pentru a folosi această funcție. Contactează administratorul serverului.",unknownError:"A apărut o eroare necunoscută",unknownErrorTryAgain:"A apărut o eroare necunoscută. Încearcă din nou.",vaultNotAvailable:"Seiful nu este disponibil",vaultIsLocked:"Seiful este blocat",passwordChanged:"Parola ta a fost schimbată de la ultima autentificare. Autentifică-te din nou din motive de securitate.",syncConflictMaxRetries:"Sincronizarea seifului a eșuat după mai multe încercări. Reîncearcă mai târziu.",mergeFailed:"Îmbinarea modificărilor seifului a eșuat. Încearcă din nou.",vaultTooLarge:"Seiful este prea mare pentru a fi acceptat de server. Încercați să eliminați unele elemente sau atașamente pentru a reduce dimensiunea și încercați din nou.",invalidCode:"Introdu un cod de autentificare valid din 6 cifre.",serverError:"Nu s-a putut stabili conexiunea cu serverul AliasVault. Încearcă din nou mai târziu sau contactează asistența dacă problema persistă.",wrongPassword:"Parolă incorectă. Încearcă din nou.",sessionExpired:"Sesiunea ta a expirat. Autentifică-te din nou.",mobileLoginRequestExpired:"Cererea de autentificare de pe dispozitivul mobil a expirat. Reîncarcă pagina și încearcă din nou."},apiErrors:{UNKNOWN_ERROR:"A apărut o eroare necunoscută. Încearcă din nou.",ACCOUNT_LOCKED:"Cont blocat temporar din cauza prea multor încercări eșuate. Reîncearcă mai târziu.",ACCOUNT_BLOCKED:"Contul tău a fost dezactivat. Dacă crezi că este o greșeală, contactează asistența.",USER_NOT_FOUND:"Utilizator sau parolă invalidă. Încearcă din nou.",INVALID_AUTHENTICATOR_CODE:"Cod de autentificare invalid. Încearcă din nou.",INVALID_RECOVERY_CODE:"Cod de recuperare invalid. Încearcă din nou.",REFRESH_TOKEN_REQUIRED:"Este necesar un token de actualizare.",INVALID_REFRESH_TOKEN:"Token de actualizare nevalid.",PUBLIC_REGISTRATION_DISABLED:"Înregistrarea conturilor noi este dezactivată pe acest server. Contactează administratorul.",USERNAME_REQUIRED:"Numele de utilizator este obligatoriu.",USERNAME_ALREADY_IN_USE:"Numele de utilizator este deja folosit.",USERNAME_AVAILABLE:"Numele de utilizator este disponibil.",USERNAME_MISMATCH:"Numele de utilizator nu se potrivește cu utilizatorul curent.",PASSWORD_MISMATCH:"Parola furnizată nu se potrivește cu parola ta curentă.",ACCOUNT_SUCCESSFULLY_DELETED:"Cont șters cu succes.",USERNAME_EMPTY_OR_WHITESPACE:"Numele de utilizator nu poate fi necompletat sau format doar din spații.",USERNAME_TOO_SHORT:"Nume prea scurt: trebuie să aibă cel puțin 3 caractere.",USERNAME_TOO_LONG:"Nume prea lung: nu poate depăși 40 de caractere.",USERNAME_INVALID_EMAIL:"Adresă de e-mail invalidă.",USERNAME_INVALID_CHARACTERS:"Numele de utilizator este invalid, poate conține doar litere sau cifre.",VAULT_NOT_UP_TO_DATE:"Seiful tău nu este actualizat. Sincronizează seiful și încearcă din nou.",INTERNAL_SERVER_ERROR:"Eroare internă de server.",VAULT_ERROR:"Seiful local nu este actualizat. Sincronizează seiful prin reîmprospătarea paginii și încearcă din nou."}},aT={or:"sau",new:"Nou",vaultLocked:"AliasVault este blocat.",creatingNewAlias:"Se creează un alias nou...",noMatchesFound:"Nicio potrivire găsită",searchVault:"Caută în seif...",enterServiceName:"Introdu numele serviciului",enterEmailAddress:"Introdu adresa de e-mail",enterUsername:"Introdu numele de utilizator",hideFor1Hour:"Ascunde pentru 1 oră (site-ul curent)",hidePermanently:"Ascunde definitiv (site-ul curent)",createRandomAlias:"Creează un alias aleatoriu",createUsernamePassword:"Creează utilizator/parolă",randomAlias:"Alias aleatoriu",usernamePassword:"Utilizator/parolă",createAndSaveAlias:"Creează și salvează alias",createAndSaveCredential:"Creează și salvează datele de autentificare",randomIdentityDescription:"Generează o identitate aleatorie cu o adresă de e-mail aleatorie accesibilă în AliasVault.",randomIdentityDescriptionDropdown:"Identitate aleatorie cu e-mail aleatoriu",manualCredentialDescription:"Specifică propria adresă de e-mail și numele de utilizator.",manualCredentialDescriptionDropdown:"Nume de utilizator și parolă introduse manual",failedToCreateIdentity:"Eșec la crearea identității. Încearcă din nou.",enterEmailAndOrUsername:"Introdu adresa de e-mail și/sau numele de utilizator",autofillWithAliasVault:"Completare automată cu AliasVault",generateRandomPassword:"Generează o parolă aleatorie (copiază în clipboard)",generateNewPassword:"Generează parolă nouă",togglePasswordVisibility:"Comută vizibilitatea parolei",passwordCopiedToClipboard:"Parolă copiată în clipboard",openAliasVaultToUpgrade:"Deschide AliasVault pentru actualizare",vaultUpgradeRequired:"Este necesară actualizarea seifului.",dismissPopup:"Închide fereastra",noTotpItemsFound:"Nu s-a găsit niciun cod 2FA corespunzător",close:"Închide",savePrompt:{title:"Salvează în AliasVault?",neverForThisSite:"Niciodată pentru acest site",addUrlTitle:"Adaugă URL la datele de autentificare?"}},nT={title:"Elemente",itemName:"Nume",loginCredentials:"Date de autentificare",cardInformation:"Informații Card",addItem:"Adaugă element",addNewItem:"Adaugă element nou",saveItem:"Salvează element",itemDetails:"Detalii element",editItem:"Editează element",untitled:"Fără titlu",newFolder:"Dosar nou",createFolder:"Creează dosar",editFolder:"Editează dosarul",folderName:"Nume dosar",folderNameRequired:"Numele dosarului este obligatoriu",folder:"Dosar",welcomeTitle:"Bun venit în AliasVault!",welcomeDescription:"Pentru a utiliza extensia de browser AliasVault: accesează un site web și folosește fereastra pop-up de completare automată AliasVault pentru a crea noi date de autentificare.",noMatchingItems:"Niciun element nu corespunde filtrului selectat.",noMatchingItemsSearch:"Nu s-au găsit elemente pentru „{{search}}”",noMatchingItemsWithFilter:"Niciun element {{filter}} nu se potrivește cu „{{search}}”",clearSearch:"Șterge căutarea",clearFilter:"Șterge filtrul",emptyFolderHint:"Acest dosar este gol. Pentru a muta elemente aici, editează elementul și apasă pe pictograma folderului din câmpul de nume.",allItemsInFolders:"Toate elementele tale sunt organizate în dosare. Apasă pe un dosar de mai sus pentru a vizualiza datele de autentificare sau folosește căutarea pentru a găsi elemente specifice.",deleteFolder:"Șterge dosarul",deleteFolderKeepItems:"Șterge doar dosarul",deleteFolderKeepItemsDescription:"Elementele vor fi mutate în folderul părinte.",deleteFolderAndItems:"Șterge dosarul și toate elementele",deleteFolderAndItemsDescription:"{{count}} element(e) vor fi mutate la Șterse Recent.",filters:{folders:"Dosare",passkeys:"Passkeys",totp:"Coduri 2FA"},sort:{title:"Filtrează după",oldestFirst:"Cele mai vechi primele",newestFirst:"Cele mai noi primele",alphabetical:"Alfabetic (A-Z)"},deleteItemTitle:"Șterge element",deleteItemConfirm:"Sigur vrei să ștergi acest element?",viewHistory:"Vezi istoric",history:"Istoric",noHistoryAvailable:"Niciun istoric disponibil",tags:"Etichete",changePasswordComplexity:"Schimbă complexitatea parolei",passwordLength:"Lungime parolă",includeLowercase:"Include litere mici",includeUppercase:"Include litere mari",includeNumbers:"Include cifre",includeSpecialChars:"Include caractere speciale",avoidAmbiguousChars:"Evită caracterele ambigue (o, 0, etc.)",privateEmailTitle:"E-mail Privat",privateEmailAliasVaultServer:"Server AliasVault",privateEmailDescription:"Criptat E2E, complet privat.",publicEmailTitle:"Furnizori Publici de E-mail Temporar",publicEmailDescription:"Anonim, dar cu confidențialitate limitată. Conținutul poate fi citit de oricine cunoaște adresa.",validation:{required:"Acest câmp este obligatoriu"}},iT={selectType:"Adaugă element nou",typeLabel:"Tip element",creating:"Creare",editing:"Editare",regenerateAlias:"Regenerează alias",addCustomField:"Adaugă câmp personalizat",fieldLabel:"Etichetă câmp",enterFieldName:"Introdu numele câmpului",fieldType:"Tip câmp",fieldTypes:{text:"Text",hidden:"Ascuns (text mascat)",email:"E-mail",url:"URL",phone:"Telefon",number:"Număr",date:"Dată",textArea:"Zonă text"},login:{title:"Autentificare"},alias:{title:"Alias"},creditCard:{title:"Card de credit"},note:{title:"Notă securizată"}},rT={"login.url":"URL Website","login.username":"Utilizator","login.password":"Parolă","alias.first_name":"Prenume","alias.last_name":"Nume","alias.gender":"Gen","alias.birthdate":"Data nașterii","login.email":"E-mail","notes.content":"Note","card.cardholder_name":"Nume Titular","card.number":"Număr card","card.expiry_month":"Lună expirare","card.expiry_year":"An expirare","card.cvv":"CVV","card.pin":"PIN"},sT={addCode:"Adaugă cod 2FA",instructions:"Introdu cheia secretă afișată de site-ul unde dorești să activezi autentificarea cu doi factori.",nameOptional:"Nume (opțional)",secretKey:"Cheie Secretă",saveToViewCode:"Salvează pentru a vedea codul",defaultName:"Authenticator",deleteTotpCodeTitle:"Șterge codul 2FA",deleteTotpCodeConfirmation:"Sigur dorești să ștergi codul 2FA „{{name}}”?",errors:{invalidSecretKey:"Format cheie secretă invalid."}},oT={uploading:"Se încarcă...",uploadSuccess:"Fișiere încărcate cu succes.",deleteSuccess:"Atașament șters cu succes.",firefoxExpandRequired:"Pentru a încărca fișiere, folosește fereastra extinsă.",openExpandedWindow:"Deschide fereastra extinsă"},lT={title:"E-mailuri",deleteEmailTitle:"Șterge e-mail",deleteEmailConfirm:"Sigur vrei să ștergi definitiv acest e-mail?",from:"De la",to:"Către",date:"Data",emailContent:"Conținut e-mail",emailNotFound:"E-mailul nu a fost găsit",noEmails:"Nu s-au găsit e-mailuri",noEmailsDescription:"Nu ai primit încă niciun e-mail pe adresele tale private. Atunci când vei primi un e-mail nou, acesta va apărea aici.",offlineMessage:"Sunteți offline. Conectează-te la internet pentru a încărca e-mailurile.",loadMore:"Încarcă mai multe ({{count}} rămase)",dateFormat:{justNow:"acum",minutesAgo_single:"{{count}} minut în urmă",minutesAgo_plural:"{{count}} minute în urmă",hoursAgo_single:"{{count}} oră în urmă",hoursAgo_plural:"{{count}} ore în urmă",yesterday:"ieri"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Adresa de e-mail aleasă este deja utilizată. Schimbă adresa de e-mail prin editarea acestor date de autentificare.",CLAIM_DOES_NOT_EXIST:"A apărut o eroare la încărcarea e-mailurilor. Editează și salvează datele de autentificare pentru a sincroniza baza de date, apoi încearcă din nou."}},dT={serverUrl:"URL Server",language:"Limbă",autofillEnabled:"Activează completarea automată",version:"Versiune",openWebApp:"Deschide aplicația web",lock:"Blochează",globalSettings:"Setări Globale",activeOnAllSites:"Activ pe toate site-urile (cu excepția cazului în care este dezactivat mai jos)",disabledOnAllSites:"Dezactivat pe toate site-urile",rightClickContextMenu:"Meniu contextual (clic dreapta)",autofillMatching:"Potrivire completare automată",autofillMatchingMode:"Mod de potrivire a completării automate",autofillMatchingModeDescription:"Determină care date de autentificare sunt considerate potrivite și afișate ca sugestii în fereastra de completare automată pentru un anumit site web.",autofillMatchingDefault:"URL + subdomeniu + nume (wildcard)",autofillMatchingUrlSubdomain:"URL + subdomeniu",autofillMatchingUrlExact:"Doar domeniul exact al URL-ului",siteSpecificSettings:"Setări specifice site-ului",enabledForThisSite:"Activat pentru acest site",disabledForThisSite:"Dezactivat pentru acest site",resetAllSiteSettings:"Resetează toate setările specifice site-ului",disabledSites:"Site-uri dezactivate",disabledSitesDescription:"Site-uri unde fereastra pop-up de completare automată nu va apărea.",clearAllDisabledSites:"Șterge toate site-urile dezactivate",temporaryUntil:"până",appearance:"Aspect",theme:"Temă",useDefault:"Implicită",light:"Luminoasă",dark:"Întunecată",keyboardShortcuts:"Comenzi rapide de la tastatură",configureKeyboardShortcuts:"Configurează comenzile rapide de la tastatură",configure:"Configurează",clipboardClearTimeout:"Golește clipboardul după copiere",clipboardClearTimeoutDescription:"Golește automat clipboardul după copierea datelor sensibile",clipboardClearDisabled:"Niciodată",clipboardClear5Seconds:"După 5 secunde",clipboardClear10Seconds:"După 10 secunde",clipboardClear15Seconds:"După 15 secunde",autoLockTimeout:"Interval auto-blocare",autoLockTimeoutDescription:"Blochează automat seiful după o perioadă de inactivitate",autoLockTimeoutHelp:"Seiful se va bloca doar după perioada de inactivitate specificată (fără completare automată sau deschiderea extensiei). Seiful se va bloca întotdeauna la închiderea browserului.",autoLockNever:"Niciodată",autoLock15Seconds:"15 secunde",autoLock30Seconds:"30 secunde",autoLock1Minute:"1 minut",autoLock5Minutes:"5 minute",autoLock15Minutes:"15 minute",autoLock30Minutes:"30 minute",autoLock1Hour:"1 oră",autoLock4Hours:"4 ore",autoLock8Hours:"8 ore",autoLock24Hours:"24 ore",versionPrefix:"Versiune ",autofillSettings:"Setări completare automată",clipboardSettings:"Setări clipboard",contextMenuSettings:"Setări meniu contextual",passkeySettings:"Setări passkey",contextMenuDescription:"Clic dreapta pe câmpurile de introducere pentru a accesa opțiunile AliasVault",selectLanguage:"Selectează limba",serverConfiguration:"Configurare Server",serverConfigurationDescription:"Configurează URL-ul serverului AliasVault pentru instanțele self-hosted",customApiUrl:"URL API",customClientUrl:"URL Client",apiUrlHint:"URL-ul endpoint-ului API (de obicei URL client + /api)",clientUrlHint:"URL-ul interfeței web a instanței tale",autofillSettingsDescription:"Activează sau dezactivează fereastra de completare automată",autofillEnabledDescription:"Sugestiile de completare automată vor apărea în câmpurile de autentificare",autofillDisabledDescription:"Sugestiile sunt dezactivate global",languageSettings:"Limbă",validation:{apiUrlRequired:"URL-ul API este obligatoriu",apiUrlInvalid:"Introdu un URL API valid",clientUrlRequired:"URL-ul Client este obligatoriu",clientUrlInvalid:"Introdu un URL Client valid"},identityGenerator:"Generator de Identitate",identityGeneratorSettings:{description:"Configurează limba și genul implicit pentru generarea de noi identități.",languageSection:"Limbă",languageDescription:"Setează limba care va fi utilizată la generarea noilor identități.",genderSection:"Gen",genderDescription:"Setează preferința de gen pentru generarea noilor identități.",ageRangeSection:"Interval de vârstă",ageRangeDescription:"Setează intervalul de vârstă pentru generarea noilor identități.",genderOptions:{random:"Aleatoriu",male:"Masculin",female:"Feminin"}},credentialAutofill:"Completează automat datele de autentificare",credentialAutofillDescription:"Afișează fereastra de completare automată când sunt detectate câmpurile de utilizator și parolă",totpAutofill:"Completează automat codul 2FA",totpAutofillDescription:"Afișează fereastra de completare automată când sunt detectate câmpurile pentru codul 2FA",autoCopyTotpOnAutofill:"Copiază automat codul 2FA în clipboard",autoCopyTotpOnAutofillDescription:"Copiază automat primul cod 2FA în clipboard după completarea automată a datelor de autentificare",loginSave:{title:"Salvează solicitarea de autentificare",description:"Afișează o solicitare de salvare a datelor de autentificare când trimiți un formular de conectare pe un site.",blockedSites:"Site-uri blocate",blockedSitesDescription:"Site-uri unde solicitarea de salvare nu va apărea niciodată.",clearAllBlockedSites:"Șterge toate site-urile blocate"},unlockMethod:{title:"Metodă deblocare seif",introText:"Alege cum dorești să îți deblochezi seiful. Poți folosi parola principală (întotdeauna disponibilă) sau poți configura un cod PIN pentru acces rapid. După 3 încercări eșuate ale PIN-ului, va trebui să folosești parola principală.",password:"Parolă principală",pin:"Cod PIN",pinDescription:"Deblochează seiful cu codul PIN",setupPin:"Configurează Cod PIN",enterNewPinDescription:"Introdu un cod PIN de cel puțin 6 cifre",confirmPin:"Confirmă PIN",confirmPinDescription:"Introdu PIN-ul din nou pentru confirmare",invalidPinFormat:"Format PIN invalid",pinMismatch:"PIN-urile nu se potrivesc",incorrectPin:"PIN incorect. {{attemptsRemaining}} încercări rămase.",incorrectPinSingular:"PIN incorect. 1 încercare rămasă.",enableSuccess:"Deblocarea prin PIN a fost activată!",pinLocked:"Deblocarea prin PIN a fost dezactivată. Folosește parola principală.",pinSecurityWarning:"Deblocarea prin PIN în extensia de browser poate fi mai puțin sigură decât parola principală. PIN-urile au o entropie mai scăzută, fiind vulnerabile la atacuri de tip brute-force dacă dispozitivul este compromis. Folosește-o doar pe dispozitive în care ai încredere deplină."}},cT={passkey:"Passkey",site:"Site",helpText:"Passkey-urile sunt create pe site-uri când este solicitat. Nu pot fi editate manual. Pentru a înlocui un passkey, vizitează site-ul respectiv.",passkeyMarkedForDeletion:"Passkey marcat pentru ștergere",passkeyWillBeDeleted:"Acest passkey va fi șters atunci când salvezi aceste date de autentificare.",useBrowserPasskey:"Folosește Passkey-ul Browserului",bypass:{description:"Cât timp dorești să folosești furnizorul de passkey al browserului pentru {{origin}}?",thisTimeOnly:"Doar de data aceasta",alwaysForSite:"Întotdeauna pentru acest site"},authenticate:{title:"Autentificare cu Passkey",signInFor:"Autentificare cu passkey pentru",selectPasskey:"Selectează un passkey pentru autentificare:",noPasskeysFound:"Nu s-au găsit passkey-uri pentru acest site"},create:{title:"Creează Passkey",createFor:"Creează un passkey nou pentru",titleLabel:"Titlu",titlePlaceholder:"Introdu un nume pentru acest passkey",createButton:"Creează Passkey",selectPasskeyToReplace:"Selectează un passkey pentru a-l înlocui:",createNewPasskey:"Creează Passkey Nou",replacingPasskey:"Se înlocuiește passkey-ul: {{displayName}}",confirmReplace:"Confirmă Înlocuirea",selectExistingLogin:"Adaugă la o autentificare existentă:",selectExistingLoginDescription:"Atașează acest passkey unor date de autentificare existente pentru acest site.",attachingToCredential:"Se adaugă passkey-ul la: {{serviceName}}",attachPasskey:"Adaugă Passkey"},settings:{passkeyProvider:"Furnizor Passkey",passkeyProviderOn:"Furnizor Passkey pe "}},uT={title:"Șterse Recent",noItems:"Niciun element șters",noItemsDescription:"Elementele pe care le ștergi vor apărea aici timp de {{days}} zile înainte de a fi eliminate definitiv.",description:"Aceste elemente vor fi șterse definitiv după {{days}} zile. Le poți restaura sau șterge imediat.",restore:"Restaurează",deletePermanently:"Șterge Definitiv",emptyAll:"Golește tot",daysRemaining_one:"{{count}} zi rămasă",daysRemaining_other:"{{count}} zile rămase",expiringSoon:"Expiră curând",confirmDeleteTitle:"Ștergi Definitiv?",confirmDeleteMessage:"Acest element va fi șters definitiv și nu va putea fi recuperat.",confirmEmptyAllTitle:"Golești elementele șterse recent?",confirmEmptyAllMessage:"Toate cele {{count}} elemente vor fi șterse definitiv și nu vor putea fi recuperate."},mT={title:"Actualizare Seif",subtitle:"AliasVault s-a actualizat și seiful tău trebuie actualizat. Aceasta va dura doar câteva secunde.",versionInformation:"Informații Versiune",yourVault:"Versiunea seifului tău:",newVersion:"Versiune nouă disponibilă:",upgrade:"Actualizează Seiful",upgrading:"Se actualizează...",whatsNew:"Ce este nou",whatsNewDescription:"Este necesară o actualizare pentru a permite următoarele modificări:",noDescriptionAvailable:"Nicio descriere disponibilă pentru această versiune.",alerts:{unableToGetVersionInfo:"Informațiile despre versiune nu au putut fi obținute. Reîncearcă.",selfHostedServer:"Server Self-Hosted",selfHostedWarning:"Dacă folosești un server self-hosted, asigură-te că actualizezi și instanța serverului, altfel autentificarea în clientul web nu va mai funcționa.",continueUpgrade:"Continuă Actualizarea",upgradeFailed:"Actualizare Eșuată",failedToApplyMigration:"Eșec la aplicarea migrării ({{current}} din {{total}})"}},gT={unsyncedChangesTitle:"Modificări Nesincronizate",unsyncedChangesWarning:"Ai modificări nesincronizate care se vor pierde dacă te deconectezi acum. Sigur vrei să continui?",logoutAnyway:"Deconectează-te oricum"},pT={offline:"Offline",tapToRetry:"Apasă pentru a reîncerca sincronizarea",syncErrorTitle:"Sincronizare Eșuată",syncErrorDismiss:"Închide"},hT={auth:ZS,menu:eT,common:tT,content:aT,items:nT,itemTypes:iT,fieldLabels:rT,totp:sT,attachmentUploader:oT,emails:lT,settings:dT,passkeys:cT,recentlyDeleted:uT,upgrade:mT,logout:gT,sync:pT},_M=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:oT,auth:ZS,common:tT,content:aT,default:hT,emails:lT,fieldLabels:rT,itemTypes:iT,items:nT,logout:gT,menu:eT,passkeys:cT,recentlyDeleted:uT,settings:dT,sync:pT,totp:sT,upgrade:mT},Symbol.toStringTag,{value:"Module"})),fT={loginTitle:"Войдите в AliasVault",username:"Имя пользователя или почта",usernamePlaceholder:"имя / имя@company.com",passwordPlaceholder:"Введите ваш пароль",rememberMe:"Запомнить меня",loginButton:"Войти",noAccount:"Нет аккаунта?",createVault:"Создать новое хранилище",twoFactorTitle:"Пожалуйста, введите код аутентификации из вашего приложения-аутентификатора.",authCode:"Код аутентификации",authCodePlaceholder:"Введите 6-значный код",verify:"Проверить",twoFactorNote:"Примечание: если у вас нет доступа к устройству аутентификации, вы можете сбросить ваш 2FA с помощью кода восстановления, войдя в систему через сайт.",masterPassword:"Мастер-пароль",unlockVault:"Разблокировать",unlockWithPin:"Разблокировать ПИН-кодом\uFEFF",enterPinToUnlock:"Введите ПИН-код для разблокировки хранилища",useMasterPassword:"Использовать мастер-пароль",unlockTitle:"Разблокировать хранилище",logoutConfirm:"Вы уверены, что хотите выйти?",unlockSuccessTitle:"Ваше хранилище успешно разблокировано",unlockSuccessDescription:"Теперь вы можете использовать автозаполнение форм входа в Вашем браузере.",closePopup:"Закрыть окно",browseVault:"Обзор содержимого хранилища",autoCloseUnlockPopup:"Закрывать окно после входа",connectingTo:"Подключение к",switchAccounts:"Переключить аккаунт?",loginWithMobile:"Войти с помощью мобильного приложения",unlockWithMobile:"Разблокировать через мобильное приложение",scanQrCode:"Сканируйте QR-код в приложении AliasVault, чтобы войти.",passwordAttemptsWarning:"Неверный пароль. Вы выйдете из системы, если введете его неправильно еще {{remainingAttempts}} раз.",maxAttemptsReached:"Слишком много неудачных попыток. Выход из системы выполнен в целях безопасности."},AT={vault:"Хранилище",emails:"Почта"},yT={loading:"Загрузка...",notice:"Примечание",error:"Ошибка",cancel:"Отмена",confirm:"Подтвердить",remove:"Удалить",back:"Назад",next:"Далее",use:"Использовать",add:"Добавить",delete:"Удалить",undo:"Отменить",save:"Сохранить",saving:"Сохраняем...",edit:"Редактировать",create:"Создать",or:"Или",close:"Закрыть",dismiss:"Закрыть",logout:"Выйти",copied:"Скопировано!",openInNewWindow:"Открыть в новом окне",enabled:"Включено",disabled:"Отключено",showPassword:"Показать пароль",hidePassword:"Скрыть пароль",show:"Показать",hide:"Скрыть",showDetails:"Показать подробности",hideDetails:"Скрыть подробности",copyToClipboard:"Скопировать в буфер обмена",loadingEmails:"Загрузка писем...",loadingTotpCodes:"Загрузка TOTP кодов...",attachments:"Вложения",loadingAttachments:"Загрузка вложений...",settings:"Настройки",recentEmails:"Последние письма",credentials:"Учетные записи",customFields:"Пользовательские поля",twoFactorAuthentication:"Двухфакторная аутентификация",alias:"Псевдоним",notes:"Заметки",email:"Электронная почта",username:"Имя пользователя",password:"Пароль",generate:"Сгенерировать",serviceName:"Название сервиса",loggedIn:"Вход выполнен",syncingVault:"Синхронизация хранилища",checkingVaultUpdates:"Проверка наличия обновлений в хранилище",syncingUpdatedVault:"Синхронизация обновленного хранилища",loadMore:"Загрузить ещё",offline:"Офлайн",offlineMode:"Работа в автономном режиме",pendingSync:"Синхронизация...",mergingVaultChanges:"Объединение изменений в хранилище...",uploadingVault:"Загрузка хранилища...",errors:{serverNotAvailable:"Сервер AliasVault недоступен. Пожалуйста, повторите попытку позже или обратитесь в службу поддержки, если проблема не устранится.",clientVersionNotSupported:"Эта версия браузерного расширения AliasVault больше не поддерживается сервером. Пожалуйста, обновите расширение вашего браузера до последней версии.",browserExtensionOutdated:"Это расширение браузера устарело и не может быть использовано для доступа к этому хранилищу. Пожалуйста, обновите расширение, чтобы продолжить.",serverVersionNotSupported:"Чтобы использовать это расширение для браузера, сервер AliasVault необходимо обновить до более новой версии. Пожалуйста, обратитесь в службу поддержки, если вам нужна помощь.",serverVersionTooOld:"Сервер AliasVault необходимо обновить до более новой версии, чтобы использовать эту функцию. Если вам нужна помощь, обратитесь к администратору сервера.",unknownError:"Произошла неизвестная ошибка",unknownErrorTryAgain:"Произошла неизвестная ошибка. Попробуйте снова.",vaultNotAvailable:"Хранилище недоступно",vaultIsLocked:"Хранилище заблокировано",passwordChanged:"С момента вашего последнего входа ваш пароль изменился. Пожалуйста, войдите еще раз в целях безопасности.",syncConflictMaxRetries:"Ошибка синхронизации хранилища. Повторите попытку позже.",mergeFailed:"Не удалось объединить изменения. Попробуйте снова.",vaultTooLarge:"Хранилище слишком велико для загрузки на сервер. Удалите часть данных или вложений и повторите попытку.",invalidCode:"Введите корректный 6-значный код подтверждения.",serverError:"Сервер AliasVault недоступен. Повторите попытку позже или свяжитесь с техподдержкой.",wrongPassword:"Неверный пароль. Повторите попытку.",sessionExpired:"Срок действия сессии истек. Войдите снова.",mobileLoginRequestExpired:"Срок запроса на вход истек. Обновите страницу и попробуйте снова."},apiErrors:{UNKNOWN_ERROR:"Произошла неизвестная ошибка. Пожалуйста, попробуйте снова.",ACCOUNT_LOCKED:"Учетная запись временно заблокирована из-за слишком большого количества неудачных попыток. Пожалуйста, повторите попытку позже.",ACCOUNT_BLOCKED:"Ваша учетная запись была заблокирована. Если вы считаете, что это ошибка, пожалуйста, свяжитесь со службой поддержки.",USER_NOT_FOUND:"Неверное имя пользователя или пароль. Пожалуйста, попробуйте снова.",INVALID_AUTHENTICATOR_CODE:"Неверный код аутентификатора. Пожалуйста, попробуйте снова.",INVALID_RECOVERY_CODE:"Неверный код восстановления. Пожалуйста, попробуйте снова.",REFRESH_TOKEN_REQUIRED:"Требуется токен обновления.",INVALID_REFRESH_TOKEN:"Недопустимый токен обновления.",PUBLIC_REGISTRATION_DISABLED:"В настоящее время регистрация новой учетной записи на этом сервере отключена. Пожалуйста, свяжитесь с администратором.",USERNAME_REQUIRED:"Требуется ввести имя пользователя.",USERNAME_ALREADY_IN_USE:"Имя пользователя уже используется.",USERNAME_AVAILABLE:"Имя пользователя доступно.",USERNAME_MISMATCH:"Имя пользователя не соответствует текущему пользователю.",PASSWORD_MISMATCH:"Указанный пароль не совпадает с вашим текущим паролем.",ACCOUNT_SUCCESSFULLY_DELETED:"Аккаунт успешно удалена.",USERNAME_EMPTY_OR_WHITESPACE:"Имя пользователя не может быть пустым или через пробел.",USERNAME_TOO_SHORT:"Слишком короткое имя пользователя: должно быть не менее 3-х символов.",USERNAME_TOO_LONG:"Слишком длинное имя пользователя: оно не может быть длиннее 40 символов.",USERNAME_INVALID_EMAIL:"Неверный адрес электронной почты.",USERNAME_INVALID_CHARACTERS:"Имя пользователя неверно, может содержать только буквы или цифры.",VAULT_NOT_UP_TO_DATE:"Ваше хранилище не обновлено. Пожалуйста, синхронизируйте ваше хранилище и повторите попытку.",INTERNAL_SERVER_ERROR:"Внутренняя ошибка сервера.",VAULT_ERROR:"Локальное хранилище не обновлено. Пожалуйста, синхронизируйте ваше хранилище, обновив страницу, и повторите попытку."}},ET={or:"или",new:"Новый",vaultLocked:"AliasVault заблокирован.",creatingNewAlias:"Создание нового псевдонима...",noMatchesFound:"Совпадений не найдено",searchVault:"Поиск хранилища...",enterServiceName:"Введите имя сервиса",enterEmailAddress:"Введите адрес электронной почты",enterUsername:"Введите имя пользователя",hideFor1Hour:"Скрыть на 1 час (текущий сайт)",hidePermanently:"Скрыть навсегда (текущий сайт)",createRandomAlias:"Создать случайный псевдоним",createUsernamePassword:"Создайте имя пользователя/пароль",randomAlias:"Случайный псевдоним",usernamePassword:"Имя пользователя/пароль",createAndSaveAlias:"Создать и сохранить псевдоним",createAndSaveCredential:"Создать и сохранить учетные данные",randomIdentityDescription:"Сгенерировать случайную личность со случайным адресом электронной почты, доступным в AliasVault.",randomIdentityDescriptionDropdown:"Случайная личность со случайным адресом электронной почты",manualCredentialDescription:"Укажите свой собственный адрес электронной почты и имя пользователя.",manualCredentialDescriptionDropdown:"Ручной ввод имени пользователя и пароля",failedToCreateIdentity:"Не удалось создать личность. Пожалуйста, попробуйте снова.",enterEmailAndOrUsername:"Введите адрес электронной почты и/или имя пользователя",autofillWithAliasVault:"Автозаполнение с помощью AliasVault",generateRandomPassword:"Сгенерировать случайный пароль (скопировать в буфер обмена)",generateNewPassword:"Сгенерировать новый пароль",togglePasswordVisibility:"Переключение видимости пароля",passwordCopiedToClipboard:"Пароль скопирован в буфер обмена",openAliasVaultToUpgrade:"Откройте AliasVault для обновления",vaultUpgradeRequired:"Требуется обновление хранилища.",dismissPopup:"Закрыть окно",noTotpItemsFound:"2FA-коды не найдены",close:"Закрыть",savePrompt:{title:"Сохранить в AliasVault?",neverForThisSite:"Никогда для этого сайта",addUrlTitle:"Добавить URL к этой записи?"}},bT={title:"Записи",itemName:"Имя",loginCredentials:"Учетные данные для авторизации",cardInformation:"Данные карты",addItem:"Добавить запись",addNewItem:"Добавить запись",saveItem:"Сохранить запись",itemDetails:"Детали записи",editItem:"Редактировать запись",untitled:"Без названия",newFolder:"Новая папка",createFolder:"Создать папку",editFolder:"Изменить папку",folderName:"Название папки",folderNameRequired:"Название папки обязательно",folder:"Папка",welcomeTitle:"Добро пожаловать в AliasVault!",welcomeDescription:"Чтобы использовать браузерное расширение AliasVault: перейдите на сайт и используйте всплывающее окно автозаполнения AliasVault для создания новых учетных данных.",noMatchingItems:"Нет записей, соответствующих выбранному фильтру.",noMatchingItemsSearch:'По запросу "{{search}}" ничего не найдено',noMatchingItemsWithFilter:'Ничего не найдено в "{{filter}}" по запросу "{{search}}"',clearSearch:"Очистить поиск",clearFilter:"Сбросить фильтр",emptyFolderHint:"Эта папка пуста. Чтобы переместить сюда записи, перейдите в режим редактирования записи и нажмите на иконку папки в поле имени.",allItemsInFolders:"Все ваши данные разложены по папкам. Выберите нужную папку выше или воспользуйтесь поиском, чтобы найти конкретную запись.",deleteFolder:"Удалить папку",deleteFolderKeepItems:"Удалить только папку",deleteFolderKeepItemsDescription:"Элементы будут перемещены в родительскую папку.",deleteFolderAndItems:"Удалить папку и все элементы",deleteFolderAndItemsDescription:"{{count}} объект(ов) будет перемещено в раздел «Недавно удалённые».",filters:{folders:"Папки",passkeys:"Ключи доступа",totp:"2FA-коды"},sort:{title:"Сортировка",oldestFirst:"Сначала старые",newestFirst:"Сначала новые",alphabetical:"По алфавиту (А–Я)"},deleteItemTitle:"Удалить элемент",deleteItemConfirm:"Вы уверены, что хотите удалить этот элемент?",viewHistory:"Посмотреть историю",history:"История",noHistoryAvailable:"История пока пуста",tags:"Теги",changePasswordComplexity:"Изменить сложность пароля",passwordLength:"Длина пароля",includeLowercase:"Включить строчные буквы",includeUppercase:"Включить заглавные буквы",includeNumbers:"Включить числа",includeSpecialChars:"Включить специальные символы",avoidAmbiguousChars:"Избегать двусмысленных символов (o, 0 и т.д.)",privateEmailTitle:"Личная электронная почта",privateEmailAliasVaultServer:"Сервер AliasVault",privateEmailDescription:"Шифрование E2E, полностью приватный.",publicEmailTitle:"Общедоступные временные поставщики электронной почты",publicEmailDescription:"Анонимность, но ограниченная конфиденциальность. Содержимое письма может прочитать любой, кому известен адрес.",validation:{required:"Это поле является обязательным"}},vT={selectType:"Добавить новую запись",typeLabel:"Тип записи",creating:"Создание",editing:"Редактирование",regenerateAlias:"Перегенерировать псевдоним",addCustomField:"Добавить свое поле",fieldLabel:"Название поля",enterFieldName:"Введите название поля",fieldType:"Тип поля",fieldTypes:{text:"Текст",hidden:"Скрыто (маскированный текст)",email:"Почта",url:"URL",phone:"Телефон",number:"Номер",date:"Дата",textArea:"Текстовая область"},login:{title:"Логин"},alias:{title:"Псевдоним"},creditCard:{title:"Банковская карта"},note:{title:"Защищенная заметка"}},wT={"login.url":"URL веб-сайта","login.username":"Логин","login.password":"Пароль","alias.first_name":"Имя","alias.last_name":"Фамилия","alias.gender":"Пол","alias.birthdate":"Дата рождения","login.email":"Почта","notes.content":"Примечание","card.cardholder_name":"Имя держателя карты","card.number":"Номер карты","card.expiry_month":"Месяц окончания","card.expiry_year":"Год окончания","card.cvv":"CVV-код","card.pin":"PIN"},IT={addCode:"Добавить код 2FA",instructions:"Введите секретный ключ, указанный на веб-сайте, где вы хотите добавить двухфакторную аутентификацию.",nameOptional:"Имя (необязательно)",secretKey:"Секретный ключ",saveToViewCode:"Сохранить для просмотра кода",defaultName:"Аутентификатор",deleteTotpCodeTitle:"Удаление 2FA-кода",deleteTotpCodeConfirmation:'Вы уверены, что хотите удалить 2FA-код для "{{name}}"?',errors:{invalidSecretKey:"Неверный формат секретного ключа."}},CT={uploading:"Загрузка...",uploadSuccess:"Файлы успешно загружены.",deleteSuccess:"Вложение успешно удалено.",firefoxExpandRequired:"Для загрузки файлов используйте расширенное окно.",openExpandedWindow:"Открыть расширенное окно"},ST={title:"Письма",deleteEmailTitle:"Удалить письмо",deleteEmailConfirm:"Вы уверены, что хотите навсегда удалить это письмо?",from:"От",to:"К",date:"Дата",emailContent:"Содержимое письма",emailNotFound:"Адрес электронной почты не найден",noEmails:"Электронные письма не найдены",noEmailsDescription:"Вы еще не получали никаких электронных писем на свои личные адреса электронной почты. Когда вы получите новое электронное письмо, оно появится здесь.",offlineMessage:"Вы не в сети. Пожалуйста, подключитесь к Интернету, чтобы загрузить свои электронные письма.",loadMore:"Загрузить еще (осталось: {{count}})",dateFormat:{justNow:"прямо сейчас",minutesAgo_single:"{{count}} мин назад",minutesAgo_plural:"{{count}} минут назад",hoursAgo_single:"{{count}} часов назад",hoursAgo_plural:"{{count}} часов назад",yesterday:"вчера"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Текущий выбранный адрес электронной почты уже используется. Пожалуйста, измените адрес электронной почты, отредактировав эти учетные данные.",CLAIM_DOES_NOT_EXIST:"При попытке загрузить письма произошла ошибка. Пожалуйста, попробуйте отредактировать и сохранить данные для синхронизации базы данных, затем повторите попытку."}},TT={serverUrl:"URL-адрес сервера",language:"Язык",autofillEnabled:"Включить автозаполнение",version:"Версия",openWebApp:"Открыть веб-приложение",lock:"Заблокировать",globalSettings:"Глобальные настройки",activeOnAllSites:"Активен на всех сайтах (если не отключен ниже)",disabledOnAllSites:"Отключено на всех сайтах",rightClickContextMenu:"Контекстное меню правым щелчком мыши",autofillMatching:"Соответствие автозаполнения",autofillMatchingMode:"Режим сопоставления автозаполнения",autofillMatchingModeDescription:"Определяет, какие учетные данные считаются соответствующими и отображаются в качестве предложений во всплывающем окне автозаполнения для данного веб-сайта.",autofillMatchingDefault:"URL + поддомен + подстановочный знак в названии",autofillMatchingUrlSubdomain:"URL + поддомен",autofillMatchingUrlExact:"Только точный URL-адрес домена",siteSpecificSettings:"Настройки для конкретного сайта",enabledForThisSite:"Включено для этого сайта",disabledForThisSite:"Отключено для этого сайта",resetAllSiteSettings:"Сбросить все настройки для сайтов",disabledSites:"Исключения",disabledSitesDescription:"Сайты, на которых не будет появляться автозаполнение.",clearAllDisabledSites:"Очистить список исключений",temporaryUntil:"До",appearance:"Внешний вид",theme:"Тема",useDefault:"Использовать по умолчанию",light:"Светлая",dark:"Темная",keyboardShortcuts:"Горячие клавиши",configureKeyboardShortcuts:"Настройка горячих клавиш",configure:"Настройка",clipboardClearTimeout:"Очистить буфер обмена после копирования",clipboardClearTimeoutDescription:"Автоматическая очистка буфера обмена после копирования конфиденциальных данных",clipboardClearDisabled:"Никогда не очищать",clipboardClear5Seconds:"Очистка через 5 секунд",clipboardClear10Seconds:"Очистка через 10 секунд",clipboardClear15Seconds:"Очистка через 15 секунд",autoLockTimeout:"Тайм-аут автоматической блокировки",autoLockTimeoutDescription:"Автоматическая блокировка хранилища после некоторого периода бездействия",autoLockTimeoutHelp:"Хранилище будет заблокировано только по истечении указанного периода бездействия (не будет использоваться функция автозаполнения или не откроется всплывающее окно с расширением). Хранилище всегда будет заблокировано при закрытии браузера, независимо от этого параметра.",autoLockNever:"Никогда",autoLock15Seconds:"15 секунд",autoLock30Seconds:"30 секунд",autoLock1Minute:"1 минута",autoLock5Minutes:"5 минут",autoLock15Minutes:"15 минут",autoLock30Minutes:"30 минут",autoLock1Hour:"1 час",autoLock4Hours:"4 часа",autoLock8Hours:"8 часов",autoLock24Hours:"24 часов",versionPrefix:"Версия ",autofillSettings:"Настройки автозаполнения",clipboardSettings:"Настройки буфера обмена",contextMenuSettings:"Настройки контекстного меню",passkeySettings:"Настройки ключа доступа",contextMenuDescription:"Щелкните правой кнопкой мыши на полях ввода, чтобы получить доступ к параметрам AliasVault",selectLanguage:"Выбрать язык",serverConfiguration:"Конфигурация сервера",serverConfigurationDescription:"Настройте URL-адрес сервера AliasVault для самостоятельно размещенных экземпляров",customApiUrl:"URL-адрес API",customClientUrl:"URL-адрес клиента\uFEFF",apiUrlHint:"URL-адрес конечной точки API (обычно URL-адрес клиента + /api)\uFEFF",clientUrlHint:"URL-адрес веб-интерфейса вашего самостоятельно размещенного экземпляра",autofillSettingsDescription:"Включить или отключить всплывающее окно автозаполнения на веб-страницах",autofillEnabledDescription:"В формах входа будут появляться подсказки для автозаполнения",autofillDisabledDescription:"Подсказки автозаполнения отключены глобально",languageSettings:"Язык",validation:{apiUrlRequired:"Требуется URL-адрес API",apiUrlInvalid:"Пожалуйста, введите корректный URL-адрес API",clientUrlRequired:"Требуется URL-адрес клиента",clientUrlInvalid:"Пожалуйста, введите корректный URL-адрес клиента"},identityGenerator:"Генератор личности",identityGeneratorSettings:{description:"Настройте язык и гендерные предпочтения по умолчанию для создания новых личностей.",languageSection:"Язык",languageDescription:"Установите язык, который будет использоваться при создании новых личностей.",genderSection:"Пол",genderDescription:"Установите гендерные предпочтения для создания новых личностей.",ageRangeSection:"Возрастной диапазон",ageRangeDescription:"Установите диапазон возраста для генерации новых личностей.",genderOptions:{random:"Случайный",male:"Мужской",female:"Женский"}},credentialAutofill:"Автозаполнение данных",credentialAutofillDescription:"Показывать окно автозаполнения при обнаружении полей логина и пароля",totpAutofill:"Автозаполнение кодов 2FA",totpAutofillDescription:"Показывать окно автозаполнения при обнаружении полей для кодов 2FA",autoCopyTotpOnAutofill:"Копировать код 2FA в буфер обмена",autoCopyTotpOnAutofillDescription:"Автоматически копировать код 2FA в буфер обмена после заполнения учётных данных",loginSave:{title:"Запрос на сохранение",description:"Запрашивать сохранение пароля после входа на сайт.",blockedSites:"Заблокированные сайты",blockedSitesDescription:"Сайты, где запрос на сохранение никогда не появится.",clearAllBlockedSites:"Очистить весь список"},unlockMethod:{title:"Способ разблокировки хранилища",introText:"Выберите способ разблокировки хранилища. Вы можете использовать свой мастер-пароль (он доступен всегда) или установить ПИН-код для быстрого доступа. После 3 неудачных попыток ввода ПИН-кода необходимо будет ввести мастер-пароль.",password:"Мастер-пароль",pin:"ПИН-код",pinDescription:"Разблокировать хранилище ПИН-кодом",setupPin:"Установить ПИН-код",enterNewPinDescription:"Введите ПИН-код, состоящий как минимум из 6 цифр",confirmPin:"Подтвердите ПИН-код\uFEFF",confirmPinDescription:"Повторите ПИН-код для подтверждения",invalidPinFormat:"Неверный формат ПИН-кода\uFEFF",pinMismatch:"ПИН-коды не совпадают",incorrectPin:"Неверный ПИН-код. Осталось {{attemptsRemaining}} попытки.",incorrectPinSingular:"Неверный ПИН-код. Осталась 1 попытка.",enableSuccess:"Разблокировка по ПИН-коду успешно включена",pinLocked:"Разблокировка по ПИН-коду отключена. Пожалуйста, используйте ваш мастер-пароль для разблокировки хранилища.",pinSecurityWarning:"Разблокировка с помощью ПИН-кода в расширении для браузера может быть менее безопасной, чем использование вашего мастер-пароля, поскольку ПИН-коды обычно имеют более низкую энтропию и могут быть подобраны методом перебора (брутфорс), если ваше устройство будет скомпрометировано. Используйте этот способ только на устройствах, которым вы полностью доверяете."}},NT={passkey:"Ключ доступа",site:"Сайт",helpText:"Ключи доступа создаются на веб-сайте по запросу. Их нельзя редактировать вручную. Чтобы удалить этот ключ доступа, вы можете удалить его из этой учетной записи. Чтобы заменить этот ключ доступа или создать новый, посетите веб-сайт и следуйте его инструкциям.",passkeyMarkedForDeletion:"Ключ доступа помечен на удаление\uFEFF",passkeyWillBeDeleted:"Этот ключ доступа будет удален при сохранении этой учетной записи.",useBrowserPasskey:"Использовать ключ доступа из браузера\uFEFF",bypass:{description:"На какой срок вы хотите предоставить сайту {{origin}} доступ к ключам, сохраненным в браузере?",thisTimeOnly:"Только в этот раз",alwaysForSite:"Всегда для этого сайта"},authenticate:{title:"Вход с помощью ключа доступа",signInFor:"Вход с ключом доступа для",selectPasskey:"Выберите ключ доступа для входа:",noPasskeysFound:"Ключи доступа для этого сайта не найдены"},create:{title:"Создание ключа доступа",createFor:"Создайте новый ключ доступа для",titleLabel:"Название",titlePlaceholder:"Укажите название для этого ключа доступа",createButton:"Создать ключ доступа",selectPasskeyToReplace:"Выберите ключ доступа для замены:",createNewPasskey:"Создать новый ключ доступа",replacingPasskey:"Замена ключа доступа: {{displayName}}",confirmReplace:"Подтвердить замену",selectExistingLogin:"Привязать к логину:",selectExistingLoginDescription:"Привяжите этот ключ доступа к существующей учетной записи для этого сайта.",attachingToCredential:"Добавление ключа доступа для: {{serviceName}}",attachPasskey:"Добавить ключ доступа"},settings:{passkeyProvider:"Провайдер ключей доступа",passkeyProviderOn:"Провайдер ключей доступа включен "}},kT={title:"Недавно удаленные",noItems:"Нет удаленных элементов",noItemsDescription:"Удаленные объекты будут храниться здесь в течение {{days}} дн., после чего они будут удалены безвозвратно.",description:"Эти записи будут окончательно удалены через {{days}} дн. Вы можете восстановить их или удалить немедленно.",restore:"Восстановить",deletePermanently:"Удалить безвозвратно",emptyAll:"Очистить все",daysRemaining_one:"Остался {{count}} день",daysRemaining_other:"Осталось {{count}} дней",expiringSoon:"Скоро будут удалены",confirmDeleteTitle:"Удалить безвозвратно?",confirmDeleteMessage:"Этот элемент будет удален навсегда без возможности восстановления.",confirmEmptyAllTitle:"Очистить «Недавно удалённые»?",confirmEmptyAllMessage:"Все элементы {{count}} будут удалены навсегда без возможности восстановления."},xT={title:"Обновить хранилище",subtitle:"AliasVault обновился, и ваше хранилище необходимо обновить. Это займет всего несколько секунд.",versionInformation:"Информация о версии",yourVault:"Версия вашего хранилища:",newVersion:"Доступна новая версия:",upgrade:"Обновить хранилище",upgrading:"Обновление...",whatsNew:"Что нового",whatsNewDescription:"Для поддержки следующих изменений требуется обновление:",noDescriptionAvailable:"Описание для этой версии недоступно.",alerts:{unableToGetVersionInfo:"Не удалось получить информацию о версии. Пожалуйста, попробуйте снова.",selfHostedServer:"Автономный сервер",selfHostedWarning:"Если вы используете автономный сервер, обязательно обновите свой автономный экземпляр, так как в противном случае вход в веб-клиент перестанет работать.",continueUpgrade:"Продолжить обновление",upgradeFailed:"Ошибка обновления",failedToApplyMigration:"Не удалось применить перенос ({{current}} из {{total}})"}},LT={unsyncedChangesTitle:"Несинхронизированные изменения",unsyncedChangesWarning:"У вас есть несинхронизированные изменения, которые будут потеряны, если вы выйдете из аккаунта сейчас. Вы уверены, что хотите продолжить?",logoutAnyway:"Все равно выйти"},DT={offline:"Офлайн",tapToRetry:"Повторить синхронизацию",syncErrorTitle:"Ошибка синхронизации",syncErrorDismiss:"Закрыть"},RT={auth:fT,menu:AT,common:yT,content:ET,items:bT,itemTypes:vT,fieldLabels:wT,totp:IT,attachmentUploader:CT,emails:ST,settings:TT,passkeys:NT,recentlyDeleted:kT,upgrade:xT,logout:LT,sync:DT},FM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:CT,auth:fT,common:yT,content:ET,default:RT,emails:ST,fieldLabels:wT,itemTypes:vT,items:bT,logout:LT,menu:AT,passkeys:NT,recentlyDeleted:kT,settings:TT,sync:DT,totp:IT,upgrade:xT},Symbol.toStringTag,{value:"Module"})),UT={loginTitle:"Logga in på AliasVault",username:"Användarnamn eller e-post",usernamePlaceholder:"namn / namn@företag.com",passwordPlaceholder:"Ange ditt lösenord",rememberMe:"Förbli inloggad",loginButton:"Logga in",noAccount:"Inget konto än?",createVault:"Skapa ett nytt valv",twoFactorTitle:"Vänligen ange autentiseringskoden från din autentiseringsapp.",authCode:"Autentiseringskod",authCodePlaceholder:"Ange 6-siffrig kod",verify:"Bekräfta",twoFactorNote:"Obs! Om du inte har tillgång till din autentiseringsenhet kan du återställa din 2FA med en återställningskod genom att logga in via webbplatsen.",masterPassword:"Huvudlösenord",unlockVault:"Lås upp",unlockWithPin:"Lås upp med PIN-kod",enterPinToUnlock:"Ange din PIN-kod för att låsa upp valvet",useMasterPassword:"Använd huvudlösenord",unlockTitle:"Lås upp ditt valv",logoutConfirm:"Är du säker på att du vill logga ut?",unlockSuccessTitle:"Ditt valv har låsts upp",unlockSuccessDescription:"Du kan nu använda autofyll av inloggningsformulär i din webbläsare.",closePopup:"Stäng detta popup-fönster",browseVault:"Bläddra bland valvets innehåll",autoCloseUnlockPopup:"Stäng automatiskt vid framtida inloggningar",connectingTo:"Ansluter till",switchAccounts:"Växla konton?",loginWithMobile:"Logga in med hjälp av mobilapp",unlockWithMobile:"Lås upp med hjälp av mobilapp",scanQrCode:"Skanna denna QR-kod med din AliasVault-mobilapp för att logga in och låsa upp ditt valv.",passwordAttemptsWarning:"Felaktigt lösenord. Du kommer att loggas ut om du anger fel lösenord {{remainingAttempts}} gång(er) till.",maxAttemptsReached:"För många misslyckade upplåsningsförsök. Du har blivit utloggad av säkerhetsskäl."},MT={vault:"Valv",emails:"E-postadresser"},_T={loading:"Laddar...",notice:"Meddelande",error:"Fel",cancel:"Avbryt",confirm:"Bekräfta",remove:"Ta bort",back:"Tillbaka",next:"Nästa",use:"Använd",add:"Lägg till",delete:"Radera",undo:"Ångra",save:"Spara",saving:"Sparar...",edit:"Redigera",create:"Skapa",or:"Eller",close:"Stäng",dismiss:"Avfärda",logout:"Logga ut",copied:"Kopierad!",openInNewWindow:"Öppna i nytt fönster",enabled:"Aktiverad",disabled:"Inaktiverad",showPassword:"Visa lösenord",hidePassword:"Dölj lösenord",show:"Visa",hide:"Dölj",showDetails:"Visa detaljer",hideDetails:"Dölj detaljer",copyToClipboard:"Kopiera till urklipp",loadingEmails:"Laddar e-post...",loadingTotpCodes:"Laddar TOTP-koder...",attachments:"Bifogade filer",loadingAttachments:"Laddar bifogade filer...",settings:"Inställningar",recentEmails:"Senaste e-postmeddelanden",credentials:"Inloggningsuppgifter",customFields:"Anpassade fält",twoFactorAuthentication:"Tvåfaktorsautentisering",alias:"Alias",notes:"Anteckningar",email:"E-post",username:"Användarnamn",password:"Lösenord",generate:"Generera",serviceName:"Tjänstens namn",loggedIn:"Inloggad",syncingVault:"Synkroniserar valv",checkingVaultUpdates:"Söker efter valvuppdateringar",syncingUpdatedVault:"Synkroniserar uppdaterat valv",loadMore:"Läs in fler",offline:"Offline",offlineMode:"Arbetar i offline-läge",pendingSync:"Synkroniserar...",mergingVaultChanges:"Sammanfogar valvförändringar...",uploadingVault:"Laddar upp valvet...",errors:{serverNotAvailable:"AliasVault-servern är inte tillgänglig. Försök igen senare eller kontakta support om problemet kvarstår.",clientVersionNotSupported:"Denna version av webbläsartillägget AliasVault stöds inte längre av servern. Vänligen uppdatera ditt webbläsartillägg till den senaste versionen.",browserExtensionOutdated:"Detta webbläsartillägg är föråldrat och kan inte användas för att komma åt detta valv. Uppdatera detta webbläsartillägg för att fortsätta.",serverVersionNotSupported:"AliasVault-servern behöver uppdateras till en nyare version för att kunna använda detta webbläsartillägg. Kontakta support om du behöver hjälp.",serverVersionTooOld:"AliasVault-servern behöver uppdateras till en nyare version för att kunna använda denna funktion. Vänligen kontakta serveradministratören om du behöver hjälp.",unknownError:"Ett okänt fel har inträffat",unknownErrorTryAgain:"Ett okänt fel inträffade. Försök igen.",vaultNotAvailable:"Valvet är inte tillgängligt",vaultIsLocked:"Valvet är låst",passwordChanged:"Ditt lösenord har ändrats sedan du senast loggade in. Vänligen logga in igen av säkerhetsskäl.",syncConflictMaxRetries:"Kunde inte synkronisera valvet trots flera försök. Försök igen senare.",mergeFailed:"Det gick inte att sammanfoga valvförändringar. Försök igen.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Ange en giltig 6-siffrig autentiseringskod.",serverError:"Kunde inte nå AliasVault-servern. Försök igen senare eller kontakta support om problemet kvarstår.",wrongPassword:"Felaktigt lösenord. Försök igen.",sessionExpired:"Din session har löpt ut. Logga in igen.",mobileLoginRequestExpired:"Mobil inloggningsbegäran har löpt ut. Ladda om sidan och försök igen."},apiErrors:{UNKNOWN_ERROR:"Ett okänt fel inträffade. Försök igen.",ACCOUNT_LOCKED:"Kontot är tillfälligt låst på grund av för många misslyckade försök. Försök igen senare.",ACCOUNT_BLOCKED:"Ditt konto har inaktiverats. Om du tror att detta är ett misstag, kontakta support.",USER_NOT_FOUND:"Felaktigt användarnamn eller lösenord. Försök igen.",INVALID_AUTHENTICATOR_CODE:"Ogiltig autentiseringskod. Försök igen.",INVALID_RECOVERY_CODE:"Ogiltig återställningskod. Försök igen.",REFRESH_TOKEN_REQUIRED:"Uppdateringstoken krävs.",INVALID_REFRESH_TOKEN:"Ogiltigt uppdateringstoken",PUBLIC_REGISTRATION_DISABLED:"Registrering av nytt konto är för närvarande inaktiverat på denna server. Kontakta administratören.",USERNAME_REQUIRED:"Ett användarnamn krävs.",USERNAME_ALREADY_IN_USE:"Användarnamnet används redan",USERNAME_AVAILABLE:"Användarnamnet är tillgängligt",USERNAME_MISMATCH:"Användarnamnet stämmer inte överens med den nuvarande användaren.",PASSWORD_MISMATCH:"Det angivna lösenordet stämmer inte överens med ditt nuvarande lösenord",ACCOUNT_SUCCESSFULLY_DELETED:"Kontot har raderats.",USERNAME_EMPTY_OR_WHITESPACE:"Användarnamnet kan inte vara tomt eller blanksteg.",USERNAME_TOO_SHORT:"Användarnamnet är för kort: måste vara minst 3 tecken långt.",USERNAME_TOO_LONG:"Användarnamnet är för långt: får inte vara längre än 40 tecken.",USERNAME_INVALID_EMAIL:"Ogiltig e-postadress.",USERNAME_INVALID_CHARACTERS:"Användarnamnet är ogiltigt, kan endast innehålla bokstäver eller siffror.",VAULT_NOT_UP_TO_DATE:"Ditt valv är inte uppdaterat. Synkronisera ditt valv och försök igen.",INTERNAL_SERVER_ERROR:"Internt serverfel.",VAULT_ERROR:"Det lokala valvet är inte uppdaterat. Synkronisera valvet genom att uppdatera sidan och försök igen."}},FT={or:"eller",new:"Nytt",vaultLocked:"AliasVault är låst.",creatingNewAlias:"Skapar nytt alias...",noMatchesFound:"Inga träffar hittades",searchVault:"Sök i valvet...",enterServiceName:"Ange tjänstens namn",enterEmailAddress:"Ange e-postadress",enterUsername:"Ange användarnamn",hideFor1Hour:"Dölj i 1 timme (nuvarande webbplats)",hidePermanently:"Dölj permanent (nuvarande webbplats)",createRandomAlias:"Skapa slumpmässigt alias",createUsernamePassword:"Skapa användarnamn/lösenord",randomAlias:"Slumpmässigt alias",usernamePassword:"Användarnamn/Lösenord",createAndSaveAlias:"Skapa och spara alias",createAndSaveCredential:"Skapa och spara autentiseringsuppgifter",randomIdentityDescription:"Generera en slumpmässig identitet med en slumpmässig e-postadress tillgänglig i AliasVault.",randomIdentityDescriptionDropdown:"Slumpmässig identitet med slumpmässig e-post",manualCredentialDescription:"Ange din egen e-postadress och användarnamn.",manualCredentialDescriptionDropdown:"Manuellt användarnamn och lösenord",failedToCreateIdentity:"Det gick inte att skapa identitet. Försök igen.",enterEmailAndOrUsername:"Ange e-postadress och/eller användarnamn",autofillWithAliasVault:"Autofyll med AliasVault",generateRandomPassword:"Generera slumpmässigt lösenord (kopiera till urklipp)",generateNewPassword:"Generera nytt lösenord",togglePasswordVisibility:"Visa/dölj lösenordet",passwordCopiedToClipboard:"Lösenord har kopierats till urklipp",openAliasVaultToUpgrade:"Öppna AliasVault för att uppgradera",vaultUpgradeRequired:"Uppgradering av valv krävs.",dismissPopup:"Avvisa popup",noTotpItemsFound:"Inga matchande 2FA-koder funna",close:"Stäng",savePrompt:{title:"Spara till AliasVault?",neverForThisSite:"Aldrig för denna webbplats",addUrlTitle:"Lägg till URL till posten?"}},BT={title:"Objekt",itemName:"Namn",loginCredentials:"Inloggningsuppgifter",cardInformation:"Kortinformation",addItem:"Lägg till objekt",addNewItem:"Lägg till nytt objekt",saveItem:"Spara objekt",itemDetails:"Objektdetaljer",editItem:"Redigera objekt",untitled:"Ingen titel",newFolder:"Ny mapp",createFolder:"Skapa mapp",editFolder:"Redigera mapp",folderName:"Mappens namn",folderNameRequired:"Mappnamn krävs",folder:"Mapp",welcomeTitle:"Välkommen till AliasVault!",welcomeDescription:"För att använda webbläsartillägget AliasVault: navigera till en webbplats och använd AliasVault-autofyllrutan för att skapa en ny inloggningsuppgift.",noMatchingItems:"Inga objekt matchar de valda filtren",noMatchingItemsSearch:'Inga objekt matchar "{{search}}"',noMatchingItemsWithFilter:'Inga {{filter}} objekt som matchar "{{search}}"',clearSearch:"Rensa sökning",clearFilter:"Rensa filter",emptyFolderHint:"Mappen är tom. För att flytta objekt till den här mappen, redigera objektet och tryck på mappikonen i namnfältet.",allItemsInFolders:"Alla dina objekt är organiserade i mappar. Klicka på en mapp ovan för att visa dina uppgifter, eller använd sökningen för att hitta specifika objekt.",deleteFolder:"Radera mapp",deleteFolderKeepItems:"Ta endast bort mappen",deleteFolderKeepItemsDescription:"Objekt kommer att flyttas till den överordnade mappen.",deleteFolderAndItems:"Radera mapp och alla objekt",deleteFolderAndItemsDescription:"{{count}} objekt kommer att flyttas till Nyligen borttagen.",filters:{folders:"Mappar",passkeys:"Passkeys",totp:"2FA-Koder"},sort:{title:"Sortera efter",oldestFirst:"Äldst först",newestFirst:"Nyast först",alphabetical:"Alfabetiskt (A-Z)"},deleteItemTitle:"Radera objekt",deleteItemConfirm:"Är du säker på att du vill radera det här objektet?",viewHistory:"Visa historik",history:"Historik",noHistoryAvailable:"Ingen historik är tillgänglig",tags:"Taggar",changePasswordComplexity:"Ändra lösenordets komplexitet",passwordLength:"Lösenordslängd",includeLowercase:"Inkludera små bokstäver",includeUppercase:"Inkludera stora bokstäver",includeNumbers:"Inkludera siffror",includeSpecialChars:"Inkludera specialtecken",avoidAmbiguousChars:"Undvik tvetydiga tecken (o, 0, etc.)",privateEmailTitle:"Privat e-post",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E krypterad, helt privat.",publicEmailTitle:"Offentliga Temp e-postleverantörer",publicEmailDescription:"Anonym men begränsad integritet. E-postinnehåll kan läsas av alla som känner till adressen.",validation:{required:"Detta fält är obligatoriskt"}},PT={selectType:"Lägg till nytt objekt",typeLabel:"Objekttyp",creating:"Skapar",editing:"Redigerar",regenerateAlias:"Återskapa alias",addCustomField:"Lägg till anpassad fält",fieldLabel:"Fältetikett",enterFieldName:"Ange fältets namn",fieldType:"Fälttyp",fieldTypes:{text:"Text",hidden:"Dold (maskerad text)",email:"E-post",url:"Webbadress",phone:"Telefon",number:"Nummer",date:"Datum",textArea:"Textfält"},login:{title:"Inloggning"},alias:{title:"Alias"},creditCard:{title:"Betalkort"},note:{title:"Säker anteckning"}},OT={"login.url":"Webbplatsadress","login.username":"Användarnamn","login.password":"Lösenord","alias.first_name":"Förnamn","alias.last_name":"Efternamn","alias.gender":"Kön","alias.birthdate":"Födelsedatum","login.email":"E-postadress","notes.content":"Anteckningar","card.cardholder_name":"Kortinnehavarens namn","card.number":"Kortnummer","card.expiry_month":"Utgångsmånad","card.expiry_year":"Utgångsår","card.cvv":"Säkerhetskod","card.pin":"PIN-kod"},jT={addCode:"Lägg till 2FA kod",instructions:"Ange den hemliga nyckeln som visas av webbplatsen där du vill lägga till tvåfaktorsautentisering.",nameOptional:"Namn (valfritt)",secretKey:"Hemlig nyckel",saveToViewCode:"Spara för att visa kod",defaultName:"Autentiserare",deleteTotpCodeTitle:"Radera 2FA-kod",deleteTotpCodeConfirmation:'Är du säker på att du vill radera 2FA-koden"{{name}}"?',errors:{invalidSecretKey:"Ogiltigt format för hemlig nyckel."}},HT={uploading:"Laddar upp...",uploadSuccess:"Filerna har laddats upp.",deleteSuccess:"Bifogade filen har raderats.",firefoxExpandRequired:"För att ladda upp filer, använd det utökade fönstret.",openExpandedWindow:"Öppna utökat fönster"},VT={title:"E-post",deleteEmailTitle:"Radera e-post",deleteEmailConfirm:"Är du säker på att du vill radera detta meddelande permanent?",from:"Från",to:"Till",date:"Datum",emailContent:"E-postinnehåll",emailNotFound:"E-post hittades inte",noEmails:"Inga e-postmeddelanden hittades",noEmailsDescription:"Du har inte mottagit några e-postmeddelanden på dina privata e-postadresser än. När du fått ett nytt e-postmeddelande så visas det här.",offlineMessage:"Du är offline. Anslut till internet för att ladda dina e-postmeddelanden.",loadMore:"Läs in fler ({{count}} kvar)",dateFormat:{justNow:"precis nu",minutesAgo_single:"{{count}} minut sedan",minutesAgo_plural:"{{count}} minuter sedan",hoursAgo_single:"{{count}} timme sedan",hoursAgo_plural:"{{count}} timmar sedan",yesterday:"igår"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Den aktuella valda e-postadressen används redan. Vänligen ändra e-postadressen genom att redigera denna post.",CLAIM_DOES_NOT_EXIST:"Ett fel inträffade när e-posten skulle laddas. Försök att redigera och spara posten för att synkronisera databasen, och försök sedan igen."}},zT={serverUrl:"Serverns webbadress",language:"Språk",autofillEnabled:"Aktivera Autofyll",version:"Version",openWebApp:"Öppna webbapp",lock:"Lås",globalSettings:"Globala inställningar",activeOnAllSites:"Aktiv på alla webbplatser (om inte inaktiverat nedan)",disabledOnAllSites:"Inaktiverad på alla webbplatser",rightClickContextMenu:"Högerklicksmeny",autofillMatching:"Autofyllsmatchning",autofillMatchingMode:"Autofyll matchningsläge",autofillMatchingModeDescription:"Avgör vilka uppgifter som anses vara en matchning och visas som förslag i autofyllrutan för en viss webbplats.",autofillMatchingDefault:"URL + subdomän + namn wildcard",autofillMatchingUrlSubdomain:"URL + subdomän",autofillMatchingUrlExact:"Endast exakt URL domän",siteSpecificSettings:"Webbplatsspecifika inställningar",enabledForThisSite:"Aktiverad för denna webbplats",disabledForThisSite:"Inaktiverad för denna webbplats",resetAllSiteSettings:"Återställ alla webbplatsspecifika inställningar",disabledSites:"Inaktiverade webbplatser",disabledSitesDescription:"Webbplatser där autofyllrutan inte kommer att visas.",clearAllDisabledSites:"Rensa alla inaktiverade sajter",temporaryUntil:"fram till",appearance:"Utseende",theme:"Tema",useDefault:"Använd standard",light:"Ljust",dark:"Mörkt",keyboardShortcuts:"Kortkommandon",configureKeyboardShortcuts:"Konfigurera kortkommandon",configure:"Konfigurera",clipboardClearTimeout:"Rensa urklipp efter kopiering",clipboardClearTimeoutDescription:"Rensa urklipp automatiskt efter kopiering av känsliga data",clipboardClearDisabled:"Rensa aldrig",clipboardClear5Seconds:"Rensa efter 5 sekunder",clipboardClear10Seconds:"Rensa efter 10 sekunder",clipboardClear15Seconds:"Rensa efter 15 sekunder",autoLockTimeout:"Timeout för automatisk låsning",autoLockTimeoutDescription:"Lås valvet automatiskt efter en period av inaktivitet",autoLockTimeoutHelp:"Valvet kommer endast att låsas efter den angivna perioden av inaktivitet (ingen användning av autofyll eller öppnande av tilläggsruta). Valvet kommer alltid att låsa när webbläsaren stängs, oavsett inställning.",autoLockNever:"Aldrig",autoLock15Seconds:"15 sekunder",autoLock30Seconds:"30 sekunder",autoLock1Minute:"1 minut",autoLock5Minutes:"5 minuter",autoLock15Minutes:"15 minuter",autoLock30Minutes:"30 minuter",autoLock1Hour:"1 timme",autoLock4Hours:"4 timmar",autoLock8Hours:"8 timmar",autoLock24Hours:"24 timmar",versionPrefix:"Version ",autofillSettings:"Inställningar för Autofyll",clipboardSettings:"Urklippsinställningar",contextMenuSettings:"Inställningar för snabbmenyn",passkeySettings:"Passkey-inställningar",contextMenuDescription:"Högerklicka på inmatningsfält för att komma åt AliasVault-alternativ",selectLanguage:"Välj Språk",serverConfiguration:"Serverkonfiguration",serverConfigurationDescription:"Konfigurera AliasVault-serverns URL för egenhostade instanser",customApiUrl:"API URL",customClientUrl:"Klientens URL",apiUrlHint:"API slutpunkts-URL (vanligtvis klientens URL + /api)",clientUrlHint:"Webbgränssnittets URL för din egenhostade instans",autofillSettingsDescription:"Aktivera eller inaktivera autofyllruta på webbsidor",autofillEnabledDescription:"Autofyll förslag visas på inloggningsformulär",autofillDisabledDescription:"Autofyll förslag är inaktiverade globalt",languageSettings:"Språk",validation:{apiUrlRequired:"API-URL krävs",apiUrlInvalid:"Ange en giltig API-URL",clientUrlRequired:"Klientens URL krävs",clientUrlInvalid:"Ange en giltig klient-URL"},identityGenerator:"Identitetsgenerator",identityGeneratorSettings:{description:"Konfigurera standardspråk och könspreferens för generering av nya identiteter.",languageSection:"Språk",languageDescription:"Ange det språk som ska användas för att generera nya identiteter.",genderSection:"Kön",genderDescription:"Ange könspreferens för generering av nya identiteter.",ageRangeSection:"Åldersintervall",ageRangeDescription:"Ange åldersintervall för generering av nya identiteter.",genderOptions:{random:"Slumpmässigt",male:"Man",female:"Kvinna"}},credentialAutofill:"Autofyll för inloggningsuppgifter",credentialAutofillDescription:"Visa popup för autofyll när användarnamn/lösenordsfält upptäcks",totpAutofill:"Autofyll för 2FA-kod",totpAutofillDescription:"Visa popup för autofyll när 2FA-kodfält upptäcks",autoCopyTotpOnAutofill:"Autokopiera 2FA till urklipp",autoCopyTotpOnAutofillDescription:"Kopiera automatiskt den första 2FA-koden till urklipp efter du autofyllt inloggningsuppgifter.",loginSave:{title:"Spara Inloggningsdialog",description:"Visa en dialogruta för att spara inloggningsuppgifter när du skickar in ett inloggningsformulär på en webbplats.",blockedSites:"Blockerade webbplatser",blockedSitesDescription:"Webbplatser där dialogrutan för att spara inloggning aldrig kommer att visas.",clearAllBlockedSites:"Rensa alla blockerade webbplatser"},unlockMethod:{title:"Valvupplåsningsmetod",introText:"Välj hur du vill låsa upp ditt valv. Du kan använda ditt huvudlösenord (alltid tillgängligt) eller ange en PIN-kod för snabbare åtkomst. Efter 3 misslyckade PIN-försök måste du använda ditt huvudlösenord.",password:"Huvudlösenord",pin:"PIN-Kod",pinDescription:"Lås upp valv med PIN-kod",setupPin:"Ställ in PIN-kod",enterNewPinDescription:"Ange en PIN-kod som består av minst 6 siffror",confirmPin:"Bekräfta PIN-kod",confirmPinDescription:"Ange din PIN-kod igen för att bekräfta",invalidPinFormat:"Ogiltigt PIN-format",pinMismatch:"PIN-koder matchar inte",incorrectPin:"Felaktig PIN-kod. {{attemptsRemaining}} försök återstår.",incorrectPinSingular:"Felaktig PIN-kod. 1 försök återstår.",enableSuccess:"PIN-upplåsning har aktiverats!",pinLocked:"PIN-upplåsning har inaktiverats. Använd ditt huvudlösenord för att låsa upp ditt valv.",pinSecurityWarning:"PIN-upplåsning i webbläsartillägget kan vara mindre säkert än ditt huvudlösenord, eftersom PIN-koder vanligtvis har lägre entropi och kan bli buret-force-attackerad"}},QT={passkey:"Passkey",site:"Webbplats",helpText:"Passkeys skapas på webbplatsen när du blir tillfrågad. De kan inte redigeras manuellt. För att radera denna passkey, kan du ta bort det från denna posten. För att byta ut denna passkey eller skapa en ny, besök webbplatsen och följ dess anvisningar.",passkeyMarkedForDeletion:"Passkey markerad för borttagning",passkeyWillBeDeleted:"Denna passkey kommer att tas bort när du sparar dessa uppgifter.",useBrowserPasskey:"Använd webbläsarens Passkey",bypass:{description:"Hur länge vill du använda webbläsarens passkey-leverantör till {{origin}}?",thisTimeOnly:"Endast denna gång",alwaysForSite:"Alltid för denna webbplats"},authenticate:{title:"Logga in med Passkey",signInFor:"Logga in med Passkey till",selectPasskey:"Välj en passkey för att logga in:",noPasskeysFound:"Inga passkeys hittades för denna webbplats"},create:{title:"Skapa Passkey",createFor:"Skapa ett nytt passkey till",titleLabel:"Titel",titlePlaceholder:"Ange ett namn för denna Passkey",createButton:"Skapa Passkey",selectPasskeyToReplace:"Välj en passkey att ersätta:",createNewPasskey:"Skapa ny Passkey",replacingPasskey:"Ersätter passkey: {{displayName}}",confirmReplace:"Bekräfta ersättande",selectExistingLogin:"Lägg till i befintlig inloggning:",selectExistingLoginDescription:"Bifoga denna passkey till en befintlig inloggningsuppgift för den här webbplatsen.",attachingToCredential:"Lägger till passkey till: {{serviceName}}",attachPasskey:"Lägg till Passkey"},settings:{passkeyProvider:"Passkey-leverantör",passkeyProviderOn:"Passkey-leverantör på "}},KT={title:"Senast raderade",noItems:"Inga raderade objekt",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Återställ",deletePermanently:"Radera permanent",emptyAll:"Töm alla",daysRemaining_one:"{{count}} dag återstår",daysRemaining_other:"{{count}} dagar återstår",expiringSoon:"Löper snart ut",confirmDeleteTitle:"Radera permanent?",confirmDeleteMessage:"Detta objekt kommer att raderas permanent och kan inte återställas.",confirmEmptyAllTitle:"Töm nyligen borttagna?",confirmEmptyAllMessage:"Alla {{count}} objekt kommer att raderas permanent och kommer inte kunna återställas."},GT={title:"Uppgradera valv",subtitle:"AliasVault har uppdaterats och ditt valv måste uppgraderas. Detta bör bara ta några sekunder.",versionInformation:"Versionsinformation",yourVault:"Din valvversion:",newVersion:"Ny tillgänglig version:",upgrade:"Uppgradera valv",upgrading:"Uppgraderar ...",whatsNew:"Vad är nytt",whatsNewDescription:"En uppgradering krävs för att stödja följande ändringar:",noDescriptionAvailable:"Ingen beskrivning tillgänglig för denna version.",alerts:{unableToGetVersionInfo:"Det gick inte att hämta versionsinformation. Försök igen.",selfHostedServer:"Egenhostad server",selfHostedWarning:"Om du använder en egenhostad server, se till att även uppdatera din egenhostade instans eftersom inloggning på webbklienten annars kommer att sluta fungera.",continueUpgrade:"Fortsätt uppgraderingen",upgradeFailed:"Uppgraderingen misslyckades",failedToApplyMigration:"Misslyckades att tillämpa migrering ({{current}} av {{total}})"}},WT={unsyncedChangesTitle:"Osynkade ändringar",unsyncedChangesWarning:"Du har osynkade ändringar som kommer att gå förlorade om du loggar ut nu. Är du säker på att du vill fortsätta?",logoutAnyway:"Logga ut ändå"},qT={offline:"Offline",tapToRetry:"Tryck för att försöka synka igen",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Avfärda"},YT={auth:UT,menu:MT,common:_T,content:FT,items:BT,itemTypes:PT,fieldLabels:OT,totp:jT,attachmentUploader:HT,emails:VT,settings:zT,passkeys:QT,recentlyDeleted:KT,upgrade:GT,logout:WT,sync:qT},BM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:HT,auth:UT,common:_T,content:FT,default:YT,emails:VT,fieldLabels:OT,itemTypes:PT,items:BT,logout:WT,menu:MT,passkeys:QT,recentlyDeleted:KT,settings:zT,sync:qT,totp:jT,upgrade:GT},Symbol.toStringTag,{value:"Module"})),JT={loginTitle:"Увійти до AliasVault",username:"Ім'я користувача або електронна пошта",usernamePlaceholder:"ім'я / name@company.com",passwordPlaceholder:"Введіть ваш пароль",rememberMe:"Запам'ятати мене",loginButton:"Увійти",noAccount:"Ще не маєте облікового запису?",createVault:"Створити нове сховище",twoFactorTitle:"Будь ласка, введіть код автентифікації з вашого застосунку для автентифікації.",authCode:"Код автентифікації",authCodePlaceholder:"Введіть 6-значний код",verify:"Перевірка",twoFactorNote:"Примітка: якщо у вас немає доступу до вашого пристрою автентифікатора, ви можете скинути налаштування 2FA за допомогою коду відновлення, увійшовши через вебсайт.",masterPassword:"Головний пароль",unlockVault:"Розблокувати",unlockWithPin:"Розблокувати за допомогою ПІН-коду",enterPinToUnlock:"Введіть свій ПІН-код, щоб розблокувати сховище",useMasterPassword:"Використовуйте головний пароль",unlockTitle:"Розблокувати своє сховище",logoutConfirm:"Ви впевнені, що хочете вийти?",unlockSuccessTitle:"Ваше сховище успішно розблоковано",unlockSuccessDescription:"Тепер ви можете використовувати автозаповнення форм входу у вашому браузері.",closePopup:"Закрити цю підказку",browseVault:"Переглянути вміст сховища",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Підключення до",switchAccounts:"Змінити обліковий запис?",loginWithMobile:"Увійти за допомогою мобільного додатку",unlockWithMobile:"Розблокувати за допомогою мобільного додатку",scanQrCode:"Проскануйте цей QR-код за допомогою мобільного додатка AliasVault, щоб увійти та розблокувати сховище.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},XT={vault:"Сховище",emails:"Електронні адреси"},$T={loading:"Завантаження даних...",notice:"Примітка",error:"Помилка",cancel:"Скасувати",confirm:"Підтвердити",remove:"Remove",back:"Назад",next:"Далі",use:"Використовувати",add:"Add",delete:"Видалити",undo:"Скасувати",save:"Зберегти",saving:"Saving...",edit:"Edit",create:"Створити",or:"Або",close:"Закрити",dismiss:"Dismiss",logout:"Вихід",copied:"Скопійовано!",openInNewWindow:"Відкрити у новому вікні",enabled:"Увімкнено",disabled:"Вимкнено",showPassword:"Показати пароль",hidePassword:"Приховати пароль",show:"Show",hide:"Hide",showDetails:"Показати подробиці",hideDetails:"Приховати подробиці",copyToClipboard:"Копіювати до буфера обміну",loadingEmails:"Завантаження електронних адрес...",loadingTotpCodes:"Завантаження кодів TOTP...",attachments:"Вкладення",loadingAttachments:"Завантаження вкладень...",settings:"Налаштування",recentEmails:"Останні електронні листи",credentials:"Облікові дані",customFields:"Custom Fields",twoFactorAuthentication:"Двофакторна автентифікація",alias:"Псевдонім",notes:"Нотатки",email:"Електронна пошта",username:"Ім'я користувача",password:"Пароль",generate:"Generate",serviceName:"Назва сервісу",loggedIn:"Вхід виконано",syncingVault:"Синхронізація сховища",checkingVaultUpdates:"Перевірка оновлень сховища",syncingUpdatedVault:"Синхронізація оновленого сховища",loadMore:"Завантажити ще",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"Не вдалося зв’язатися зі сервером AliasVault. Будь ласка, спробуйте пізніше або зверніться до служби підтримки, якщо проблема не зникне.",clientVersionNotSupported:"Ця версія розширення браузера AliasVault більше не підтримується сервером. Будь ласка, оновіть розширення браузера до останньої версії.",browserExtensionOutdated:"Це розширення браузера застаріло, і його не можна використовувати для доступу до цього сховища. Щоб продовжити, оновіть це розширення браузера.",serverVersionNotSupported:"Щоб використовувати це розширення браузера, потрібно оновити сервер AliasVault до новішої версії. Зверніться до служби підтримки, якщо вам потрібна допомога.",serverVersionTooOld:"Щоб скористатися цією функцією, потрібно оновити сервер AliasVault до нової версії. Якщо вам потрібна допомога, будь ласка, зверніться до адміністратора сервера.",unknownError:"Сталася невідома помилка",unknownErrorTryAgain:"Сталася невідома помилка. Будь ласка, спробуйте ще раз.",vaultNotAvailable:"Сховище недоступне",vaultIsLocked:"Сховище заблоковано",passwordChanged:"Ваш пароль змінився з моменту останнього входу. З міркувань безпеки, будь ласка, увійдіть ще раз.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Не вдалося зв’язатися зі сервером AliasVault. Будь ласка, спробуйте пізніше або зверніться до служби підтримки, якщо проблема не зникне.",wrongPassword:"Невірний пароль. Будь ласка, спробуйте ще раз.",sessionExpired:"Час сеансу закінчився. Будь ласка, увійдіть знову.",mobileLoginRequestExpired:"Час очікування запиту на вхід у мобільний додаток закінчився. Перезавантажте сторінку та спробуйте ще раз."},apiErrors:{UNKNOWN_ERROR:"Сталася невідома помилка. Будь ласка, спробуйте ще раз.",ACCOUNT_LOCKED:"Обліковий запис тимчасово заблоковано через занадто багато невдалих спроб. Будь ласка, спробуйте пізніше.",ACCOUNT_BLOCKED:"Ваш обліковий запис вимкнено. Якщо ви вважаєте, що це помилка, зверніться до служби підтримки.",USER_NOT_FOUND:"Недійсне ім'я користувача або пароль. Спробуйте ще раз.",INVALID_AUTHENTICATOR_CODE:"Недійсний код автентифікатора. Спробуйте ще раз.",INVALID_RECOVERY_CODE:"Недійсний код відновлення. Будь ласка, спробуйте ще раз.",REFRESH_TOKEN_REQUIRED:"Необхідне оновлення токена.",INVALID_REFRESH_TOKEN:"Оновлення токена невдале.",PUBLIC_REGISTRATION_DISABLED:"Реєстрація нових облікових записів на цьому сервері наразі вимкнена. Зверніться до адміністратора.",USERNAME_REQUIRED:"Ім'я користувача обов'язкове.",USERNAME_ALREADY_IN_USE:"Ім'я користувача вже використовується.",USERNAME_AVAILABLE:"Ім'я користувача доступне.",USERNAME_MISMATCH:"Ім'я користувача не відповідає поточному користувачеві.",PASSWORD_MISMATCH:"Введений пароль не відповідає вашому поточному паролю.",ACCOUNT_SUCCESSFULLY_DELETED:"Обліковий запис успішно видалено.",USERNAME_EMPTY_OR_WHITESPACE:"Ім’я користувача не може бути порожнім або містити пробіли.",USERNAME_TOO_SHORT:"Ім’я користувача закоротке: має містити щонайменше 3 символи.",USERNAME_TOO_LONG:"Ім'я користувача занадто довге: не може бути довшим за 40 символів.",USERNAME_INVALID_EMAIL:"Недійсна адреса електронної пошти.",USERNAME_INVALID_CHARACTERS:"Ім'я користувача недійсне, може містити лише літери або цифри.",VAULT_NOT_UP_TO_DATE:"Ваше сховище застаріло. Синхронізуйте його та спробуйте ще раз.",INTERNAL_SERVER_ERROR:"Внутрішня помилка сервера.",VAULT_ERROR:"Локальне сховище не оновлене. Синхронізуйте своє сховище, оновивши сторінку, та повторіть спробу."}},ZT={or:"або",new:"Новий",vaultLocked:"AliasVault заблоковано.",creatingNewAlias:"Створення нового псевдоніму...",noMatchesFound:"Збігів не знайдено",searchVault:"Пошук сховища...",enterServiceName:"Введіть назву служби",enterEmailAddress:"Введіть електронну адресу",enterUsername:"Введіть ім'я користувача",hideFor1Hour:"Сховати протягом 1 години (поточний сайт)",hidePermanently:"Приховати назавжди (поточний сайт)",createRandomAlias:"Створити випадковий псевдонім",createUsernamePassword:"Створити ім'я користувача/пароль",randomAlias:"Випадковий псевдонім",usernamePassword:"Ім'я користувача/Пароль",createAndSaveAlias:"Створити та зберегти псевдонім",createAndSaveCredential:"Створити та зберегти облікові дані",randomIdentityDescription:"Згенеруйте випадкову особу з випадковою адресою електронної пошти, доступною в AliasVault.",randomIdentityDescriptionDropdown:"Випадкова ідентифікація з випадковою електронною поштою",manualCredentialDescription:"Вкажіть власну адресу електронної пошти та ім'я користувача.",manualCredentialDescriptionDropdown:"Ім'я користувача та пароль вручну",failedToCreateIdentity:"Не вдалося створити ідентифікатор. Спробуйте ще раз.",enterEmailAndOrUsername:"Введіть електронну пошту та/або ім'я користувача",autofillWithAliasVault:"Автозаповнення за допомогою AliasVault",generateRandomPassword:"Згенерувати випадковий пароль (скопіювати в буфер обміну)",generateNewPassword:"Згенерувати новий пароль",togglePasswordVisibility:"Перемикання видимості пароля",passwordCopiedToClipboard:"Пароль скопійовано в буфер обміну",openAliasVaultToUpgrade:"Відкрити AliasVault для покращення",vaultUpgradeRequired:"Потрібне оновлення сховища.",dismissPopup:"Закрити спливаюче вікно",noTotpItemsFound:"No 2FA code matches found",close:"Закрити",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},eN={title:"Об'єкти",itemName:"Назва",loginCredentials:"Дані для входу",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Створити теку",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Тека",welcomeTitle:"Ласкаво просимо до AliasVult!",welcomeDescription:"Щоб скористатися розширенням браузера AliasVault: перейдіть на вебсайт і скористайтеся спливаючим вікном автозаповнення AliasVault, щоб створити нові облікові дані.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Ключі доступу",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Теги",changePasswordComplexity:"Зміна складності пароля",passwordLength:"Довжина пароля",includeLowercase:"Включити малі літери",includeUppercase:"Включити великі літери",includeNumbers:"Включити числа",includeSpecialChars:"Включити спеціальні символи",avoidAmbiguousChars:"Уникайте неоднозначних символів (o, 0 тощо)",privateEmailTitle:"Приватна електронна адреса",privateEmailAliasVaultServer:"Сервер AliasVault",privateEmailDescription:"Наскрізне шифрування, повністю конфіденційно.",publicEmailTitle:"Публічні тимчасові постачальники електронної пошти",publicEmailDescription:"Анонімно, але обмежена конфіденційність. Зміст електронного листа може прочитати будь-хто, хто знає адресу.",validation:{required:"Це поле обов'язкове"}},tN={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Електронна пошта",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Увійти"},alias:{title:"Псевдонім"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},aN={"login.url":"Website URL","login.username":"Username","login.password":"Пароль","alias.first_name":"Ім’я","alias.last_name":"Прізвище","alias.gender":"Стать","alias.birthdate":"Birthdate","login.email":"Пошта","notes.content":"Нотатки","card.cardholder_name":"Ім'я власника картки","card.number":"Номер Картки","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},nN={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Ім'я (необов'язково)",secretKey:"Секретний ключ",saveToViewCode:"Зберегти для перегляду коду",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},iN={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},rN={title:"Електронні листи",deleteEmailTitle:"Видалити електронного листа",deleteEmailConfirm:"Ви впевнені, що хочете остаточно видалити цей електронний лист?",from:"Від",to:"До",date:"Дата",emailContent:"Вміст електронного листа",emailNotFound:"Електронний лист не знайдено",noEmails:"Електронних листів не знайдено",noEmailsDescription:"Ви ще не отримували жодних листів на свої приватні адреси електронної пошти. Коли ви отримаєте новий лист, він з’явиться тут.",offlineMessage:"Ви офлайн. Будь ласка, приєднайтесь до Інтернету, щоб завантажити свої електронні листи.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"щойно",minutesAgo_single:"{{count}} хвилина тому",minutesAgo_plural:"{{count}} хвилин тому",hoursAgo_single:"{{count}} година тому",hoursAgo_plural:"{{count}} годин тому",yesterday:"учора"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"Поточна вибрана електронна адреса вже використовується. Змініть електронну адресу, відредагувавши ці облікові дані.",CLAIM_DOES_NOT_EXIST:"Під час спроби завантажити електронні листи сталася помилка. Спробуйте відредагувати та зберегти запис облікових даних, щоб синхронізувати базу даних, а потім повторіть спробу."}},sN={serverUrl:"URL-адреса сервера",language:"Мова",autofillEnabled:"Увімкнути автозаповнення",version:"Версія",openWebApp:"Відкрити веб додаток",lock:"Заблокувати",globalSettings:"Глобальні налаштування",activeOnAllSites:"Активно на всіх сайтах (якщо не вимкнено нижче)",disabledOnAllSites:"Вимкнено на всіх сайтах",rightClickContextMenu:"Контекстне меню правою кнопкою миші",autofillMatching:"Автозаповнення відповідності",autofillMatchingMode:"Режим автозаповнення відповідностей",autofillMatchingModeDescription:"Визначає, які облікові дані вважаються відповідними та будуть показуватися як пропозиції у спливному вікні автозаповнення для певного вебсайту.",autofillMatchingDefault:"URL-адреса + піддомен + універсальне ім'я",autofillMatchingUrlSubdomain:"URL-адреса + піддомен",autofillMatchingUrlExact:"Лише точний домен URL-адреси",siteSpecificSettings:"Налаштування, специфічні для сайту",enabledForThisSite:"Увімкнено для цього сайту",disabledForThisSite:"Вимкнено для цього сайту",resetAllSiteSettings:"Скинути всі налаштування, характерні для сайту",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Зовнішній вигляд",theme:"Тема",useDefault:"Використовувати за замовчуванням",light:"Світла",dark:"Темна",keyboardShortcuts:"Комбінації клавіш",configureKeyboardShortcuts:"Налаштування комбінацій клавіш",configure:"Налаштування",clipboardClearTimeout:"Очистити буфер обміну після копіювання",clipboardClearTimeoutDescription:"Автоматично очищати буфер обміну після копіювання конфіденційних даних",clipboardClearDisabled:"Ніколи не очищати",clipboardClear5Seconds:"Очистити після 5 секунд",clipboardClear10Seconds:"Очистити після 10 секунд",clipboardClear15Seconds:"Очистити після 15 секунд",autoLockTimeout:"Тайм-аут автоматичного блокування",autoLockTimeoutDescription:"Автоматично блокувати сховище після періоду бездіяльності",autoLockTimeoutHelp:"Сховище буде заблоковано лише після зазначеного періоду бездіяльності (не використовується автозаповнення або не відкривається спливне вікно розширення). Сховище завжди блокуватиметься, коли браузер закривається, незалежно від цього налаштування.",autoLockNever:"Ніколи",autoLock15Seconds:"15 секунд",autoLock30Seconds:"30 секунд",autoLock1Minute:"1 хвилина",autoLock5Minutes:"5 хвилин",autoLock15Minutes:"15 хвилин",autoLock30Minutes:"30 хвилин",autoLock1Hour:"1 година",autoLock4Hours:"4 години",autoLock8Hours:"8 годин",autoLock24Hours:"24 години",versionPrefix:"Версія ",autofillSettings:"Налаштування автозаповнення",clipboardSettings:"Параметри буфера обміну",contextMenuSettings:"Налаштування контекстного меню",passkeySettings:"Налаштування ключа доступу",contextMenuDescription:"Натисніть правою кнопкою миші на поля введення, щоб отримати доступ до параметрів AliasVault",selectLanguage:"Виберіть мову",serverConfiguration:"Конфігурація сервера",serverConfigurationDescription:"Налаштування URL-адреси сервера AliasVault для самостійно розміщених екземплярів",customApiUrl:"URL-адреса API",customClientUrl:"URL-адреса клієнта",apiUrlHint:"URL-адреса кінцевої точки API (зазвичай URL-адреса клієнта + /api)",clientUrlHint:"URL-адреса вебінтерфейсу вашого самостійного екземпляра",autofillSettingsDescription:"Увімкнення або вимкнення спливаючого вікна автозаповнення на вебсторінках",autofillEnabledDescription:"",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Мова",validation:{apiUrlRequired:"URL-адреса API обов'язкова",apiUrlInvalid:"Будь ласка, введіть дійсну URL-адресу API",clientUrlRequired:"URL-адреса клієнта обов'язкова",clientUrlInvalid:"Будь ласка, введіть дійсну URL-адресу клієнта"},identityGenerator:"Генератор ідентифікаційних даних",identityGeneratorSettings:{description:"Налаштуйте мову та стать за замовчуванням для створення нових ідентифікаційних даних.",languageSection:"Мова",languageDescription:"Встановіть мову, яка використовуватиметься під час створення нових ідентифікаторів.",genderSection:"Стать",genderDescription:"Встановити параметри гендеру для генерації нових ідентифікацій.",ageRangeSection:"Віковий діапазон",ageRangeDescription:"Встановіть віковий діапазон для створення нових ідентифікаційних даних.",genderOptions:{random:"Випадкова",male:"Чоловіча",female:"Жіноча"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Метод розблокування сховища",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Головний пароль",pin:"ПІН-код",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Підтвердити ПІН-код",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"Розблокування PIN-кодом успішно ввімкнено!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},oN={passkey:"Ключ доступу",site:"Вебсайт",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Ключ доступу позначено для видалення",passkeyWillBeDeleted:"Цей ключ доступу буде видалено, коли ви збережете ці облікові дані.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Заголовок",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},lN={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},dN={title:"Оновлення сховища",subtitle:"AliasVault оновлено, і ваше сховище потрібно оновити. Це займе лише кілька секунд.",versionInformation:"Інформація про версію",yourVault:"Ваша версія сховища:",newVersion:"Доступна нова версія:",upgrade:"Оновлення сховища",upgrading:"Оновлення...",whatsNew:"Що нового",whatsNewDescription:"Для підтримки таких змін потрібне оновлення:",noDescriptionAvailable:"Для цієї версії немає опису.",alerts:{unableToGetVersionInfo:"Не вдалося отримати інформацію про версію. Спробуйте ще раз.",selfHostedServer:"Сервер із самостійним розміщенням",selfHostedWarning:"Якщо ви використовуєте власний сервер, обов’язково оновіть і свій власний екземпляр, інакше вхід до вебклієнта перестане працювати.",continueUpgrade:"Продовжити оновлення",upgradeFailed:"Помилка оновлення",failedToApplyMigration:"Не вдалося застосувати міграцію ({{current}} з {{total}})"}},cN={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},uN={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},mN={auth:JT,menu:XT,common:$T,content:ZT,items:eN,itemTypes:tN,fieldLabels:aN,totp:nN,attachmentUploader:iN,emails:rN,settings:sN,passkeys:oN,recentlyDeleted:lN,upgrade:dN,logout:cN,sync:uN},PM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:iN,auth:JT,common:$T,content:ZT,default:mN,emails:rN,fieldLabels:aN,itemTypes:tN,items:eN,logout:cN,menu:XT,passkeys:oN,recentlyDeleted:lN,settings:sN,sync:uN,totp:nN,upgrade:dN},Symbol.toStringTag,{value:"Module"})),gN={loginTitle:"登录到 AliasVault",username:"用户名或邮箱",usernamePlaceholder:"姓名 / name@company.com",passwordPlaceholder:"输入您的密码",rememberMe:"记住我",loginButton:"登录",noAccount:"还没有账户？",createVault:"创建新密码库",twoFactorTitle:"请输入来自您身份验证器应用的身份验证码",authCode:"身份验证码",authCodePlaceholder:"输入 6 位数代码",verify:"验证",twoFactorNote:"注意：如果无法访问您的认证设备，您可以通过网站登录，使用恢复码重置两步验证（2FA）。",masterPassword:"主密码",unlockVault:"解锁",unlockWithPin:"使用 PIN 解锁",enterPinToUnlock:"输入您的 PIN 以解锁密码库",useMasterPassword:"使用主密码",unlockTitle:"解锁您的密码库",logoutConfirm:"确定要退出登录吗？",unlockSuccessTitle:"您的密码库已成功解锁",unlockSuccessDescription:"现在您可以在浏览器的登录表单中使用自动填充功能了。",closePopup:"关闭此弹窗",browseVault:"浏览密码库内容",autoCloseUnlockPopup:"将来登录时自动关闭",connectingTo:"正在连接",switchAccounts:"切换账户？",loginWithMobile:"使用移动应用登录",unlockWithMobile:"使用移动应用解锁",scanQrCode:"使用 AliasVault 移动端应用扫描该二维码，即可登录并解锁您的密码库。",passwordAttemptsWarning:"密码错误。若您再输入 {{remainingAttempts}} 次错误的密码，则会被退出登录。",maxAttemptsReached:"解锁尝试次数过多，出于安全考虑，您已被退出登录。"},pN={vault:"密码库",emails:"邮件"},hN={loading:"加载中…",notice:"注意",error:"错误",cancel:"取消",confirm:"确认",remove:"移除",back:"返回",next:"下一步",use:"使用",add:"添加",delete:"删除",undo:"撤销",save:"保存",saving:"保存中…",edit:"编辑",create:"创建",or:"或",close:"关闭",dismiss:"取消",logout:"退出登录",copied:"已复制！",openInNewWindow:"在新窗口中打开",enabled:"启用",disabled:"禁用",showPassword:"显示密码",hidePassword:"隐藏密码",show:"显示",hide:"隐藏",showDetails:"显示详情",hideDetails:"隐藏详情",copyToClipboard:"复制到剪贴板",loadingEmails:"加载邮件中…",loadingTotpCodes:"加载TOTP验证码中…",attachments:"附件",loadingAttachments:"加载附件中…",settings:"设置",recentEmails:"近期邮件",credentials:"凭据",customFields:"自定义字段",twoFactorAuthentication:"两步验证（2FA）",alias:"别名",notes:"备注",email:"邮箱",username:"用户名",password:"密码",generate:"生成",serviceName:"服务名称",loggedIn:"已登录",syncingVault:"正在同步密码库",checkingVaultUpdates:"检查密码库更新中",syncingUpdatedVault:"同步更新后的密码库",loadMore:"加载更多",offline:"离线",offlineMode:"正在离线模式运行",pendingSync:"同步中…",mergingVaultChanges:"正在合并密码库更改...",uploadingVault:"正在上传密码库…",errors:{serverNotAvailable:"AliasVault服务器不可用。请稍后重试，若问题持续请联系支持人员。",clientVersionNotSupported:"此版本的AliasVault浏览器扩展已不被服务器支持。请将浏览器扩展更新到最新版本。",browserExtensionOutdated:"此浏览器扩展已过时，无法用于访问此密码库。请更新此浏览器扩展以继续。",serverVersionNotSupported:"AliasVault服务器需要更新到新版本才能使用此浏览器扩展。如需帮助，请联系支持人员。",serverVersionTooOld:"AliasVault 服务器需要更新到更高版本才能使用此功能。如需帮助，请联系服务器管理员。",unknownError:"发生未知错误",unknownErrorTryAgain:"发生未知错误，请重试。",vaultNotAvailable:"密码库不可用",vaultIsLocked:"密码库已锁定",passwordChanged:"登录密码已更新，请重新登录以确保账户安全。",syncConflictMaxRetries:"多次尝试后仍无法同步密码库，请稍后重试。",mergeFailed:"合并密码库更改失败，请重试。",vaultTooLarge:"密码库过大，服务器无法接受。请尝试移除一些项目或附件以减小其大小，然后重试。",invalidCode:"请输入有效的 6 位身份验证码。",serverError:"无法访问 AliasVault 服务器。请稍后重试，若问题依旧，请联系支持人员。",wrongPassword:"密码错误，请重试。",sessionExpired:"您的会话已过期。请重新登录。",mobileLoginRequestExpired:"移动端登录请求超时，请重新加载页面后重试。"},apiErrors:{UNKNOWN_ERROR:"发生未知错误。请重试。",ACCOUNT_LOCKED:"由于多次尝试失败，账户已暂时锁定。请稍后重试。",ACCOUNT_BLOCKED:"您的账户已被停用。若您认为此操作有误，请联系支持人员。",USER_NOT_FOUND:"用户名或密码无效。请重试。",INVALID_AUTHENTICATOR_CODE:"身份验证器验证码无效。请重试。",INVALID_RECOVERY_CODE:"恢复码无效。请重试。",REFRESH_TOKEN_REQUIRED:"刷新令牌为必填项。",INVALID_REFRESH_TOKEN:"刷新令牌无效。",PUBLIC_REGISTRATION_DISABLED:"当前服务器已禁用新账户注册。请联系管理员。",USERNAME_REQUIRED:"用户名为必填项。",USERNAME_ALREADY_IN_USE:"用户名已被使用。",USERNAME_AVAILABLE:"用户名可用。",USERNAME_MISMATCH:"用户名与当前用户不匹配。",PASSWORD_MISMATCH:"提供的密码与您的当前密码不匹配。",ACCOUNT_SUCCESSFULLY_DELETED:"账户已成功删除。",USERNAME_EMPTY_OR_WHITESPACE:"用户名不能为空或仅含空格。",USERNAME_TOO_SHORT:"用户名过短：至少需要3个字符。",USERNAME_TOO_LONG:"用户名过长：不能超过40个字符。",USERNAME_INVALID_EMAIL:"无效的邮箱地址。",USERNAME_INVALID_CHARACTERS:"用户名无效，只能包含字母或数字。",VAULT_NOT_UP_TO_DATE:"您的密码库不是最新的。请同步您的密码库后重试。",INTERNAL_SERVER_ERROR:"服务器内部错误。",VAULT_ERROR:"本地密码库不是最新的。请刷新页面同步密码库后重试。"}},fN={or:"或",new:"新建",vaultLocked:"AliasVault已锁定。",creatingNewAlias:"正在创建新别名…",noMatchesFound:"未找到匹配项",searchVault:"搜索密码库…",enterServiceName:"输入服务名称",enterEmailAddress:"输入邮箱地址",enterUsername:"输入用户名",hideFor1Hour:"隐藏1小时（当前网站）",hidePermanently:"永久隐藏（当前网站）",createRandomAlias:"创建随机别名",createUsernamePassword:"创建用户名/密码",randomAlias:"随机别名",usernamePassword:"用户名/密码",createAndSaveAlias:"创建并保存别名",createAndSaveCredential:"创建并保存凭据",randomIdentityDescription:"生成一个包含随机邮箱地址的随机身份，可在AliasVault中查看。",randomIdentityDescriptionDropdown:"带随机邮箱的随机身份",manualCredentialDescription:"指定您自己的邮箱地址和用户名。",manualCredentialDescriptionDropdown:"手动输入用户名和密码",failedToCreateIdentity:"创建身份失败。请重试。",enterEmailAndOrUsername:"输入邮箱和/或用户名",autofillWithAliasVault:"使用AliasVault自动填充",generateRandomPassword:"生成随机密码（复制到剪贴板）",generateNewPassword:"生成新密码",togglePasswordVisibility:"切换密码可见性",passwordCopiedToClipboard:"密码已复制到剪贴板",openAliasVaultToUpgrade:"打开AliasVault进行升级",vaultUpgradeRequired:"需要升级密码库。",dismissPopup:"关闭弹窗",noTotpItemsFound:"未找到匹配的两步验证码",close:"关闭",savePrompt:{title:"保存到 AliasVault？",neverForThisSite:"此网站不再显示",addUrlTitle:"将 URL 添加到凭据？"}},AN={title:"项目",itemName:"名称",loginCredentials:"登录凭据",cardInformation:"卡信息",addItem:"添加项目",addNewItem:"添加新项目",saveItem:"保存项目",itemDetails:"项目详情",editItem:"编辑项目",untitled:"无标题",newFolder:"新建文件夹",createFolder:"创建文件夹",editFolder:"编辑文件夹",folderName:"文件夹名称",folderNameRequired:"文件夹名称为必填项",folder:"文件夹",welcomeTitle:"欢迎使用 AliasVault!",welcomeDescription:"要使用AliasVault浏览器扩展：导航到某个网站，使用AliasVault自动填充弹窗创建新凭据。",noMatchingItems:"没有项目符合所选筛选器。",noMatchingItemsSearch:"未找到匹配“{{search}}”的项目",noMatchingItemsWithFilter:"未找到匹配“{{search}}”的 {{filter}} 项目",clearSearch:"清除搜索",clearFilter:"清除筛选器",emptyFolderHint:"此文件夹为空。要将项目移动到此文件夹，请编辑该项目，然后点击名称字段中的文件夹图标。",allItemsInFolders:"您的所有项目都已整理到文件夹中。点击上方文件夹即可查看您的凭据，或使用搜索查找特定的项目。",deleteFolder:"删除文件夹",deleteFolderKeepItems:"仅删除文件夹",deleteFolderKeepItemsDescription:"项目将被移至父文件夹。",deleteFolderAndItems:"删除文件夹和所有项目",deleteFolderAndItemsDescription:"{{count}} 个项目将被移至“近期删除”。",filters:{folders:"文件夹",passkeys:"通行密钥",totp:"两步验证码"},sort:{title:"排序方式",oldestFirst:"最早在前",newestFirst:"最新在前",alphabetical:"字母顺序（A-Z）"},deleteItemTitle:"删除项目",deleteItemConfirm:"您确定要删除此项目吗？",viewHistory:"查看历史记录",history:"历史记录",noHistoryAvailable:"暂无历史记录",tags:"标签",changePasswordComplexity:"更改密码复杂度",passwordLength:"密码长度",includeLowercase:"包含小写字母",includeUppercase:"包含大写字母",includeNumbers:"包含数字",includeSpecialChars:"包含特殊字符",avoidAmbiguousChars:"避免易混淆字符（o、0 等）",privateEmailTitle:"私人邮箱",privateEmailAliasVaultServer:"AliasVault 服务器",privateEmailDescription:"端到端加密，完全私密。",publicEmailTitle:"公共临时邮箱提供商",publicEmailDescription:"匿名但隐私性有限，任何知晓其地址的人均可读取邮件内容。",validation:{required:"此字段为必填项"}},yN={selectType:"添加新项目",typeLabel:"项目类型",creating:"创建",editing:"编辑",regenerateAlias:"重新生成别名",addCustomField:"添加自定义字段",fieldLabel:"字段标签",enterFieldName:"输入字段名称",fieldType:"字段类型",fieldTypes:{text:"文本",hidden:"隐藏（已遮挡文本）",email:"邮箱",url:"URL",phone:"手机",number:"号码",date:"日期",textArea:"文本区域"},login:{title:"登录"},alias:{title:"别名"},creditCard:{title:"信用卡"},note:{title:"安全笔记"}},EN={"login.url":"网站 URL","login.username":"用户名","login.password":"密码","alias.first_name":"名","alias.last_name":"姓","alias.gender":"性别","alias.birthdate":"出生日期","login.email":"邮箱","notes.content":"备注","card.cardholder_name":"持卡人姓名","card.number":"卡号","card.expiry_month":"到期月份","card.expiry_year":"到期年份","card.cvv":"CVV","card.pin":"PIN"},bN={addCode:"添加两步验证码",instructions:"输入要添加两步验证的网站显示的密钥。",nameOptional:"名称（可选）",secretKey:"密钥",saveToViewCode:"保存以查看验证码",defaultName:"身份验证器",deleteTotpCodeTitle:"删除两步验证码",deleteTotpCodeConfirmation:"您确定要删除两步验证码“{{name}}”吗？",errors:{invalidSecretKey:"密钥格式无效。"}},vN={uploading:"上传中…",uploadSuccess:"文件上传成功。",deleteSuccess:"附件删除成功。",firefoxExpandRequired:"要上传文件，请使用展开的窗口。",openExpandedWindow:"打开展开的窗口"},wN={title:"邮件",deleteEmailTitle:"删除邮件",deleteEmailConfirm:"确定要永久删除此邮件吗？",from:"发件人",to:"收件人",date:"日期",emailContent:"邮件内容",emailNotFound:"未找到邮件",noEmails:"未找到邮件",noEmailsDescription:"您的私人邮箱地址尚未收到任何邮件。当您收到新邮件时，会显示在这里。",offlineMessage:"您处于离线状态。请连接互联网以加载邮件。",loadMore:"加载更多（剩余 {{count}} 封）",dateFormat:{justNow:"刚刚",minutesAgo_single:"{{count}}分钟前",minutesAgo_plural:"{{count}}分钟前",hoursAgo_single:"{{count}}小时前",hoursAgo_plural:"{{count}}小时前",yesterday:"昨天"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"当前选择的邮箱地址已被使用。请通过编辑此凭据修改邮箱地址。",CLAIM_DOES_NOT_EXIST:"加载邮件时发生错误。请尝试编辑并保存凭据条目以同步数据库，然后重试。"}},IN={serverUrl:"服务器 URL",language:"语言",autofillEnabled:"启用自动填充",version:"版本",openWebApp:"打开网页应用",lock:"锁定",globalSettings:"全局设置",activeOnAllSites:"在所有网站上激活（除非在下方禁用）",disabledOnAllSites:"在所有网站上禁用",rightClickContextMenu:"右键上下文菜单",autofillMatching:"自动填充匹配",autofillMatchingMode:"自动填充匹配模式",autofillMatchingModeDescription:"用于判定哪些凭据会被视为匹配项，并在指定网站的自动填充弹窗中显示为建议选项。",autofillMatchingDefault:"URL + 子域名 + 名称通配符",autofillMatchingUrlSubdomain:"URL + 子域名",autofillMatchingUrlExact:"精确匹配URL域名",siteSpecificSettings:"网站特定设置",enabledForThisSite:"对此网站启用",disabledForThisSite:"对此网站禁用",resetAllSiteSettings:"重置所有网站特定设置",disabledSites:"禁用的网站",disabledSitesDescription:"自动填充弹窗不会出现的网站。",clearAllDisabledSites:"清除所有禁用的网站",temporaryUntil:"直到",appearance:"外观",theme:"主题",useDefault:"使用默认",light:"浅色",dark:"深色",keyboardShortcuts:"键盘快捷键",configureKeyboardShortcuts:"配置键盘快捷键",configure:"配置",clipboardClearTimeout:"复制后清除剪贴板",clipboardClearTimeoutDescription:"复制敏感数据后自动清除剪贴板",clipboardClearDisabled:"从不清除",clipboardClear5Seconds:"5秒后清除",clipboardClear10Seconds:"10 秒后清除",clipboardClear15Seconds:"15分钟后清除",autoLockTimeout:"自动锁定超时时间",autoLockTimeoutDescription:"无操作一段时间后自动锁定密码库",autoLockTimeoutHelp:"密码库仅在达到指定的无操作时长后才会锁定（未使用自动填充功能或未打开扩展程序弹窗）。无论此设置如何，关闭浏览器时密码库始终会锁定。",autoLockNever:"从不",autoLock15Seconds:"15 秒",autoLock30Seconds:"30 秒",autoLock1Minute:"1 分钟",autoLock5Minutes:"5 分钟",autoLock15Minutes:"15 分钟",autoLock30Minutes:"30 分钟",autoLock1Hour:"1 小时",autoLock4Hours:"4 小时",autoLock8Hours:"8 小时",autoLock24Hours:"24 小时",versionPrefix:"版本 ",autofillSettings:"自动填充设置",clipboardSettings:"剪贴板设置",contextMenuSettings:"上下文菜单设置",passkeySettings:"通行密钥设置",contextMenuDescription:"右键点击输入字段即可访问 AliasVault 选项",selectLanguage:"选择语言",serverConfiguration:"服务器配置",serverConfigurationDescription:"为自托管实例配置 AliasVault 服务器 URL",customApiUrl:"API URL",customClientUrl:"客户端 URL",apiUrlHint:"API 端点 URL（通常为客户端 URL + /api）",clientUrlHint:"您自托管实例的 Web 界面 URL",autofillSettingsDescription:"启用或禁用网页上的自动填充弹出窗口",autofillEnabledDescription:"自动填充建议将显示在登录表单上",autofillDisabledDescription:"自动填充建议已全局禁用",languageSettings:"语言",validation:{apiUrlRequired:"API URL 为必填项",apiUrlInvalid:"请输入有效的 API URL",clientUrlRequired:"客户端 URL 为必填项",clientUrlInvalid:"请输入有效的客户端 URL"},identityGenerator:"身份生成器",identityGeneratorSettings:{description:"配置生成新身份的默认语言和性别偏好。",languageSection:"语言",languageDescription:"设置生成新身份将使用的语言。",genderSection:"性别",genderDescription:"设置生成新身份的性别偏好。",ageRangeSection:"年龄范围",ageRangeDescription:"设置生成新身份的年龄范围。",genderOptions:{random:"随机",male:"男",female:"女"}},credentialAutofill:"凭据自动填充",credentialAutofillDescription:"检测到用户名/密码字段时显示自动填充弹窗",totpAutofill:"两步验证码自动填充",totpAutofillDescription:"检测到两步验证码字段时显示自动填充弹窗",autoCopyTotpOnAutofill:"自动将两步验证码复制到剪贴板",autoCopyTotpOnAutofillDescription:"自动填充凭据后，自动将第一个两步验证码复制到剪贴板",loginSave:{title:"保存登录提示",description:"在网站上提交登录表单时，显示保存登录凭据的提示。",blockedSites:"屏蔽的网站",blockedSitesDescription:"永远不会出现保存提示的网站。",clearAllBlockedSites:"清除所有屏蔽的网站"},unlockMethod:{title:"密码库解锁方式",introText:"选择您解锁密码库的方式。您可以使用主密码（始终可用），也可以设置 PIN 码以便快捷访问。PIN 码输入错误 3 次后，您需要使用主密码。",password:"主密码",pin:"PIN 码",pinDescription:"使用 PIN 码解锁密码库",setupPin:"设置 PIN 码",enterNewPinDescription:"请输入至少 6 位数的 PIN 码",confirmPin:"确认 PIN",confirmPinDescription:"再次输入您的 PIN 以确认",invalidPinFormat:"PIN 格式无效",pinMismatch:"PIN 不一致",incorrectPin:"PIN 码错误，剩余 {{attemptsRemaining}} 次尝试。",incorrectPinSingular:"PIN 码错误，剩余 1 次尝试。",enableSuccess:"PIN 码解锁已成功启用！",pinLocked:"PIN 码解锁已禁用，请使用您的主密码解锁您的密码库。",pinSecurityWarning:"浏览器扩展中的 PIN 码解锁可能不如您的主密码安全，因为 PIN 码的熵值通常较低，若您的设备遭到入侵，则可能被暴力破解。请仅在您完全信任的设备上使用该方式。"}},CN={passkey:"通行密钥",site:"网站",helpText:"通行密钥会在网站提示时自动生成，无法手动编辑。要移除此通行密钥，您可以在此凭据中进行删除。要替换或创建新的通行密钥，请访问网站并按照其提示操作。",passkeyMarkedForDeletion:"通行密钥已标记为删除",passkeyWillBeDeleted:"保存此凭据后，此通行密钥将被删除。",useBrowserPasskey:"使用浏览器通行密钥",bypass:{description:"对于 {{origin}}，您希望使用浏览器的密码提供程序多长时间？",thisTimeOnly:"仅一次",alwaysForSite:"始终为此网站"},authenticate:{title:"使用通行密钥登录",signInFor:"使用通行密钥登录或",selectPasskey:"选择要登录的通行密钥：",noPasskeysFound:"未找到此网站的通行密钥"},create:{title:"创建通行密钥",createFor:"创建新通行密钥用于",titleLabel:"标题",titlePlaceholder:"输入此通行密钥的名称",createButton:"创建通行密钥",selectPasskeyToReplace:"选择要替换的通行密钥：",createNewPasskey:"创建新通行密钥",replacingPasskey:"替换通行密钥：{{displayName}}",confirmReplace:"确认替换",selectExistingLogin:"添加到现有登录：",selectExistingLoginDescription:"将此通行密钥附加到此站点的现有登录凭据中。",attachingToCredential:"正在将通行密钥添加到：{{serviceName}}",attachPasskey:"添加通行密钥"},settings:{passkeyProvider:"通行密钥提供程序",passkeyProviderOn:"通行密钥提供程序于"}},SN={title:"近期删除",noItems:"没有删除的项目",noItemsDescription:"您删除的项目将在此处停留 {{days}} 天，随后永久移除。",description:"这些项目将在 {{days}} 天后永久删除。您可以立即还原或永久删除。",restore:"还原",deletePermanently:"永久删除",emptyAll:"全部清空",daysRemaining_one:"剩余 {{count}} 天",daysRemaining_other:"剩余 {{count}} 天",expiringSoon:"即将到期",confirmDeleteTitle:"永久删除吗？",confirmDeleteMessage:"此项目将被永久删除，且无法恢复。",confirmEmptyAllTitle:"清空“近期删除”吗？",confirmEmptyAllMessage:"所有 {{count}} 个项目将被永久删除，且无法恢复。"},TN={title:"升级密码库",subtitle:"AliasVault已更新，您的密码库需要升级，仅需数秒。",versionInformation:"版本信息",yourVault:"您的密码库版本：",newVersion:"新可用版本：",upgrade:"升级密码库",upgrading:"升级中…",whatsNew:"新功能",whatsNewDescription:"需要升级才能支持以下更改：",noDescriptionAvailable:"此版本无可用说明。",alerts:{unableToGetVersionInfo:"无法获取版本信息。请重试。",selfHostedServer:"自托管服务器",selfHostedWarning:"如果您使用的是自托管服务器，请确保同时更新您的自托管实例，否则将无法登录网页客户端。",continueUpgrade:"继续升级",upgradeFailed:"升级失败",failedToApplyMigration:"应用迁移失败（{{current}} / {{total}}）"}},NN={unsyncedChangesTitle:"未同步的更改",unsyncedChangesWarning:"您有更改尚未同步，若您现在退出登录，这些更改将会丢失。您确定要继续吗？",logoutAnyway:"仍要退出登录"},kN={offline:"离线",tapToRetry:"点击重试同步",syncErrorTitle:"同步失败",syncErrorDismiss:"忽略"},xN={auth:gN,menu:pN,common:hN,content:fN,items:AN,itemTypes:yN,fieldLabels:EN,totp:bN,attachmentUploader:vN,emails:wN,settings:IN,passkeys:CN,recentlyDeleted:SN,upgrade:TN,logout:NN,sync:kN},OM=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:vN,auth:gN,common:hN,content:fN,default:xN,emails:wN,fieldLabels:EN,itemTypes:yN,items:AN,logout:NN,menu:pN,passkeys:CN,recentlyDeleted:SN,settings:IN,sync:kN,totp:bN,upgrade:TN},Symbol.toStringTag,{value:"Module"})),sd={da:{translation:Qw},de:{translation:oI},en:{translation:CI},es:{translation:HI},fi:{translation:iC},fr:{translation:vC},he:{translation:PC},it:{translation:tS},nl:{translation:yS},pl:{translation:_S},pt:{translation:$S},ro:{translation:hT},ru:{translation:RT},sv:{translation:YT},uk:{translation:mN},zh:{translation:xN}},cd=[{code:"da",name:"Danish",nativeName:"Dansk",flag:"🇩🇰"},{code:"de",name:"German",nativeName:"Deutsch",flag:"🇩🇪"},{code:"en",name:"English",nativeName:"English",flag:"🇺🇸"},{code:"es",name:"Spanish",nativeName:"Español",flag:"🇪🇸"},{code:"fi",name:"Finnish",nativeName:"Suomi",flag:"🇫🇮"},{code:"fr",name:"French",nativeName:"Français",flag:"🇫🇷"},{code:"he",name:"Hebrew",nativeName:"עברית",flag:"🇮🇱"},{code:"it",name:"Italian",nativeName:"Italiano",flag:"🇮🇹"},{code:"nl",name:"Dutch",nativeName:"Nederlands",flag:"🇳🇱"},{code:"pl",name:"Polish",nativeName:"Polski",flag:"🇵🇱"},{code:"pt",name:"Portuguese Brazilian",nativeName:"Português Brasileiro",flag:"🇧🇷"},{code:"ro",name:"Romanian",nativeName:"Română",flag:"🇷🇴"},{code:"ru",name:"Russian",nativeName:"Русский",flag:"🇷🇺"},{code:"sv",name:"Swedish",nativeName:"Svenska",flag:"🇸🇪"},{code:"uk",name:"Ukrainian",nativeName:"Українська",flag:"🇺🇦"},{code:"zh",name:"Chinese",nativeName:"简体中文",flag:"🇨🇳"}],Vi="en",Du=cd.map(t=>t.code),$c=new Map;async function HE(t){const e=`all:${t}`;if($c.has(e))return $c.get(e);if(sd[t]){const n=sd[t].translation;return $c.set(e,n),n}if(t!==Vi&&sd[Vi]){console.warn(`Translations not found for ${t}, falling back to ${Vi}`);const n=sd[Vi].translation;return $c.set(e,n),n}return console.warn(`No translations found for ${t} and no fallback available`),{}}function jM(t){return cd.find(e=>e.code===t)}function VE(t,e){return e.split(".").reduce((n,r)=>n&&typeof n=="object"&&n!==null&&r in n?n[r]:void 0,t)}async function HM(){try{const t=await Te.getItem("local:language");if(t&&Du.includes(t))return t;const e=navigator.language.split("-")[0],n=Du.includes(e)?e:Vi;return await Te.setItem("local:language",n),n}catch(t){return console.error("Failed to get current language:",t),Vi}}async function VM(t,e){try{const n=await HM(),r=await HE(n),s=VE(r,t);if(s&&typeof s=="string")return s;if(n!==Vi){const l=await HE(Vi),c=VE(l,t);if(c&&typeof c=="string")return c}return e||t}catch(n){return console.error("Translation error:",n),e||t}}function zM(t){return t.toISOString().replace("T"," ").replace("Z","").substring(0,23)}function Dp(){return zM(new Date)}class Ud{constructor(e){this.client=e}async withTransaction(e){this.client.beginTransaction();try{const n=await e();return await this.client.commitTransaction(),n}catch(n){throw this.client.rollbackTransaction(),n}}softDelete(e,n){const r=Dp();return this.client.executeUpdate(`UPDATE ${e} SET IsDeleted = 1, UpdatedAt = ? WHERE Id = ?`,[r,n])}softDeleteByForeignKey(e,n,r){const s=Dp();return this.client.executeUpdate(`UPDATE ${e} SET IsDeleted = 1, UpdatedAt = ? WHERE ${n} = ?`,[s,r])}hardDelete(e,n){return this.client.executeUpdate(`DELETE FROM ${e} WHERE Id = ?`,[n])}hardDeleteByForeignKey(e,n,r){return this.client.executeUpdate(`DELETE FROM ${e} WHERE ${n} = ?`,[r])}tableExists(e){return this.client.executeQuery("SELECT name FROM sqlite_master WHERE type='table' AND name=?",[e]).length>0}generateId(){return crypto.randomUUID().toUpperCase()}now(){return Dp()}buildInClause(e){return{placeholders:e.map(()=>"?").join(","),values:e}}}var nn={LoginUsername:"login.username",LoginPassword:"login.password",LoginEmail:"login.email",LoginUrl:"login.url",CardNumber:"card.number",CardCardholderName:"card.cardholder_name",CardExpiryMonth:"card.expiry_month",CardExpiryYear:"card.expiry_year",CardCvv:"card.cvv",CardPin:"card.pin",AliasFirstName:"alias.first_name",AliasLastName:"alias.last_name",AliasGender:"alias.gender",AliasBirthdate:"alias.birthdate",NotesContent:"notes.content"},Ea={Login:"Login",Alias:"Alias",CreditCard:"CreditCard",Note:"Note"},ea={Text:"Text",Password:"Password",Hidden:"Hidden",Email:"Email",URL:"URL",Date:"Date",Number:"Number",Phone:"Phone",TextArea:"TextArea"},pt={Primary:"Primary",Login:"Login",Alias:"Alias",Card:"Card",Custom:"Custom",Notes:"Notes",Metadata:"Metadata"},vf={"login.email":{FieldKey:"login.email",FieldType:"Email",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{Login:{ShowByDefault:!1},Alias:{ShowByDefault:!0}},EnableHistory:!0,Category:pt.Login,DefaultDisplayOrder:10},"login.username":{FieldKey:"login.username",FieldType:"Text",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{Login:{ShowByDefault:!0},Alias:{ShowByDefault:!0}},EnableHistory:!0,Category:pt.Login,DefaultDisplayOrder:15},"login.password":{FieldKey:"login.password",FieldType:"Password",IsHidden:!0,IsMultiValue:!1,ApplicableToTypes:{Login:{ShowByDefault:!0},Alias:{ShowByDefault:!0}},EnableHistory:!0,Category:pt.Login,DefaultDisplayOrder:20},"login.url":{FieldKey:"login.url",FieldType:"URL",IsHidden:!1,IsMultiValue:!0,ApplicableToTypes:{Login:{ShowByDefault:!0},Alias:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Primary,DefaultDisplayOrder:5},"alias.first_name":{FieldKey:"alias.first_name",FieldType:"Text",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{Alias:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Alias,DefaultDisplayOrder:20},"alias.last_name":{FieldKey:"alias.last_name",FieldType:"Text",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{Alias:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Alias,DefaultDisplayOrder:30},"alias.gender":{FieldKey:"alias.gender",FieldType:"Text",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{Alias:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Alias,DefaultDisplayOrder:50},"alias.birthdate":{FieldKey:"alias.birthdate",FieldType:"Date",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{Alias:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Alias,DefaultDisplayOrder:60},"card.cardholder_name":{FieldKey:"card.cardholder_name",FieldType:"Text",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{CreditCard:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Card,DefaultDisplayOrder:10},"card.number":{FieldKey:"card.number",FieldType:"Hidden",IsHidden:!0,IsMultiValue:!1,ApplicableToTypes:{CreditCard:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Card,DefaultDisplayOrder:20},"card.expiry_month":{FieldKey:"card.expiry_month",FieldType:"Text",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{CreditCard:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Card,DefaultDisplayOrder:30},"card.expiry_year":{FieldKey:"card.expiry_year",FieldType:"Text",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{CreditCard:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Card,DefaultDisplayOrder:40},"card.cvv":{FieldKey:"card.cvv",FieldType:"Hidden",IsHidden:!0,IsMultiValue:!1,ApplicableToTypes:{CreditCard:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Card,DefaultDisplayOrder:50},"card.pin":{FieldKey:"card.pin",FieldType:"Hidden",IsHidden:!0,IsMultiValue:!1,ApplicableToTypes:{CreditCard:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Card,DefaultDisplayOrder:60},"notes.content":{FieldKey:"notes.content",FieldType:"TextArea",IsHidden:!1,IsMultiValue:!1,ApplicableToTypes:{Login:{ShowByDefault:!1},Alias:{ShowByDefault:!1},CreditCard:{ShowByDefault:!1},Note:{ShowByDefault:!0}},EnableHistory:!1,Category:pt.Notes,DefaultDisplayOrder:100}};function Ro(t){return vf[t]}function ud(t,e){return e in t.ApplicableToTypes}function od(t,e){const n=t.ApplicableToTypes[e];return(n==null?void 0:n.ShowByDefault)??!1}function QM(t){return Object.values(vf).filter(e=>ud(e,t)).sort((e,n)=>e.DefaultDisplayOrder-n.DefaultDisplayOrder)}function KM(t){return Object.values(vf).filter(e=>ud(e,t)&&!od(e,t)).sort((e,n)=>e.DefaultDisplayOrder-n.DefaultDisplayOrder)}function Zc(t,e){const n=t.Fields.find(r=>r.FieldKey===e);if(n)return Array.isArray(n.Value)?n.Value[0]:n.Value}function GM(t,e){const n={};return t.Fields.forEach(r=>{const s=e(r);n[s]||(n[s]=[]),n[s].push(r)}),n}function WM(t){const e=GM(t,n=>n.FieldKey.startsWith("login.")?pt.Login:n.FieldKey.startsWith("alias.")?pt.Alias:n.FieldKey.startsWith("card.")?pt.Card:n.FieldKey.startsWith("notes.")?pt.Notes:n.FieldKey.startsWith("metadata.")?pt.Metadata:pt.Custom);for(const n of Object.keys(e))e[n].sort((r,s)=>(r.DisplayOrder??0)-(s.DisplayOrder??0));return e}function eu(t,e){const n=Ro(t);if(!n)throw new Error(`Unknown system field: ${t}. Use createCustomField for custom fields.`);return{FieldKey:t,Label:e.label??t,FieldType:n.FieldType,Value:e.value,IsHidden:n.IsHidden,DisplayOrder:e.displayOrder??n.DefaultDisplayOrder,IsCustomField:!1,EnableHistory:n.EnableHistory}}var Rp=10;class Up{static processFieldRows(e){const n=e.map(l=>this.processFieldRow(l)),r=new Map,s=new Map;for(const l of n){const c=`${l.ItemId}_${l.FieldKey}`;s.has(c)||s.set(c,[]),s.get(c).push(l.Value),r.has(l.ItemId)||r.set(l.ItemId,[]);const m=r.get(l.ItemId);m.find(g=>g.FieldKey===l.FieldKey)||m.push({FieldKey:l.FieldKey,Label:l.Label,FieldType:l.FieldType,Value:"",IsHidden:l.IsHidden===1,DisplayOrder:l.DisplayOrder,IsCustomField:l.IsCustomField,EnableHistory:l.EnableHistory})}for(const[l,c]of r)for(const m of c){const p=`${l}_${m.FieldKey}`,g=s.get(p)||[];g.length===1?m.Value=g[0]:m.Value=g}return r}static processFieldRow(e){if(e.FieldKey){const n=Ro(e.FieldKey);return{ItemId:e.ItemId,FieldKey:e.FieldKey,Label:e.FieldKey,FieldType:(n==null?void 0:n.FieldType)||ea.Text,IsHidden:n!=null&&n.IsHidden?1:0,Value:e.Value,DisplayOrder:(n==null?void 0:n.DefaultDisplayOrder)??e.DisplayOrder,IsCustomField:!1,EnableHistory:(n==null?void 0:n.EnableHistory)??!1}}else return{ItemId:e.ItemId,FieldKey:e.FieldDefinitionId||"",Label:e.CustomLabel||"",FieldType:e.CustomFieldType||ea.Text,IsHidden:e.CustomIsHidden||0,Value:e.Value,DisplayOrder:e.DisplayOrder,IsCustomField:!0,EnableHistory:e.CustomEnableHistory===1}}static processFieldRowsForSingleItem(e){const n=new Map,r=new Map;for(const s of e){const l=s.FieldKey||s.FieldDefinitionId||"";if(n.has(l)||n.set(l,[]),n.get(l).push(s.Value),!r.has(l))if(s.FieldKey){const c=Ro(s.FieldKey);r.set(l,{FieldKey:s.FieldKey,Label:s.FieldKey,FieldType:(c==null?void 0:c.FieldType)||ea.Text,IsHidden:c!=null&&c.IsHidden?1:0,DisplayOrder:(c==null?void 0:c.DefaultDisplayOrder)??s.DisplayOrder,IsCustomField:!1,EnableHistory:(c==null?void 0:c.EnableHistory)??!1})}else r.set(l,{FieldKey:l,Label:s.CustomLabel||"",FieldType:s.CustomFieldType||ea.Text,IsHidden:s.CustomIsHidden||0,DisplayOrder:s.DisplayOrder,IsCustomField:!0,EnableHistory:s.CustomEnableHistory===1})}return Array.from(r.entries()).map(([s,l])=>{const c=n.get(s)||[];return{...l,FieldType:l.FieldType,Value:c.length===1?c[0]:c,IsHidden:l.IsHidden===1,IsCustomField:l.IsCustomField,EnableHistory:l.EnableHistory}})}}class Wl{static mapRow(e,n=[],r=[],s){return{Id:e.Id,Name:e.Name,ItemType:e.ItemType,Logo:e.Logo??void 0,FolderId:e.FolderId,FolderPath:s,Tags:r,Fields:n,HasPasskey:e.HasPasskey===1,HasAttachment:e.HasAttachment===1,HasTotp:e.HasTotp===1,CreatedAt:e.CreatedAt,UpdatedAt:e.UpdatedAt}}static mapRows(e,n,r,s){return e.map(l=>this.mapRow(l,n.get(l.Id)||[],r.get(l.Id)||[],l.FolderId&&s?s.get(l.FolderId):void 0))}static groupTagsByItem(e){const n=new Map;for(const r of e)n.has(r.ItemId)||n.set(r.ItemId,[]),n.get(r.ItemId).push({Id:r.Id,Name:r.Name,Color:r.Color||void 0});return n}static mapTagRows(e){return e.map(n=>({Id:n.Id,Name:n.Name,Color:n.Color||void 0}))}static mapDeletedItemRow(e,n=[],r){return{Id:e.Id,Name:e.Name,ItemType:e.ItemType,Logo:e.Logo?new Uint8Array(e.Logo):void 0,FolderId:e.FolderId,FolderPath:r,DeletedAt:e.DeletedAt,HasPasskey:e.HasPasskey===1,HasAttachment:e.HasAttachment===1,HasTotp:e.HasTotp===1,Fields:n,CreatedAt:e.CreatedAt,UpdatedAt:e.UpdatedAt}}}function zE(t){return new Date(t).getTime()}class Mp{static mapRow(e){return{Id:e.Id,ItemId:e.ItemId,RpId:e.RpId,UserHandle:e.UserHandle?new Uint8Array(e.UserHandle):void 0,PublicKey:e.PublicKey,PrivateKey:e.PrivateKey,DisplayName:e.DisplayName,PrfKey:e.PrfKey?new Uint8Array(e.PrfKey):void 0,AdditionalData:e.AdditionalData,CreatedAt:zE(e.CreatedAt),UpdatedAt:zE(e.UpdatedAt),IsDeleted:e.IsDeleted}}static mapRowWithItem(e){return{...this.mapRow(e),Username:e.Username,ServiceName:e.ServiceName}}static mapRows(e){return e.map(n=>this.mapRow(n))}static mapRowsWithItem(e){return e.map(n=>this.mapRowWithItem(n))}}const an=class an{static getFieldValuesForItems(e){return`
      SELECT
        fv.ItemId,
        fv.FieldKey,
        fv.FieldDefinitionId,
        fd.Label as CustomLabel,
        fd.FieldType as CustomFieldType,
        fd.IsHidden as CustomIsHidden,
        fd.EnableHistory as CustomEnableHistory,
        fv.Value,
        fv.Weight as DisplayOrder
      FROM FieldValues fv
      LEFT JOIN FieldDefinitions fd ON fv.FieldDefinitionId = fd.Id
      WHERE fv.ItemId IN (${Array(e).fill("?").join(",")})
        AND fv.IsDeleted = 0
      ORDER BY fv.ItemId, fv.Weight`}static getTagsForItems(e){return`
      SELECT
        it.ItemId,
        t.Id,
        t.Name,
        t.Color
      FROM ItemTags it
      INNER JOIN Tags t ON it.TagId = t.Id
      WHERE it.ItemId IN (${Array(e).fill("?").join(",")})
        AND it.IsDeleted = 0
        AND t.IsDeleted = 0
      ORDER BY t.DisplayOrder, t.Name`}};Ue(an,"BASE_SELECT",`
    SELECT DISTINCT
      i.Id,
      i.Name,
      i.ItemType,
      i.FolderId,
      l.FileData as Logo,
      CASE WHEN EXISTS (SELECT 1 FROM Passkeys pk WHERE pk.ItemId = i.Id AND pk.IsDeleted = 0) THEN 1 ELSE 0 END as HasPasskey,
      CASE WHEN EXISTS (SELECT 1 FROM Attachments att WHERE att.ItemId = i.Id AND att.IsDeleted = 0) THEN 1 ELSE 0 END as HasAttachment,
      CASE WHEN EXISTS (SELECT 1 FROM TotpCodes tc WHERE tc.ItemId = i.Id AND tc.IsDeleted = 0) THEN 1 ELSE 0 END as HasTotp,
      i.CreatedAt,
      i.UpdatedAt
    FROM Items i
    LEFT JOIN Logos l ON i.LogoId = l.Id`),Ue(an,"GET_ALL_ACTIVE",`
    ${an.BASE_SELECT}
    WHERE i.IsDeleted = 0 AND i.DeletedAt IS NULL
    ORDER BY i.CreatedAt DESC`),Ue(an,"GET_BY_ID",`
    SELECT
      i.Id,
      i.Name,
      i.ItemType,
      i.FolderId,
      l.FileData as Logo,
      CASE WHEN EXISTS (SELECT 1 FROM Passkeys pk WHERE pk.ItemId = i.Id AND pk.IsDeleted = 0) THEN 1 ELSE 0 END as HasPasskey,
      CASE WHEN EXISTS (SELECT 1 FROM Attachments att WHERE att.ItemId = i.Id AND att.IsDeleted = 0) THEN 1 ELSE 0 END as HasAttachment,
      CASE WHEN EXISTS (SELECT 1 FROM TotpCodes tc WHERE tc.ItemId = i.Id AND tc.IsDeleted = 0) THEN 1 ELSE 0 END as HasTotp,
      i.CreatedAt,
      i.UpdatedAt
    FROM Items i
    LEFT JOIN Logos l ON i.LogoId = l.Id
    WHERE i.Id = ? AND i.IsDeleted = 0`),Ue(an,"GET_RECENTLY_DELETED",`
    SELECT
      i.Id,
      i.Name,
      i.ItemType,
      i.FolderId,
      l.FileData as Logo,
      CASE WHEN EXISTS (SELECT 1 FROM Passkeys pk WHERE pk.ItemId = i.Id AND pk.IsDeleted = 0) THEN 1 ELSE 0 END as HasPasskey,
      CASE WHEN EXISTS (SELECT 1 FROM Attachments att WHERE att.ItemId = i.Id AND att.IsDeleted = 0) THEN 1 ELSE 0 END as HasAttachment,
      CASE WHEN EXISTS (SELECT 1 FROM TotpCodes tc WHERE tc.ItemId = i.Id AND tc.IsDeleted = 0) THEN 1 ELSE 0 END as HasTotp,
      i.CreatedAt,
      i.UpdatedAt,
      i.DeletedAt
    FROM Items i
    LEFT JOIN Logos l ON i.LogoId = l.Id
    WHERE i.IsDeleted = 0 AND i.DeletedAt IS NOT NULL
    ORDER BY i.DeletedAt DESC`),Ue(an,"COUNT_RECENTLY_DELETED",`
    SELECT COUNT(*) as count
    FROM Items
    WHERE IsDeleted = 0 AND DeletedAt IS NOT NULL`),Ue(an,"GET_FIELD_VALUES_FOR_ITEM",`
    SELECT
      fv.FieldKey,
      fv.FieldDefinitionId,
      fd.Label as CustomLabel,
      fd.FieldType as CustomFieldType,
      fd.IsHidden as CustomIsHidden,
      fd.EnableHistory as CustomEnableHistory,
      fv.Value,
      fv.Weight as DisplayOrder
    FROM FieldValues fv
    LEFT JOIN FieldDefinitions fd ON fv.FieldDefinitionId = fd.Id
    WHERE fv.ItemId = ? AND fv.IsDeleted = 0
    ORDER BY fv.Weight`),Ue(an,"GET_TAGS_FOR_ITEM",`
    SELECT
      t.Id,
      t.Name,
      t.Color
    FROM ItemTags it
    INNER JOIN Tags t ON it.TagId = t.Id
    WHERE it.ItemId = ? AND it.IsDeleted = 0 AND t.IsDeleted = 0
    ORDER BY t.DisplayOrder, t.Name`),Ue(an,"INSERT_ITEM",`
    INSERT INTO Items (Id, Name, ItemType, LogoId, FolderId, CreatedAt, UpdatedAt, IsDeleted)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?)`),Ue(an,"UPDATE_ITEM",`
    UPDATE Items
    SET Name = ?,
        ItemType = ?,
        FolderId = ?,
        LogoId = COALESCE(?, LogoId),
        UpdatedAt = ?
    WHERE Id = ?`),Ue(an,"UPDATE_ITEM_WITH_LOGO",`
    UPDATE Items
    SET Name = ?,
        ItemType = ?,
        FolderId = ?,
        LogoId = ?,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(an,"TRASH_ITEM",`
    UPDATE Items
    SET DeletedAt = ?,
        UpdatedAt = ?
    WHERE Id = ? AND IsDeleted = 0`),Ue(an,"RESTORE_ITEM",`
    UPDATE Items
    SET DeletedAt = NULL,
        UpdatedAt = ?
    WHERE Id = ? AND IsDeleted = 0 AND DeletedAt IS NOT NULL`),Ue(an,"TOMBSTONE_ITEM",`
    UPDATE Items
    SET IsDeleted = 1,
        Name = NULL,
        LogoId = NULL,
        FolderId = NULL,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(an,"GET_ALL_EMAIL_ADDRESSES",`
    SELECT DISTINCT fv.Value as Email
    FROM FieldValues fv
    INNER JOIN Items i ON fv.ItemId = i.Id
    WHERE fv.FieldKey = ?
      AND fv.Value IS NOT NULL
      AND fv.Value != ''
      AND fv.IsDeleted = 0
      AND i.IsDeleted = 0
      AND i.DeletedAt IS NULL`),Ue(an,"GET_ITEM_FIELDS",`
    SELECT Name, ItemType, FolderId, LogoId
    FROM Items
    WHERE Id = ?`);let cn=an;class Ti{}Ue(Ti,"GET_EXISTING_FOR_ITEM",`
    SELECT Id, FieldKey, FieldDefinitionId, Value, Weight
    FROM FieldValues
    WHERE ItemId = ? AND IsDeleted = 0`),Ue(Ti,"INSERT",`
    INSERT INTO FieldValues (Id, ItemId, FieldDefinitionId, FieldKey, Value, Weight, CreatedAt, UpdatedAt, IsDeleted)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`),Ue(Ti,"UPDATE",`
    UPDATE FieldValues
    SET Value = ?,
        Weight = ?,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(Ti,"SOFT_DELETE",`
    UPDATE FieldValues
    SET IsDeleted = 1,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(Ti,"GET_FOR_HISTORY",`
    SELECT FieldKey, Value
    FROM FieldValues
    WHERE ItemId = ? AND IsDeleted = 0 AND FieldKey IS NOT NULL`);class fr{}Ue(fr,"EXISTS",`
    SELECT Id FROM FieldDefinitions WHERE Id = ?`),Ue(fr,"EXISTS_ACTIVE",`
    SELECT Id FROM FieldDefinitions WHERE Id = ? AND IsDeleted = 0`),Ue(fr,"INSERT",`
    INSERT INTO FieldDefinitions (Id, FieldType, Label, IsMultiValue, IsHidden, EnableHistory, Weight, ApplicableToTypes, CreatedAt, UpdatedAt, IsDeleted)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`),Ue(fr,"UPDATE",`
    UPDATE FieldDefinitions
    SET Label = ?,
        FieldType = ?,
        IsHidden = ?,
        Weight = ?,
        UpdatedAt = ?
    WHERE Id = ?`);class Hi{static softDeleteOld(e){return`
      UPDATE FieldHistories
      SET IsDeleted = 1, UpdatedAt = ?
      WHERE Id IN (${Array(e).fill("?").join(",")})`}}Ue(Hi,"INSERT",`
    INSERT INTO FieldHistories (Id, ItemId, FieldDefinitionId, FieldKey, ValueSnapshot, ChangedAt, CreatedAt, UpdatedAt, IsDeleted)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`),Ue(Hi,"GET_FOR_FIELD",`
    SELECT
      Id,
      ItemId,
      FieldKey,
      ValueSnapshot,
      ChangedAt,
      CreatedAt,
      UpdatedAt
    FROM FieldHistories
    WHERE ItemId = ? AND FieldKey = ? AND IsDeleted = 0
    ORDER BY ChangedAt DESC
    LIMIT ?`),Ue(Hi,"GET_FOR_PRUNING",`
    SELECT Id, ChangedAt
    FROM FieldHistories
    WHERE ItemId = ? AND FieldKey = ? AND IsDeleted = 0
    ORDER BY ChangedAt DESC`),Ue(Hi,"SOFT_DELETE",`
    UPDATE FieldHistories
    SET IsDeleted = 1, UpdatedAt = ?
    WHERE Id = ?`);class Ar{}Ue(Ar,"GET_BY_ITEM_ID",`
    SELECT Id, Name, SecretKey
    FROM TotpCodes
    WHERE ItemId = ? AND IsDeleted = 0`),Ue(Ar,"INSERT",`
    INSERT INTO TotpCodes (Id, Name, SecretKey, ItemId, CreatedAt, UpdatedAt, IsDeleted)
    VALUES (?, ?, ?, ?, ?, ?, ?)`),Ue(Ar,"UPDATE",`
    UPDATE TotpCodes
    SET Name = ?,
        SecretKey = ?,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(Ar,"SOFT_DELETE",`
    UPDATE TotpCodes
    SET IsDeleted = 1,
        UpdatedAt = ?
    WHERE Id = ?`);class Lo{}Ue(Lo,"INSERT",`
    INSERT INTO Attachments (Id, Filename, Blob, ItemId, CreatedAt, UpdatedAt, IsDeleted)
    VALUES (?, ?, ?, ?, ?, ?, ?)`),Ue(Lo,"SOFT_DELETE",`
    UPDATE Attachments
    SET IsDeleted = 1,
        Blob = X'',
        UpdatedAt = ?
    WHERE Id = ?`);const $u=4;function qM(t){const e=new Map;t.forEach(s=>{e.set(s.Id,{...s,children:[],depth:0,path:[]})});const n=[];t.forEach(s=>{const l=e.get(s.Id);if(!s.ParentFolderId)l.depth=0,l.path=[s.Id],n.push(l);else{const c=e.get(s.ParentFolderId);c?(l.depth=c.depth+1,l.path=[...c.path,s.Id],c.children.push(l)):(l.depth=0,l.path=[s.Id],n.push(l))}});const r=s=>{s.sort((l,c)=>l.Weight!==c.Weight?l.Weight-c.Weight:l.Name.localeCompare(c.Name,void 0,{sensitivity:"base"})),s.forEach(l=>r(l.children))};return r(n),n}function YM(t,e){if(!e.find(l=>l.Id===t))return null;let r=0,s=t;for(;s;){const l=e.find(c=>c.Id===s);if(!l||!l.ParentFolderId||(r++,s=l.ParentFolderId,r>$u))break}return r}function wf(t,e){if(!t)return[];const n=[];let r=t,s=0;for(;r&&s<$u+1;){const l=e.find(c=>c.Id===r);if(!l)break;n.unshift(l.Name),r=l.ParentFolderId,s++}return n}function LN(t,e){if(!t)return[];const n=[];let r=t,s=0;for(;r&&s<$u+1;){const l=e.find(c=>c.Id===r);if(!l)break;n.unshift(l.Id),r=l.ParentFolderId,s++}return n}function JM(t,e=3){if(t.length<=e)return t;if(e===2)return[t[0],"...",t[t.length-1]];if(e===3)return[t[0],"...",t[t.length-1]];const n=Math.ceil((e-1)/2),r=Math.floor((e-1)/2);return[...t.slice(0,n),"...",...t.slice(-r)]}function XM(t,e){const n=YM(t,e);return n!==null&&n<$u}function Oh(t,e){const n=[],r=s=>{e.filter(l=>l.ParentFolderId===s).forEach(l=>{n.push(l.Id),r(l.Id)})};return r(t),n}function $M(t,e,n){const r=Oh(t,n),s=[t,...r];return e.filter(l=>l.FolderId&&s.includes(l.FolderId)).length}class ZM extends Ud{constructor(e,n){super(e),this.logoRepository=n}buildFolderPaths(){const e=new Map;try{const n=this.client.executeQuery("SELECT Id, Name, ParentFolderId, Weight FROM Folders WHERE IsDeleted = 0");if(n.length===0)return e;for(const r of n){const s=wf(r.Id,n);s.length>0&&e.set(r.Id,s)}return e}catch(n){if(n instanceof Error&&n.message.includes("no such table"))return e;throw n}}getAll(){let e;try{e=this.client.executeQuery(cn.GET_ALL_ACTIVE)}catch(p){if(p instanceof Error&&p.message.includes("no such table"))return[];throw p}if(e.length===0)return[];const n=e.map(p=>p.Id),r=this.client.executeQuery(cn.getFieldValuesForItems(n.length),n),s=Up.processFieldRows(r),l=this.client.executeQuery(cn.getTagsForItems(n.length),n),c=Wl.groupTagsByItem(l),m=this.buildFolderPaths();return Wl.mapRows(e,s,c,m)}getById(e){const n=this.client.executeQuery(cn.GET_BY_ID,[e]);if(n.length===0)return null;const r=this.client.executeQuery(cn.GET_FIELD_VALUES_FOR_ITEM,[e]),s=Up.processFieldRowsForSingleItem(r),l=this.client.executeQuery(cn.GET_TAGS_FOR_ITEM,[e]),c=Wl.mapTagRows(l);let m;return n[0].FolderId&&(m=this.buildFolderPaths().get(n[0].FolderId)),Wl.mapRow(n[0],s,c,m)}getAllEmailAddresses(){return this.client.executeQuery(cn.GET_ALL_EMAIL_ADDRESSES,[nn.LoginEmail]).map(n=>n.Email)}async create(e,n=[],r=[]){return this.withTransaction(async()=>{const s=this.now(),l=e.Id||this.generateId(),c=this.resolveLogoId(e,s);return this.client.executeUpdate(cn.INSERT_ITEM,[l,e.Name??null,e.ItemType,c,e.FolderId??null,s,s,0]),e.Fields&&e.Fields.length>0&&this.insertFieldValues(l,e.Fields,e.ItemType,s),this.insertTotpCodes(l,r,s),this.insertAttachments(l,n,s),l})}async update(e,n=[],r=[],s=[],l=[]){return this.withTransaction(async()=>{const c=this.now(),m=this.resolveLogoId(e,c),p=this.client.executeQuery(cn.GET_ITEM_FIELDS,[e.Id])[0];if(p){const g=(e.Name??null)!==p.Name,A=String(e.ItemType)!==String(p.ItemType),f=(e.FolderId??null)!==p.FolderId,v=m!==p.LogoId;(g||A||f||v)&&this.client.executeUpdate(cn.UPDATE_ITEM_WITH_LOGO,[e.Name??null,e.ItemType,e.FolderId??null,m,c,e.Id])}return await this.trackFieldHistory(e.Id,e.Fields,c),this.updateFieldValues(e,c),this.handleTotpCodes(e.Id,l,s,c),this.handleAttachments(e.Id,r,n,c),1})}async trash(e){return this.withTransaction(async()=>{const n=this.now();return this.client.executeUpdate(cn.TRASH_ITEM,[n,n,e])})}async restore(e){return this.withTransaction(async()=>{const n=this.now();return this.client.executeUpdate(cn.RESTORE_ITEM,[n,e])})}async permanentlyDelete(e){return this.withTransaction(async()=>{const n=this.now();return this.hardDeleteByForeignKey("FieldValues","ItemId",e),this.hardDeleteByForeignKey("FieldHistories","ItemId",e),this.hardDeleteByForeignKey("Passkeys","ItemId",e),this.hardDeleteByForeignKey("TotpCodes","ItemId",e),this.hardDeleteByForeignKey("Attachments","ItemId",e),this.hardDeleteByForeignKey("ItemTags","ItemId",e),this.client.executeUpdate(cn.TOMBSTONE_ITEM,[n,e])})}getRecentlyDeleted(){let e;try{e=this.client.executeQuery(`
        SELECT
          i.Id,
          i.Name,
          i.ItemType,
          i.FolderId,
          l.FileData as Logo,
          i.DeletedAt,
          CASE WHEN EXISTS (SELECT 1 FROM Passkeys pk WHERE pk.ItemId = i.Id AND pk.IsDeleted = 0) THEN 1 ELSE 0 END as HasPasskey,
          CASE WHEN EXISTS (SELECT 1 FROM Attachments att WHERE att.ItemId = i.Id AND att.IsDeleted = 0) THEN 1 ELSE 0 END as HasAttachment,
          CASE WHEN EXISTS (SELECT 1 FROM TotpCodes tc WHERE tc.ItemId = i.Id AND tc.IsDeleted = 0) THEN 1 ELSE 0 END as HasTotp,
          i.CreatedAt,
          i.UpdatedAt
        FROM Items i
        LEFT JOIN Logos l ON i.LogoId = l.Id
        WHERE i.IsDeleted = 0 AND i.DeletedAt IS NOT NULL
        ORDER BY i.DeletedAt DESC`)}catch(c){if(c instanceof Error&&c.message.includes("no such table"))return[];throw c}if(e.length===0)return[];const n=e.map(c=>c.Id),r=this.client.executeQuery(cn.getFieldValuesForItems(n.length),n),s=Up.processFieldRows(r),l=this.buildFolderPaths();return e.map(c=>Wl.mapDeletedItemRow(c,s.get(c.Id)||[],c.FolderId?l.get(c.FolderId):void 0))}getRecentlyDeletedCount(){var e;try{return((e=this.client.executeQuery(cn.COUNT_RECENTLY_DELETED)[0])==null?void 0:e.count)||0}catch(n){if(n instanceof Error&&n.message.includes("no such table"))return 0;throw n}}getFieldHistory(e,n){return this.client.executeQuery(Hi.GET_FOR_FIELD,[e,n,Rp]).map(s=>({Id:s.Id,ItemId:s.ItemId,FieldKey:s.FieldKey,ValueSnapshot:s.ValueSnapshot,ChangedAt:s.ChangedAt,CreatedAt:s.CreatedAt,UpdatedAt:s.UpdatedAt}))}async deleteFieldHistory(e){return this.withTransaction(async()=>{const n=this.now();return this.client.executeUpdate(Hi.SOFT_DELETE,[n,e])})}resolveLogoId(e,n){var m;const r=(m=e.Fields)==null?void 0:m.find(p=>p.FieldKey==="login.url"),s=r==null?void 0:r.Value,l=Array.isArray(s)?s[0]:s,c=this.logoRepository.extractSourceFromUrl(l);if(e.Logo){const p=this.logoRepository.convertLogoToUint8Array(e.Logo);if(p)return this.logoRepository.getOrCreate(c,p,n)}else if(c!=="unknown")return this.logoRepository.getIdForSource(c);return null}insertFieldValues(e,n,r,s){for(const l of n){if((!l.Value||typeof l.Value=="string"&&l.Value.trim()==="")&&!l.IsCustomField)continue;let m=null;l.IsCustomField&&(m=this.ensureFieldDefinition(l,r,s));const g=(Array.isArray(l.Value)?l.Value:[l.Value]).filter(f=>f&&f.trim()!==""),A=l.IsCustomField&&g.length===0?[""]:g;for(const f of A)this.client.executeUpdate(Ti.INSERT,[this.generateId(),e,m,l.IsCustomField?null:l.FieldKey,f,l.DisplayOrder??0,s,s,0]);if(l.EnableHistory&&g.length>0){const f=this.generateId(),v=JSON.stringify(g);this.client.executeUpdate(Hi.INSERT,[f,e,null,l.FieldKey,v,s,s,s,0])}}}ensureFieldDefinition(e,n,r){return this.client.executeQuery(fr.EXISTS,[e.FieldKey]).length===0&&this.client.executeUpdate(fr.INSERT,[e.FieldKey,e.FieldType,e.Label,0,e.IsHidden?1:0,0,e.DisplayOrder??0,n,r,r,0]),e.FieldKey}updateFieldValues(e,n){const r=this.client.executeQuery(Ti.GET_EXISTING_FOR_ITEM,[e.Id]),s=new Map,l=new Map;for(const m of r){const p=m.FieldKey||m.FieldDefinitionId||"",g=l.get(p)||0;s.set(`${p}:${g}`,{Id:m.Id,Value:m.Value,Weight:m.Weight}),l.set(p,g+1)}const c=new Set;if(e.Fields&&e.Fields.length>0)for(const m of e.Fields){if((!m.Value||typeof m.Value=="string"&&m.Value.trim()==="")&&!m.IsCustomField)continue;let g=null;m.IsCustomField&&(g=this.ensureOrUpdateFieldDefinition(m,e.ItemType,n));const A=Array.isArray(m.Value)?m.Value:[m.Value],f=m.FieldKey,v=A.filter(S=>S&&(typeof S!="string"||S.trim()!=="")),w=m.IsCustomField&&v.length===0?[""]:v;for(let S=0;S<w.length;S++){const T=w[S],k=`${f}:${S}`,L=s.get(k);if(L){c.add(L.Id);const R=m.DisplayOrder??0;(L.Value!==T||L.Weight!==R)&&this.client.executeUpdate(Ti.UPDATE,[T,R,n,L.Id])}else this.client.executeUpdate(Ti.INSERT,[this.generateId(),e.Id,g,m.IsCustomField?null:m.FieldKey,T,m.DisplayOrder??0,n,n,0])}}for(const m of r)c.has(m.Id)||this.client.executeUpdate(Ti.SOFT_DELETE,[n,m.Id])}ensureOrUpdateFieldDefinition(e,n,r){return this.client.executeQuery(fr.EXISTS_ACTIVE,[e.FieldKey]).length===0?this.client.executeUpdate(fr.INSERT,[e.FieldKey,e.FieldType,e.Label,0,e.IsHidden?1:0,0,e.DisplayOrder??0,n,r,r,0]):this.client.executeUpdate(fr.UPDATE,[e.Label,e.FieldType,e.IsHidden?1:0,e.DisplayOrder??0,r,e.FieldKey]),e.FieldKey}async trackFieldHistory(e,n,r){const s=this.client.executeQuery(Ti.GET_FOR_HISTORY,[e]),l={};for(const c of s)l[c.FieldKey]||(l[c.FieldKey]=[]),l[c.FieldKey].push(c.Value);for(const c of n){if(!c.EnableHistory)continue;const m=l[c.FieldKey]||[],g=(Array.isArray(c.Value)?c.Value:[c.Value]).filter(f=>f&&f.trim()!=="");if((m.length!==g.length||!m.every((f,v)=>f===g[v]))&&g.length>0){const f=this.generateId(),v=JSON.stringify(g);this.client.executeUpdate(Hi.INSERT,[f,e,null,c.FieldKey,v,r,r,r,0]),await this.pruneFieldHistory(e,c.FieldKey,r)}}}async pruneFieldHistory(e,n,r){const s=this.client.executeQuery(Hi.GET_FOR_PRUNING,[e,n]);if(s.length>Rp){const c=s.slice(Rp).map(m=>m.Id);c.length>0&&this.client.executeUpdate(Hi.softDeleteOld(c.length),[r,...c])}}insertTotpCodes(e,n,r){for(const s of n)this.client.executeUpdate(Ar.INSERT,[s.Id||this.generateId(),s.Name,s.SecretKey,e,r,r,0])}handleTotpCodes(e,n,r,s){const l=this.client.executeQuery(Ar.GET_BY_ITEM_ID,[e]),c=new Map(l.map(m=>[m.Id,m]));for(const m of n){const p=r.includes(m.Id);if(m.IsDeleted)p&&this.client.executeUpdate(Ar.SOFT_DELETE,[s,m.Id]);else if(p){const g=c.get(m.Id);g&&(g.Name!==m.Name||g.SecretKey!==m.SecretKey)&&this.client.executeUpdate(Ar.UPDATE,[m.Name,m.SecretKey,s,m.Id])}else this.client.executeUpdate(Ar.INSERT,[m.Id||this.generateId(),m.Name,m.SecretKey,e,s,s,0])}}insertAttachments(e,n,r){for(const s of n){const l=s.Blob instanceof Uint8Array?s.Blob:new Uint8Array(s.Blob);this.client.executeUpdate(Lo.INSERT,[s.Id||this.generateId(),s.Filename,l,e,r,r,0])}}handleAttachments(e,n,r,s){const l=new Set(n.map(c=>c.Id));for(const c of r)l.has(c)||this.client.executeUpdate(Lo.SOFT_DELETE,[s,c]);for(const c of n){const m=r.includes(c.Id);if(c.IsDeleted)m&&this.client.executeUpdate(Lo.SOFT_DELETE,[s,c.Id]);else if(!m){const p=c.Blob instanceof Uint8Array?c.Blob:new Uint8Array(c.Blob);this.client.executeUpdate(Lo.INSERT,[c.Id||this.generateId(),c.Filename,p,e,s,s,0])}}}}class yn{}Ue(yn,"BASE_SELECT_WITH_ITEM",`
    SELECT
      p.Id,
      p.ItemId,
      p.RpId,
      p.UserHandle,
      p.PublicKey,
      p.PrivateKey,
      p.DisplayName,
      p.PrfKey,
      p.AdditionalData,
      p.CreatedAt,
      p.UpdatedAt,
      p.IsDeleted,
      i.Name as ServiceName,
      (SELECT fv.Value FROM FieldValues fv WHERE fv.ItemId = i.Id AND fv.FieldKey = '${nn.LoginUsername}' AND fv.IsDeleted = 0 LIMIT 1) as Username
    FROM Passkeys p
    INNER JOIN Items i ON p.ItemId = i.Id`),Ue(yn,"BASE_SELECT",`
    SELECT
      p.Id,
      p.ItemId,
      p.RpId,
      p.UserHandle,
      p.PublicKey,
      p.PrivateKey,
      p.DisplayName,
      p.PrfKey,
      p.AdditionalData,
      p.CreatedAt,
      p.UpdatedAt,
      p.IsDeleted
    FROM Passkeys p`),Ue(yn,"GET_BY_RP_ID",`
    SELECT
      p.Id,
      p.ItemId,
      p.RpId,
      p.UserHandle,
      p.PublicKey,
      p.PrivateKey,
      p.DisplayName,
      p.PrfKey,
      p.AdditionalData,
      p.CreatedAt,
      p.UpdatedAt,
      p.IsDeleted,
      i.Name as ServiceName,
      (SELECT fv.Value FROM FieldValues fv WHERE fv.ItemId = i.Id AND fv.FieldKey = '${nn.LoginUsername}' AND fv.IsDeleted = 0 LIMIT 1) as Username
    FROM Passkeys p
    INNER JOIN Items i ON p.ItemId = i.Id
    WHERE p.RpId = ? AND p.IsDeleted = 0
      AND i.IsDeleted = 0 AND i.DeletedAt IS NULL
    ORDER BY p.CreatedAt DESC`),Ue(yn,"GET_BY_ID_WITH_ITEM",`
    SELECT
      p.Id,
      p.ItemId,
      p.RpId,
      p.UserHandle,
      p.PublicKey,
      p.PrivateKey,
      p.DisplayName,
      p.PrfKey,
      p.AdditionalData,
      p.CreatedAt,
      p.UpdatedAt,
      p.IsDeleted,
      i.Name as ServiceName,
      (SELECT fv.Value FROM FieldValues fv WHERE fv.ItemId = i.Id AND fv.FieldKey = '${nn.LoginUsername}' AND fv.IsDeleted = 0 LIMIT 1) as Username
    FROM Passkeys p
    INNER JOIN Items i ON p.ItemId = i.Id
    WHERE p.Id = ? AND p.IsDeleted = 0
      AND i.IsDeleted = 0 AND i.DeletedAt IS NULL`),Ue(yn,"GET_BY_ITEM_ID",`
    SELECT
      p.Id,
      p.ItemId,
      p.RpId,
      p.UserHandle,
      p.PublicKey,
      p.PrivateKey,
      p.DisplayName,
      p.PrfKey,
      p.AdditionalData,
      p.CreatedAt,
      p.UpdatedAt,
      p.IsDeleted
    FROM Passkeys p
    WHERE p.ItemId = ? AND p.IsDeleted = 0
    ORDER BY p.CreatedAt DESC`),Ue(yn,"INSERT",`
    INSERT INTO Passkeys (
      Id, ItemId, RpId, UserHandle, PublicKey, PrivateKey,
      PrfKey, DisplayName, AdditionalData, CreatedAt, UpdatedAt, IsDeleted
    )
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`),Ue(yn,"UPDATE_DISPLAY_NAME",`
    UPDATE Passkeys
    SET DisplayName = ?,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(yn,"SOFT_DELETE",`
    UPDATE Passkeys
    SET IsDeleted = 1,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(yn,"SOFT_DELETE_BY_ITEM",`
    UPDATE Passkeys
    SET IsDeleted = 1,
        UpdatedAt = ?
    WHERE ItemId = ?`);class e_ extends Ud{getByRpId(e){const n=this.client.executeQuery(yn.GET_BY_RP_ID,[e]);return Mp.mapRowsWithItem(n)}getById(e){const n=this.client.executeQuery(yn.GET_BY_ID_WITH_ITEM,[e]);return n.length===0?null:Mp.mapRowWithItem(n[0])}getByItemId(e){const n=this.client.executeQuery(yn.GET_BY_ITEM_ID,[e]);return Mp.mapRows(n)}async create(e){return this.withTransaction(async()=>{const n=this.now();let r=null;e.PrfKey&&(r=e.PrfKey instanceof Uint8Array?e.PrfKey:new Uint8Array(e.PrfKey));let s=null;e.UserHandle&&(s=e.UserHandle instanceof Uint8Array?e.UserHandle:new Uint8Array(e.UserHandle)),this.client.executeUpdate(yn.INSERT,[e.Id,e.ItemId,e.RpId,s,e.PublicKey,e.PrivateKey,r,e.DisplayName,e.AdditionalData??null,n,n,0])})}async deleteById(e){return this.withTransaction(async()=>{const n=this.now();return this.client.executeUpdate(yn.SOFT_DELETE,[n,e])})}async deleteByItemId(e){return this.withTransaction(async()=>{const n=this.now();return this.client.executeUpdate(yn.SOFT_DELETE_BY_ITEM,[n,e])})}async updateDisplayName(e,n){return this.withTransaction(async()=>{const r=this.now();return this.client.executeUpdate(yn.UPDATE_DISPLAY_NAME,[n,r,e])})}}class fa{}Ue(fa,"GET_ALL",`
    SELECT Id, Name, ParentFolderId, Weight
    FROM Folders
    WHERE IsDeleted = 0
    ORDER BY Weight, Name`),Ue(fa,"GET_BY_ID",`
    SELECT Id, Name, ParentFolderId
    FROM Folders
    WHERE Id = ? AND IsDeleted = 0`),Ue(fa,"INSERT",`
    INSERT INTO Folders (Id, Name, ParentFolderId, Weight, IsDeleted, CreatedAt, UpdatedAt)
    VALUES (?, ?, ?, 0, 0, ?, ?)`),Ue(fa,"UPDATE_NAME",`
    UPDATE Folders
    SET Name = ?,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(fa,"SOFT_DELETE",`
    UPDATE Folders
    SET IsDeleted = 1,
        UpdatedAt = ?
    WHERE Id = ?`),Ue(fa,"CLEAR_ITEMS_FOLDER",`
    UPDATE Items
    SET FolderId = NULL,
        UpdatedAt = ?
    WHERE FolderId = ?`),Ue(fa,"MOVE_ITEMS_TO_FOLDER",`
    UPDATE Items
    SET FolderId = ?,
        UpdatedAt = ?
    WHERE FolderId = ?`),Ue(fa,"TRASH_ITEMS_IN_FOLDER",`
    UPDATE Items
    SET DeletedAt = ?,
        UpdatedAt = ?,
        FolderId = NULL
    WHERE FolderId = ? AND IsDeleted = 0 AND DeletedAt IS NULL`),Ue(fa,"GET_CHILD_FOLDER_IDS",`
    SELECT Id
    FROM Folders
    WHERE ParentFolderId = ? AND IsDeleted = 0`),Ue(fa,"UPDATE_PARENT_FOLDER",`
    UPDATE Folders
    SET ParentFolderId = ?,
        UpdatedAt = ?
    WHERE ParentFolderId = ?`),Ue(fa,"MOVE_ITEM",`
    UPDATE Items
    SET FolderId = ?,
        UpdatedAt = ?
    WHERE Id = ?`);class t_ extends Ud{async create(e,n){return this.withTransaction(async()=>{const r=crypto.randomUUID().toUpperCase(),s=this.now();return this.client.executeUpdate(fa.INSERT,[r,e,n||null,s,s]),r})}getAll(){try{return this.client.executeQuery(fa.GET_ALL)}catch(e){if(e instanceof Error&&e.message.includes("no such table"))return[];throw e}}getById(e){const n=this.client.executeQuery(fa.GET_BY_ID,[e]);return n.length>0?n[0]:null}async update(e,n){return this.withTransaction(async()=>{const r=this.now();return this.client.executeUpdate(fa.UPDATE_NAME,[n,r,e])})}getAllChildFolderIds(e){const n=this.client.executeQuery(fa.GET_CHILD_FOLDER_IDS,[e]),r=[];for(const s of n){r.push(s.Id);const l=this.getAllChildFolderIds(s.Id);r.push(...l)}return r}async delete(e){return this.withTransaction(async()=>{const n=this.now(),r=this.getById(e),s=(r==null?void 0:r.ParentFolderId)||null;return s?this.client.executeUpdate(fa.MOVE_ITEMS_TO_FOLDER,[s,n,e]):this.client.executeUpdate(fa.CLEAR_ITEMS_FOLDER,[n,e]),this.client.executeUpdate(fa.UPDATE_PARENT_FOLDER,[s,n,e]),this.client.executeUpdate(fa.SOFT_DELETE,[n,e])})}async deleteWithContents(e){return this.withTransaction(async()=>{const n=this.now(),r=this.getAllChildFolderIds(e);let s=0;s+=this.client.executeUpdate(fa.TRASH_ITEMS_IN_FOLDER,[n,n,e]);for(const l of r)s+=this.client.executeUpdate(fa.TRASH_ITEMS_IN_FOLDER,[n,n,l]);for(const l of r)this.client.executeUpdate(fa.SOFT_DELETE,[n,l]);return this.client.executeUpdate(fa.SOFT_DELETE,[n,e]),s})}async moveItem(e,n){return this.withTransaction(async()=>{const r=this.now();return this.client.executeUpdate(fa.MOVE_ITEM,[n,r,e])})}}class _n{}Ue(_n,"GET_SETTING",`
    SELECT s.Value
    FROM Settings s
    WHERE s.Key = ?`),Ue(_n,"COUNT_BY_KEY",`
    SELECT COUNT(*) as count
    FROM Settings
    WHERE Key = ?`),Ue(_n,"UPDATE_SETTING",`
    UPDATE Settings
    SET Value = ?,
        UpdatedAt = ?
    WHERE Key = ?`),Ue(_n,"INSERT_SETTING",`
    INSERT INTO Settings (Key, Value, CreatedAt, UpdatedAt, IsDeleted)
    VALUES (?, ?, ?, ?, ?)`),Ue(_n,"GET_ENCRYPTION_KEYS",`
    SELECT
      x.PublicKey,
      x.PrivateKey,
      x.IsPrimary
    FROM EncryptionKeys x`),Ue(_n,"GET_TOTP_FOR_ITEM",`
    SELECT
      Id,
      Name,
      SecretKey,
      ItemId
    FROM TotpCodes
    WHERE ItemId = ? AND IsDeleted = 0`),Ue(_n,"GET_ATTACHMENTS_FOR_ITEM",`
    SELECT
      Id,
      Filename,
      Blob,
      ItemId,
      CreatedAt,
      UpdatedAt,
      IsDeleted
    FROM Attachments
    WHERE ItemId = ? AND IsDeleted = 0`);class a_ extends Ud{getSetting(e,n=""){const r=this.client.executeQuery(_n.GET_SETTING,[e]);return r.length>0?r[0].Value:n}getDefaultIdentityLanguage(){return this.getSetting("DefaultIdentityLanguage")}getDefaultIdentityGender(){return this.getSetting("DefaultIdentityGender","random")}getDefaultIdentityAgeRange(){return this.getSetting("DefaultIdentityAgeRange","random")}getPasswordSettings(){const e=this.getSetting("PasswordGenerationSettings"),n={Length:18,UseLowercase:!0,UseUppercase:!0,UseNumbers:!0,UseSpecialChars:!0,UseNonAmbiguousChars:!1};try{if(e)return{...n,...JSON.parse(e)}}catch(r){console.warn("Failed to parse password settings:",r)}return n}getAllEncryptionKeys(){return this.client.executeQuery(_n.GET_ENCRYPTION_KEYS)}getTotpCodesForItem(e){try{return this.tableExists("TotpCodes")?this.client.executeQuery(_n.GET_TOTP_FOR_ITEM,[e]):[]}catch(n){return console.error("Error getting TOTP codes for item:",n),[]}}getAttachmentsForItem(e){try{return this.tableExists("Attachments")?this.client.executeQuery(_n.GET_ATTACHMENTS_FOR_ITEM,[e]):[]}catch(n){return console.error("Error getting attachments for item:",n),[]}}getDefaultEmailDomain(){return this.getSetting("DefaultEmailDomain")}getEffectiveIdentityLanguage(){const e=this.getDefaultIdentityLanguage();return e||navigator.language.substring(0,2)}getCredentialsSortOrder(){const e=this.getSetting("CredentialsSortOrder","OldestFirst");return e==="OldestFirst"||e==="NewestFirst"||e==="Alphabetical"?e:"OldestFirst"}updateSetting(e,n){var c;const r=this.now();((c=this.client.executeQuery(_n.COUNT_BY_KEY,[e])[0])==null?void 0:c.count)>0?this.client.executeUpdate(_n.UPDATE_SETTING,[n,r,e]):this.client.executeUpdate(_n.INSERT_SETTING,[e,n,r,r,0])}setCredentialsSortOrder(e){this.updateSetting("CredentialsSortOrder",e)}}class yr{}Ue(yr,"GET_ID_FOR_SOURCE",`
    SELECT Id FROM Logos
    WHERE Source = ? AND IsDeleted = 0
    LIMIT 1`),Ue(yr,"GET_BY_SOURCE_INCLUDING_DELETED",`
    SELECT Id, IsDeleted FROM Logos
    WHERE Source = ?
    LIMIT 1`),Ue(yr,"INSERT",`
    INSERT INTO Logos (Id, Source, FileData, CreatedAt, UpdatedAt, IsDeleted)
    VALUES (?, ?, ?, ?, ?, ?)`),Ue(yr,"RESTORE_WITH_FILE_DATA",`
    UPDATE Logos
    SET IsDeleted = 0,
        FileData = ?,
        UpdatedAt = ?
    WHERE Id = ?`);class n_ extends Ud{hasLogoForSource(e){return this.client.executeQuery(yr.GET_ID_FOR_SOURCE,[e]).length>0}getIdForSource(e){const n=this.client.executeQuery(yr.GET_ID_FOR_SOURCE,[e]);return n.length>0?n[0].Id:null}getOrCreate(e,n,r){const s=this.client.executeQuery(yr.GET_BY_SOURCE_INCLUDING_DELETED,[e]);if(s.length>0){const c=s[0];return c.IsDeleted===1&&this.client.executeUpdate(yr.RESTORE_WITH_FILE_DATA,[n,r,c.Id]),c.Id}const l=this.generateId();return this.client.executeUpdate(yr.INSERT,[l,e,n,r,r,0]),l}extractSourceFromUrl(e){if(!e)return"unknown";try{return new URL(e.startsWith("http")?e:`https://${e}`).hostname.toLowerCase().replace(/^www\./,"")}catch{return"unknown"}}convertLogoToUint8Array(e){if(!e)return null;try{if(typeof e=="object"&&!ArrayBuffer.isView(e)&&!Array.isArray(e)){const n=Object.values(e);return new Uint8Array(n)}if(Array.isArray(e)||e instanceof ArrayBuffer||e instanceof Uint8Array)return new Uint8Array(e)}catch(n){console.warn("Failed to convert logo to Uint8Array:",n)}return null}}class jh{constructor(){Ue(this,"db",null);Ue(this,"isInTransaction",!1);Ue(this,"_items",null);Ue(this,"_passkeys",null);Ue(this,"_folders",null);Ue(this,"_settings",null);Ue(this,"_logos",null)}get items(){return this._items||(this._items=new ZM(this,this.logos)),this._items}get passkeys(){return this._passkeys||(this._passkeys=new e_(this)),this._passkeys}get folders(){return this._folders||(this._folders=new t_(this)),this._folders}get settings(){return this._settings||(this._settings=new a_(this)),this._settings}get logos(){return this._logos||(this._logos=new n_(this)),this._logos}getDb(){return this.db}async initializeFromBase64(e){try{const n=atob(e),r=new Uint8Array(n.length);for(let l=0;l<n.length;l++)r[l]=n.charCodeAt(l);const s=await vM({locateFile:l=>`src/${l}`});this.db=new s.Database(r),this._items=null,this._passkeys=null,this._folders=null,this._settings=null,this._logos=null}catch(n){throw console.error("Error initializing SQLite database:",n),n}}beginTransaction(){if(!this.db)throw new Error("Database not initialized");if(this.isInTransaction)throw new Error("Transaction already in progress");try{this.db.run("BEGIN TRANSACTION"),this.isInTransaction=!0}catch(e){throw console.error("Error beginning transaction:",e),e}}async commitTransaction(){if(!this.db)throw new Error("Database not initialized");if(!this.isInTransaction)throw new Error("No transaction in progress");try{this.db.run("COMMIT"),this.isInTransaction=!1}catch(e){throw console.error("Error committing transaction:",e),e}}rollbackTransaction(){if(!this.db)throw new Error("Database not initialized");if(!this.isInTransaction)throw new Error("No transaction in progress");try{this.db.run("ROLLBACK"),this.isInTransaction=!1}catch(e){throw console.error("Error rolling back transaction:",e),e}}exportToBase64(){if(!this.db)throw new Error("Database not initialized");try{this.db.run("VACUUM");const e=this.db.export();let n="";for(let r=0;r<e.length;r++)n+=String.fromCharCode(e[r]);return btoa(n)}catch(e){throw console.error("Error exporting SQLite database:",e),e}}executeQuery(e,n=[]){if(!this.db)throw new Error("Database not initialized");try{const r=this.db.prepare(e);r.bind(n);const s=[];for(;r.step();)s.push(r.getAsObject());return r.free(),s}catch(r){throw console.error("Error executing query:",r),r}}executeUpdate(e,n=[]){if(!this.db)throw new Error("Database not initialized");try{const r=this.db.prepare(e);r.bind(n),r.step();const s=this.db.getRowsModified();return r.free(),s}catch(r){throw console.error("Error executing update:",r),r}}executeRaw(e){if(!this.db)throw new Error("Database not initialized");try{const n=e.split(";");for(const r of n){const s=r.trim();s.length===0||s.toUpperCase().startsWith("BEGIN TRANSACTION")||s.toUpperCase().startsWith("COMMIT")||s.toUpperCase().startsWith("ROLLBACK")||this.db.run(s)}}catch(n){throw console.error("Error executing raw SQL:",n),n}}close(){this.db&&(this.db.close(),this.db=null)}async getDatabaseVersion(){if(!this.db)throw new Error("Database not initialized");try{const e=this.executeQuery(`
        SELECT MigrationId
        FROM __EFMigrationsHistory
        ORDER BY MigrationId DESC
        LIMIT 1`);if(e.length===0)throw new Error("No migrations found in the database.");const n=e[0].MigrationId,r=IM(n);if(!r)throw new Error("Could not extract version from migration ID");const s=wM(r);if(!s.isCompatible){const m=await VM("common.errors.browserExtensionOutdated");throw new Cd(m)}if(s.isKnownVersion&&s.clientVersion)return s.clientVersion;const c=new Ph().getLatestVersion();return{revision:c.revision,version:r,description:`Unknown version ${r} (backwards compatible)`,releaseVersion:c.releaseVersion,compatibleUpToVersion:c.compatibleUpToVersion}}catch(e){throw console.error("Error getting database version:",e),e}}async getLatestDatabaseVersion(){const n=new Ph().getAllVersions();return n[n.length-1]}async hasPendingMigrations(){try{const e=await this.getDatabaseVersion(),n=await this.getLatestDatabaseVersion();return e.revision<n.revision}catch(e){throw console.error("Error checking pending migrations:",e),e}}static imgSrcFromBytes(e){if(!e||Array.isArray(e)&&e.length===0||e instanceof Uint8Array&&e.length===0)return null;try{const n=this.toUint8Array(e),r=this.base64Encode(n);return r?`data:${this.detectMimeType(n)};base64,${r}`:null}catch(n){return console.error("Error setting logo:",n),null}}static extractSourceFromUrl(e){if(!e)return"unknown";try{return new URL(e.startsWith("http")?e:`https://${e}`).hostname.toLowerCase().replace(/^www\./,"")}catch{return"unknown"}}static detectMimeType(e){const n=()=>{const l=new TextDecoder().decode(e.slice(0,5)).toLowerCase();return l.includes("<?xml")||l.includes("<svg")},r=()=>e[0]===0&&e[1]===0&&e[2]===1&&e[3]===0,s=()=>e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71;return n()?"image/svg+xml":r()?"image/x-icon":s()?"image/png":"image/x-icon"}static toUint8Array(e){if(e instanceof Uint8Array)return e;if(Array.isArray(e))return new Uint8Array(e);const n=Object.keys(e).length,r=new Uint8Array(n);for(let s=0;s<n;s++)r[s]=e[s];return r}static base64Encode(e){try{const n=Array.from(this.toUint8Array(e));return btoa(n.reduce((r,s)=>r+String.fromCharCode(s),""))}catch(n){return console.error("Error encoding to base64:",n),null}}}const QE={"local:publicEmailDomains":"session:publicEmailDomains","local:privateEmailDomains":"session:privateEmailDomains","local:hiddenPrivateEmailDomains":"session:hiddenPrivateEmailDomains","local:encryptionKeyDerivationParams":"session:encryptionKeyDerivationParams"};async function md(t){let e=await Te.getItem(t);if(e===null&&t in QE){const n=QE[t];e=await Te.getItem(n),e!==null&&(await Te.setItem(t,e),await Te.removeItem(n))}return e}var Bo=(t=>(t.UNKNOWN_ERROR="E-001",t.AUTH_STATUS_CHECK_FAILED="E-101",t.AUTH_STATUS_MIGRATION_CHECK_FAILED="E-102",t.AUTH_VERSION_CHECK_FAILED="E-103",t.VAULT_NOT_FOUND="E-201",t.VAULT_LOCKED="E-202",t.VAULT_DECRYPT_FAILED="E-203",t.VAULT_METADATA_READ_FAILED="E-204",t.ITEM_CREATE_FAILED="E-301",t.ITEM_UPDATE_FAILED="E-302",t.ITEM_DELETE_FAILED="E-303",t.ITEM_READ_FAILED="E-304",t.PASSKEY_CREATE_FAILED="E-401",t.PASSKEY_GET_FAILED="E-402",t.SYNC_STATUS_CHECK_FAILED="E-501",t.SYNC_VAULT_FETCH_FAILED="E-502",t.SYNC_VAULT_DECRYPT_FAILED="E-503",t.SYNC_STORE_FAILED="E-504",t.STORAGE_READ_FAILED="E-601",t.STORAGE_WRITE_FAILED="E-602",t.DATABASE_INIT_FAILED="E-603",t.ENCRYPTION_KEY_NOT_FOUND="E-604",t.MERGE_FAILED="E-701",t.MERGE_CONFLICT="E-702",t.MERGE_UPLOAD_FAILED="E-703",t.UPLOAD_FAILED="E-801",t.UPLOAD_OUTDATED="E-802",t.UPLOAD_ENCRYPT_FAILED="E-803",t.UPLOAD_TOO_LARGE="E-804",t.MIGRATION_CHECK_FAILED="E-901",t.VERSION_INCOMPATIBLE="E-902",t))(Bo||{});const i_=new Set(Object.values(Bo));function r_(t){return i_.has(t)}function Ru(t){const e=t.match(/E-\d{3}/);return e&&r_(e[0])?e[0]:null}function s_(t,e){return`${t} (Code: ${e})`}function Uo(t){return t instanceof Error?Ru(t.message)!==null:typeof t=="string"?Ru(t)!==null:!1}function ss(t,e){return t instanceof Error?t.message:typeof t=="string"?t:e}const o_=3500,DN=b.createContext(void 0),l_=({children:t})=>{const[e,n]=b.useState(null),[r,s]=b.useState(!1),[l,c]=b.useState(!1),[m,p]=b.useState(!1),g=b.useRef(!1),[A,f]=b.useState(!1),[v,w]=b.useState(!1),[S,T]=b.useState(!1),[k,L]=b.useState(0),[R,x]=b.useState(null),O=b.useCallback(()=>A||v,[A,v]),_=b.useCallback(async te=>{g.current=te,p(te),await Te.setItem("local:isOfflineMode",te)},[]);b.useEffect(()=>{(async()=>{const[ce,oe,F,J]=await Promise.all([Te.getItem("local:isOfflineMode"),Te.getItem("local:isDirty"),Te.getItem("local:serverRevision"),Te.getItem("local:lastSyncError")]);g.current=ce??!1,p(ce??!1),f(oe??!1),L(F??0),x(J??null)})()},[]),b.useEffect(()=>{const te=Te.watch("local:lastSyncError",ce=>{x(ce??null)});return()=>{te()}},[]);const j=b.useCallback(async()=>{x(null),await Te.removeItem("local:lastSyncError")},[]),G=b.useCallback(async te=>{const ce=new jh;return await ce.initializeFromBase64(te),n(ce),s(!0),c(!0),ce},[]),P=b.useCallback(async()=>{try{let te;const ce=new Promise((F,J)=>{te=setTimeout(()=>{J(new Error(s_("Background service worker timed out",Bo.UNKNOWN_ERROR)))},o_)});let oe;try{oe=await Promise.race([St("GET_VAULT",{},"background"),ce])}finally{te!==void 0&&clearTimeout(te)}if(!(oe!=null&&oe.success)&&(oe!=null&&oe.error))throw new Error(oe.error);if(oe!=null&&oe.vault){const F=new jh;return await F.initializeFromBase64(oe.vault),n(F),s(!0),c(!0),F}else return s(!0),c(!1),null}catch(te){throw(te instanceof Error?te.message:String(te)).includes(Bo.VAULT_LOCKED)?console.info("Vault is locked; popup will prompt for unlock"):console.error("Error retrieving vault from background:",te),s(!0),c(!1),te}},[]),B=b.useCallback(async()=>{try{const te=await md("local:publicEmailDomains"),ce=await md("local:privateEmailDomains"),oe=await md("local:hiddenPrivateEmailDomains"),F=await Te.getItem("local:serverRevision");return!te&&!ce?null:{publicEmailDomains:te??[],privateEmailDomains:ce??[],hiddenPrivateEmailDomains:oe??[],serverRevision:F??0}}catch(te){return console.error("Error getting vault metadata from local storage:",te),null}},[]),z=b.useCallback(async()=>{const[te,ce]=await Promise.all([Te.getItem("local:isDirty"),Te.getItem("local:serverRevision")]);f(te??!1),L(ce??0)},[]),Q=b.useCallback(async()=>e?await e.hasPendingMigrations():!1,[e]);b.useEffect(()=>{r||P().catch(()=>{})},[r,P]);const ae=b.useCallback(async te=>{await St("STORE_ENCRYPTION_KEY",te,"background")},[]),Y=b.useCallback(async te=>{await St("STORE_ENCRYPTION_KEY_DERIVATION_PARAMS",te,"background")},[]),ne=b.useCallback(()=>{n(null),s(!1),c(!1)},[]),fe=b.useCallback(()=>g.current,[]),X=b.useMemo(()=>({sqliteClient:e,dbInitialized:r,dbAvailable:l,isOffline:m,getIsOffline:fe,isDirty:A,isSyncing:v,isUploading:S,serverRevision:k,setIsOffline:_,setIsSyncing:w,setIsUploading:T,shouldSuppressEmailErrors:O,loadDatabase:G,loadStoredDatabase:P,storeEncryptionKey:ae,storeEncryptionKeyDerivationParams:Y,clearDatabase:ne,getVaultMetadata:B,refreshSyncState:z,hasPendingMigrations:Q,syncError:R,clearSyncError:j}),[e,r,l,m,fe,A,v,S,k,_,O,G,P,ae,Y,ne,B,z,Q,R,j]);return d.jsx(DN.Provider,{value:X,children:t})},qt=()=>{const t=b.useContext(DN);if(t===void 0)throw new Error("useDb must be used within a DbProvider");return t};var Yv,Jv;const d_=(Jv=(Yv=globalThis.browser)==null?void 0:Yv.runtime)!=null&&Jv.id?globalThis.browser:globalThis.chrome,Qo=d_;let tt;function Ca(t){pd===Er.length&&Er.push(Er.length+1);const e=pd;return pd=Er[e],Er[e]=t,e}function Hh(t){const e=typeof t;if(e=="number"||e=="boolean"||t==null)return`${t}`;if(e=="string")return`"${t}"`;if(e=="symbol"){const s=t.description;return s==null?"Symbol":`Symbol(${s})`}if(e=="function"){const s=t.name;return typeof s=="string"&&s.length>0?`Function(${s})`:"Function"}if(Array.isArray(t)){const s=t.length;let l="[";s>0&&(l+=Hh(t[0]));for(let c=1;c<s;c++)l+=", "+Hh(t[c]);return l+="]",l}const n=/\[object ([^\]]+)\]/.exec(toString.call(t));let r;if(n&&n.length>1)r=n[1];else return toString.call(t);if(r=="Object")try{return"Object("+JSON.stringify(t)+")"}catch{return"Object"}return t instanceof Error?`${t.name}: ${t.message}
${t.stack}`:r}function c_(t){t<132||(Er[t]=pd,pd=t)}function KE(t,e){return t=t>>>0,gd().subarray(t/1,t/1+e)}let Ls=null;function Gt(){return(Ls===null||Ls.buffer.detached===!0||Ls.buffer.detached===void 0&&Ls.buffer!==tt.memory.buffer)&&(Ls=new DataView(tt.memory.buffer)),Ls}function os(t,e){return t=t>>>0,m_(t,e)}let ld=null;function gd(){return(ld===null||ld.byteLength===0)&&(ld=new Uint8Array(tt.memory.buffer)),ld}function Et(t){return Er[t]}function tu(t,e){try{return t.apply(this,e)}catch(n){tt.__wbindgen_export3(Ca(n))}}let Er=new Array(128).fill(void 0);Er.push(void 0,null,!0,!1);let pd=Er.length;function wo(t){return t==null}function Fn(t,e,n){if(n===void 0){const m=hd.encode(t),p=e(m.length,1)>>>0;return gd().subarray(p,p+m.length).set(m),vn=m.length,p}let r=t.length,s=e(r,1)>>>0;const l=gd();let c=0;for(;c<r;c++){const m=t.charCodeAt(c);if(m>127)break;l[s+c]=m}if(c!==r){c!==0&&(t=t.slice(c)),s=n(s,r,r=c+t.length*3,1)>>>0;const m=gd().subarray(s+c,s+r),p=hd.encodeInto(t,m);c+=p.written,s=n(s,r,c,1)>>>0}return vn=c,s}function fi(t){const e=Et(t);return c_(t),e}let yu=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});yu.decode();const u_=2146435072;let _p=0;function m_(t,e){return _p+=e,_p>=u_&&(yu=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),yu.decode(),_p=e),yu.decode(gd().subarray(t,t+e))}const hd=new TextEncoder;"encodeInto"in hd||(hd.encodeInto=function(t,e){const n=hd.encode(t);return e.set(n),{read:t.length,written:n.length}});let vn=0;function g_(t){let e,n;try{const l=tt.__wbindgen_add_to_stack_pointer(-16),c=Fn(t,tt.__wbindgen_export,tt.__wbindgen_export2),m=vn;tt.extractDomain(l,c,m);var r=Gt().getInt32(l+4*0,!0),s=Gt().getInt32(l+4*1,!0);return e=r,n=s,os(r,s)}finally{tt.__wbindgen_add_to_stack_pointer(16),tt.__wbindgen_export4(e,n,1)}}function p_(t){try{const s=tt.__wbindgen_add_to_stack_pointer(-16);tt.filterCredentials(s,Ca(t));var e=Gt().getInt32(s+4*0,!0),n=Gt().getInt32(s+4*1,!0),r=Gt().getInt32(s+4*2,!0);if(r)throw fi(n);return fi(e)}finally{tt.__wbindgen_add_to_stack_pointer(16)}}function h_(t,e,n){let r,s;try{const f=tt.__wbindgen_add_to_stack_pointer(-16),v=Fn(t,tt.__wbindgen_export,tt.__wbindgen_export2),w=vn,S=Fn(e,tt.__wbindgen_export,tt.__wbindgen_export2),T=vn,k=Fn(n,tt.__wbindgen_export,tt.__wbindgen_export2),L=vn;tt.srpDerivePrivateKey(f,v,w,S,T,k,L);var l=Gt().getInt32(f+4*0,!0),c=Gt().getInt32(f+4*1,!0),m=Gt().getInt32(f+4*2,!0),p=Gt().getInt32(f+4*3,!0),g=l,A=c;if(p)throw g=0,A=0,fi(m);return r=g,s=A,os(g,A)}finally{tt.__wbindgen_add_to_stack_pointer(16),tt.__wbindgen_export4(r,s,1)}}function f_(t,e,n,r,s){try{const p=tt.__wbindgen_add_to_stack_pointer(-16),g=Fn(t,tt.__wbindgen_export,tt.__wbindgen_export2),A=vn,f=Fn(e,tt.__wbindgen_export,tt.__wbindgen_export2),v=vn,w=Fn(n,tt.__wbindgen_export,tt.__wbindgen_export2),S=vn,T=Fn(r,tt.__wbindgen_export,tt.__wbindgen_export2),k=vn,L=Fn(s,tt.__wbindgen_export,tt.__wbindgen_export2),R=vn;tt.srpDeriveSession(p,g,A,f,v,w,S,T,k,L,R);var l=Gt().getInt32(p+4*0,!0),c=Gt().getInt32(p+4*1,!0),m=Gt().getInt32(p+4*2,!0);if(m)throw fi(c);return fi(l)}finally{tt.__wbindgen_add_to_stack_pointer(16)}}function A_(t){let e,n;try{const g=tt.__wbindgen_add_to_stack_pointer(-16),A=Fn(t,tt.__wbindgen_export,tt.__wbindgen_export2),f=vn;tt.srpDeriveVerifier(g,A,f);var r=Gt().getInt32(g+4*0,!0),s=Gt().getInt32(g+4*1,!0),l=Gt().getInt32(g+4*2,!0),c=Gt().getInt32(g+4*3,!0),m=r,p=s;if(c)throw m=0,p=0,fi(l);return e=m,n=p,os(m,p)}finally{tt.__wbindgen_add_to_stack_pointer(16),tt.__wbindgen_export4(e,n,1)}}function y_(){try{const r=tt.__wbindgen_add_to_stack_pointer(-16);tt.srpGenerateEphemeral(r);var t=Gt().getInt32(r+4*0,!0),e=Gt().getInt32(r+4*1,!0),n=Gt().getInt32(r+4*2,!0);if(n)throw fi(e);return fi(t)}finally{tt.__wbindgen_add_to_stack_pointer(16)}}function E_(){let t,e;try{const s=tt.__wbindgen_add_to_stack_pointer(-16);tt.srpGenerateSalt(s);var n=Gt().getInt32(s+4*0,!0),r=Gt().getInt32(s+4*1,!0);return t=n,e=r,os(n,r)}finally{tt.__wbindgen_add_to_stack_pointer(16),tt.__wbindgen_export4(t,e,1)}}const b_=new Set(["basic","cors","default"]);async function v_(t,e){if(typeof Response=="function"&&t instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(t,e)}catch(r){if(t.ok&&b_.has(t.type)&&t.headers.get("Content-Type")!=="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",r);else throw r}const n=await t.arrayBuffer();return await WebAssembly.instantiate(n,e)}else{const n=await WebAssembly.instantiate(t,e);return n instanceof WebAssembly.Instance?{instance:n,module:t}:n}}function w_(){const t={};return t.wbg={},t.wbg.__wbg_Error_52673b7de5a0ca89=function(e,n){const r=Error(os(e,n));return Ca(r)},t.wbg.__wbg_Number_2d1dcfcf4ec51736=function(e){return Number(Et(e))},t.wbg.__wbg_String_8f0eb39a4a4c2f66=function(e,n){const r=String(Et(n)),s=Fn(r,tt.__wbindgen_export,tt.__wbindgen_export2),l=vn;Gt().setInt32(e+4*1,l,!0),Gt().setInt32(e+4*0,s,!0)},t.wbg.__wbg___wbindgen_bigint_get_as_i64_6e32f5e6aff02e1d=function(e,n){const r=Et(n),s=typeof r=="bigint"?r:void 0;Gt().setBigInt64(e+8*1,wo(s)?BigInt(0):s,!0),Gt().setInt32(e+4*0,!wo(s),!0)},t.wbg.__wbg___wbindgen_boolean_get_dea25b33882b895b=function(e){const n=Et(e),r=typeof n=="boolean"?n:void 0;return wo(r)?16777215:r?1:0},t.wbg.__wbg___wbindgen_debug_string_adfb662ae34724b6=function(e,n){const r=Hh(Et(n)),s=Fn(r,tt.__wbindgen_export,tt.__wbindgen_export2),l=vn;Gt().setInt32(e+4*1,l,!0),Gt().setInt32(e+4*0,s,!0)},t.wbg.__wbg___wbindgen_in_0d3e1e8f0c669317=function(e,n){return Et(e)in Et(n)},t.wbg.__wbg___wbindgen_is_bigint_0e1a2e3f55cfae27=function(e){return typeof Et(e)=="bigint"},t.wbg.__wbg___wbindgen_is_function_8d400b8b1af978cd=function(e){return typeof Et(e)=="function"},t.wbg.__wbg___wbindgen_is_object_ce774f3490692386=function(e){const n=Et(e);return typeof n=="object"&&n!==null},t.wbg.__wbg___wbindgen_is_string_704ef9c8fc131030=function(e){return typeof Et(e)=="string"},t.wbg.__wbg___wbindgen_is_undefined_f6b95eab589e0269=function(e){return Et(e)===void 0},t.wbg.__wbg___wbindgen_jsval_eq_b6101cc9cef1fe36=function(e,n){return Et(e)===Et(n)},t.wbg.__wbg___wbindgen_jsval_loose_eq_766057600fdd1b0d=function(e,n){return Et(e)==Et(n)},t.wbg.__wbg___wbindgen_number_get_9619185a74197f95=function(e,n){const r=Et(n),s=typeof r=="number"?r:void 0;Gt().setFloat64(e+8*1,wo(s)?0:s,!0),Gt().setInt32(e+4*0,!wo(s),!0)},t.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42=function(e,n){const r=Et(n),s=typeof r=="string"?r:void 0;var l=wo(s)?0:Fn(s,tt.__wbindgen_export,tt.__wbindgen_export2),c=vn;Gt().setInt32(e+4*1,c,!0),Gt().setInt32(e+4*0,l,!0)},t.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e=function(e,n){throw new Error(os(e,n))},t.wbg.__wbg_call_abb4ff46ce38be40=function(){return tu(function(e,n){const r=Et(e).call(Et(n));return Ca(r)},arguments)},t.wbg.__wbg_done_62ea16af4ce34b24=function(e){return Et(e).done},t.wbg.__wbg_entries_83c79938054e065f=function(e){const n=Object.entries(Et(e));return Ca(n)},t.wbg.__wbg_error_7534b8e9a36f1ab4=function(e,n){let r,s;try{r=e,s=n,console.error(os(e,n))}finally{tt.__wbindgen_export4(r,s,1)}},t.wbg.__wbg_getRandomValues_1c61fac11405ffdc=function(){return tu(function(e,n){globalThis.crypto.getRandomValues(KE(e,n))},arguments)},t.wbg.__wbg_get_6b7bd52aca3f9671=function(e,n){const r=Et(e)[n>>>0];return Ca(r)},t.wbg.__wbg_get_af9dab7e9603ea93=function(){return tu(function(e,n){const r=Reflect.get(Et(e),Et(n));return Ca(r)},arguments)},t.wbg.__wbg_get_with_ref_key_1dc361bd10053bfe=function(e,n){const r=Et(e)[Et(n)];return Ca(r)},t.wbg.__wbg_instanceof_ArrayBuffer_f3320d2419cd0355=function(e){let n;try{n=Et(e)instanceof ArrayBuffer}catch{n=!1}return n},t.wbg.__wbg_instanceof_Map_084be8da74364158=function(e){let n;try{n=Et(e)instanceof Map}catch{n=!1}return n},t.wbg.__wbg_instanceof_Uint8Array_da54ccc9d3e09434=function(e){let n;try{n=Et(e)instanceof Uint8Array}catch{n=!1}return n},t.wbg.__wbg_isArray_51fd9e6422c0a395=function(e){return Array.isArray(Et(e))},t.wbg.__wbg_isSafeInteger_ae7d3f054d55fa16=function(e){return Number.isSafeInteger(Et(e))},t.wbg.__wbg_iterator_27b7c8b35ab3e86b=function(){return Ca(Symbol.iterator)},t.wbg.__wbg_length_22ac23eaec9d8053=function(e){return Et(e).length},t.wbg.__wbg_length_d45040a40c570362=function(e){return Et(e).length},t.wbg.__wbg_new_1ba21ce319a06297=function(){const e=new Object;return Ca(e)},t.wbg.__wbg_new_25f239778d6112b9=function(){const e=new Array;return Ca(e)},t.wbg.__wbg_new_6421f6084cc5bc5a=function(e){const n=new Uint8Array(Et(e));return Ca(n)},t.wbg.__wbg_new_8a6f238a6ece86ea=function(){const e=new Error;return Ca(e)},t.wbg.__wbg_new_b546ae120718850e=function(){return Ca(new Map)},t.wbg.__wbg_next_138a17bbf04e926c=function(e){const n=Et(e).next;return Ca(n)},t.wbg.__wbg_next_3cfe5c0fe2a4cc53=function(){return tu(function(e){const n=Et(e).next();return Ca(n)},arguments)},t.wbg.__wbg_prototypesetcall_dfe9b766cdc1f1fd=function(e,n,r){Uint8Array.prototype.set.call(KE(e,n),Et(r))},t.wbg.__wbg_set_3f1d0b984ed272ed=function(e,n,r){Et(e)[fi(n)]=fi(r)},t.wbg.__wbg_set_7df433eea03a5c14=function(e,n,r){Et(e)[n>>>0]=fi(r)},t.wbg.__wbg_set_efaaf145b9377369=function(e,n,r){const s=Et(e).set(Et(n),Et(r));return Ca(s)},t.wbg.__wbg_stack_0ed75d68575b0f3c=function(e,n){const r=Et(n).stack,s=Fn(r,tt.__wbindgen_export,tt.__wbindgen_export2),l=vn;Gt().setInt32(e+4*1,l,!0),Gt().setInt32(e+4*0,s,!0)},t.wbg.__wbg_value_57b7b035e117f7ee=function(e){const n=Et(e).value;return Ca(n)},t.wbg.__wbindgen_cast_2241b6af4c4b2941=function(e,n){const r=os(e,n);return Ca(r)},t.wbg.__wbindgen_cast_4625c577ab2ec9ee=function(e){const n=BigInt.asUintN(64,e);return Ca(n)},t.wbg.__wbindgen_cast_9ae0607507abb057=function(e){return Ca(e)},t.wbg.__wbindgen_cast_d6cd19b81560fd6e=function(e){return Ca(e)},t.wbg.__wbindgen_object_clone_ref=function(e){const n=Et(e);return Ca(n)},t.wbg.__wbindgen_object_drop_ref=function(e){fi(e)},t}function I_(t,e){return tt=t.exports,If.__wbindgen_wasm_module=e,Ls=null,ld=null,tt.__wbindgen_start(),tt}async function If(t){if(tt!==void 0)return tt;typeof t<"u"&&(Object.getPrototypeOf(t)===Object.prototype?{module_or_path:t}=t:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof t>"u"&&(t=new URL("aliasvault_core_bg.wasm",self.location.href));const e=w_();(typeof t=="string"||typeof Request=="function"&&t instanceof Request||typeof URL=="function"&&t instanceof URL)&&(t=fetch(t));const{instance:n,module:r}=await v_(await t,e);return I_(n,r)}var Us=(t=>(t.DEFAULT="default",t.URL_EXACT="url_exact",t.URL_SUBDOMAIN="url_subdomain",t))(Us||{});let Fp=null;function RN(){return Fp||(Fp=(async()=>{const t=Qo.runtime.getURL("src/aliasvault_core_bg.wasm"),e=await(await fetch(t)).arrayBuffer();await If(e)})()),Fp}async function Cf(t){return await RN(),g_(t)}async function C_(t,e,n,r="default"){await RN();const s=t.map(c=>({Id:c.Id,ItemName:c.Name??"",ItemUrls:S_(c,nn.LoginUrl)}));return p_({credentials:s,current_url:e,page_title:n,matching_mode:r}).matched_ids.map(c=>t.find(m=>m.Id===c)).filter(c=>c!==void 0)}function S_(t,e){var r;const n=(r=t.Fields)==null?void 0:r.find(s=>s.FieldKey===e);return n?Array.isArray(n.Value)?n.Value.filter(s=>s&&s.length>0):n.Value?[n.Value]:[]:[]}const ct={DISABLED_SITES:"local:aliasvault_disabled_sites",TEMPORARY_DISABLED_SITES:"local:aliasvault_temporary_disabled_sites",PASSKEY_DISABLED_SITES:"local:aliasvault_passkey_disabled_sites",CREDENTIAL_AUTOFILL_POPUP_ENABLED:"local:aliasvault_global_autofill_popup_enabled",GLOBAL_CONTEXT_MENU_ENABLED:"local:aliasvault_global_context_menu_enabled",PASSKEY_PROVIDER_ENABLED:"local:aliasvault_passkey_provider_enabled",CLIPBOARD_CLEAR_TIMEOUT:"local:aliasvault_clipboard_clear_timeout",AUTO_LOCK_TIMEOUT:"local:aliasvault_auto_lock_timeout",VAULT_LOCKED_DISMISS_UNTIL:"local:aliasvault_vault_locked_dismiss_until",TOTP_AUTOFILL_ENABLED:"local:aliasvault_totp_autofill_enabled",AUTO_COPY_TOTP_ON_AUTOFILL:"local:aliasvault_auto_copy_totp_on_autofill",AUTOFILL_MATCHING_MODE:"local:aliasvault_autofill_matching_mode",CUSTOM_EMAIL_HISTORY:"local:aliasvault_custom_email_history",CUSTOM_USERNAME_HISTORY:"local:aliasvault_custom_username_history",SHOW_FOLDERS:"local:aliasvault_show_folders",AUTO_CLOSE_UNLOCK_POPUP:"local:aliasvault_auto_close_unlock_popup",LOGIN_SAVE_ENABLED:"local:loginSaveEnabled",LOGIN_SAVE_AUTO_DISMISS_SECONDS:"local:loginSaveAutoDismissSeconds",LOGIN_SAVE_BLOCKED_DOMAINS:"local:loginSaveBlockedDomains",PENDING_REDIRECT_URL:"session:pendingRedirectUrl",SKIP_FORM_RESTORE:"local:aliasvault_skip_form_restore",PASSWORD_UNLOCK_FAILED_ATTEMPTS:"local:password_unlock_failed_attempts"},rt={async getShowFolders(){return await Te.getItem(ct.SHOW_FOLDERS)??!0},async setShowFolders(t){await Te.setItem(ct.SHOW_FOLDERS,t)},async getAutoCloseUnlockPopup(){return await Te.getItem(ct.AUTO_CLOSE_UNLOCK_POPUP)??!0},async setAutoCloseUnlockPopup(t){await Te.setItem(ct.AUTO_CLOSE_UNLOCK_POPUP,t)},async getAutofillMatchingMode(){return await Te.getItem(ct.AUTOFILL_MATCHING_MODE)??Us.DEFAULT},async setAutofillMatchingMode(t){await Te.setItem(ct.AUTOFILL_MATCHING_MODE,t)},async getDisabledSites(){return await Te.getItem(ct.DISABLED_SITES)??[]},async setDisabledSites(t){await Te.setItem(ct.DISABLED_SITES,t)},async getTemporaryDisabledSites(){return await Te.getItem(ct.TEMPORARY_DISABLED_SITES)??{}},async setTemporaryDisabledSites(t){await Te.setItem(ct.TEMPORARY_DISABLED_SITES,t)},async getGlobalContextMenuEnabled(){return await Te.getItem(ct.GLOBAL_CONTEXT_MENU_ENABLED)!==!1},async setGlobalContextMenuEnabled(t){await Te.setItem(ct.GLOBAL_CONTEXT_MENU_ENABLED,t)},async getPasskeyProviderEnabled(){return await Te.getItem(ct.PASSKEY_PROVIDER_ENABLED)!==!1},async setPasskeyProviderEnabled(t){await Te.setItem(ct.PASSKEY_PROVIDER_ENABLED,t)},async getPasskeyDisabledSites(){return await Te.getItem(ct.PASSKEY_DISABLED_SITES)??[]},async setPasskeyDisabledSites(t){await Te.setItem(ct.PASSKEY_DISABLED_SITES,t)},async getClipboardClearTimeout(){return await Te.getItem(ct.CLIPBOARD_CLEAR_TIMEOUT)??10},async setClipboardClearTimeout(t){await Te.setItem(ct.CLIPBOARD_CLEAR_TIMEOUT,t)},async getAutoLockTimeout(){return await Te.getItem(ct.AUTO_LOCK_TIMEOUT)??0},async setAutoLockTimeout(t){await Te.setItem(ct.AUTO_LOCK_TIMEOUT,t)},async getVaultLockedDismissUntil(){return await Te.getItem(ct.VAULT_LOCKED_DISMISS_UNTIL)??0},async setVaultLockedDismissUntil(t){await Te.setItem(ct.VAULT_LOCKED_DISMISS_UNTIL,t)},async getCustomEmailHistory(){return await Te.getItem(ct.CUSTOM_EMAIL_HISTORY)??[]},async setCustomEmailHistory(t){await Te.setItem(ct.CUSTOM_EMAIL_HISTORY,t)},async getCustomUsernameHistory(){return await Te.getItem(ct.CUSTOM_USERNAME_HISTORY)??[]},async setCustomUsernameHistory(t){await Te.setItem(ct.CUSTOM_USERNAME_HISTORY,t)},async clearUiPreferences(){await Te.removeItem(ct.SHOW_FOLDERS)},async resetAllSiteSettings(){await Te.setItem(ct.DISABLED_SITES,[]),await Te.setItem(ct.TEMPORARY_DISABLED_SITES,{}),await Te.setItem(ct.PASSKEY_DISABLED_SITES,[])},async clearAll(){await Promise.all(Object.values(ct).map(t=>Te.removeItem(t)))},async getPendingRedirectUrl(){return await Te.getItem(ct.PENDING_REDIRECT_URL)??null},async setPendingRedirectUrl(t){t===null?await Te.removeItem(ct.PENDING_REDIRECT_URL):await Te.setItem(ct.PENDING_REDIRECT_URL,t)},async getSkipFormRestore(){return await Te.getItem(ct.SKIP_FORM_RESTORE)??!1},async setSkipFormRestore(t){await Te.setItem(ct.SKIP_FORM_RESTORE,t)},async getLoginSaveEnabled(){return await Te.getItem(ct.LOGIN_SAVE_ENABLED)!==!1},async setLoginSaveEnabled(t){await Te.setItem(ct.LOGIN_SAVE_ENABLED,t)},async getLoginSaveAutoDismissSeconds(){return await Te.getItem(ct.LOGIN_SAVE_AUTO_DISMISS_SECONDS)??15},async setLoginSaveAutoDismissSeconds(t){await Te.setItem(ct.LOGIN_SAVE_AUTO_DISMISS_SECONDS,t)},async getLoginSaveBlockedDomains(){return await Te.getItem(ct.LOGIN_SAVE_BLOCKED_DOMAINS)??[]},async setLoginSaveBlockedDomains(t){await Te.setItem(ct.LOGIN_SAVE_BLOCKED_DOMAINS,t)},async getPasswordUnlockFailedAttempts(){const t=await Te.getItem(ct.PASSWORD_UNLOCK_FAILED_ATTEMPTS);return typeof t=="number"?t:typeof t=="string"&&parseInt(t,10)||0},async setPasswordUnlockFailedAttempts(t){await Te.setItem(ct.PASSWORD_UNLOCK_FAILED_ATTEMPTS,t)},async resetPasswordUnlockFailedAttempts(){await Te.removeItem(ct.PASSWORD_UNLOCK_FAILED_ATTEMPTS)},async getGlobalAutofillPopupEnabled(){return await Te.getItem(ct.CREDENTIAL_AUTOFILL_POPUP_ENABLED)!==!1},async setGlobalAutofillPopupEnabled(t){await Te.setItem(ct.CREDENTIAL_AUTOFILL_POPUP_ENABLED,t)},async getTotpAutofillEnabled(){return await Te.getItem(ct.TOTP_AUTOFILL_ENABLED)!==!1},async setTotpAutofillEnabled(t){await Te.setItem(ct.TOTP_AUTOFILL_ENABLED,t)},async getAutoCopyTotpOnAutofill(){return await Te.getItem(ct.AUTO_COPY_TOTP_ON_AUTOFILL)!==!1},async setAutoCopyTotpOnAutofill(t){await Te.setItem(ct.AUTO_COPY_TOTP_ON_AUTOFILL,t)}};var Eu={exports:{}},T_=Eu.exports,GE;function N_(){return GE||(GE=1,function(t,e){(function(n,r){t.exports=r()})(T_,function(){return(()=>{var n,r,s={773:(m,p,g)=>{var A,f=typeof self<"u"&&self.Module!==void 0?self.Module:{},v={};for(A in f)f.hasOwnProperty(A)&&(v[A]=f[A]);var w,S,T,k;w=typeof window=="object",S=typeof importScripts=="function",T=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",k=!w&&!T&&!S;var L,R,x,O,_,j="";T?(j=S?g(967).dirname(j)+"/":"//",L=function(Ie,Be){return O||(O=g(145)),_||(_=g(967)),Ie=_.normalize(Ie),O.readFileSync(Ie,Be?null:"utf8")},x=function(Ie){var Be=L(Ie,!0);return Be.buffer||(Be=new Uint8Array(Be)),Q(Be.buffer),Be},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),m.exports=f,process.on("uncaughtException",function(Ie){if(!(Ie instanceof Qe))throw Ie}),process.on("unhandledRejection",W),f.inspect=function(){return"[Emscripten Module object]"}):k?(typeof read<"u"&&(L=function(Ie){return read(Ie)}),x=function(Ie){var Be;return typeof readbuffer=="function"?new Uint8Array(readbuffer(Ie)):(Q(typeof(Be=read(Ie,"binary"))=="object"),Be)},typeof scriptArgs<"u"&&scriptArgs,typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(w||S)&&(S?j=self.location.href:typeof document<"u"&&document.currentScript&&(j=document.currentScript.src),j=j.indexOf("blob:")!==0?j.substr(0,j.lastIndexOf("/")+1):"",L=function(Ie){var Be=new XMLHttpRequest;return Be.open("GET",Ie,!1),Be.send(null),Be.responseText},S&&(x=function(Ie){var Be=new XMLHttpRequest;return Be.open("GET",Ie,!1),Be.responseType="arraybuffer",Be.send(null),new Uint8Array(Be.response)}),R=function(Ie,Be,Ge){var qe=new XMLHttpRequest;qe.open("GET",Ie,!0),qe.responseType="arraybuffer",qe.onload=function(){qe.status==200||qe.status==0&&qe.response?Be(qe.response):Ge()},qe.onerror=Ge,qe.send(null)}),f.print||console.log.bind(console);var G,P,B=f.printErr||console.warn.bind(console);for(A in v)v.hasOwnProperty(A)&&(f[A]=v[A]);v=null,f.arguments&&f.arguments,f.thisProgram&&f.thisProgram,f.quit&&f.quit,f.wasmBinary&&(G=f.wasmBinary),f.noExitRuntime,typeof WebAssembly!="object"&&W("no native wasm support detected");var z=!1;function Q(Ie,Be){Ie||W("Assertion failed: "+Be)}var ae,Y,ne=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function fe(Ie){ae=Ie,f.HEAP8=new Int8Array(Ie),f.HEAP16=new Int16Array(Ie),f.HEAP32=new Int32Array(Ie),f.HEAPU8=Y=new Uint8Array(Ie),f.HEAPU16=new Uint16Array(Ie),f.HEAPU32=new Uint32Array(Ie),f.HEAPF32=new Float32Array(Ie),f.HEAPF64=new Float64Array(Ie)}f.INITIAL_MEMORY;var X,te=[],ce=[],oe=[],F=0,J=null;function W(Ie){throw f.onAbort&&f.onAbort(Ie),B(Ie+=""),z=!0,Ie="abort("+Ie+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(Ie)}function ie(Ie){return Ie.startsWith("data:application/octet-stream;base64,")}function we(Ie){return Ie.startsWith("file://")}f.preloadedImages={},f.preloadedAudios={};var le,ve="argon2.wasm";function Pe(Ie){try{if(Ie==ve&&G)return new Uint8Array(G);if(x)return x(Ie);throw"both async and sync fetching of the wasm failed"}catch(Be){W(Be)}}function _e(Ie){for(;Ie.length>0;){var Be=Ie.shift();if(typeof Be!="function"){var Ge=Be.func;typeof Ge=="number"?Be.arg===void 0?X.get(Ge)():X.get(Ge)(Be.arg):Ge(Be.arg===void 0?null:Be.arg)}else Be(f)}}function Ke(Ie){try{return P.grow(Ie-ae.byteLength+65535>>>16),fe(P.buffer),1}catch{}}ie(ve)||(le=ve,ve=f.locateFile?f.locateFile(le,j):j+le);var Ye,Ot={a:function(Ie,Be,Ge){Y.copyWithin(Ie,Be,Be+Ge)},b:function(Ie){var Be,Ge=Y.length,qe=2147418112;if((Ie>>>=0)>qe)return!1;for(var nt=1;nt<=4;nt*=2){var We=Ge*(1+.2/nt);if(We=Math.min(We,Ie+100663296),Ke(Math.min(qe,((Be=Math.max(Ie,We))%65536>0&&(Be+=65536-Be%65536),Be))))return!0}return!1}},Ve=(function(){var Ie={a:Ot};function Be(nt,We){var Ee,je=nt.exports;f.asm=je,fe((P=f.asm.c).buffer),X=f.asm.k,Ee=f.asm.d,ce.unshift(Ee),function(Je){if(F--,f.monitorRunDependencies&&f.monitorRunDependencies(F),F==0&&J){var ut=J;J=null,ut()}}()}function Ge(nt){Be(nt.instance)}function qe(nt){return function(){if(!G&&(w||S)){if(typeof fetch=="function"&&!we(ve))return fetch(ve,{credentials:"same-origin"}).then(function(We){if(!We.ok)throw"failed to load wasm binary file at '"+ve+"'";return We.arrayBuffer()}).catch(function(){return Pe(ve)});if(R)return new Promise(function(We,Ee){R(ve,function(je){We(new Uint8Array(je))},Ee)})}return Promise.resolve().then(function(){return Pe(ve)})}().then(function(We){return WebAssembly.instantiate(We,Ie)}).then(nt,function(We){B("failed to asynchronously prepare wasm: "+We),W(We)})}if(F++,f.monitorRunDependencies&&f.monitorRunDependencies(F),f.instantiateWasm)try{return f.instantiateWasm(Ie,Be)}catch(nt){return B("Module.instantiateWasm callback failed with error: "+nt),!1}G||typeof WebAssembly.instantiateStreaming!="function"||ie(ve)||we(ve)||typeof fetch!="function"?qe(Ge):fetch(ve,{credentials:"same-origin"}).then(function(nt){return WebAssembly.instantiateStreaming(nt,Ie).then(Ge,function(We){return B("wasm streaming compile failed: "+We),B("falling back to ArrayBuffer instantiation"),qe(Ge)})})}(),f.___wasm_call_ctors=function(){return(f.___wasm_call_ctors=f.asm.d).apply(null,arguments)},f._argon2_hash=function(){return(f._argon2_hash=f.asm.e).apply(null,arguments)},f._malloc=function(){return(Ve=f._malloc=f.asm.f).apply(null,arguments)}),Me=(f._free=function(){return(f._free=f.asm.g).apply(null,arguments)},f._argon2_verify=function(){return(f._argon2_verify=f.asm.h).apply(null,arguments)},f._argon2_error_message=function(){return(f._argon2_error_message=f.asm.i).apply(null,arguments)},f._argon2_encodedlen=function(){return(f._argon2_encodedlen=f.asm.j).apply(null,arguments)},f._argon2_hash_ext=function(){return(f._argon2_hash_ext=f.asm.l).apply(null,arguments)},f._argon2_verify_ext=function(){return(f._argon2_verify_ext=f.asm.m).apply(null,arguments)},f.stackAlloc=function(){return(Me=f.stackAlloc=f.asm.n).apply(null,arguments)});function Qe(Ie){this.name="ExitStatus",this.message="Program terminated with exit("+Ie+")",this.status=Ie}function ht(Ie){function Be(){Ye||(Ye=!0,f.calledRun=!0,z||(_e(ce),f.onRuntimeInitialized&&f.onRuntimeInitialized(),function(){if(f.postRun)for(typeof f.postRun=="function"&&(f.postRun=[f.postRun]);f.postRun.length;)Ge=f.postRun.shift(),oe.unshift(Ge);var Ge;_e(oe)}()))}F>0||(function(){if(f.preRun)for(typeof f.preRun=="function"&&(f.preRun=[f.preRun]);f.preRun.length;)Ge=f.preRun.shift(),te.unshift(Ge);var Ge;_e(te)}(),F>0||(f.setStatus?(f.setStatus("Running..."),setTimeout(function(){setTimeout(function(){f.setStatus("")},1),Be()},1)):Be()))}if(f.allocate=function(Ie,Be){var Ge;return Ge=Be==1?Me(Ie.length):Ve(Ie.length),Ie.subarray||Ie.slice?Y.set(Ie,Ge):Y.set(new Uint8Array(Ie),Ge),Ge},f.UTF8ToString=function(Ie,Be){return Ie?function(Ge,qe,nt){for(var We=qe+nt,Ee=qe;Ge[Ee]&&!(Ee>=We);)++Ee;if(Ee-qe>16&&Ge.subarray&&ne)return ne.decode(Ge.subarray(qe,Ee));for(var je="";qe<Ee;){var Je=Ge[qe++];if(128&Je){var ut=63&Ge[qe++];if((224&Je)!=192){var Dt=63&Ge[qe++];if((Je=(240&Je)==224?(15&Je)<<12|ut<<6|Dt:(7&Je)<<18|ut<<12|Dt<<6|63&Ge[qe++])<65536)je+=String.fromCharCode(Je);else{var M=Je-65536;je+=String.fromCharCode(55296|M>>10,56320|1023&M)}}else je+=String.fromCharCode((31&Je)<<6|ut)}else je+=String.fromCharCode(Je)}return je}(Y,Ie,Be):""},f.ALLOC_NORMAL=0,J=function Ie(){Ye||ht(),Ye||(J=Ie)},f.run=ht,f.preInit)for(typeof f.preInit=="function"&&(f.preInit=[f.preInit]);f.preInit.length>0;)f.preInit.pop()();ht(),m.exports=f,f.unloadRuntime=function(){typeof self<"u"&&delete self.Module,f=P=X=ae=Y=void 0,delete m.exports}},631:function(m,p,g){var A,f;(f=typeof(A=function(){const v=typeof self<"u"?self:this,w={Argon2d:0,Argon2i:1,Argon2id:2};function S(x){if(S._promise)return S._promise;if(S._module)return Promise.resolve(S._module);let O;return O=v.process&&v.process.versions&&v.process.versions.node?T().then(_=>new Promise(j=>{_.postRun=()=>j(_)})):(v.loadArgon2WasmBinary?v.loadArgon2WasmBinary():Promise.resolve(g(721)).then(_=>function(j){const G=atob(j),P=new Uint8Array(new ArrayBuffer(G.length));for(let B=0;B<G.length;B++)P[B]=G.charCodeAt(B);return P}(_))).then(_=>function(j,G){return new Promise(P=>(v.Module={wasmBinary:j,wasmMemory:G,postRun(){P(Module)}},T()))}(_,x?function(j){const z=Math.min(Math.max(Math.ceil(j*1024/65536),256)+256,32767);return new WebAssembly.Memory({initial:z,maximum:32767})}(x):void 0)),S._promise=O,O.then(_=>(S._module=_,delete S._promise,_))}function T(){return v.loadArgon2WasmModule?v.loadArgon2WasmModule():Promise.resolve(g(773))}function k(x,O){return x.allocate(O,"i8",x.ALLOC_NORMAL)}function L(x,O){return k(x,new Uint8Array([...O,0]))}function R(x){if(typeof x!="string")return x;if(typeof TextEncoder=="function")return new TextEncoder().encode(x);if(typeof Buffer=="function")return Buffer.from(x);throw new Error("Don't know how to encode UTF8")}return{ArgonType:w,hash:function(x){const O=x.mem||1024;return S(O).then(_=>{const j=x.time||1,G=x.parallelism||1,P=R(x.pass),B=L(_,P),z=P.length,Q=R(x.salt),ae=L(_,Q),Y=Q.length,ne=x.type||w.Argon2d,fe=_.allocate(new Array(x.hashLen||24),"i8",_.ALLOC_NORMAL),X=x.secret?k(_,x.secret):0,te=x.secret?x.secret.byteLength:0,ce=x.ad?k(_,x.ad):0,oe=x.ad?x.ad.byteLength:0,F=x.hashLen||24,J=_._argon2_encodedlen(j,O,G,Y,F,ne),W=_.allocate(new Array(J+1),"i8",_.ALLOC_NORMAL);let ie,we,le;try{we=_._argon2_hash_ext(j,O,G,B,z,ae,Y,fe,F,W,J,ne,X,te,ce,oe,19)}catch(ve){ie=ve}if(we!==0||ie){try{ie||(ie=_.UTF8ToString(_._argon2_error_message(we)))}catch{}le={message:ie,code:we}}else{let ve="";const Pe=new Uint8Array(F);for(let _e=0;_e<F;_e++){const Ke=_.HEAP8[fe+_e];Pe[_e]=Ke,ve+=("0"+(255&Ke).toString(16)).slice(-2)}le={hash:Pe,hashHex:ve,encoded:_.UTF8ToString(W)}}try{_._free(B),_._free(ae),_._free(fe),_._free(W),ce&&_._free(ce),X&&_._free(X)}catch{}if(ie)throw le;return le})},verify:function(x){return S().then(O=>{const _=R(x.pass),j=L(O,_),G=_.length,P=x.secret?k(O,x.secret):0,B=x.secret?x.secret.byteLength:0,z=x.ad?k(O,x.ad):0,Q=x.ad?x.ad.byteLength:0,ae=L(O,R(x.encoded));let Y,ne,fe,X=x.type;if(X===void 0){let te=x.encoded.split("$")[1];te&&(te=te.replace("a","A"),X=w[te]||w.Argon2d)}try{ne=O._argon2_verify_ext(ae,j,G,P,B,z,Q,X)}catch(te){Y=te}if(ne||Y){try{Y||(Y=O.UTF8ToString(O._argon2_error_message(ne)))}catch{}fe={message:Y,code:ne}}try{O._free(j),O._free(ae)}catch{}if(Y)throw fe;return fe})},unloadRuntime:function(){S._module&&(S._module.unloadRuntime(),delete S._promise,delete S._module)}}})=="function"?A.apply(p,[]):A)===void 0||(m.exports=f)},721:function(m,p){m.exports=" "},145:()=>{},967:()=>{}},l={};function c(m){var p=l[m];if(p!==void 0)return p.exports;var g=l[m]={exports:{}};return s[m].call(g.exports,g,g.exports,c),g.exports}return r=Object.getPrototypeOf?m=>Object.getPrototypeOf(m):m=>m.__proto__,c.t=function(m,p){if(1&p&&(m=this(m)),8&p||typeof m=="object"&&m&&(4&p&&m.__esModule||16&p&&typeof m.then=="function"))return m;var g=Object.create(null);c.r(g);var A={};n=n||[null,r({}),r([]),r(r)];for(var f=2&p&&m;typeof f=="object"&&!~n.indexOf(f);f=r(f))Object.getOwnPropertyNames(f).forEach(v=>A[v]=()=>m[v]);return A.default=()=>m,c.d(g,A),g},c.d=(m,p)=>{for(var g in p)c.o(p,g)&&!c.o(m,g)&&Object.defineProperty(m,g,{enumerable:!0,get:p[g]})},c.o=(m,p)=>Object.prototype.hasOwnProperty.call(m,p),c.r=m=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(m,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(m,"__esModule",{value:!0})},c(631)})()})}(Eu)),Eu.exports}var k_=N_();const UN=cs(k_),Sf="local:aliasvault_pin_enabled",Tf="local:aliasvault_pin_encrypted_key",Nf="local:aliasvault_pin_salt",kf="local:aliasvault_pin_length",Po="local:aliasvault_pin_failed_attempts",Vh=4;class bu extends Error{constructor(){super("PIN locked after too many failed attempts"),this.name="PinLockedError"}}class Sd extends Error{constructor(){super("Invalid PIN format"),this.name="InvalidPinFormatError"}}class zh extends Error{constructor(n){super(`Incorrect PIN. ${n} attempts remaining.`);Ue(this,"attemptsRemaining");this.name="IncorrectPinError",this.attemptsRemaining=n}}async function MN(){try{return await Te.getItem(Sf)===!0}catch{return!1}}async function x_(){try{return await Te.getItem(kf)||null}catch{return null}}function xf(t){return/^\d{6,8}$/.test(t)}async function _N(){try{return await Te.getItem(Po)||0}catch{return 0}}async function FN(){return await _N()>=Vh}async function L_(t,e){if(!xf(t))throw new Sd;try{const n=crypto.getRandomValues(new Uint8Array(16)),r=Qh(n.buffer),s=await BN(n),l=await PN(t,s),c=crypto.getRandomValues(new Uint8Array(12)),m=await crypto.subtle.encrypt({name:"AES-GCM",iv:c},l,new TextEncoder().encode(e)),p=new Uint8Array(c.length+m.byteLength);p.set(c,0),p.set(new Uint8Array(m),c.length);const g=Qh(p.buffer);await Promise.all([Te.setItem(Sf,!0),Te.setItem(Tf,g),Te.setItem(Nf,r),Te.setItem(kf,t.length),Te.setItem(Po,0)])}catch(n){throw n instanceof Sd||console.error("[PinUnlockService] Failed to setup PIN:",n),n}}async function D_(t){if(!xf(t))throw new Sd;if(await FN())throw new bu;try{const[e,n]=await Promise.all([Te.getItem(Tf),Te.getItem(Nf)]);if(!e||!n)throw new bu;const r=new Uint8Array(qE(e)),s=r.slice(0,12),l=r.slice(12),c=new Uint8Array(qE(n)),m=await BN(c),p=await PN(t,m),g=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},p,l),A=new TextDecoder().decode(g);return await Te.setItem(Po,0),A}catch{const n=await _N()+1;throw await Te.setItem(Po,n),n>=Vh?(await Lf(),new bu):new zh(Vh-n)}}async function Lf(){try{await Promise.all([Te.removeItem(Sf),Te.removeItem(Tf),Te.removeItem(Nf),Te.removeItem(kf),Te.removeItem(Po)])}catch(t){throw console.error("[PinUnlockService] Failed to disable PIN:",t),t}}async function WE(){try{await Te.setItem(Po,0)}catch(t){console.error("[PinUnlockService] Failed to reset failed attempts:",t)}}async function R_(){const t=Qo.runtime.id,e=new TextEncoder().encode(t),n=await crypto.subtle.digest("SHA-256",e);return new Uint8Array(n)}async function BN(t){const e=await R_(),n=new Uint8Array(t.length+e.length);return n.set(t,0),n.set(e,t.length),n}async function PN(t,e){const n=Qh(e.buffer),r=await UN.hash({pass:t,salt:n,time:3,mem:65536,parallelism:1,hashLen:32,type:2});return await crypto.subtle.importKey("raw",r.hash,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}function Qh(t){const e=new Uint8Array(t);let n="";for(let r=0;r<e.byteLength;r++)n+=String.fromCharCode(e[r]);return btoa(n)}function qE(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n.buffer}const ON=b.createContext(void 0),U_=({children:t})=>{const[e,n]=b.useState(!1),[r,s]=b.useState(null),[l,c]=b.useState(null),m=qt(),p=b.useCallback(async()=>{const S=await Te.getItem("local:accessToken"),T=await Te.getItem("local:refreshToken"),k=await Te.getItem("local:username");return n(!0),S&&T&&k?(s(k),!0):!1},[s]),g=b.useCallback(async(S,T,k)=>{await Te.setItem("local:username",S),await Te.setItem("local:accessToken",T),await Te.setItem("local:refreshToken",k),await rt.setVaultLockedDismissUntil(0),s(S)},[]),A=b.useCallback(async S=>{await St("CLEAR_SESSION",{},"background"),m==null||m.clearDatabase();try{await Lf()}catch(T){console.error("Failed to remove PIN data:",T)}S&&c(S)},[m]),f=b.useCallback(async S=>{await A(S),await St("CLEAR_VAULT_DATA",{},"background"),s(null)},[A]),v=b.useCallback(()=>{c(null)},[]),w=b.useMemo(()=>({isInitialized:e,username:r,initializeAuth:p,setAuthTokens:g,clearAuthUserInitiated:f,clearAuthForced:A,globalMessage:l,clearGlobalMessage:v}),[e,r,p,l,g,f,A,v]);return d.jsx(ON.Provider,{value:w,children:t})},Md=()=>{const t=b.useContext(ON);if(t===void 0)throw new Error("useAuth must be used within an AuthProvider");return t};class M_{constructor(){Ue(this,"listeners",new Set)}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}emit(e){this.listeners.forEach(n=>{try{n(e)}catch(r){console.error("Error in logout listener:",r)}})}}const jN=new M_,hr=class hr{constructor(){}static isServerVersionSupported(e){return this.versionGreaterThanOrEqualTo(e,this.MIN_SERVER_VERSION)}static versionGreaterThanOrEqualTo(e,n){const[r,s]=e.split("-"),[l,c]=n.split("-"),m=r.split(".").map(Number),p=l.split(".").map(Number);for(let g=0;g<Math.max(m.length,p.length);g++){const A=m[g]??0,f=p[g]??0;if(A>f)return!0;if(A<f)return!1}return!s&&c?!0:s&&!c?!1:!s&&!c?!0:s>=c}};Ue(hr,"VERSION","0.30.0-alpha"),Ue(hr,"API_VERSION",hr.VERSION.split("-")[0]),Ue(hr,"MIN_SERVER_VERSION","0.12.0-dev"),Ue(hr,"CLIENT_NAME","edge"),Ue(hr,"DEFAULT_CLIENT_URL","https://app.aliasvault.net"),Ue(hr,"DEFAULT_API_URL","https://app.aliasvault.net/api");let mn=hr;class ls extends Error{constructor(e){super(e),this.name="ApiAuthError"}}class fd extends Error{constructor(e="Network error",n){super(e),this.name="NetworkError",this.cause=n,Object.setPrototypeOf(this,fd.prototype)}}class __ extends Error{constructor(e){super(e),this.name="PayloadTooLargeError"}}class F_{async getBaseUrl(){return(await this.getApiUrl()).replace(/\/$/,"")+"/v1/"}async isSelfHosted(){return await this.getApiUrl()!==mn.DEFAULT_API_URL}async authFetch(e,n={},r=!0,s=!0){const l=new Headers(n.headers??{}),c=await this.getAccessToken();c&&l.set("Authorization",`Bearer ${c}`);const m={...n,headers:l};try{const p=await this.rawFetch(e,m);if(p.status===401){const g=await this.refreshAccessToken();if(g.token){l.set("Authorization",`Bearer ${g.token}`);const A=await this.rawFetch(e,{...m,headers:l});if(!A.ok)throw new ls("Request failed after token refresh");return r?A.json():A}else throw g.isAuthError?(jN.emit("common.errors.sessionExpired"),new ls("Session expired")):new fd("Token refresh failed due to network error")}if(p.status===413&&s)throw new __("Request rejected with HTTP 413: payload exceeds server limit");if(!p.ok&&s)throw new Error(`HTTP error! status: ${p.status}`);return r?p.json():p}catch(p){throw console.error("API request failed:",p),p}}async rawFetch(e,n={}){const s=await this.getBaseUrl()+e,l=new Headers(n.headers??{});l.set("X-AliasVault-Client",`${mn.CLIENT_NAME}-${mn.API_VERSION}`);const c={...n,headers:l};try{return await fetch(s,c)}catch(m){throw console.error("API request failed:",m),new fd(m instanceof Error?m.message:"Network request failed",m instanceof Error?m:void 0)}}async get(e){return this.authFetch(e,{method:"GET"})}async downloadBlob(e){try{const r=await(await this.authFetch(e,{method:"GET",headers:{Accept:"application/octet-stream"}},!1)).arrayBuffer();return new Uint8Array(r)}catch(n){throw console.error("Error downloading blob:",n),n}}async post(e,n,r=!0){return this.authFetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)},r)}async put(e,n){return this.authFetch(e,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}async delete(e){return this.authFetch(e,{method:"DELETE"},!1)}async revokeTokens(){try{const e=await this.getRefreshToken();e&&await this.post("Auth/revoke",{token:await this.getAccessToken(),refreshToken:e},!1)}catch(e){console.error("WebApi revoke tokens error:",e)}}async revokeCurrentTokens(){try{const e=await this.getRefreshToken();e&&await this.post("Auth/revoke-token",{token:await this.getAccessToken(),refreshToken:e},!1)}catch(e){console.error("WebApi revoke current token error:",e)}}async getStatus(){try{return await this.get("Auth/status")}catch(e){if(e instanceof ls)throw e;return{clientVersionSupported:!0,serverVersion:"0.0.0",vaultRevision:0,srpSalt:""}}}validateStatusResponse(e){return e.clientVersionSupported?mn.isServerVersionSupported(e.serverVersion)?null:"serverVersionNotSupported":"clientVersionNotSupported"}async refreshAccessToken(){const e=await this.getRefreshToken();if(!e)return{token:null,isAuthError:!0};try{const n=await this.rawFetch("Auth/refresh",{method:"POST",headers:{"Content-Type":"application/json","X-Ignore-Failure":"true"},body:JSON.stringify({token:await this.getAccessToken(),refreshToken:e})});if(n.ok){const r=await n.json();return this.updateTokens(r.token,r.refreshToken),{token:r.token,isAuthError:!1}}return n.status===401||n.status===403?{token:null,isAuthError:!0}:(console.warn(`Token refresh failed with status ${n.status}, treating as offline`),{token:null,isAuthError:!1})}catch(n){return n instanceof fd?(console.warn("Token refresh failed due to network error, treating as offline"),{token:null,isAuthError:!1}):(console.error("Unexpected error during token refresh:",n),{token:null,isAuthError:!0})}}async getAccessToken(){return await Te.getItem("local:accessToken")??null}async getRefreshToken(){return await Te.getItem("local:refreshToken")??null}async updateTokens(e,n){await Te.setItem("local:accessToken",e),await Te.setItem("local:refreshToken",n)}async getApiUrl(){const e=await Te.getItem("local:apiUrl");return!e||e.length===0?mn.DEFAULT_API_URL:e}}const HN=b.createContext(null),B_=({children:t})=>{const[e,n]=b.useState(null);return b.useEffect(()=>{const r=new F_;n(r)},[]),e?d.jsx(HN.Provider,{value:e,children:t}):null},Gi=()=>{const t=b.useContext(HN);if(!t)throw new Error("useWebApi must be used within a WebApiProvider");return t},VN=b.createContext(void 0),P_=({children:t})=>{const e=Md(),n=Gi(),[r,s]=b.useState(!1),l=b.useRef(!1),{t:c}=it(),m=b.useCallback(async f=>{if(!l.current)try{l.current=!0,await n.revokeTokens(),await e.clearAuthForced(f)}catch(v){console.error("Error during logout:",v)}finally{l.current=!1,s(!1)}},[e,n]),p=b.useCallback(async()=>{const f=await e.initializeAuth();return s(f),f},[e]),g=b.useCallback(async(f,v,w)=>{await e.setAuthTokens(f,v,w),s(!0)},[e]);b.useEffect(()=>jN.subscribe(async v=>{await m(c(v))}),[m,c]),b.useEffect(()=>{p()},[p]);const A=b.useMemo(()=>({isInitialized:e.isInitialized,username:e.username,globalMessage:e.globalMessage,logout:m,initializeAuth:p,setAuthTokens:g,clearGlobalMessage:e.clearGlobalMessage,isLoggedIn:r}),[e.isInitialized,e.username,e.globalMessage,e.clearGlobalMessage,m,p,g,r]);return d.jsx(VN.Provider,{value:A,children:t})},xi=()=>{const t=b.useContext(VN);if(t===void 0)throw new Error("useApp must be used within an AppProvider");return t},zN=b.createContext(void 0),O_=({children:t})=>{const[e,n]=b.useState(null),[r,s]=b.useState(null),l=b.useCallback(p=>{n(p)},[]),c=b.useCallback(p=>{s(p)},[]),m=b.useMemo(()=>({setHeaderButtons:l,headerButtons:e,setBackButtonTitle:c,backButtonTitle:r}),[l,e,c,r]);return d.jsx(zN.Provider,{value:m,children:t})},Ei=()=>{const t=b.useContext(zN);if(t===void 0)throw new Error("useHeaderButtons must be used within a HeaderButtonsProvider");return t};class Fa{static isPopup(){return new URLSearchParams(window.location.search).get("expanded")==="true"?!0:window.innerWidth>390}static getReturnPath(){return new URLSearchParams(window.location.search).get("returnTo")}static openInNewPopup(e,n){const l=window.screen.width/2-400,c=window.screen.height/2-1e3/2,m=e||window.location.hash.replace("#",""),p=new URLSearchParams;p.set("expanded","true"),n&&p.set("returnTo",n);const g=`popup.html?${p.toString()}#${m}`;window.open(g,"AliasVaultPopup",`width=800,height=1000,left=${l},top=${c},popup=true`),window.close()}}const j_=1e3,H_=()=>{const{t}=it(),e=xi(),n=qt(),[r,s]=b.useState(!1),[l,c]=b.useState(!1),m=b.useRef(null);b.useEffect(()=>{if(n.isSyncing)c(!0),m.current=Date.now();else if(m.current!==null){const g=Date.now()-m.current,A=j_-g;if(A>0){const f=setTimeout(()=>{c(!1),m.current=null},A);return()=>{clearTimeout(f)}}else c(!1),m.current=null}},[n.isSyncing]);const p=b.useCallback(async()=>{if(!r){s(!0),n.isDirty&&n.setIsUploading(!0);try{const g=await St("FULL_VAULT_SYNC",{},"background");if(g.requiresLogout){const A=g.errorKey?t("common.errors."+g.errorKey):g.error;await e.logout(A);return}g.wasOffline?await n.setIsOffline(!0):n.isOffline&&await n.setIsOffline(!1),g.hasNewVault&&await n.loadStoredDatabase(),await n.refreshSyncState()}catch(g){console.error("Retry sync error:",g)}finally{s(!1),n.setIsUploading(!1)}}},[r,n,e,t]);return!e.isLoggedIn||!n.dbAvailable?null:n.isOffline?d.jsxs("button",{onClick:p,disabled:r,className:"flex items-center gap-1.5 px-2 py-1 bg-amber-100 dark:bg-amber-900/30 text-amber-700 dark:text-amber-400 rounded-md text-xs font-medium cursor-pointer hover:opacity-80 active:opacity-60 transition-colors",title:t("sync.tapToRetry"),children:[d.jsx("div",{className:"relative",children:r?d.jsx("svg",{className:"w-3.5 h-3.5 animate-spin",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}):d.jsxs(d.Fragment,{children:[d.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M18.364 5.636a9 9 0 010 12.728m0 0l-2.829-2.829m2.829 2.829L21 21M15.536 8.464a5 5 0 010 7.072m0 0l-2.829-2.829m-4.243 2.829a4.978 4.978 0 01-1.414-2.83m-1.414 5.658a9 9 0 01-2.167-9.238m7.824 2.167a1 1 0 111.414 1.414m-1.414-1.414L3 3m8.293 8.293l1.414 1.414"})}),n.isDirty&&d.jsx("span",{className:"absolute -top-0.5 -right-0.5 w-2 h-2 bg-red-500 rounded-full"})]})}),d.jsx("span",{children:t("sync.offline")})]}):l?d.jsx("div",{className:"flex items-center gap-1.5 px-2 py-1 bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400 rounded-md text-xs font-medium",title:t("common.syncingVault"),children:d.jsx("svg",{className:"w-3.5 h-3.5 animate-spin",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})}):n.isUploading?d.jsx("div",{className:"flex items-center gap-1.5 px-2 py-1 bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400 rounded-md text-xs font-medium",children:d.jsx("svg",{className:"w-3.5 h-3.5 animate-spin",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})}):n.isDirty?d.jsx("button",{onClick:p,disabled:r,className:"flex items-center gap-1.5 px-2 py-1 bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400 rounded-md text-xs font-medium cursor-pointer hover:opacity-80 active:opacity-60 transition-colors",title:t("sync.tapToRetry"),children:r?d.jsx("svg",{className:"w-3.5 h-3.5 animate-spin",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}):d.jsxs("div",{className:"relative",children:[d.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})}),d.jsx("span",{className:"absolute -top-0.5 -right-0.5 w-2 h-2 bg-blue-500 dark:bg-blue-400 rounded-full animate-pulse"})]})}):null},QN=({routes:t=[],rightButtons:e})=>{const{t:n}=it(),r=xi(),s=Pa(),l=Ba(),[c]=Xu(),{backButtonTitle:m}=Ei(),p=t==null?void 0:t.find(w=>{const S=w.path.replace(/:\w+/g,"[^/]+");return new RegExp(`^${S}$`).test(l.pathname)}),g=b.useMemo(()=>p!=null&&p.showBackButton&&m||(p==null?void 0:p.title),[p,m]),A=b.useCallback(()=>{const w=Fa.getReturnPath(),S=c.get("returnSearch");/^\/items\/[^/]+$/.test(l.pathname)&&S?s(`/items?search=${encodeURIComponent(S)}`):w&&Fa.isPopup()&&window.history.length<=2?s(w):s(-1)},[s,c,l.pathname]),f=()=>{s("/auth-settings")},v=()=>{l.pathname==="/upgrade"||l.pathname==="/login"||l.pathname==="/unlock"||(r.isLoggedIn?s("/items",{state:{resetFilters:!0}}):s("/"))};return d.jsx("header",{className:"fixed z-30 w-full bg-white border-b border-gray-200 dark:bg-gray-800 dark:border-gray-700",children:d.jsxs("div",{className:"flex items-center h-16 px-4",children:[p!=null&&p.showBackButton?d.jsx("button",{id:"back",onClick:A,className:"flex items-center gap-2 hover:bg-gray-100 dark:hover:bg-gray-700 pr-2 pt-1.5 pb-1.5 rounded-lg group",children:d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 text-gray-500 group-hover:text-gray-900 dark:text-gray-400 dark:group-hover:text-white",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})}),g&&d.jsx("h1",{className:"text-lg font-medium text-gray-900 dark:text-white ml-2",children:g})]})}):d.jsx("div",{className:"flex items-center",children:d.jsxs("button",{onClick:()=>v(),className:"flex items-center hover:opacity-80 transition-opacity",children:[d.jsx(Tw,{width:125,height:40,showText:!0,className:"text-gray-900 dark:text-white"}),d.jsx("span",{className:"text-primary-500 text-[10px] font-normal",children:"BETA"})]})}),d.jsx("div",{className:"flex-grow"}),d.jsx(H_,{}),d.jsx("div",{className:"flex items-center gap-2",children:r.isLoggedIn?e:d.jsxs(d.Fragment,{children:[e,d.jsxs("button",{id:"settings",onClick:f,className:"p-1 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",children:[d.jsx("span",{className:"sr-only",children:n("common.settings")}),d.jsx("svg",{className:"w-5 h-5","aria-hidden":"true",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{fillRule:"evenodd",d:"M11.49 3.17c-.38-1.56-2.6-1.56-2.98 0a1.532 1.532 0 01-2.286.948c-1.372-.836-2.942.734-2.106 2.106.54.886.061 2.042-.947 2.287-1.561.379-1.561 2.6 0 2.978a1.532 1.532 0 01.947 2.287c-.836 1.372.734 2.942 2.106 2.106a1.532 1.532 0 012.287.947c.379 1.561 2.6 1.561 2.978 0a1.533 1.533 0 012.287-.947c1.372.836 2.942-.734 2.106-2.106a1.533 1.533 0 01.947-2.287c1.561-.379 1.561-2.6 0-2.978a1.532 1.532 0 01-.947-2.287c.836-1.372-.734-2.942-2.106-2.106a1.532 1.532 0 01-2.287-.947zM10 13a3 3 0 100-6 3 3 0 000 6z",clipRule:"evenodd"})})]})]})})]})})},V_=({routes:t,headerButtons:e,message:n,children:r})=>{const s=b.useRef(null),l=Ba(),{t:c}=it(),{syncError:m,clearSyncError:p}=qt();return b.useEffect(()=>{s.current&&(s.current.scrollTop=0)},[l.pathname]),d.jsxs("div",{className:"min-h-screen min-w-[350px] bg-white dark:bg-gray-900 flex flex-col max-h-[600px]",children:[d.jsx(rM,{}),d.jsx(QN,{routes:t,rightButtons:e}),d.jsx("main",{ref:s,className:"flex-1 overflow-y-auto bg-gray-100 dark:bg-gray-900",style:{paddingTop:"64px",height:"calc(100% - 120px)"},children:d.jsxs("div",{className:"px-4 pb-4 pt-2 mb-16",children:[n&&d.jsx("p",{className:"text-red-500 mb-4",children:n}),r||d.jsx(hw,{children:t.map(g=>d.jsx(ff,{path:g.path,element:g.element},g.path))})]})}),d.jsx(sM,{}),d.jsx(Id,{isOpen:m!==null,onClose:p,onConfirm:p,title:c("sync.syncErrorTitle"),message:m??"",confirmText:c("sync.syncErrorDismiss"),variant:"danger"})]})},z_=({children:t})=>d.jsxs("div",{className:"min-h-screen min-w-[350px] bg-white dark:bg-gray-900 flex flex-col max-h-[600px]",children:[d.jsx("header",{className:"fixed z-30 w-full bg-white border-b border-gray-200 dark:bg-gray-800 dark:border-gray-700",children:d.jsxs("div",{className:"flex items-center justify-center h-16 px-4",children:[d.jsx(Tw,{width:125,height:40,showText:!0,className:"text-gray-900 dark:text-white"}),d.jsx("span",{className:"text-primary-500 text-[10px] font-normal",children:"BETA"})]})}),d.jsx("main",{className:"flex-1 overflow-y-auto bg-gray-100 dark:bg-gray-900",style:{paddingTop:"64px"},children:d.jsx("div",{className:"p-4",children:t})})]}),Ai=()=>{const t={width:"40px",height:"40px",borderRadius:"50%",animation:"spin 1s linear infinite"},e=d.jsxs(d.Fragment,{children:[d.jsx("style",{children:`
        @keyframes spin {
          0% { transform: rotate(0deg); }
          100% { transform: rotate(360deg); }
        }
      `}),d.jsx("div",{className:"border-[4px] border-solid border-current/10 dark:border-white/10 border-t-current dark:border-t-white",style:t})]});return d.jsx("div",{className:"inline-flex items-center",children:e})},Q_=()=>{const{isLoading:t}=va();if(!t)return null;const e={width:"40px",height:"40px",borderRadius:"50%",animation:"spin 1s linear infinite"},n=d.jsxs(d.Fragment,{children:[d.jsx("style",{children:`
        @keyframes spin {
          0% { transform: rotate(0deg); }
          100% { transform: rotate(360deg); }
        }
      `}),d.jsx("div",{className:"border-[4px] border-solid border-current/10 dark:border-white/10 border-t-current dark:border-t-white",style:e})]});return d.jsx("div",{className:"fixed inset-0 w-full h-full z-50 bg-gray-200 dark:bg-gray-500 bg-opacity-90 flex items-center justify-center",children:d.jsx("div",{className:"relative",children:n})})},KN=b.createContext(void 0),K_=({children:t})=>{const[e,n]=b.useState(!0),[r,s]=b.useState(!1),[l,c]=b.useState(void 0),m=A=>{s(!0),c(A)},p=()=>{s(!1),c(void 0)},g=b.useMemo(()=>({isLoading:r,loadingMessage:l,showLoading:m,hideLoading:p,isInitialLoading:e,setIsInitialLoading:n}),[r,l,e]);return d.jsxs(KN.Provider,{value:g,children:[d.jsx(Q_,{message:l}),t]})},va=()=>{const t=b.useContext(KN);if(t===void 0)throw new Error("useLoading must be used within a LoadingProvider");return t},G_="session:lastVisitedPage",W_="session:lastVisitedTime",q_="session:navigationHistory",GN=b.createContext(void 0),Y_=({children:t})=>{const e=Ba(),n=Pa(),{isInitialized:r,isLoggedIn:s}=xi(),{dbInitialized:l,dbAvailable:c}=qt(),m=r&&l,p=m&&(!s||!c),g=b.useCallback(async()=>{if(m&&!p&&!["/","/reinitialize","/login","/unlock","/unlock-success","/auth-settings","/upgrade","/passkeys/create","/passkeys/authenticate"].includes(e.pathname)){const v=e.pathname.split("/").filter(Boolean),w=[];let S="";for(let T=0;T<v.length;T++)S+="/"+v[T],w.push({pathname:S,search:e.search,hash:e.hash});await Promise.all([Te.setItem(G_,e.pathname),Te.setItem(W_,Date.now()),Te.setItem(q_,w)])}},[e,m,p]);b.useEffect(()=>{m&&g()},[e.pathname,e.search,e.hash,m,g]),b.useEffect(()=>{m&&!s&&n("/login",{replace:!0})},[m,s]);const A=b.useMemo(()=>({storeCurrentPage:g,isFullyInitialized:m,requiresAuth:p}),[g,m,p]);return d.jsx(GN.Provider,{value:A,children:t})},J_=()=>{const t=b.useContext(GN);if(t===void 0)throw new Error("useNavigation must be used within a NavigationProvider");return t};var Bp,YE;function X_(){if(YE)return Bp;YE=1;function t(L){this._maxSize=L,this.clear()}t.prototype.clear=function(){this._size=0,this._values=Object.create(null)},t.prototype.get=function(L){return this._values[L]},t.prototype.set=function(L,R){return this._size>=this._maxSize&&this.clear(),L in this._values||this._size++,this._values[L]=R};var e=/[^.^\]^[]+|(?=\[\]|\.\.)/g,n=/^\d+$/,r=/^\d/,s=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,l=/^\s*(['"]?)(.*?)(\1)\s*$/,c=512,m=new t(c),p=new t(c),g=new t(c);Bp={Cache:t,split:f,normalizePath:A,setter:function(L){var R=A(L);return p.get(L)||p.set(L,function(O,_){for(var j=0,G=R.length,P=O;j<G-1;){var B=R[j];if(B==="__proto__"||B==="constructor"||B==="prototype")return O;P=P[R[j++]]}P[R[j]]=_})},getter:function(L,R){var x=A(L);return g.get(L)||g.set(L,function(_){for(var j=0,G=x.length;j<G;)if(_!=null||!R)_=_[x[j++]];else return;return _})},join:function(L){return L.reduce(function(R,x){return R+(w(x)||n.test(x)?"["+x+"]":(R?".":"")+x)},"")},forEach:function(L,R,x){v(Array.isArray(L)?L:f(L),R,x)}};function A(L){return m.get(L)||m.set(L,f(L).map(function(R){return R.replace(l,"$2")}))}function f(L){return L.match(e)||[""]}function v(L,R,x){var O=L.length,_,j,G,P;for(j=0;j<O;j++)_=L[j],_&&(k(_)&&(_='"'+_+'"'),P=w(_),G=!P&&/^\d+$/.test(_),R.call(x,_,P,G,j,L))}function w(L){return typeof L=="string"&&L&&["'",'"'].indexOf(L.charAt(0))!==-1}function S(L){return L.match(r)&&!L.match(n)}function T(L){return s.test(L)}function k(L){return!w(L)&&(S(L)||T(L))}return Bp}var Fs=X_(),Pp,JE;function $_(){if(JE)return Pp;JE=1;const t=/[A-Z\xc0-\xd6\xd8-\xde]?[a-z\xdf-\xf6\xf8-\xff]+(?:['’](?:d|ll|m|re|s|t|ve))?(?=[\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000]|[A-Z\xc0-\xd6\xd8-\xde]|$)|(?:[A-Z\xc0-\xd6\xd8-\xde]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=[\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000]|[A-Z\xc0-\xd6\xd8-\xde](?:[a-z\xdf-\xf6\xf8-\xff]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])|$)|[A-Z\xc0-\xd6\xd8-\xde]?(?:[a-z\xdf-\xf6\xf8-\xff]|[^\ud800-\udfff\xac\xb1\xd7\xf7\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\xbf\u2000-\u206f \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\d+\u2700-\u27bfa-z\xdf-\xf6\xf8-\xffA-Z\xc0-\xd6\xd8-\xde])+(?:['’](?:d|ll|m|re|s|t|ve))?|[A-Z\xc0-\xd6\xd8-\xde]+(?:['’](?:D|LL|M|RE|S|T|VE))?|\d*(?:1ST|2ND|3RD|(?![123])\dTH)(?=\b|[a-z_])|\d*(?:1st|2nd|3rd|(?![123])\dth)(?=\b|[A-Z_])|\d+|(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff]|\ud83c[\udffb-\udfff])?)*/g,e=A=>A.match(t)||[],n=A=>A[0].toUpperCase()+A.slice(1),r=(A,f)=>e(A).join(f).toLowerCase(),s=A=>e(A).reduce((f,v)=>`${f}${f?v[0].toUpperCase()+v.slice(1).toLowerCase():v.toLowerCase()}`,"");return Pp={words:e,upperFirst:n,camelCase:s,pascalCase:A=>n(s(A)),snakeCase:A=>r(A,"_"),kebabCase:A=>r(A,"-"),sentenceCase:A=>n(r(A," ")),titleCase:A=>e(A).map(n).join(" ")},Pp}var Op=$_(),au={exports:{}},XE;function Z_(){if(XE)return au.exports;XE=1,au.exports=function(s){return t(e(s),s)},au.exports.array=t;function t(s,l){var c=s.length,m=new Array(c),p={},g=c,A=n(l),f=r(s);for(l.forEach(function(w){if(!f.has(w[0])||!f.has(w[1]))throw new Error("Unknown node. There is an unknown node in the supplied edges.")});g--;)p[g]||v(s[g],g,new Set);return m;function v(w,S,T){if(T.has(w)){var k;try{k=", node was:"+JSON.stringify(w)}catch{k=""}throw new Error("Cyclic dependency"+k)}if(!f.has(w))throw new Error("Found unknown node. Make sure to provided all involved nodes. Unknown node: "+JSON.stringify(w));if(!p[S]){p[S]=!0;var L=A.get(w)||new Set;if(L=Array.from(L),S=L.length){T.add(w);do{var R=L[--S];v(R,f.get(R),T)}while(S);T.delete(w)}m[--c]=w}}}function e(s){for(var l=new Set,c=0,m=s.length;c<m;c++){var p=s[c];l.add(p[0]),l.add(p[1])}return Array.from(l)}function n(s){for(var l=new Map,c=0,m=s.length;c<m;c++){var p=s[c];l.has(p[0])||l.set(p[0],new Set),l.has(p[1])||l.set(p[1],new Set),l.get(p[0]).add(p[1])}return l}function r(s){for(var l=new Map,c=0,m=s.length;c<m;c++)l.set(s[c],c);return l}return au.exports}var eF=Z_();const tF=cs(eF),aF=Object.prototype.toString,nF=Error.prototype.toString,iF=RegExp.prototype.toString,rF=typeof Symbol<"u"?Symbol.prototype.toString:()=>"",sF=/^Symbol\((.*)\)(.*)$/;function oF(t){return t!=+t?"NaN":t===0&&1/t<0?"-0":""+t}function $E(t,e=!1){if(t==null||t===!0||t===!1)return""+t;const n=typeof t;if(n==="number")return oF(t);if(n==="string")return e?`"${t}"`:t;if(n==="function")return"[Function "+(t.name||"anonymous")+"]";if(n==="symbol")return rF.call(t).replace(sF,"Symbol($1)");const r=aF.call(t).slice(8,-1);return r==="Date"?isNaN(t.getTime())?""+t:t.toISOString(t):r==="Error"||t instanceof Error?"["+nF.call(t)+"]":r==="RegExp"?iF.call(t):null}function ds(t,e){let n=$E(t,e);return n!==null?n:JSON.stringify(t,function(r,s){let l=$E(this[r],e);return l!==null?l:s},2)}function WN(t){return t==null?[]:[].concat(t)}let qN,YN,JN,lF=/\$\{\s*(\w+)\s*\}/g;qN=Symbol.toStringTag;class ZE{constructor(e,n,r,s){this.name=void 0,this.message=void 0,this.value=void 0,this.path=void 0,this.type=void 0,this.params=void 0,this.errors=void 0,this.inner=void 0,this[qN]="Error",this.name="ValidationError",this.value=n,this.path=r,this.type=s,this.errors=[],this.inner=[],WN(e).forEach(l=>{if(bn.isError(l)){this.errors.push(...l.errors);const c=l.inner.length?l.inner:[l];this.inner.push(...c)}else this.errors.push(l)}),this.message=this.errors.length>1?`${this.errors.length} errors occurred`:this.errors[0]}}YN=Symbol.hasInstance;JN=Symbol.toStringTag;class bn extends Error{static formatError(e,n){const r=n.label||n.path||"this";return n=Object.assign({},n,{path:r,originalPath:n.path}),typeof e=="string"?e.replace(lF,(s,l)=>ds(n[l])):typeof e=="function"?e(n):e}static isError(e){return e&&e.name==="ValidationError"}constructor(e,n,r,s,l){const c=new ZE(e,n,r,s);if(l)return c;super(),this.value=void 0,this.path=void 0,this.type=void 0,this.params=void 0,this.errors=[],this.inner=[],this[JN]="Error",this.name=c.name,this.message=c.message,this.type=c.type,this.value=c.value,this.path=c.path,this.errors=c.errors,this.inner=c.inner,Error.captureStackTrace&&Error.captureStackTrace(this,bn)}static[YN](e){return ZE[Symbol.hasInstance](e)||super[Symbol.hasInstance](e)}}let ji={default:"${path} is invalid",required:"${path} is a required field",defined:"${path} must be defined",notNull:"${path} cannot be null",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:({path:t,type:e,value:n,originalValue:r})=>{const s=r!=null&&r!==n?` (cast from the value \`${ds(r,!0)}\`).`:".";return e!=="mixed"?`${t} must be a \`${e}\` type, but the final value was: \`${ds(n,!0)}\``+s:`${t} must match the configured type. The validated value was: \`${ds(n,!0)}\``+s}},Mn={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",uuid:"${path} must be a valid UUID",datetime:"${path} must be a valid ISO date-time",datetime_precision:"${path} must be a valid ISO date-time with a sub-second precision of exactly ${precision} digits",datetime_offset:'${path} must be a valid ISO date-time with UTC "Z" timezone',trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"},dF={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"},Kh={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"},cF={isValue:"${path} field must be ${value}"},vu={noUnknown:"${path} field has unspecified keys: ${unknown}",exact:"${path} object contains unknown properties: ${properties}"},uF={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items",length:"${path} must have ${length} items"},mF={notType:t=>{const{path:e,value:n,spec:r}=t,s=r.types.length;if(Array.isArray(n)){if(n.length<s)return`${e} tuple value has too few items, expected a length of ${s} but got ${n.length} for value: \`${ds(n,!0)}\``;if(n.length>s)return`${e} tuple value has too many items, expected a length of ${s} but got ${n.length} for value: \`${ds(n,!0)}\``}return bn.formatError(ji.notType,t)}};Object.assign(Object.create(null),{mixed:ji,string:Mn,number:dF,date:Kh,object:vu,array:uF,boolean:cF,tuple:mF});const Df=t=>t&&t.__isYupSchema__;class Uu{static fromOptions(e,n){if(!n.then&&!n.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");let{is:r,then:s,otherwise:l}=n,c=typeof r=="function"?r:(...m)=>m.every(p=>p===r);return new Uu(e,(m,p)=>{var g;let A=c(...m)?s:l;return(g=A==null?void 0:A(p))!=null?g:p})}constructor(e,n){this.fn=void 0,this.refs=e,this.refs=e,this.fn=n}resolve(e,n){let r=this.refs.map(l=>l.getValue(n==null?void 0:n.value,n==null?void 0:n.parent,n==null?void 0:n.context)),s=this.fn(r,e,n);if(s===void 0||s===e)return e;if(!Df(s))throw new TypeError("conditions must return a schema object");return s.resolve(n)}}const nu={context:"$",value:"."};class Ps{constructor(e,n={}){if(this.key=void 0,this.isContext=void 0,this.isValue=void 0,this.isSibling=void 0,this.path=void 0,this.getter=void 0,this.map=void 0,typeof e!="string")throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),e==="")throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===nu.context,this.isValue=this.key[0]===nu.value,this.isSibling=!this.isContext&&!this.isValue;let r=this.isContext?nu.context:this.isValue?nu.value:"";this.path=this.key.slice(r.length),this.getter=this.path&&Fs.getter(this.path,!0),this.map=n.map}getValue(e,n,r){let s=this.isContext?r:this.isValue?e:n;return this.getter&&(s=this.getter(s||{})),this.map&&(s=this.map(s)),s}cast(e,n){return this.getValue(e,n==null?void 0:n.parent,n==null?void 0:n.context)}resolve(){return this}describe(){return{type:"ref",key:this.key}}toString(){return`Ref(${this.key})`}static isRef(e){return e&&e.__isYupRef}}Ps.prototype.__isYupRef=!0;const Ms=t=>t==null;function Io(t){function e({value:n,path:r="",options:s,originalValue:l,schema:c},m,p){const{name:g,test:A,params:f,message:v,skipAbsent:w}=t;let{parent:S,context:T,abortEarly:k=c.spec.abortEarly,disableStackTrace:L=c.spec.disableStackTrace}=s;function R(Q){return Ps.isRef(Q)?Q.getValue(n,S,T):Q}function x(Q={}){const ae=Object.assign({value:n,originalValue:l,label:c.spec.label,path:Q.path||r,spec:c.spec,disableStackTrace:Q.disableStackTrace||L},f,Q.params);for(const ne of Object.keys(ae))ae[ne]=R(ae[ne]);const Y=new bn(bn.formatError(Q.message||v,ae),n,ae.path,Q.type||g,ae.disableStackTrace);return Y.params=ae,Y}const O=k?m:p;let _={path:r,parent:S,type:g,from:s.from,createError:x,resolve:R,options:s,originalValue:l,schema:c};const j=Q=>{bn.isError(Q)?O(Q):Q?p(null):O(x())},G=Q=>{bn.isError(Q)?O(Q):m(Q)};if(w&&Ms(n))return j(!0);let B;try{var z;if(B=A.call(_,n,_),typeof((z=B)==null?void 0:z.then)=="function"){if(s.sync)throw new Error(`Validation test of type: "${_.type}" returned a Promise during a synchronous validate. This test will finish after the validate call has returned`);return Promise.resolve(B).then(j,G)}}catch(Q){G(Q);return}j(B)}return e.OPTIONS=t,e}function gF(t,e,n,r=n){let s,l,c;return e?(Fs.forEach(e,(m,p,g)=>{let A=p?m.slice(1,m.length-1):m;t=t.resolve({context:r,parent:s,value:n});let f=t.type==="tuple",v=g?parseInt(A,10):0;if(t.innerType||f){if(f&&!g)throw new Error(`Yup.reach cannot implicitly index into a tuple type. the path part "${c}" must contain an index to the tuple element, e.g. "${c}[0]"`);if(n&&v>=n.length)throw new Error(`Yup.reach cannot resolve an array item at index: ${m}, in the path: ${e}. because there is no value at that index. `);s=n,n=n&&n[v],t=f?t.spec.types[v]:t.innerType}if(!g){if(!t.fields||!t.fields[A])throw new Error(`The schema does not contain the path: ${e}. (failed at: ${c} which is a type: "${t.type}")`);s=n,n=n&&n[A],t=t.fields[A]}l=A,c=p?"["+m+"]":"."+m}),{schema:t,parent:s,parentPath:l}):{parent:s,parentPath:e,schema:t}}class Mu extends Set{describe(){const e=[];for(const n of this.values())e.push(Ps.isRef(n)?n.describe():n);return e}resolveAll(e){let n=[];for(const r of this.values())n.push(e(r));return n}clone(){return new Mu(this.values())}merge(e,n){const r=this.clone();return e.forEach(s=>r.add(s)),n.forEach(s=>r.delete(s)),r}}function Do(t,e=new Map){if(Df(t)||!t||typeof t!="object")return t;if(e.has(t))return e.get(t);let n;if(t instanceof Date)n=new Date(t.getTime()),e.set(t,n);else if(t instanceof RegExp)n=new RegExp(t),e.set(t,n);else if(Array.isArray(t)){n=new Array(t.length),e.set(t,n);for(let r=0;r<t.length;r++)n[r]=Do(t[r],e)}else if(t instanceof Map){n=new Map,e.set(t,n);for(const[r,s]of t.entries())n.set(r,Do(s,e))}else if(t instanceof Set){n=new Set,e.set(t,n);for(const r of t)n.add(Do(r,e))}else if(t instanceof Object){n={},e.set(t,n);for(const[r,s]of Object.entries(t))n[r]=Do(s,e)}else throw Error(`Unable to clone ${t}`);return n}class Qi{constructor(e){this.type=void 0,this.deps=[],this.tests=void 0,this.transforms=void 0,this.conditions=[],this._mutate=void 0,this.internalTests={},this._whitelist=new Mu,this._blacklist=new Mu,this.exclusiveTests=Object.create(null),this._typeCheck=void 0,this.spec=void 0,this.tests=[],this.transforms=[],this.withMutation(()=>{this.typeError(ji.notType)}),this.type=e.type,this._typeCheck=e.check,this.spec=Object.assign({strip:!1,strict:!1,abortEarly:!0,recursive:!0,disableStackTrace:!1,nullable:!1,optional:!0,coerce:!0},e==null?void 0:e.spec),this.withMutation(n=>{n.nonNullable()})}get _type(){return this.type}clone(e){if(this._mutate)return e&&Object.assign(this.spec,e),this;const n=Object.create(Object.getPrototypeOf(this));return n.type=this.type,n._typeCheck=this._typeCheck,n._whitelist=this._whitelist.clone(),n._blacklist=this._blacklist.clone(),n.internalTests=Object.assign({},this.internalTests),n.exclusiveTests=Object.assign({},this.exclusiveTests),n.deps=[...this.deps],n.conditions=[...this.conditions],n.tests=[...this.tests],n.transforms=[...this.transforms],n.spec=Do(Object.assign({},this.spec,e)),n}label(e){let n=this.clone();return n.spec.label=e,n}meta(...e){if(e.length===0)return this.spec.meta;let n=this.clone();return n.spec.meta=Object.assign(n.spec.meta||{},e[0]),n}withMutation(e){let n=this._mutate;this._mutate=!0;let r=e(this);return this._mutate=n,r}concat(e){if(!e||e===this)return this;if(e.type!==this.type&&this.type!=="mixed")throw new TypeError(`You cannot \`concat()\` schema's of different types: ${this.type} and ${e.type}`);let n=this,r=e.clone();const s=Object.assign({},n.spec,r.spec);return r.spec=s,r.internalTests=Object.assign({},n.internalTests,r.internalTests),r._whitelist=n._whitelist.merge(e._whitelist,e._blacklist),r._blacklist=n._blacklist.merge(e._blacklist,e._whitelist),r.tests=n.tests,r.exclusiveTests=n.exclusiveTests,r.withMutation(l=>{e.tests.forEach(c=>{l.test(c.OPTIONS)})}),r.transforms=[...n.transforms,...r.transforms],r}isType(e){return e==null?!!(this.spec.nullable&&e===null||this.spec.optional&&e===void 0):this._typeCheck(e)}resolve(e){let n=this;if(n.conditions.length){let r=n.conditions;n=n.clone(),n.conditions=[],n=r.reduce((s,l)=>l.resolve(s,e),n),n=n.resolve(e)}return n}resolveOptions(e){var n,r,s,l;return Object.assign({},e,{from:e.from||[],strict:(n=e.strict)!=null?n:this.spec.strict,abortEarly:(r=e.abortEarly)!=null?r:this.spec.abortEarly,recursive:(s=e.recursive)!=null?s:this.spec.recursive,disableStackTrace:(l=e.disableStackTrace)!=null?l:this.spec.disableStackTrace})}cast(e,n={}){let r=this.resolve(Object.assign({value:e},n)),s=n.assert==="ignore-optionality",l=r._cast(e,n);if(n.assert!==!1&&!r.isType(l)){if(s&&Ms(l))return l;let c=ds(e),m=ds(l);throw new TypeError(`The value of ${n.path||"field"} could not be cast to a value that satisfies the schema type: "${r.type}". 

attempted value: ${c} 
`+(m!==c?`result of cast: ${m}`:""))}return l}_cast(e,n){let r=e===void 0?e:this.transforms.reduce((s,l)=>l.call(this,s,e,this),e);return r===void 0&&(r=this.getDefault(n)),r}_validate(e,n={},r,s){let{path:l,originalValue:c=e,strict:m=this.spec.strict}=n,p=e;m||(p=this._cast(p,Object.assign({assert:!1},n)));let g=[];for(let A of Object.values(this.internalTests))A&&g.push(A);this.runTests({path:l,value:p,originalValue:c,options:n,tests:g},r,A=>{if(A.length)return s(A,p);this.runTests({path:l,value:p,originalValue:c,options:n,tests:this.tests},r,s)})}runTests(e,n,r){let s=!1,{tests:l,value:c,originalValue:m,path:p,options:g}=e,A=T=>{s||(s=!0,n(T,c))},f=T=>{s||(s=!0,r(T,c))},v=l.length,w=[];if(!v)return f([]);let S={value:c,originalValue:m,path:p,options:g,schema:this};for(let T=0;T<l.length;T++){const k=l[T];k(S,A,function(R){R&&(Array.isArray(R)?w.push(...R):w.push(R)),--v<=0&&f(w)})}}asNestedTest({key:e,index:n,parent:r,parentPath:s,originalParent:l,options:c}){const m=e??n;if(m==null)throw TypeError("Must include `key` or `index` for nested validations");const p=typeof m=="number";let g=r[m];const A=Object.assign({},c,{strict:!0,parent:r,value:g,originalValue:l[m],key:void 0,[p?"index":"key"]:m,path:p||m.includes(".")?`${s||""}[${p?m:`"${m}"`}]`:(s?`${s}.`:"")+e});return(f,v,w)=>this.resolve(A)._validate(g,A,v,w)}validate(e,n){var r;let s=this.resolve(Object.assign({},n,{value:e})),l=(r=n==null?void 0:n.disableStackTrace)!=null?r:s.spec.disableStackTrace;return new Promise((c,m)=>s._validate(e,n,(p,g)=>{bn.isError(p)&&(p.value=g),m(p)},(p,g)=>{p.length?m(new bn(p,g,void 0,void 0,l)):c(g)}))}validateSync(e,n){var r;let s=this.resolve(Object.assign({},n,{value:e})),l,c=(r=n==null?void 0:n.disableStackTrace)!=null?r:s.spec.disableStackTrace;return s._validate(e,Object.assign({},n,{sync:!0}),(m,p)=>{throw bn.isError(m)&&(m.value=p),m},(m,p)=>{if(m.length)throw new bn(m,e,void 0,void 0,c);l=p}),l}isValid(e,n){return this.validate(e,n).then(()=>!0,r=>{if(bn.isError(r))return!1;throw r})}isValidSync(e,n){try{return this.validateSync(e,n),!0}catch(r){if(bn.isError(r))return!1;throw r}}_getDefault(e){let n=this.spec.default;return n==null?n:typeof n=="function"?n.call(this,e):Do(n)}getDefault(e){return this.resolve(e||{})._getDefault(e)}default(e){return arguments.length===0?this._getDefault():this.clone({default:e})}strict(e=!0){return this.clone({strict:e})}nullability(e,n){const r=this.clone({nullable:e});return r.internalTests.nullable=Io({message:n,name:"nullable",test(s){return s===null?this.schema.spec.nullable:!0}}),r}optionality(e,n){const r=this.clone({optional:e});return r.internalTests.optionality=Io({message:n,name:"optionality",test(s){return s===void 0?this.schema.spec.optional:!0}}),r}optional(){return this.optionality(!0)}defined(e=ji.defined){return this.optionality(!1,e)}nullable(){return this.nullability(!0)}nonNullable(e=ji.notNull){return this.nullability(!1,e)}required(e=ji.required){return this.clone().withMutation(n=>n.nonNullable(e).defined(e))}notRequired(){return this.clone().withMutation(e=>e.nullable().optional())}transform(e){let n=this.clone();return n.transforms.push(e),n}test(...e){let n;if(e.length===1?typeof e[0]=="function"?n={test:e[0]}:n=e[0]:e.length===2?n={name:e[0],test:e[1]}:n={name:e[0],message:e[1],test:e[2]},n.message===void 0&&(n.message=ji.default),typeof n.test!="function")throw new TypeError("`test` is a required parameters");let r=this.clone(),s=Io(n),l=n.exclusive||n.name&&r.exclusiveTests[n.name]===!0;if(n.exclusive&&!n.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return n.name&&(r.exclusiveTests[n.name]=!!n.exclusive),r.tests=r.tests.filter(c=>!(c.OPTIONS.name===n.name&&(l||c.OPTIONS.test===s.OPTIONS.test))),r.tests.push(s),r}when(e,n){!Array.isArray(e)&&typeof e!="string"&&(n=e,e=".");let r=this.clone(),s=WN(e).map(l=>new Ps(l));return s.forEach(l=>{l.isSibling&&r.deps.push(l.key)}),r.conditions.push(typeof n=="function"?new Uu(s,n):Uu.fromOptions(s,n)),r}typeError(e){let n=this.clone();return n.internalTests.typeError=Io({message:e,name:"typeError",skipAbsent:!0,test(r){return this.schema._typeCheck(r)?!0:this.createError({params:{type:this.schema.type}})}}),n}oneOf(e,n=ji.oneOf){let r=this.clone();return e.forEach(s=>{r._whitelist.add(s),r._blacklist.delete(s)}),r.internalTests.whiteList=Io({message:n,name:"oneOf",skipAbsent:!0,test(s){let l=this.schema._whitelist,c=l.resolveAll(this.resolve);return c.includes(s)?!0:this.createError({params:{values:Array.from(l).join(", "),resolved:c}})}}),r}notOneOf(e,n=ji.notOneOf){let r=this.clone();return e.forEach(s=>{r._blacklist.add(s),r._whitelist.delete(s)}),r.internalTests.blacklist=Io({message:n,name:"notOneOf",test(s){let l=this.schema._blacklist,c=l.resolveAll(this.resolve);return c.includes(s)?this.createError({params:{values:Array.from(l).join(", "),resolved:c}}):!0}}),r}strip(e=!0){let n=this.clone();return n.spec.strip=e,n}describe(e){const n=(e?this.resolve(e):this).clone(),{label:r,meta:s,optional:l,nullable:c}=n.spec;return{meta:s,label:r,optional:l,nullable:c,default:n.getDefault(e),type:n.type,oneOf:n._whitelist.describe(),notOneOf:n._blacklist.describe(),tests:n.tests.map(p=>({name:p.OPTIONS.name,params:p.OPTIONS.params})).filter((p,g,A)=>A.findIndex(f=>f.name===p.name)===g)}}}Qi.prototype.__isYupSchema__=!0;for(const t of["validate","validateSync"])Qi.prototype[`${t}At`]=function(e,n,r={}){const{parent:s,parentPath:l,schema:c}=gF(this,e,n,r.context);return c[t](s&&s[l],Object.assign({},r,{parent:s,path:e}))};for(const t of["equals","is"])Qi.prototype[t]=Qi.prototype.oneOf;for(const t of["not","nope"])Qi.prototype[t]=Qi.prototype.notOneOf;const pF=/^(\d{4}|[+-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,.](\d{1,}))?)?(?:(Z)|([+-])(\d{2})(?::?(\d{2}))?)?)?$/;function hF(t){const e=Gh(t);if(!e)return Date.parse?Date.parse(t):Number.NaN;if(e.z===void 0&&e.plusMinus===void 0)return new Date(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond).valueOf();let n=0;return e.z!=="Z"&&e.plusMinus!==void 0&&(n=e.hourOffset*60+e.minuteOffset,e.plusMinus==="+"&&(n=0-n)),Date.UTC(e.year,e.month,e.day,e.hour,e.minute+n,e.second,e.millisecond)}function Gh(t){var e,n;const r=pF.exec(t);return r?{year:gr(r[1]),month:gr(r[2],1)-1,day:gr(r[3],1),hour:gr(r[4]),minute:gr(r[5]),second:gr(r[6]),millisecond:r[7]?gr(r[7].substring(0,3)):0,precision:(e=(n=r[7])==null?void 0:n.length)!=null?e:void 0,z:r[8]||void 0,plusMinus:r[9]||void 0,hourOffset:gr(r[10]),minuteOffset:gr(r[11])}:null}function gr(t,e=0){return Number(t)||e}let fF=/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,AF=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,yF=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,EF="^\\d{4}-\\d{2}-\\d{2}",bF="\\d{2}:\\d{2}:\\d{2}",vF="(([+-]\\d{2}(:?\\d{2})?)|Z)",wF=new RegExp(`${EF}T${bF}(\\.\\d+)?${vF}$`),IF=t=>Ms(t)||t===t.trim(),CF={}.toString();function Wh(){return new XN}class XN extends Qi{constructor(){super({type:"string",check(e){return e instanceof String&&(e=e.valueOf()),typeof e=="string"}}),this.withMutation(()=>{this.transform((e,n,r)=>{if(!r.spec.coerce||r.isType(e)||Array.isArray(e))return e;const s=e!=null&&e.toString?e.toString():e;return s===CF?e:s})})}required(e){return super.required(e).withMutation(n=>n.test({message:e||ji.required,name:"required",skipAbsent:!0,test:r=>!!r.length}))}notRequired(){return super.notRequired().withMutation(e=>(e.tests=e.tests.filter(n=>n.OPTIONS.name!=="required"),e))}length(e,n=Mn.length){return this.test({message:n,name:"length",exclusive:!0,params:{length:e},skipAbsent:!0,test(r){return r.length===this.resolve(e)}})}min(e,n=Mn.min){return this.test({message:n,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(r){return r.length>=this.resolve(e)}})}max(e,n=Mn.max){return this.test({name:"max",exclusive:!0,message:n,params:{max:e},skipAbsent:!0,test(r){return r.length<=this.resolve(e)}})}matches(e,n){let r=!1,s,l;return n&&(typeof n=="object"?{excludeEmptyString:r=!1,message:s,name:l}=n:s=n),this.test({name:l||"matches",message:s||Mn.matches,params:{regex:e},skipAbsent:!0,test:c=>c===""&&r||c.search(e)!==-1})}email(e=Mn.email){return this.matches(fF,{name:"email",message:e,excludeEmptyString:!0})}url(e=Mn.url){return this.matches(AF,{name:"url",message:e,excludeEmptyString:!0})}uuid(e=Mn.uuid){return this.matches(yF,{name:"uuid",message:e,excludeEmptyString:!1})}datetime(e){let n="",r,s;return e&&(typeof e=="object"?{message:n="",allowOffset:r=!1,precision:s=void 0}=e:n=e),this.matches(wF,{name:"datetime",message:n||Mn.datetime,excludeEmptyString:!0}).test({name:"datetime_offset",message:n||Mn.datetime_offset,params:{allowOffset:r},skipAbsent:!0,test:l=>{if(!l||r)return!0;const c=Gh(l);return c?!!c.z:!1}}).test({name:"datetime_precision",message:n||Mn.datetime_precision,params:{precision:s},skipAbsent:!0,test:l=>{if(!l||s==null)return!0;const c=Gh(l);return c?c.precision===s:!1}})}ensure(){return this.default("").transform(e=>e===null?"":e)}trim(e=Mn.trim){return this.transform(n=>n!=null?n.trim():n).test({message:e,name:"trim",test:IF})}lowercase(e=Mn.lowercase){return this.transform(n=>Ms(n)?n:n.toLowerCase()).test({message:e,name:"string_case",exclusive:!0,skipAbsent:!0,test:n=>Ms(n)||n===n.toLowerCase()})}uppercase(e=Mn.uppercase){return this.transform(n=>Ms(n)?n:n.toUpperCase()).test({message:e,name:"string_case",exclusive:!0,skipAbsent:!0,test:n=>Ms(n)||n===n.toUpperCase()})}}Wh.prototype=XN.prototype;let SF=new Date(""),TF=t=>Object.prototype.toString.call(t)==="[object Date]";class Rf extends Qi{constructor(){super({type:"date",check(e){return TF(e)&&!isNaN(e.getTime())}}),this.withMutation(()=>{this.transform((e,n,r)=>!r.spec.coerce||r.isType(e)||e===null?e:(e=hF(e),isNaN(e)?Rf.INVALID_DATE:new Date(e)))})}prepareParam(e,n){let r;if(Ps.isRef(e))r=e;else{let s=this.cast(e);if(!this._typeCheck(s))throw new TypeError(`\`${n}\` must be a Date or a value that can be \`cast()\` to a Date`);r=s}return r}min(e,n=Kh.min){let r=this.prepareParam(e,"min");return this.test({message:n,name:"min",exclusive:!0,params:{min:e},skipAbsent:!0,test(s){return s>=this.resolve(r)}})}max(e,n=Kh.max){let r=this.prepareParam(e,"max");return this.test({message:n,name:"max",exclusive:!0,params:{max:e},skipAbsent:!0,test(s){return s<=this.resolve(r)}})}}Rf.INVALID_DATE=SF;function NF(t,e=[]){let n=[],r=new Set,s=new Set(e.map(([c,m])=>`${c}-${m}`));function l(c,m){let p=Fs.split(c)[0];r.add(p),s.has(`${m}-${p}`)||n.push([m,p])}for(const c of Object.keys(t)){let m=t[c];r.add(c),Ps.isRef(m)&&m.isSibling?l(m.path,c):Df(m)&&"deps"in m&&m.deps.forEach(p=>l(p,c))}return tF.array(Array.from(r),n).reverse()}function eb(t,e){let n=1/0;return t.some((r,s)=>{var l;if((l=e.path)!=null&&l.includes(r))return n=s,!0}),n}function $N(t){return(e,n)=>eb(t,e)-eb(t,n)}const kF=(t,e,n)=>{if(typeof t!="string")return t;let r=t;try{r=JSON.parse(t)}catch{}return n.isType(r)?r:t};function wu(t){if("fields"in t){const e={};for(const[n,r]of Object.entries(t.fields))e[n]=wu(r);return t.setFields(e)}if(t.type==="array"){const e=t.optional();return e.innerType&&(e.innerType=wu(e.innerType)),e}return t.type==="tuple"?t.optional().clone({types:t.spec.types.map(wu)}):"optional"in t?t.optional():t}const xF=(t,e)=>{const n=[...Fs.normalizePath(e)];if(n.length===1)return n[0]in t;let r=n.pop(),s=Fs.getter(Fs.join(n),!0)(t);return!!(s&&r in s)};let tb=t=>Object.prototype.toString.call(t)==="[object Object]";function ab(t,e){let n=Object.keys(t.fields);return Object.keys(e).filter(r=>n.indexOf(r)===-1)}const LF=$N([]);function ZN(t){return new ek(t)}class ek extends Qi{constructor(e){super({type:"object",check(n){return tb(n)||typeof n=="function"}}),this.fields=Object.create(null),this._sortErrors=LF,this._nodes=[],this._excludedEdges=[],this.withMutation(()=>{e&&this.shape(e)})}_cast(e,n={}){var r;let s=super._cast(e,n);if(s===void 0)return this.getDefault(n);if(!this._typeCheck(s))return s;let l=this.fields,c=(r=n.stripUnknown)!=null?r:this.spec.noUnknown,m=[].concat(this._nodes,Object.keys(s).filter(f=>!this._nodes.includes(f))),p={},g=Object.assign({},n,{parent:p,__validating:n.__validating||!1}),A=!1;for(const f of m){let v=l[f],w=f in s;if(v){let S,T=s[f];g.path=(n.path?`${n.path}.`:"")+f,v=v.resolve({value:T,context:n.context,parent:p});let k=v instanceof Qi?v.spec:void 0,L=k==null?void 0:k.strict;if(k!=null&&k.strip){A=A||f in s;continue}S=!n.__validating||!L?v.cast(s[f],g):s[f],S!==void 0&&(p[f]=S)}else w&&!c&&(p[f]=s[f]);(w!==f in p||p[f]!==s[f])&&(A=!0)}return A?p:s}_validate(e,n={},r,s){let{from:l=[],originalValue:c=e,recursive:m=this.spec.recursive}=n;n.from=[{schema:this,value:c},...l],n.__validating=!0,n.originalValue=c,super._validate(e,n,r,(p,g)=>{if(!m||!tb(g)){s(p,g);return}c=c||g;let A=[];for(let f of this._nodes){let v=this.fields[f];!v||Ps.isRef(v)||A.push(v.asNestedTest({options:n,key:f,parent:g,parentPath:n.path,originalParent:c}))}this.runTests({tests:A,value:g,originalValue:c,options:n},r,f=>{s(f.sort(this._sortErrors).concat(p),g)})})}clone(e){const n=super.clone(e);return n.fields=Object.assign({},this.fields),n._nodes=this._nodes,n._excludedEdges=this._excludedEdges,n._sortErrors=this._sortErrors,n}concat(e){let n=super.concat(e),r=n.fields;for(let[s,l]of Object.entries(this.fields)){const c=r[s];r[s]=c===void 0?l:c}return n.withMutation(s=>s.setFields(r,[...this._excludedEdges,...e._excludedEdges]))}_getDefault(e){if("default"in this.spec)return super._getDefault(e);if(!this._nodes.length)return;let n={};return this._nodes.forEach(r=>{var s;const l=this.fields[r];let c=e;(s=c)!=null&&s.value&&(c=Object.assign({},c,{parent:c.value,value:c.value[r]})),n[r]=l&&"getDefault"in l?l.getDefault(c):void 0}),n}setFields(e,n){let r=this.clone();return r.fields=e,r._nodes=NF(e,n),r._sortErrors=$N(Object.keys(e)),n&&(r._excludedEdges=n),r}shape(e,n=[]){return this.clone().withMutation(r=>{let s=r._excludedEdges;return n.length&&(Array.isArray(n[0])||(n=[n]),s=[...r._excludedEdges,...n]),r.setFields(Object.assign(r.fields,e),s)})}partial(){const e={};for(const[n,r]of Object.entries(this.fields))e[n]="optional"in r&&r.optional instanceof Function?r.optional():r;return this.setFields(e)}deepPartial(){return wu(this)}pick(e){const n={};for(const r of e)this.fields[r]&&(n[r]=this.fields[r]);return this.setFields(n,this._excludedEdges.filter(([r,s])=>e.includes(r)&&e.includes(s)))}omit(e){const n=[];for(const r of Object.keys(this.fields))e.includes(r)||n.push(r);return this.pick(n)}from(e,n,r){let s=Fs.getter(e,!0);return this.transform(l=>{if(!l)return l;let c=l;return xF(l,e)&&(c=Object.assign({},l),r||delete c[e],c[n]=s(l)),c})}json(){return this.transform(kF)}exact(e){return this.test({name:"exact",exclusive:!0,message:e||vu.exact,test(n){if(n==null)return!0;const r=ab(this.schema,n);return r.length===0||this.createError({params:{properties:r.join(", ")}})}})}stripUnknown(){return this.clone({noUnknown:!0})}noUnknown(e=!0,n=vu.noUnknown){typeof e!="boolean"&&(n=e,e=!0);let r=this.test({name:"noUnknown",exclusive:!0,message:n,test(s){if(s==null)return!0;const l=ab(this.schema,s);return!e||l.length===0||this.createError({params:{unknown:l.join(", ")}})}});return r.spec.noUnknown=e,r}unknown(e=!0,n=vu.noUnknown){return this.noUnknown(!e,n)}transformKeys(e){return this.transform(n=>{if(!n)return n;const r={};for(const s of Object.keys(n))r[e(s)]=n[s];return r})}camelCase(){return this.transformKeys(Op.camelCase)}snakeCase(){return this.transformKeys(Op.snakeCase)}constantCase(){return this.transformKeys(e=>Op.snakeCase(e).toUpperCase())}describe(e){const n=(e?this.resolve(e):this).clone(),r=super.describe(e);r.fields={};for(const[l,c]of Object.entries(n.fields)){var s;let m=e;(s=m)!=null&&s.value&&(m=Object.assign({},m,{parent:m.value,value:m.value[l]})),r.fields[l]=c.describe(m)}return r}}ZN.prototype=ek.prototype;const tk=({variant:t="dropdown",size:e="md"})=>{const{i18n:n}=it(),[r,s]=b.useState(!1),l=b.useRef(null),c=jM(n.language)||cd[0];b.useEffect(()=>{const p=g=>{l.current&&!l.current.contains(g.target)&&s(!1)};return document.addEventListener("mousedown",p),()=>{document.removeEventListener("mousedown",p)}},[]);const m=async p=>{await n.changeLanguage(p),await Te.setItem("local:language",p),s(!1),n.emit("languageChanged",p)};return t==="buttons"?d.jsx("div",{className:"flex space-x-2",children:cd.map(p=>d.jsxs("button",{onClick:()=>m(p.code),className:`flex items-center space-x-1 px-2 py-1 text-xs rounded transition-colors ${n.language===p.code?"bg-primary-500 text-white":"bg-gray-200 dark:bg-gray-600 text-gray-700 dark:text-gray-200 hover:bg-gray-300 dark:hover:bg-gray-500"}`,title:p.nativeName,children:[d.jsx("span",{className:"text-sm",children:p.flag}),d.jsx("span",{children:p.code.toUpperCase()})]},p.code))}):d.jsxs("div",{className:"relative",ref:l,children:[d.jsxs("button",{onClick:()=>s(!r),className:`w-full flex items-center justify-between px-3 py-1.5 rounded-lg border border-gray-200 dark:border-gray-600 bg-white dark:bg-gray-700 text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-600 transition-colors ${e==="sm"?"text-sm":"text-base"}`,children:[d.jsxs("div",{className:"flex items-center space-x-2",children:[d.jsx("span",{className:"text-lg",children:c.flag}),d.jsx("span",{children:c.nativeName})]}),d.jsx("svg",{className:`w-4 h-4 transition-transform duration-200 ${r?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),r&&d.jsx("div",{className:"absolute top-full left-0 mt-1 w-full bg-white dark:bg-gray-700 border border-gray-200 dark:border-gray-600 rounded-lg shadow-lg z-50",children:cd.map(p=>d.jsxs("button",{onClick:()=>m(p.code),className:`w-full flex items-center justify-between px-3 py-2 text-left hover:bg-gray-50 dark:hover:bg-gray-600 transition-colors first:rounded-t-lg last:rounded-b-lg ${e==="sm"?"text-sm":"text-base"}`,children:[d.jsxs("div",{className:"flex items-center space-x-2",children:[d.jsx("span",{className:"text-lg",children:p.flag}),d.jsx("span",{className:"text-gray-700 dark:text-gray-200",children:p.nativeName})]}),n.language===p.code&&d.jsx("svg",{className:"w-4 h-4 text-primary-500",fill:"currentColor",viewBox:"0 0 20 20",children:d.jsx("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})]},p.code))})]})},jp=[{label:"Aliasvault.net",value:mn.DEFAULT_API_URL},{label:"Self-hosted",value:"custom"}],DF=t=>ZN().shape({apiUrl:Wh().required(t("settings.validation.apiUrlRequired")).test("is-valid-api-url",t("settings.validation.apiUrlInvalid"),e=>{if(!e)return!0;try{const n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"}catch{return!1}}),clientUrl:Wh().required(t("settings.validation.clientUrlRequired")).test("is-valid-client-url",t("settings.validation.clientUrlInvalid"),e=>{if(!e)return!0;try{const n=new URL(e);return n.protocol==="http:"||n.protocol==="https:"}catch{return!1}})}),RF=()=>{const{t}=it(),[e,n]=b.useState(""),[r,s]=b.useState(""),[l,c]=b.useState(""),[m,p]=b.useState(!0),[g,A]=b.useState({}),{setIsInitialLoading:f}=va(),v=DF(t),w=b.useRef(null),S=b.useRef(null),T=b.useRef(null),k=b.useRef(null);b.useEffect(()=>()=>{if(w.current&&clearTimeout(w.current),S.current&&clearTimeout(S.current),T.current!==null){const _=T.current;Te.setItem("local:apiUrl",_)}if(k.current!==null){const _=k.current;Te.setItem("local:clientUrl",_)}},[]),b.useEffect(()=>{(async()=>{const j=await Te.getItem("local:apiUrl"),G=await Te.getItem("local:clientUrl"),P=await rt.getGlobalAutofillPopupEnabled(),B=await rt.getVaultLockedDismissUntil();p(B?!1:P);const z=jp.find(Q=>Q.value===j);z?n(z.value):j?(n("custom"),s(j),c(G??"")):n(jp[0].value),f(!1)})()},[f]);const L=async _=>{const j=_.target.value;n(j),j!=="custom"&&(await Te.setItem("local:apiUrl",""),await Te.setItem("local:clientUrl",""),s(""),c(""),A({}))},R=b.useCallback(_=>{const j=_.target.value;s(j),T.current=j,w.current&&clearTimeout(w.current),w.current=setTimeout(async()=>{try{await v.validateAt("apiUrl",{apiUrl:j}),A(G=>({...G,apiUrl:void 0})),await Te.setItem("local:apiUrl",j),T.current=null}catch(G){G instanceof bn&&(A(P=>({...P,apiUrl:G.message})),await Te.setItem("local:apiUrl",mn.DEFAULT_API_URL),await Te.setItem("local:clientUrl",mn.DEFAULT_CLIENT_URL),T.current=null)}},150)},[v]),x=b.useCallback(_=>{const j=_.target.value;c(j),k.current=j,S.current&&clearTimeout(S.current),S.current=setTimeout(async()=>{try{await v.validateAt("clientUrl",{clientUrl:j}),A(G=>({...G,clientUrl:void 0})),await Te.setItem("local:clientUrl",j),k.current=null}catch(G){G instanceof bn&&(A(P=>({...P,clientUrl:G.message})),k.current=null)}},150)},[v]),O=async()=>{const _=!m;await rt.setGlobalAutofillPopupEnabled(_),_&&(await rt.setDisabledSites([]),await rt.setVaultLockedDismissUntil(0)),p(_)};return d.jsxs("div",{className:"p-4 space-y-6",children:[d.jsxs("div",{className:"space-y-4 pb-6 border-b border-gray-200 dark:border-gray-700",children:[d.jsxs("div",{children:[d.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white mb-1",children:t("settings.serverConfiguration","Server Configuration")}),d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:t("settings.serverConfigurationDescription","Configure the AliasVault server URL for self-hosted instances")})]}),d.jsxs("div",{children:[d.jsx("label",{htmlFor:"api-connection",className:"block text-sm font-medium text-gray-700 dark:text-gray-200 mb-2",children:t("settings.serverUrl")}),d.jsx("select",{id:"api-connection",value:e,onChange:L,className:"w-full bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white",children:jp.map(_=>d.jsx("option",{value:_.value,children:_.label},_.value))})]}),e==="custom"&&d.jsxs("div",{className:"space-y-4 pl-4 border-l-2 border-primary-500",children:[d.jsxs("div",{children:[d.jsx("label",{htmlFor:"custom-api-url",className:"block text-sm font-medium text-gray-700 dark:text-gray-200 mb-2",children:t("settings.customApiUrl","API URL")}),d.jsx("input",{id:"custom-api-url",type:"text",value:r,onChange:R,placeholder:"https://vault.example.com/api",className:`w-full bg-gray-50 border ${g.apiUrl?"border-red-500":"border-gray-300"} text-gray-900 text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white`}),g.apiUrl&&d.jsx("p",{className:"mt-1 text-sm text-red-500",children:g.apiUrl}),d.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:t("settings.apiUrlHint","The API endpoint URL (usually client URL + /api)")})]}),d.jsxs("div",{children:[d.jsx("label",{htmlFor:"custom-client-url",className:"block text-sm font-medium text-gray-700 dark:text-gray-200 mb-2",children:t("settings.customClientUrl","Client URL")}),d.jsx("input",{id:"custom-client-url",type:"text",value:l,onChange:x,placeholder:"https://vault.example.com",className:`w-full bg-gray-50 border ${g.clientUrl?"border-red-500":"border-gray-300"} text-gray-900 text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white`}),g.clientUrl&&d.jsx("p",{className:"mt-1 text-sm text-red-500",children:g.clientUrl}),d.jsx("p",{className:"mt-1 text-xs text-gray-500 dark:text-gray-400",children:t("settings.clientUrlHint","The web interface URL of your self-hosted instance")})]})]})]}),d.jsxs("div",{className:"space-y-4 pb-6 border-b border-gray-200 dark:border-gray-700",children:[d.jsxs("div",{children:[d.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white mb-1",children:t("settings.autofillSettings","Autofill Settings")}),d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:t("settings.autofillSettingsDescription","Enable or disable the autofill popup on web pages")})]}),d.jsxs("div",{className:"flex items-center justify-between gap-4",children:[d.jsxs("div",{children:[d.jsx("p",{className:"text-sm font-medium text-gray-900 dark:text-white",children:t("settings.autofillEnabled")}),d.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:m?t("settings.autofillEnabledDescription","Autofill suggestions will appear on login forms"):t("settings.autofillDisabledDescription","Autofill suggestions are disabled globally")})]}),d.jsx("button",{onClick:O,className:`px-4 py-2 rounded-md transition-colors font-medium text-sm ${m?"bg-green-200 text-green-800 hover:bg-green-300 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50":"bg-red-200 text-red-800 hover:bg-red-300 dark:bg-red-900/30 dark:text-red-400 dark:hover:bg-red-900/50"}`,children:m?t("common.enabled","Enabled"):t("common.disabled","Disabled")})]})]}),d.jsxs("div",{className:"space-y-4 pb-6",children:[d.jsx("div",{children:d.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white mb-1",children:t("settings.languageSettings","Language")})}),d.jsx("div",{children:d.jsx(tk,{variant:"dropdown",size:"sm"})})]}),d.jsxs("div",{className:"text-center text-xs text-gray-400 dark:text-gray-600 pt-4 border-t border-gray-200 dark:border-gray-700",children:[t("settings.version"),": ",mn.VERSION]})]})},Sa=b.forwardRef(({onClick:t,id:e,children:n,type:r="button",variant:s="primary"},l)=>{const c={primary:"bg-primary-500 hover:bg-primary-600",secondary:"bg-gray-500 hover:bg-gray-600"};return d.jsx("button",{ref:l,className:`${c[s]} text-white font-medium rounded-lg px-4 py-2 text-sm w-full`,onClick:t,type:r,id:e,children:n})});Sa.displayName="Button";var Co={},Hp,nb;function UF(){return nb||(nb=1,Hp=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}),Hp}var Vp={},$r={},ib;function Os(){if(ib)return $r;ib=1;let t;const e=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];return $r.getSymbolSize=function(r){if(!r)throw new Error('"version" cannot be null or undefined');if(r<1||r>40)throw new Error('"version" should be in range from 1 to 40');return r*4+17},$r.getSymbolTotalCodewords=function(r){return e[r]},$r.getBCHDigit=function(n){let r=0;for(;n!==0;)r++,n>>>=1;return r},$r.setToSJISFunction=function(r){if(typeof r!="function")throw new Error('"toSJISFunc" is not a valid function.');t=r},$r.isKanjiModeEnabled=function(){return typeof t<"u"},$r.toSJIS=function(r){return t(r)},$r}var zp={},rb;function Uf(){return rb||(rb=1,function(t){t.L={bit:1},t.M={bit:0},t.Q={bit:3},t.H={bit:2};function e(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw new Error("Unknown EC Level: "+n)}}t.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},t.from=function(r,s){if(t.isValid(r))return r;try{return e(r)}catch{return s}}}(zp)),zp}var Qp,sb;function MF(){if(sb)return Qp;sb=1;function t(){this.buffer=[],this.length=0}return t.prototype={get:function(e){const n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)===1},put:function(e,n){for(let r=0;r<n;r++)this.putBit((e>>>n-r-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}},Qp=t,Qp}var Kp,ob;function _F(){if(ob)return Kp;ob=1;function t(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}return t.prototype.set=function(e,n,r,s){const l=e*this.size+n;this.data[l]=r,s&&(this.reservedBit[l]=!0)},t.prototype.get=function(e,n){return this.data[e*this.size+n]},t.prototype.xor=function(e,n,r){this.data[e*this.size+n]^=r},t.prototype.isReserved=function(e,n){return this.reservedBit[e*this.size+n]},Kp=t,Kp}var Gp={},lb;function FF(){return lb||(lb=1,function(t){const e=Os().getSymbolSize;t.getRowColCoords=function(r){if(r===1)return[];const s=Math.floor(r/7)+2,l=e(r),c=l===145?26:Math.ceil((l-13)/(2*s-2))*2,m=[l-7];for(let p=1;p<s-1;p++)m[p]=m[p-1]-c;return m.push(6),m.reverse()},t.getPositions=function(r){const s=[],l=t.getRowColCoords(r),c=l.length;for(let m=0;m<c;m++)for(let p=0;p<c;p++)m===0&&p===0||m===0&&p===c-1||m===c-1&&p===0||s.push([l[m],l[p]]);return s}}(Gp)),Gp}var Wp={},db;function BF(){if(db)return Wp;db=1;const t=Os().getSymbolSize,e=7;return Wp.getPositions=function(r){const s=t(r);return[[0,0],[s-e,0],[0,s-e]]},Wp}var qp={},cb;function PF(){return cb||(cb=1,function(t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const e={N1:3,N2:3,N3:40,N4:10};t.isValid=function(s){return s!=null&&s!==""&&!isNaN(s)&&s>=0&&s<=7},t.from=function(s){return t.isValid(s)?parseInt(s,10):void 0},t.getPenaltyN1=function(s){const l=s.size;let c=0,m=0,p=0,g=null,A=null;for(let f=0;f<l;f++){m=p=0,g=A=null;for(let v=0;v<l;v++){let w=s.get(f,v);w===g?m++:(m>=5&&(c+=e.N1+(m-5)),g=w,m=1),w=s.get(v,f),w===A?p++:(p>=5&&(c+=e.N1+(p-5)),A=w,p=1)}m>=5&&(c+=e.N1+(m-5)),p>=5&&(c+=e.N1+(p-5))}return c},t.getPenaltyN2=function(s){const l=s.size;let c=0;for(let m=0;m<l-1;m++)for(let p=0;p<l-1;p++){const g=s.get(m,p)+s.get(m,p+1)+s.get(m+1,p)+s.get(m+1,p+1);(g===4||g===0)&&c++}return c*e.N2},t.getPenaltyN3=function(s){const l=s.size;let c=0,m=0,p=0;for(let g=0;g<l;g++){m=p=0;for(let A=0;A<l;A++)m=m<<1&2047|s.get(g,A),A>=10&&(m===1488||m===93)&&c++,p=p<<1&2047|s.get(A,g),A>=10&&(p===1488||p===93)&&c++}return c*e.N3},t.getPenaltyN4=function(s){let l=0;const c=s.data.length;for(let p=0;p<c;p++)l+=s.data[p];return Math.abs(Math.ceil(l*100/c/5)-10)*e.N4};function n(r,s,l){switch(r){case t.Patterns.PATTERN000:return(s+l)%2===0;case t.Patterns.PATTERN001:return s%2===0;case t.Patterns.PATTERN010:return l%3===0;case t.Patterns.PATTERN011:return(s+l)%3===0;case t.Patterns.PATTERN100:return(Math.floor(s/2)+Math.floor(l/3))%2===0;case t.Patterns.PATTERN101:return s*l%2+s*l%3===0;case t.Patterns.PATTERN110:return(s*l%2+s*l%3)%2===0;case t.Patterns.PATTERN111:return(s*l%3+(s+l)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}t.applyMask=function(s,l){const c=l.size;for(let m=0;m<c;m++)for(let p=0;p<c;p++)l.isReserved(p,m)||l.xor(p,m,n(s,p,m))},t.getBestMask=function(s,l){const c=Object.keys(t.Patterns).length;let m=0,p=1/0;for(let g=0;g<c;g++){l(g),t.applyMask(g,s);const A=t.getPenaltyN1(s)+t.getPenaltyN2(s)+t.getPenaltyN3(s)+t.getPenaltyN4(s);t.applyMask(g,s),A<p&&(p=A,m=g)}return m}}(qp)),qp}var iu={},ub;function ak(){if(ub)return iu;ub=1;const t=Uf(),e=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],n=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];return iu.getBlocksCount=function(s,l){switch(l){case t.L:return e[(s-1)*4+0];case t.M:return e[(s-1)*4+1];case t.Q:return e[(s-1)*4+2];case t.H:return e[(s-1)*4+3];default:return}},iu.getTotalCodewordsCount=function(s,l){switch(l){case t.L:return n[(s-1)*4+0];case t.M:return n[(s-1)*4+1];case t.Q:return n[(s-1)*4+2];case t.H:return n[(s-1)*4+3];default:return}},iu}var Yp={},ql={},mb;function OF(){if(mb)return ql;mb=1;const t=new Uint8Array(512),e=new Uint8Array(256);return function(){let r=1;for(let s=0;s<255;s++)t[s]=r,e[r]=s,r<<=1,r&256&&(r^=285);for(let s=255;s<512;s++)t[s]=t[s-255]}(),ql.log=function(r){if(r<1)throw new Error("log("+r+")");return e[r]},ql.exp=function(r){return t[r]},ql.mul=function(r,s){return r===0||s===0?0:t[e[r]+e[s]]},ql}var gb;function jF(){return gb||(gb=1,function(t){const e=OF();t.mul=function(r,s){const l=new Uint8Array(r.length+s.length-1);for(let c=0;c<r.length;c++)for(let m=0;m<s.length;m++)l[c+m]^=e.mul(r[c],s[m]);return l},t.mod=function(r,s){let l=new Uint8Array(r);for(;l.length-s.length>=0;){const c=l[0];for(let p=0;p<s.length;p++)l[p]^=e.mul(s[p],c);let m=0;for(;m<l.length&&l[m]===0;)m++;l=l.slice(m)}return l},t.generateECPolynomial=function(r){let s=new Uint8Array([1]);for(let l=0;l<r;l++)s=t.mul(s,new Uint8Array([1,e.exp(l)]));return s}}(Yp)),Yp}var Jp,pb;function HF(){if(pb)return Jp;pb=1;const t=jF();function e(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}return e.prototype.initialize=function(r){this.degree=r,this.genPoly=t.generateECPolynomial(this.degree)},e.prototype.encode=function(r){if(!this.genPoly)throw new Error("Encoder not initialized");const s=new Uint8Array(r.length+this.degree);s.set(r);const l=t.mod(s,this.genPoly),c=this.degree-l.length;if(c>0){const m=new Uint8Array(this.degree);return m.set(l,c),m}return l},Jp=e,Jp}var Xp={},$p={},Zp={},hb;function nk(){return hb||(hb=1,Zp.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}),Zp}var Bi={},fb;function ik(){if(fb)return Bi;fb=1;const t="[0-9]+",e="[A-Z $%*+\\-./:]+";let n="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";n=n.replace(/u/g,"\\u");const r="(?:(?![A-Z0-9 $%*+\\-./:]|"+n+`)(?:.|[\r
]))+`;Bi.KANJI=new RegExp(n,"g"),Bi.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),Bi.BYTE=new RegExp(r,"g"),Bi.NUMERIC=new RegExp(t,"g"),Bi.ALPHANUMERIC=new RegExp(e,"g");const s=new RegExp("^"+n+"$"),l=new RegExp("^"+t+"$"),c=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");return Bi.testKanji=function(p){return s.test(p)},Bi.testNumeric=function(p){return l.test(p)},Bi.testAlphanumeric=function(p){return c.test(p)},Bi}var Ab;function js(){return Ab||(Ab=1,function(t){const e=nk(),n=ik();t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(l,c){if(!l.ccBits)throw new Error("Invalid mode: "+l);if(!e.isValid(c))throw new Error("Invalid version: "+c);return c>=1&&c<10?l.ccBits[0]:c<27?l.ccBits[1]:l.ccBits[2]},t.getBestModeForData=function(l){return n.testNumeric(l)?t.NUMERIC:n.testAlphanumeric(l)?t.ALPHANUMERIC:n.testKanji(l)?t.KANJI:t.BYTE},t.toString=function(l){if(l&&l.id)return l.id;throw new Error("Invalid mode")},t.isValid=function(l){return l&&l.bit&&l.ccBits};function r(s){if(typeof s!="string")throw new Error("Param is not a string");switch(s.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+s)}}t.from=function(l,c){if(t.isValid(l))return l;try{return r(l)}catch{return c}}}($p)),$p}var yb;function VF(){return yb||(yb=1,function(t){const e=Os(),n=ak(),r=Uf(),s=js(),l=nk(),c=7973,m=e.getBCHDigit(c);function p(v,w,S){for(let T=1;T<=40;T++)if(w<=t.getCapacity(T,S,v))return T}function g(v,w){return s.getCharCountIndicator(v,w)+4}function A(v,w){let S=0;return v.forEach(function(T){const k=g(T.mode,w);S+=k+T.getBitsLength()}),S}function f(v,w){for(let S=1;S<=40;S++)if(A(v,S)<=t.getCapacity(S,w,s.MIXED))return S}t.from=function(w,S){return l.isValid(w)?parseInt(w,10):S},t.getCapacity=function(w,S,T){if(!l.isValid(w))throw new Error("Invalid QR Code version");typeof T>"u"&&(T=s.BYTE);const k=e.getSymbolTotalCodewords(w),L=n.getTotalCodewordsCount(w,S),R=(k-L)*8;if(T===s.MIXED)return R;const x=R-g(T,w);switch(T){case s.NUMERIC:return Math.floor(x/10*3);case s.ALPHANUMERIC:return Math.floor(x/11*2);case s.KANJI:return Math.floor(x/13);case s.BYTE:default:return Math.floor(x/8)}},t.getBestVersionForData=function(w,S){let T;const k=r.from(S,r.M);if(Array.isArray(w)){if(w.length>1)return f(w,k);if(w.length===0)return 1;T=w[0]}else T=w;return p(T.mode,T.getLength(),k)},t.getEncodedBits=function(w){if(!l.isValid(w)||w<7)throw new Error("Invalid QR Code version");let S=w<<12;for(;e.getBCHDigit(S)-m>=0;)S^=c<<e.getBCHDigit(S)-m;return w<<12|S}}(Xp)),Xp}var eh={},Eb;function zF(){if(Eb)return eh;Eb=1;const t=Os(),e=1335,n=21522,r=t.getBCHDigit(e);return eh.getEncodedBits=function(l,c){const m=l.bit<<3|c;let p=m<<10;for(;t.getBCHDigit(p)-r>=0;)p^=e<<t.getBCHDigit(p)-r;return(m<<10|p)^n},eh}var th={},ah,bb;function QF(){if(bb)return ah;bb=1;const t=js();function e(n){this.mode=t.NUMERIC,this.data=n.toString()}return e.getBitsLength=function(r){return 10*Math.floor(r/3)+(r%3?r%3*3+1:0)},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(r){let s,l,c;for(s=0;s+3<=this.data.length;s+=3)l=this.data.substr(s,3),c=parseInt(l,10),r.put(c,10);const m=this.data.length-s;m>0&&(l=this.data.substr(s),c=parseInt(l,10),r.put(c,m*3+1))},ah=e,ah}var nh,vb;function KF(){if(vb)return nh;vb=1;const t=js(),e=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function n(r){this.mode=t.ALPHANUMERIC,this.data=r}return n.getBitsLength=function(s){return 11*Math.floor(s/2)+6*(s%2)},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(s){let l;for(l=0;l+2<=this.data.length;l+=2){let c=e.indexOf(this.data[l])*45;c+=e.indexOf(this.data[l+1]),s.put(c,11)}this.data.length%2&&s.put(e.indexOf(this.data[l]),6)},nh=n,nh}var ih,wb;function GF(){if(wb)return ih;wb=1;const t=js();function e(n){this.mode=t.BYTE,typeof n=="string"?this.data=new TextEncoder().encode(n):this.data=new Uint8Array(n)}return e.getBitsLength=function(r){return r*8},e.prototype.getLength=function(){return this.data.length},e.prototype.getBitsLength=function(){return e.getBitsLength(this.data.length)},e.prototype.write=function(n){for(let r=0,s=this.data.length;r<s;r++)n.put(this.data[r],8)},ih=e,ih}var rh,Ib;function WF(){if(Ib)return rh;Ib=1;const t=js(),e=Os();function n(r){this.mode=t.KANJI,this.data=r}return n.getBitsLength=function(s){return s*13},n.prototype.getLength=function(){return this.data.length},n.prototype.getBitsLength=function(){return n.getBitsLength(this.data.length)},n.prototype.write=function(r){let s;for(s=0;s<this.data.length;s++){let l=e.toSJIS(this.data[s]);if(l>=33088&&l<=40956)l-=33088;else if(l>=57408&&l<=60351)l-=49472;else throw new Error("Invalid SJIS character: "+this.data[s]+`
Make sure your charset is UTF-8`);l=(l>>>8&255)*192+(l&255),r.put(l,13)}},rh=n,rh}var sh={exports:{}},Cb;function qF(){return Cb||(Cb=1,function(t){var e={single_source_shortest_paths:function(n,r,s){var l={},c={};c[r]=0;var m=e.PriorityQueue.make();m.push(r,0);for(var p,g,A,f,v,w,S,T,k;!m.empty();){p=m.pop(),g=p.value,f=p.cost,v=n[g]||{};for(A in v)v.hasOwnProperty(A)&&(w=v[A],S=f+w,T=c[A],k=typeof c[A]>"u",(k||T>S)&&(c[A]=S,m.push(A,S),l[A]=g))}if(typeof s<"u"&&typeof c[s]>"u"){var L=["Could not find a path from ",r," to ",s,"."].join("");throw new Error(L)}return l},extract_shortest_path_from_predecessor_list:function(n,r){for(var s=[],l=r;l;)s.push(l),n[l],l=n[l];return s.reverse(),s},find_path:function(n,r,s){var l=e.single_source_shortest_paths(n,r,s);return e.extract_shortest_path_from_predecessor_list(l,s)},PriorityQueue:{make:function(n){var r=e.PriorityQueue,s={},l;n=n||{};for(l in r)r.hasOwnProperty(l)&&(s[l]=r[l]);return s.queue=[],s.sorter=n.sorter||r.default_sorter,s},default_sorter:function(n,r){return n.cost-r.cost},push:function(n,r){var s={value:n,cost:r};this.queue.push(s),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t.exports=e}(sh)),sh.exports}var Sb;function YF(){return Sb||(Sb=1,function(t){const e=js(),n=QF(),r=KF(),s=GF(),l=WF(),c=ik(),m=Os(),p=qF();function g(L){return unescape(encodeURIComponent(L)).length}function A(L,R,x){const O=[];let _;for(;(_=L.exec(x))!==null;)O.push({data:_[0],index:_.index,mode:R,length:_[0].length});return O}function f(L){const R=A(c.NUMERIC,e.NUMERIC,L),x=A(c.ALPHANUMERIC,e.ALPHANUMERIC,L);let O,_;return m.isKanjiModeEnabled()?(O=A(c.BYTE,e.BYTE,L),_=A(c.KANJI,e.KANJI,L)):(O=A(c.BYTE_KANJI,e.BYTE,L),_=[]),R.concat(x,O,_).sort(function(G,P){return G.index-P.index}).map(function(G){return{data:G.data,mode:G.mode,length:G.length}})}function v(L,R){switch(R){case e.NUMERIC:return n.getBitsLength(L);case e.ALPHANUMERIC:return r.getBitsLength(L);case e.KANJI:return l.getBitsLength(L);case e.BYTE:return s.getBitsLength(L)}}function w(L){return L.reduce(function(R,x){const O=R.length-1>=0?R[R.length-1]:null;return O&&O.mode===x.mode?(R[R.length-1].data+=x.data,R):(R.push(x),R)},[])}function S(L){const R=[];for(let x=0;x<L.length;x++){const O=L[x];switch(O.mode){case e.NUMERIC:R.push([O,{data:O.data,mode:e.ALPHANUMERIC,length:O.length},{data:O.data,mode:e.BYTE,length:O.length}]);break;case e.ALPHANUMERIC:R.push([O,{data:O.data,mode:e.BYTE,length:O.length}]);break;case e.KANJI:R.push([O,{data:O.data,mode:e.BYTE,length:g(O.data)}]);break;case e.BYTE:R.push([{data:O.data,mode:e.BYTE,length:g(O.data)}])}}return R}function T(L,R){const x={},O={start:{}};let _=["start"];for(let j=0;j<L.length;j++){const G=L[j],P=[];for(let B=0;B<G.length;B++){const z=G[B],Q=""+j+B;P.push(Q),x[Q]={node:z,lastCount:0},O[Q]={};for(let ae=0;ae<_.length;ae++){const Y=_[ae];x[Y]&&x[Y].node.mode===z.mode?(O[Y][Q]=v(x[Y].lastCount+z.length,z.mode)-v(x[Y].lastCount,z.mode),x[Y].lastCount+=z.length):(x[Y]&&(x[Y].lastCount=z.length),O[Y][Q]=v(z.length,z.mode)+4+e.getCharCountIndicator(z.mode,R))}}_=P}for(let j=0;j<_.length;j++)O[_[j]].end=0;return{map:O,table:x}}function k(L,R){let x;const O=e.getBestModeForData(L);if(x=e.from(R,O),x!==e.BYTE&&x.bit<O.bit)throw new Error('"'+L+'" cannot be encoded with mode '+e.toString(x)+`.
 Suggested mode is: `+e.toString(O));switch(x===e.KANJI&&!m.isKanjiModeEnabled()&&(x=e.BYTE),x){case e.NUMERIC:return new n(L);case e.ALPHANUMERIC:return new r(L);case e.KANJI:return new l(L);case e.BYTE:return new s(L)}}t.fromArray=function(R){return R.reduce(function(x,O){return typeof O=="string"?x.push(k(O,null)):O.data&&x.push(k(O.data,O.mode)),x},[])},t.fromString=function(R,x){const O=f(R,m.isKanjiModeEnabled()),_=S(O),j=T(_,x),G=p.find_path(j.map,"start","end"),P=[];for(let B=1;B<G.length-1;B++)P.push(j.table[G[B]].node);return t.fromArray(w(P))},t.rawSplit=function(R){return t.fromArray(f(R,m.isKanjiModeEnabled()))}}(th)),th}var Tb;function JF(){if(Tb)return Vp;Tb=1;const t=Os(),e=Uf(),n=MF(),r=_F(),s=FF(),l=BF(),c=PF(),m=ak(),p=HF(),g=VF(),A=zF(),f=js(),v=YF();function w(j,G){const P=j.size,B=l.getPositions(G);for(let z=0;z<B.length;z++){const Q=B[z][0],ae=B[z][1];for(let Y=-1;Y<=7;Y++)if(!(Q+Y<=-1||P<=Q+Y))for(let ne=-1;ne<=7;ne++)ae+ne<=-1||P<=ae+ne||(Y>=0&&Y<=6&&(ne===0||ne===6)||ne>=0&&ne<=6&&(Y===0||Y===6)||Y>=2&&Y<=4&&ne>=2&&ne<=4?j.set(Q+Y,ae+ne,!0,!0):j.set(Q+Y,ae+ne,!1,!0))}}function S(j){const G=j.size;for(let P=8;P<G-8;P++){const B=P%2===0;j.set(P,6,B,!0),j.set(6,P,B,!0)}}function T(j,G){const P=s.getPositions(G);for(let B=0;B<P.length;B++){const z=P[B][0],Q=P[B][1];for(let ae=-2;ae<=2;ae++)for(let Y=-2;Y<=2;Y++)ae===-2||ae===2||Y===-2||Y===2||ae===0&&Y===0?j.set(z+ae,Q+Y,!0,!0):j.set(z+ae,Q+Y,!1,!0)}}function k(j,G){const P=j.size,B=g.getEncodedBits(G);let z,Q,ae;for(let Y=0;Y<18;Y++)z=Math.floor(Y/3),Q=Y%3+P-8-3,ae=(B>>Y&1)===1,j.set(z,Q,ae,!0),j.set(Q,z,ae,!0)}function L(j,G,P){const B=j.size,z=A.getEncodedBits(G,P);let Q,ae;for(Q=0;Q<15;Q++)ae=(z>>Q&1)===1,Q<6?j.set(Q,8,ae,!0):Q<8?j.set(Q+1,8,ae,!0):j.set(B-15+Q,8,ae,!0),Q<8?j.set(8,B-Q-1,ae,!0):Q<9?j.set(8,15-Q-1+1,ae,!0):j.set(8,15-Q-1,ae,!0);j.set(B-8,8,1,!0)}function R(j,G){const P=j.size;let B=-1,z=P-1,Q=7,ae=0;for(let Y=P-1;Y>0;Y-=2)for(Y===6&&Y--;;){for(let ne=0;ne<2;ne++)if(!j.isReserved(z,Y-ne)){let fe=!1;ae<G.length&&(fe=(G[ae]>>>Q&1)===1),j.set(z,Y-ne,fe),Q--,Q===-1&&(ae++,Q=7)}if(z+=B,z<0||P<=z){z-=B,B=-B;break}}}function x(j,G,P){const B=new n;P.forEach(function(ne){B.put(ne.mode.bit,4),B.put(ne.getLength(),f.getCharCountIndicator(ne.mode,j)),ne.write(B)});const z=t.getSymbolTotalCodewords(j),Q=m.getTotalCodewordsCount(j,G),ae=(z-Q)*8;for(B.getLengthInBits()+4<=ae&&B.put(0,4);B.getLengthInBits()%8!==0;)B.putBit(0);const Y=(ae-B.getLengthInBits())/8;for(let ne=0;ne<Y;ne++)B.put(ne%2?17:236,8);return O(B,j,G)}function O(j,G,P){const B=t.getSymbolTotalCodewords(G),z=m.getTotalCodewordsCount(G,P),Q=B-z,ae=m.getBlocksCount(G,P),Y=B%ae,ne=ae-Y,fe=Math.floor(B/ae),X=Math.floor(Q/ae),te=X+1,ce=fe-X,oe=new p(ce);let F=0;const J=new Array(ae),W=new Array(ae);let ie=0;const we=new Uint8Array(j.buffer);for(let Ke=0;Ke<ae;Ke++){const Ye=Ke<ne?X:te;J[Ke]=we.slice(F,F+Ye),W[Ke]=oe.encode(J[Ke]),F+=Ye,ie=Math.max(ie,Ye)}const le=new Uint8Array(B);let ve=0,Pe,_e;for(Pe=0;Pe<ie;Pe++)for(_e=0;_e<ae;_e++)Pe<J[_e].length&&(le[ve++]=J[_e][Pe]);for(Pe=0;Pe<ce;Pe++)for(_e=0;_e<ae;_e++)le[ve++]=W[_e][Pe];return le}function _(j,G,P,B){let z;if(Array.isArray(j))z=v.fromArray(j);else if(typeof j=="string"){let fe=G;if(!fe){const X=v.rawSplit(j);fe=g.getBestVersionForData(X,P)}z=v.fromString(j,fe||40)}else throw new Error("Invalid data");const Q=g.getBestVersionForData(z,P);if(!Q)throw new Error("The amount of data is too big to be stored in a QR Code");if(!G)G=Q;else if(G<Q)throw new Error(`
The chosen QR Code version cannot contain this amount of data.
Minimum version required to store current data is: `+Q+`.
`);const ae=x(G,P,z),Y=t.getSymbolSize(G),ne=new r(Y);return w(ne,G),S(ne),T(ne,G),L(ne,P,0),G>=7&&k(ne,G),R(ne,ae),isNaN(B)&&(B=c.getBestMask(ne,L.bind(null,ne,P))),c.applyMask(B,ne),L(ne,P,B),{modules:ne,version:G,errorCorrectionLevel:P,maskPattern:B,segments:z}}return Vp.create=function(G,P){if(typeof G>"u"||G==="")throw new Error("No input text");let B=e.M,z,Q;return typeof P<"u"&&(B=e.from(P.errorCorrectionLevel,e.M),z=g.from(P.version),Q=c.from(P.maskPattern),P.toSJISFunc&&t.setToSJISFunction(P.toSJISFunc)),_(G,z,B,Q)},Vp}var oh={},lh={},Nb;function rk(){return Nb||(Nb=1,function(t){function e(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let r=n.slice().replace("#","").split("");if(r.length<3||r.length===5||r.length>8)throw new Error("Invalid hex color: "+n);(r.length===3||r.length===4)&&(r=Array.prototype.concat.apply([],r.map(function(l){return[l,l]}))),r.length===6&&r.push("F","F");const s=parseInt(r.join(""),16);return{r:s>>24&255,g:s>>16&255,b:s>>8&255,a:s&255,hex:"#"+r.slice(0,6).join("")}}t.getOptions=function(r){r||(r={}),r.color||(r.color={});const s=typeof r.margin>"u"||r.margin===null||r.margin<0?4:r.margin,l=r.width&&r.width>=21?r.width:void 0,c=r.scale||4;return{width:l,scale:l?4:c,margin:s,color:{dark:e(r.color.dark||"#000000ff"),light:e(r.color.light||"#ffffffff")},type:r.type,rendererOpts:r.rendererOpts||{}}},t.getScale=function(r,s){return s.width&&s.width>=r+s.margin*2?s.width/(r+s.margin*2):s.scale},t.getImageWidth=function(r,s){const l=t.getScale(r,s);return Math.floor((r+s.margin*2)*l)},t.qrToImageData=function(r,s,l){const c=s.modules.size,m=s.modules.data,p=t.getScale(c,l),g=Math.floor((c+l.margin*2)*p),A=l.margin*p,f=[l.color.light,l.color.dark];for(let v=0;v<g;v++)for(let w=0;w<g;w++){let S=(v*g+w)*4,T=l.color.light;if(v>=A&&w>=A&&v<g-A&&w<g-A){const k=Math.floor((v-A)/p),L=Math.floor((w-A)/p);T=f[m[k*c+L]?1:0]}r[S++]=T.r,r[S++]=T.g,r[S++]=T.b,r[S]=T.a}}}(lh)),lh}var kb;function XF(){return kb||(kb=1,function(t){const e=rk();function n(s,l,c){s.clearRect(0,0,l.width,l.height),l.style||(l.style={}),l.height=c,l.width=c,l.style.height=c+"px",l.style.width=c+"px"}function r(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}t.render=function(l,c,m){let p=m,g=c;typeof p>"u"&&(!c||!c.getContext)&&(p=c,c=void 0),c||(g=r()),p=e.getOptions(p);const A=e.getImageWidth(l.modules.size,p),f=g.getContext("2d"),v=f.createImageData(A,A);return e.qrToImageData(v.data,l,p),n(f,g,A),f.putImageData(v,0,0),g},t.renderToDataURL=function(l,c,m){let p=m;typeof p>"u"&&(!c||!c.getContext)&&(p=c,c=void 0),p||(p={});const g=t.render(l,c,p),A=p.type||"image/png",f=p.rendererOpts||{};return g.toDataURL(A,f.quality)}}(oh)),oh}var dh={},xb;function $F(){if(xb)return dh;xb=1;const t=rk();function e(s,l){const c=s.a/255,m=l+'="'+s.hex+'"';return c<1?m+" "+l+'-opacity="'+c.toFixed(2).slice(1)+'"':m}function n(s,l,c){let m=s+l;return typeof c<"u"&&(m+=" "+c),m}function r(s,l,c){let m="",p=0,g=!1,A=0;for(let f=0;f<s.length;f++){const v=Math.floor(f%l),w=Math.floor(f/l);!v&&!g&&(g=!0),s[f]?(A++,f>0&&v>0&&s[f-1]||(m+=g?n("M",v+c,.5+w+c):n("m",p,0),p=0,g=!1),v+1<l&&s[f+1]||(m+=n("h",A),A=0)):p++}return m}return dh.render=function(l,c,m){const p=t.getOptions(c),g=l.modules.size,A=l.modules.data,f=g+p.margin*2,v=p.color.light.a?"<path "+e(p.color.light,"fill")+' d="M0 0h'+f+"v"+f+'H0z"/>':"",w="<path "+e(p.color.dark,"stroke")+' d="'+r(A,g,p.margin)+'"/>',S='viewBox="0 0 '+f+" "+f+'"',k='<svg xmlns="http://www.w3.org/2000/svg" '+(p.width?'width="'+p.width+'" height="'+p.width+'" ':"")+S+' shape-rendering="crispEdges">'+v+w+`</svg>
`;return typeof m=="function"&&m(null,k),k},dh}var Lb;function ZF(){if(Lb)return Co;Lb=1;const t=UF(),e=JF(),n=XF(),r=$F();function s(l,c,m,p,g){const A=[].slice.call(arguments,1),f=A.length,v=typeof A[f-1]=="function";if(!v&&!t())throw new Error("Callback required as last argument");if(v){if(f<2)throw new Error("Too few arguments provided");f===2?(g=m,m=c,c=p=void 0):f===3&&(c.getContext&&typeof g>"u"?(g=p,p=void 0):(g=p,p=m,m=c,c=void 0))}else{if(f<1)throw new Error("Too few arguments provided");return f===1?(m=c,c=p=void 0):f===2&&!c.getContext&&(p=m,m=c,c=void 0),new Promise(function(w,S){try{const T=e.create(m,p);w(l(T,c,p))}catch(T){S(T)}})}try{const w=e.create(m,p);g(null,l(w,c,p))}catch(w){g(w)}}return Co.create=e.create,Co.toCanvas=s.bind(null,n.render),Co.toDataURL=s.bind(null,n.renderToDataURL),Co.toString=s.bind(null,function(l,c,m){return r.render(l,m)}),Co}var eB=ZF();const sk=cs(eB);var ei=(t=>(t.TIMEOUT="TIMEOUT",t.GENERIC="GENERIC",t))(ei||{}),ch={},Yl={},Db;function tB(){if(Db)return Yl;Db=1,Yl.byteLength=m,Yl.toByteArray=g,Yl.fromByteArray=v;for(var t=[],e=[],n=typeof Uint8Array<"u"?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=r.length;s<l;++s)t[s]=r[s],e[r.charCodeAt(s)]=s;e[45]=62,e[95]=63;function c(w){var S=w.length;if(S%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var T=w.indexOf("=");T===-1&&(T=S);var k=T===S?0:4-T%4;return[T,k]}function m(w){var S=c(w),T=S[0],k=S[1];return(T+k)*3/4-k}function p(w,S,T){return(S+T)*3/4-T}function g(w){var S,T=c(w),k=T[0],L=T[1],R=new n(p(w,k,L)),x=0,O=L>0?k-4:k,_;for(_=0;_<O;_+=4)S=e[w.charCodeAt(_)]<<18|e[w.charCodeAt(_+1)]<<12|e[w.charCodeAt(_+2)]<<6|e[w.charCodeAt(_+3)],R[x++]=S>>16&255,R[x++]=S>>8&255,R[x++]=S&255;return L===2&&(S=e[w.charCodeAt(_)]<<2|e[w.charCodeAt(_+1)]>>4,R[x++]=S&255),L===1&&(S=e[w.charCodeAt(_)]<<10|e[w.charCodeAt(_+1)]<<4|e[w.charCodeAt(_+2)]>>2,R[x++]=S>>8&255,R[x++]=S&255),R}function A(w){return t[w>>18&63]+t[w>>12&63]+t[w>>6&63]+t[w&63]}function f(w,S,T){for(var k,L=[],R=S;R<T;R+=3)k=(w[R]<<16&16711680)+(w[R+1]<<8&65280)+(w[R+2]&255),L.push(A(k));return L.join("")}function v(w){for(var S,T=w.length,k=T%3,L=[],R=16383,x=0,O=T-k;x<O;x+=R)L.push(f(w,x,x+R>O?O:x+R));return k===1?(S=w[T-1],L.push(t[S>>2]+t[S<<4&63]+"==")):k===2&&(S=(w[T-2]<<8)+w[T-1],L.push(t[S>>10]+t[S>>4&63]+t[S<<2&63]+"=")),L.join("")}return Yl}var ru={};/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */var Rb;function aB(){return Rb||(Rb=1,ru.read=function(t,e,n,r,s){var l,c,m=s*8-r-1,p=(1<<m)-1,g=p>>1,A=-7,f=n?s-1:0,v=n?-1:1,w=t[e+f];for(f+=v,l=w&(1<<-A)-1,w>>=-A,A+=m;A>0;l=l*256+t[e+f],f+=v,A-=8);for(c=l&(1<<-A)-1,l>>=-A,A+=r;A>0;c=c*256+t[e+f],f+=v,A-=8);if(l===0)l=1-g;else{if(l===p)return c?NaN:(w?-1:1)*(1/0);c=c+Math.pow(2,r),l=l-g}return(w?-1:1)*c*Math.pow(2,l-r)},ru.write=function(t,e,n,r,s,l){var c,m,p,g=l*8-s-1,A=(1<<g)-1,f=A>>1,v=s===23?Math.pow(2,-24)-Math.pow(2,-77):0,w=r?0:l-1,S=r?1:-1,T=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(m=isNaN(e)?1:0,c=A):(c=Math.floor(Math.log(e)/Math.LN2),e*(p=Math.pow(2,-c))<1&&(c--,p*=2),c+f>=1?e+=v/p:e+=v*Math.pow(2,1-f),e*p>=2&&(c++,p/=2),c+f>=A?(m=0,c=A):c+f>=1?(m=(e*p-1)*Math.pow(2,s),c=c+f):(m=e*Math.pow(2,f-1)*Math.pow(2,s),c=0));s>=8;t[n+w]=m&255,w+=S,m/=256,s-=8);for(c=c<<s|m,g+=s;g>0;t[n+w]=c&255,w+=S,c/=256,g-=8);t[n+w-S]|=T*128}),ru}/*!
 * The buffer module from node.js, for the browser.
 *
 * @author   Feross Aboukhadijeh <https://feross.org>
 * @license  MIT
 */var Ub;function nB(){return Ub||(Ub=1,function(t){const e=tB(),n=aB(),r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=m,t.SlowBuffer=R,t.INSPECT_MAX_BYTES=50;const s=2147483647;t.kMaxLength=s,m.TYPED_ARRAY_SUPPORT=l(),!m.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function l(){try{const M=new Uint8Array(1),C={foo:function(){return 42}};return Object.setPrototypeOf(C,Uint8Array.prototype),Object.setPrototypeOf(M,C),M.foo()===42}catch{return!1}}Object.defineProperty(m.prototype,"parent",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.buffer}}),Object.defineProperty(m.prototype,"offset",{enumerable:!0,get:function(){if(m.isBuffer(this))return this.byteOffset}});function c(M){if(M>s)throw new RangeError('The value "'+M+'" is invalid for option "size"');const C=new Uint8Array(M);return Object.setPrototypeOf(C,m.prototype),C}function m(M,C,N){if(typeof M=="number"){if(typeof C=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return f(M)}return p(M,C,N)}m.poolSize=8192;function p(M,C,N){if(typeof M=="string")return v(M,C);if(ArrayBuffer.isView(M))return S(M);if(M==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof M);if(Ee(M,ArrayBuffer)||M&&Ee(M.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Ee(M,SharedArrayBuffer)||M&&Ee(M.buffer,SharedArrayBuffer)))return T(M,C,N);if(typeof M=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const K=M.valueOf&&M.valueOf();if(K!=null&&K!==M)return m.from(K,C,N);const ee=k(M);if(ee)return ee;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof M[Symbol.toPrimitive]=="function")return m.from(M[Symbol.toPrimitive]("string"),C,N);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof M)}m.from=function(M,C,N){return p(M,C,N)},Object.setPrototypeOf(m.prototype,Uint8Array.prototype),Object.setPrototypeOf(m,Uint8Array);function g(M){if(typeof M!="number")throw new TypeError('"size" argument must be of type number');if(M<0)throw new RangeError('The value "'+M+'" is invalid for option "size"')}function A(M,C,N){return g(M),M<=0?c(M):C!==void 0?typeof N=="string"?c(M).fill(C,N):c(M).fill(C):c(M)}m.alloc=function(M,C,N){return A(M,C,N)};function f(M){return g(M),c(M<0?0:L(M)|0)}m.allocUnsafe=function(M){return f(M)},m.allocUnsafeSlow=function(M){return f(M)};function v(M,C){if((typeof C!="string"||C==="")&&(C="utf8"),!m.isEncoding(C))throw new TypeError("Unknown encoding: "+C);const N=x(M,C)|0;let K=c(N);const ee=K.write(M,C);return ee!==N&&(K=K.slice(0,ee)),K}function w(M){const C=M.length<0?0:L(M.length)|0,N=c(C);for(let K=0;K<C;K+=1)N[K]=M[K]&255;return N}function S(M){if(Ee(M,Uint8Array)){const C=new Uint8Array(M);return T(C.buffer,C.byteOffset,C.byteLength)}return w(M)}function T(M,C,N){if(C<0||M.byteLength<C)throw new RangeError('"offset" is outside of buffer bounds');if(M.byteLength<C+(N||0))throw new RangeError('"length" is outside of buffer bounds');let K;return C===void 0&&N===void 0?K=new Uint8Array(M):N===void 0?K=new Uint8Array(M,C):K=new Uint8Array(M,C,N),Object.setPrototypeOf(K,m.prototype),K}function k(M){if(m.isBuffer(M)){const C=L(M.length)|0,N=c(C);return N.length===0||M.copy(N,0,0,C),N}if(M.length!==void 0)return typeof M.length!="number"||je(M.length)?c(0):w(M);if(M.type==="Buffer"&&Array.isArray(M.data))return w(M.data)}function L(M){if(M>=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return M|0}function R(M){return+M!=M&&(M=0),m.alloc(+M)}m.isBuffer=function(C){return C!=null&&C._isBuffer===!0&&C!==m.prototype},m.compare=function(C,N){if(Ee(C,Uint8Array)&&(C=m.from(C,C.offset,C.byteLength)),Ee(N,Uint8Array)&&(N=m.from(N,N.offset,N.byteLength)),!m.isBuffer(C)||!m.isBuffer(N))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(C===N)return 0;let K=C.length,ee=N.length;for(let pe=0,Se=Math.min(K,ee);pe<Se;++pe)if(C[pe]!==N[pe]){K=C[pe],ee=N[pe];break}return K<ee?-1:ee<K?1:0},m.isEncoding=function(C){switch(String(C).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},m.concat=function(C,N){if(!Array.isArray(C))throw new TypeError('"list" argument must be an Array of Buffers');if(C.length===0)return m.alloc(0);let K;if(N===void 0)for(N=0,K=0;K<C.length;++K)N+=C[K].length;const ee=m.allocUnsafe(N);let pe=0;for(K=0;K<C.length;++K){let Se=C[K];if(Ee(Se,Uint8Array))pe+Se.length>ee.length?(m.isBuffer(Se)||(Se=m.from(Se)),Se.copy(ee,pe)):Uint8Array.prototype.set.call(ee,Se,pe);else if(m.isBuffer(Se))Se.copy(ee,pe);else throw new TypeError('"list" argument must be an Array of Buffers');pe+=Se.length}return ee};function x(M,C){if(m.isBuffer(M))return M.length;if(ArrayBuffer.isView(M)||Ee(M,ArrayBuffer))return M.byteLength;if(typeof M!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof M);const N=M.length,K=arguments.length>2&&arguments[2]===!0;if(!K&&N===0)return 0;let ee=!1;for(;;)switch(C){case"ascii":case"latin1":case"binary":return N;case"utf8":case"utf-8":return Be(M).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N*2;case"hex":return N>>>1;case"base64":return nt(M).length;default:if(ee)return K?-1:Be(M).length;C=(""+C).toLowerCase(),ee=!0}}m.byteLength=x;function O(M,C,N){let K=!1;if((C===void 0||C<0)&&(C=0),C>this.length||((N===void 0||N>this.length)&&(N=this.length),N<=0)||(N>>>=0,C>>>=0,N<=C))return"";for(M||(M="utf8");;)switch(M){case"hex":return oe(this,C,N);case"utf8":case"utf-8":return ne(this,C,N);case"ascii":return te(this,C,N);case"latin1":case"binary":return ce(this,C,N);case"base64":return Y(this,C,N);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,C,N);default:if(K)throw new TypeError("Unknown encoding: "+M);M=(M+"").toLowerCase(),K=!0}}m.prototype._isBuffer=!0;function _(M,C,N){const K=M[C];M[C]=M[N],M[N]=K}m.prototype.swap16=function(){const C=this.length;if(C%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let N=0;N<C;N+=2)_(this,N,N+1);return this},m.prototype.swap32=function(){const C=this.length;if(C%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let N=0;N<C;N+=4)_(this,N,N+3),_(this,N+1,N+2);return this},m.prototype.swap64=function(){const C=this.length;if(C%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let N=0;N<C;N+=8)_(this,N,N+7),_(this,N+1,N+6),_(this,N+2,N+5),_(this,N+3,N+4);return this},m.prototype.toString=function(){const C=this.length;return C===0?"":arguments.length===0?ne(this,0,C):O.apply(this,arguments)},m.prototype.toLocaleString=m.prototype.toString,m.prototype.equals=function(C){if(!m.isBuffer(C))throw new TypeError("Argument must be a Buffer");return this===C?!0:m.compare(this,C)===0},m.prototype.inspect=function(){let C="";const N=t.INSPECT_MAX_BYTES;return C=this.toString("hex",0,N).replace(/(.{2})/g,"$1 ").trim(),this.length>N&&(C+=" ... "),"<Buffer "+C+">"},r&&(m.prototype[r]=m.prototype.inspect),m.prototype.compare=function(C,N,K,ee,pe){if(Ee(C,Uint8Array)&&(C=m.from(C,C.offset,C.byteLength)),!m.isBuffer(C))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof C);if(N===void 0&&(N=0),K===void 0&&(K=C?C.length:0),ee===void 0&&(ee=0),pe===void 0&&(pe=this.length),N<0||K>C.length||ee<0||pe>this.length)throw new RangeError("out of range index");if(ee>=pe&&N>=K)return 0;if(ee>=pe)return-1;if(N>=K)return 1;if(N>>>=0,K>>>=0,ee>>>=0,pe>>>=0,this===C)return 0;let Se=pe-ee,Oe=K-N;const lt=Math.min(Se,Oe),wt=this.slice(ee,pe),kt=C.slice(N,K);for(let ft=0;ft<lt;++ft)if(wt[ft]!==kt[ft]){Se=wt[ft],Oe=kt[ft];break}return Se<Oe?-1:Oe<Se?1:0};function j(M,C,N,K,ee){if(M.length===0)return-1;if(typeof N=="string"?(K=N,N=0):N>2147483647?N=2147483647:N<-2147483648&&(N=-2147483648),N=+N,je(N)&&(N=ee?0:M.length-1),N<0&&(N=M.length+N),N>=M.length){if(ee)return-1;N=M.length-1}else if(N<0)if(ee)N=0;else return-1;if(typeof C=="string"&&(C=m.from(C,K)),m.isBuffer(C))return C.length===0?-1:G(M,C,N,K,ee);if(typeof C=="number")return C=C&255,typeof Uint8Array.prototype.indexOf=="function"?ee?Uint8Array.prototype.indexOf.call(M,C,N):Uint8Array.prototype.lastIndexOf.call(M,C,N):G(M,[C],N,K,ee);throw new TypeError("val must be string, number or Buffer")}function G(M,C,N,K,ee){let pe=1,Se=M.length,Oe=C.length;if(K!==void 0&&(K=String(K).toLowerCase(),K==="ucs2"||K==="ucs-2"||K==="utf16le"||K==="utf-16le")){if(M.length<2||C.length<2)return-1;pe=2,Se/=2,Oe/=2,N/=2}function lt(kt,ft){return pe===1?kt[ft]:kt.readUInt16BE(ft*pe)}let wt;if(ee){let kt=-1;for(wt=N;wt<Se;wt++)if(lt(M,wt)===lt(C,kt===-1?0:wt-kt)){if(kt===-1&&(kt=wt),wt-kt+1===Oe)return kt*pe}else kt!==-1&&(wt-=wt-kt),kt=-1}else for(N+Oe>Se&&(N=Se-Oe),wt=N;wt>=0;wt--){let kt=!0;for(let ft=0;ft<Oe;ft++)if(lt(M,wt+ft)!==lt(C,ft)){kt=!1;break}if(kt)return wt}return-1}m.prototype.includes=function(C,N,K){return this.indexOf(C,N,K)!==-1},m.prototype.indexOf=function(C,N,K){return j(this,C,N,K,!0)},m.prototype.lastIndexOf=function(C,N,K){return j(this,C,N,K,!1)};function P(M,C,N,K){N=Number(N)||0;const ee=M.length-N;K?(K=Number(K),K>ee&&(K=ee)):K=ee;const pe=C.length;K>pe/2&&(K=pe/2);let Se;for(Se=0;Se<K;++Se){const Oe=parseInt(C.substr(Se*2,2),16);if(je(Oe))return Se;M[N+Se]=Oe}return Se}function B(M,C,N,K){return We(Be(C,M.length-N),M,N,K)}function z(M,C,N,K){return We(Ge(C),M,N,K)}function Q(M,C,N,K){return We(nt(C),M,N,K)}function ae(M,C,N,K){return We(qe(C,M.length-N),M,N,K)}m.prototype.write=function(C,N,K,ee){if(N===void 0)ee="utf8",K=this.length,N=0;else if(K===void 0&&typeof N=="string")ee=N,K=this.length,N=0;else if(isFinite(N))N=N>>>0,isFinite(K)?(K=K>>>0,ee===void 0&&(ee="utf8")):(ee=K,K=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const pe=this.length-N;if((K===void 0||K>pe)&&(K=pe),C.length>0&&(K<0||N<0)||N>this.length)throw new RangeError("Attempt to write outside buffer bounds");ee||(ee="utf8");let Se=!1;for(;;)switch(ee){case"hex":return P(this,C,N,K);case"utf8":case"utf-8":return B(this,C,N,K);case"ascii":case"latin1":case"binary":return z(this,C,N,K);case"base64":return Q(this,C,N,K);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ae(this,C,N,K);default:if(Se)throw new TypeError("Unknown encoding: "+ee);ee=(""+ee).toLowerCase(),Se=!0}},m.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Y(M,C,N){return C===0&&N===M.length?e.fromByteArray(M):e.fromByteArray(M.slice(C,N))}function ne(M,C,N){N=Math.min(M.length,N);const K=[];let ee=C;for(;ee<N;){const pe=M[ee];let Se=null,Oe=pe>239?4:pe>223?3:pe>191?2:1;if(ee+Oe<=N){let lt,wt,kt,ft;switch(Oe){case 1:pe<128&&(Se=pe);break;case 2:lt=M[ee+1],(lt&192)===128&&(ft=(pe&31)<<6|lt&63,ft>127&&(Se=ft));break;case 3:lt=M[ee+1],wt=M[ee+2],(lt&192)===128&&(wt&192)===128&&(ft=(pe&15)<<12|(lt&63)<<6|wt&63,ft>2047&&(ft<55296||ft>57343)&&(Se=ft));break;case 4:lt=M[ee+1],wt=M[ee+2],kt=M[ee+3],(lt&192)===128&&(wt&192)===128&&(kt&192)===128&&(ft=(pe&15)<<18|(lt&63)<<12|(wt&63)<<6|kt&63,ft>65535&&ft<1114112&&(Se=ft))}}Se===null?(Se=65533,Oe=1):Se>65535&&(Se-=65536,K.push(Se>>>10&1023|55296),Se=56320|Se&1023),K.push(Se),ee+=Oe}return X(K)}const fe=4096;function X(M){const C=M.length;if(C<=fe)return String.fromCharCode.apply(String,M);let N="",K=0;for(;K<C;)N+=String.fromCharCode.apply(String,M.slice(K,K+=fe));return N}function te(M,C,N){let K="";N=Math.min(M.length,N);for(let ee=C;ee<N;++ee)K+=String.fromCharCode(M[ee]&127);return K}function ce(M,C,N){let K="";N=Math.min(M.length,N);for(let ee=C;ee<N;++ee)K+=String.fromCharCode(M[ee]);return K}function oe(M,C,N){const K=M.length;(!C||C<0)&&(C=0),(!N||N<0||N>K)&&(N=K);let ee="";for(let pe=C;pe<N;++pe)ee+=Je[M[pe]];return ee}function F(M,C,N){const K=M.slice(C,N);let ee="";for(let pe=0;pe<K.length-1;pe+=2)ee+=String.fromCharCode(K[pe]+K[pe+1]*256);return ee}m.prototype.slice=function(C,N){const K=this.length;C=~~C,N=N===void 0?K:~~N,C<0?(C+=K,C<0&&(C=0)):C>K&&(C=K),N<0?(N+=K,N<0&&(N=0)):N>K&&(N=K),N<C&&(N=C);const ee=this.subarray(C,N);return Object.setPrototypeOf(ee,m.prototype),ee};function J(M,C,N){if(M%1!==0||M<0)throw new RangeError("offset is not uint");if(M+C>N)throw new RangeError("Trying to access beyond buffer length")}m.prototype.readUintLE=m.prototype.readUIntLE=function(C,N,K){C=C>>>0,N=N>>>0,K||J(C,N,this.length);let ee=this[C],pe=1,Se=0;for(;++Se<N&&(pe*=256);)ee+=this[C+Se]*pe;return ee},m.prototype.readUintBE=m.prototype.readUIntBE=function(C,N,K){C=C>>>0,N=N>>>0,K||J(C,N,this.length);let ee=this[C+--N],pe=1;for(;N>0&&(pe*=256);)ee+=this[C+--N]*pe;return ee},m.prototype.readUint8=m.prototype.readUInt8=function(C,N){return C=C>>>0,N||J(C,1,this.length),this[C]},m.prototype.readUint16LE=m.prototype.readUInt16LE=function(C,N){return C=C>>>0,N||J(C,2,this.length),this[C]|this[C+1]<<8},m.prototype.readUint16BE=m.prototype.readUInt16BE=function(C,N){return C=C>>>0,N||J(C,2,this.length),this[C]<<8|this[C+1]},m.prototype.readUint32LE=m.prototype.readUInt32LE=function(C,N){return C=C>>>0,N||J(C,4,this.length),(this[C]|this[C+1]<<8|this[C+2]<<16)+this[C+3]*16777216},m.prototype.readUint32BE=m.prototype.readUInt32BE=function(C,N){return C=C>>>0,N||J(C,4,this.length),this[C]*16777216+(this[C+1]<<16|this[C+2]<<8|this[C+3])},m.prototype.readBigUInt64LE=ut(function(C){C=C>>>0,Me(C,"offset");const N=this[C],K=this[C+7];(N===void 0||K===void 0)&&Qe(C,this.length-8);const ee=N+this[++C]*2**8+this[++C]*2**16+this[++C]*2**24,pe=this[++C]+this[++C]*2**8+this[++C]*2**16+K*2**24;return BigInt(ee)+(BigInt(pe)<<BigInt(32))}),m.prototype.readBigUInt64BE=ut(function(C){C=C>>>0,Me(C,"offset");const N=this[C],K=this[C+7];(N===void 0||K===void 0)&&Qe(C,this.length-8);const ee=N*2**24+this[++C]*2**16+this[++C]*2**8+this[++C],pe=this[++C]*2**24+this[++C]*2**16+this[++C]*2**8+K;return(BigInt(ee)<<BigInt(32))+BigInt(pe)}),m.prototype.readIntLE=function(C,N,K){C=C>>>0,N=N>>>0,K||J(C,N,this.length);let ee=this[C],pe=1,Se=0;for(;++Se<N&&(pe*=256);)ee+=this[C+Se]*pe;return pe*=128,ee>=pe&&(ee-=Math.pow(2,8*N)),ee},m.prototype.readIntBE=function(C,N,K){C=C>>>0,N=N>>>0,K||J(C,N,this.length);let ee=N,pe=1,Se=this[C+--ee];for(;ee>0&&(pe*=256);)Se+=this[C+--ee]*pe;return pe*=128,Se>=pe&&(Se-=Math.pow(2,8*N)),Se},m.prototype.readInt8=function(C,N){return C=C>>>0,N||J(C,1,this.length),this[C]&128?(255-this[C]+1)*-1:this[C]},m.prototype.readInt16LE=function(C,N){C=C>>>0,N||J(C,2,this.length);const K=this[C]|this[C+1]<<8;return K&32768?K|4294901760:K},m.prototype.readInt16BE=function(C,N){C=C>>>0,N||J(C,2,this.length);const K=this[C+1]|this[C]<<8;return K&32768?K|4294901760:K},m.prototype.readInt32LE=function(C,N){return C=C>>>0,N||J(C,4,this.length),this[C]|this[C+1]<<8|this[C+2]<<16|this[C+3]<<24},m.prototype.readInt32BE=function(C,N){return C=C>>>0,N||J(C,4,this.length),this[C]<<24|this[C+1]<<16|this[C+2]<<8|this[C+3]},m.prototype.readBigInt64LE=ut(function(C){C=C>>>0,Me(C,"offset");const N=this[C],K=this[C+7];(N===void 0||K===void 0)&&Qe(C,this.length-8);const ee=this[C+4]+this[C+5]*2**8+this[C+6]*2**16+(K<<24);return(BigInt(ee)<<BigInt(32))+BigInt(N+this[++C]*2**8+this[++C]*2**16+this[++C]*2**24)}),m.prototype.readBigInt64BE=ut(function(C){C=C>>>0,Me(C,"offset");const N=this[C],K=this[C+7];(N===void 0||K===void 0)&&Qe(C,this.length-8);const ee=(N<<24)+this[++C]*2**16+this[++C]*2**8+this[++C];return(BigInt(ee)<<BigInt(32))+BigInt(this[++C]*2**24+this[++C]*2**16+this[++C]*2**8+K)}),m.prototype.readFloatLE=function(C,N){return C=C>>>0,N||J(C,4,this.length),n.read(this,C,!0,23,4)},m.prototype.readFloatBE=function(C,N){return C=C>>>0,N||J(C,4,this.length),n.read(this,C,!1,23,4)},m.prototype.readDoubleLE=function(C,N){return C=C>>>0,N||J(C,8,this.length),n.read(this,C,!0,52,8)},m.prototype.readDoubleBE=function(C,N){return C=C>>>0,N||J(C,8,this.length),n.read(this,C,!1,52,8)};function W(M,C,N,K,ee,pe){if(!m.isBuffer(M))throw new TypeError('"buffer" argument must be a Buffer instance');if(C>ee||C<pe)throw new RangeError('"value" argument is out of bounds');if(N+K>M.length)throw new RangeError("Index out of range")}m.prototype.writeUintLE=m.prototype.writeUIntLE=function(C,N,K,ee){if(C=+C,N=N>>>0,K=K>>>0,!ee){const Oe=Math.pow(2,8*K)-1;W(this,C,N,K,Oe,0)}let pe=1,Se=0;for(this[N]=C&255;++Se<K&&(pe*=256);)this[N+Se]=C/pe&255;return N+K},m.prototype.writeUintBE=m.prototype.writeUIntBE=function(C,N,K,ee){if(C=+C,N=N>>>0,K=K>>>0,!ee){const Oe=Math.pow(2,8*K)-1;W(this,C,N,K,Oe,0)}let pe=K-1,Se=1;for(this[N+pe]=C&255;--pe>=0&&(Se*=256);)this[N+pe]=C/Se&255;return N+K},m.prototype.writeUint8=m.prototype.writeUInt8=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,1,255,0),this[N]=C&255,N+1},m.prototype.writeUint16LE=m.prototype.writeUInt16LE=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,2,65535,0),this[N]=C&255,this[N+1]=C>>>8,N+2},m.prototype.writeUint16BE=m.prototype.writeUInt16BE=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,2,65535,0),this[N]=C>>>8,this[N+1]=C&255,N+2},m.prototype.writeUint32LE=m.prototype.writeUInt32LE=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,4,4294967295,0),this[N+3]=C>>>24,this[N+2]=C>>>16,this[N+1]=C>>>8,this[N]=C&255,N+4},m.prototype.writeUint32BE=m.prototype.writeUInt32BE=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,4,4294967295,0),this[N]=C>>>24,this[N+1]=C>>>16,this[N+2]=C>>>8,this[N+3]=C&255,N+4};function ie(M,C,N,K,ee){Ve(C,K,ee,M,N,7);let pe=Number(C&BigInt(4294967295));M[N++]=pe,pe=pe>>8,M[N++]=pe,pe=pe>>8,M[N++]=pe,pe=pe>>8,M[N++]=pe;let Se=Number(C>>BigInt(32)&BigInt(4294967295));return M[N++]=Se,Se=Se>>8,M[N++]=Se,Se=Se>>8,M[N++]=Se,Se=Se>>8,M[N++]=Se,N}function we(M,C,N,K,ee){Ve(C,K,ee,M,N,7);let pe=Number(C&BigInt(4294967295));M[N+7]=pe,pe=pe>>8,M[N+6]=pe,pe=pe>>8,M[N+5]=pe,pe=pe>>8,M[N+4]=pe;let Se=Number(C>>BigInt(32)&BigInt(4294967295));return M[N+3]=Se,Se=Se>>8,M[N+2]=Se,Se=Se>>8,M[N+1]=Se,Se=Se>>8,M[N]=Se,N+8}m.prototype.writeBigUInt64LE=ut(function(C,N=0){return ie(this,C,N,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeBigUInt64BE=ut(function(C,N=0){return we(this,C,N,BigInt(0),BigInt("0xffffffffffffffff"))}),m.prototype.writeIntLE=function(C,N,K,ee){if(C=+C,N=N>>>0,!ee){const lt=Math.pow(2,8*K-1);W(this,C,N,K,lt-1,-lt)}let pe=0,Se=1,Oe=0;for(this[N]=C&255;++pe<K&&(Se*=256);)C<0&&Oe===0&&this[N+pe-1]!==0&&(Oe=1),this[N+pe]=(C/Se>>0)-Oe&255;return N+K},m.prototype.writeIntBE=function(C,N,K,ee){if(C=+C,N=N>>>0,!ee){const lt=Math.pow(2,8*K-1);W(this,C,N,K,lt-1,-lt)}let pe=K-1,Se=1,Oe=0;for(this[N+pe]=C&255;--pe>=0&&(Se*=256);)C<0&&Oe===0&&this[N+pe+1]!==0&&(Oe=1),this[N+pe]=(C/Se>>0)-Oe&255;return N+K},m.prototype.writeInt8=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,1,127,-128),C<0&&(C=255+C+1),this[N]=C&255,N+1},m.prototype.writeInt16LE=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,2,32767,-32768),this[N]=C&255,this[N+1]=C>>>8,N+2},m.prototype.writeInt16BE=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,2,32767,-32768),this[N]=C>>>8,this[N+1]=C&255,N+2},m.prototype.writeInt32LE=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,4,2147483647,-2147483648),this[N]=C&255,this[N+1]=C>>>8,this[N+2]=C>>>16,this[N+3]=C>>>24,N+4},m.prototype.writeInt32BE=function(C,N,K){return C=+C,N=N>>>0,K||W(this,C,N,4,2147483647,-2147483648),C<0&&(C=4294967295+C+1),this[N]=C>>>24,this[N+1]=C>>>16,this[N+2]=C>>>8,this[N+3]=C&255,N+4},m.prototype.writeBigInt64LE=ut(function(C,N=0){return ie(this,C,N,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),m.prototype.writeBigInt64BE=ut(function(C,N=0){return we(this,C,N,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function le(M,C,N,K,ee,pe){if(N+K>M.length)throw new RangeError("Index out of range");if(N<0)throw new RangeError("Index out of range")}function ve(M,C,N,K,ee){return C=+C,N=N>>>0,ee||le(M,C,N,4),n.write(M,C,N,K,23,4),N+4}m.prototype.writeFloatLE=function(C,N,K){return ve(this,C,N,!0,K)},m.prototype.writeFloatBE=function(C,N,K){return ve(this,C,N,!1,K)};function Pe(M,C,N,K,ee){return C=+C,N=N>>>0,ee||le(M,C,N,8),n.write(M,C,N,K,52,8),N+8}m.prototype.writeDoubleLE=function(C,N,K){return Pe(this,C,N,!0,K)},m.prototype.writeDoubleBE=function(C,N,K){return Pe(this,C,N,!1,K)},m.prototype.copy=function(C,N,K,ee){if(!m.isBuffer(C))throw new TypeError("argument should be a Buffer");if(K||(K=0),!ee&&ee!==0&&(ee=this.length),N>=C.length&&(N=C.length),N||(N=0),ee>0&&ee<K&&(ee=K),ee===K||C.length===0||this.length===0)return 0;if(N<0)throw new RangeError("targetStart out of bounds");if(K<0||K>=this.length)throw new RangeError("Index out of range");if(ee<0)throw new RangeError("sourceEnd out of bounds");ee>this.length&&(ee=this.length),C.length-N<ee-K&&(ee=C.length-N+K);const pe=ee-K;return this===C&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(N,K,ee):Uint8Array.prototype.set.call(C,this.subarray(K,ee),N),pe},m.prototype.fill=function(C,N,K,ee){if(typeof C=="string"){if(typeof N=="string"?(ee=N,N=0,K=this.length):typeof K=="string"&&(ee=K,K=this.length),ee!==void 0&&typeof ee!="string")throw new TypeError("encoding must be a string");if(typeof ee=="string"&&!m.isEncoding(ee))throw new TypeError("Unknown encoding: "+ee);if(C.length===1){const Se=C.charCodeAt(0);(ee==="utf8"&&Se<128||ee==="latin1")&&(C=Se)}}else typeof C=="number"?C=C&255:typeof C=="boolean"&&(C=Number(C));if(N<0||this.length<N||this.length<K)throw new RangeError("Out of range index");if(K<=N)return this;N=N>>>0,K=K===void 0?this.length:K>>>0,C||(C=0);let pe;if(typeof C=="number")for(pe=N;pe<K;++pe)this[pe]=C;else{const Se=m.isBuffer(C)?C:m.from(C,ee),Oe=Se.length;if(Oe===0)throw new TypeError('The value "'+C+'" is invalid for argument "value"');for(pe=0;pe<K-N;++pe)this[pe+N]=Se[pe%Oe]}return this};const _e={};function Ke(M,C,N){_e[M]=class extends N{constructor(){super(),Object.defineProperty(this,"message",{value:C.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${M}]`,this.stack,delete this.name}get code(){return M}set code(ee){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:ee,writable:!0})}toString(){return`${this.name} [${M}]: ${this.message}`}}}Ke("ERR_BUFFER_OUT_OF_BOUNDS",function(M){return M?`${M} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),Ke("ERR_INVALID_ARG_TYPE",function(M,C){return`The "${M}" argument must be of type number. Received type ${typeof C}`},TypeError),Ke("ERR_OUT_OF_RANGE",function(M,C,N){let K=`The value of "${M}" is out of range.`,ee=N;return Number.isInteger(N)&&Math.abs(N)>2**32?ee=Ye(String(N)):typeof N=="bigint"&&(ee=String(N),(N>BigInt(2)**BigInt(32)||N<-(BigInt(2)**BigInt(32)))&&(ee=Ye(ee)),ee+="n"),K+=` It must be ${C}. Received ${ee}`,K},RangeError);function Ye(M){let C="",N=M.length;const K=M[0]==="-"?1:0;for(;N>=K+4;N-=3)C=`_${M.slice(N-3,N)}${C}`;return`${M.slice(0,N)}${C}`}function Ot(M,C,N){Me(C,"offset"),(M[C]===void 0||M[C+N]===void 0)&&Qe(C,M.length-(N+1))}function Ve(M,C,N,K,ee,pe){if(M>N||M<C){const Se=typeof C=="bigint"?"n":"";let Oe;throw C===0||C===BigInt(0)?Oe=`>= 0${Se} and < 2${Se} ** ${(pe+1)*8}${Se}`:Oe=`>= -(2${Se} ** ${(pe+1)*8-1}${Se}) and < 2 ** ${(pe+1)*8-1}${Se}`,new _e.ERR_OUT_OF_RANGE("value",Oe,M)}Ot(K,ee,pe)}function Me(M,C){if(typeof M!="number")throw new _e.ERR_INVALID_ARG_TYPE(C,"number",M)}function Qe(M,C,N){throw Math.floor(M)!==M?(Me(M,N),new _e.ERR_OUT_OF_RANGE("offset","an integer",M)):C<0?new _e.ERR_BUFFER_OUT_OF_BOUNDS:new _e.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${C}`,M)}const ht=/[^+/0-9A-Za-z-_]/g;function Ie(M){if(M=M.split("=")[0],M=M.trim().replace(ht,""),M.length<2)return"";for(;M.length%4!==0;)M=M+"=";return M}function Be(M,C){C=C||1/0;let N;const K=M.length;let ee=null;const pe=[];for(let Se=0;Se<K;++Se){if(N=M.charCodeAt(Se),N>55295&&N<57344){if(!ee){if(N>56319){(C-=3)>-1&&pe.push(239,191,189);continue}else if(Se+1===K){(C-=3)>-1&&pe.push(239,191,189);continue}ee=N;continue}if(N<56320){(C-=3)>-1&&pe.push(239,191,189),ee=N;continue}N=(ee-55296<<10|N-56320)+65536}else ee&&(C-=3)>-1&&pe.push(239,191,189);if(ee=null,N<128){if((C-=1)<0)break;pe.push(N)}else if(N<2048){if((C-=2)<0)break;pe.push(N>>6|192,N&63|128)}else if(N<65536){if((C-=3)<0)break;pe.push(N>>12|224,N>>6&63|128,N&63|128)}else if(N<1114112){if((C-=4)<0)break;pe.push(N>>18|240,N>>12&63|128,N>>6&63|128,N&63|128)}else throw new Error("Invalid code point")}return pe}function Ge(M){const C=[];for(let N=0;N<M.length;++N)C.push(M.charCodeAt(N)&255);return C}function qe(M,C){let N,K,ee;const pe=[];for(let Se=0;Se<M.length&&!((C-=2)<0);++Se)N=M.charCodeAt(Se),K=N>>8,ee=N%256,pe.push(ee),pe.push(K);return pe}function nt(M){return e.toByteArray(Ie(M))}function We(M,C,N,K){let ee;for(ee=0;ee<K&&!(ee+N>=C.length||ee>=M.length);++ee)C[ee+N]=M[ee];return ee}function Ee(M,C){return M instanceof C||M!=null&&M.constructor!=null&&M.constructor.name!=null&&M.constructor.name===C.name}function je(M){return M!==M}const Je=function(){const M="0123456789abcdef",C=new Array(256);for(let N=0;N<16;++N){const K=N*16;for(let ee=0;ee<16;++ee)C[K+ee]=M[N]+M[ee]}return C}();function ut(M){return typeof BigInt>"u"?Dt:M}function Dt(){throw new Error("BigInt not supported")}}(ch)),ch}var Mo=nB();class $t{static async deriveKeyFromPassword(e,n,r="Argon2Id",s='{"Iterations":2,"MemorySize":19456,"DegreeOfParallelism":1}'){const l=JSON.parse(s);try{if(r!=="Argon2Id")throw new Error("Unsupported encryption type");return(await UN.hash({pass:e,salt:n,time:l.Iterations,mem:l.MemorySize,parallelism:l.DegreeOfParallelism,hashLen:32,type:2})).hash}catch(c){throw console.error("Argon2 hashing failed:",c),c}}static async symmetricEncrypt(e,n){if(!e)return e;const r=await crypto.subtle.importKey("raw",Uint8Array.from(atob(n),g=>g.charCodeAt(0)),{name:"AES-GCM",length:256},!1,["encrypt"]),s=crypto.getRandomValues(new Uint8Array(12)),c=new TextEncoder().encode(e),m=await crypto.subtle.encrypt({name:"AES-GCM",iv:s},r,c),p=new Uint8Array(s.length+m.byteLength);return p.set(s,0),p.set(new Uint8Array(m),s.length),btoa(Array.from(p).map(g=>String.fromCharCode(g)).join(""))}static async symmetricDecrypt(e,n){if(!e)return e;const r=await crypto.subtle.importKey("raw",Uint8Array.from(atob(n),g=>g.charCodeAt(0)),{name:"AES-GCM",length:256},!1,["decrypt"]),s=Uint8Array.from(atob(e),g=>g.charCodeAt(0)),l=s.slice(0,12),c=s.slice(12),m=await crypto.subtle.decrypt({name:"AES-GCM",iv:l},r,c);return new TextDecoder().decode(m)}static async symmetricDecryptBytes(e,n){if(!e||e.length===0)return e;const r=await crypto.subtle.importKey("raw",Uint8Array.from(atob(n),m=>m.charCodeAt(0)),{name:"AES-GCM",length:256},!1,["decrypt"]),s=e.slice(0,12),l=e.slice(12),c=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},r,l);return new Uint8Array(c)}static async generateRsaKeyPair(){const e=await crypto.subtle.generateKey({name:"RSA-OAEP",modulusLength:2048,publicExponent:new Uint8Array([1,0,1]),hash:"SHA-256"},!0,["encrypt","decrypt"]),n=await crypto.subtle.exportKey("jwk",e.publicKey),r=await crypto.subtle.exportKey("jwk",e.privateKey);return{publicKey:JSON.stringify(n),privateKey:JSON.stringify(r)}}static async encryptWithPublicKey(e,n){const r=await crypto.subtle.importKey("jwk",JSON.parse(n),{name:"RSA-OAEP",hash:"SHA-256"},!1,["encrypt"]),s=new TextEncoder().encode(e),l=await crypto.subtle.encrypt({name:"RSA-OAEP"},r,s);return btoa(String.fromCharCode.apply(null,Array.from(new Uint8Array(l))))}static async decryptWithPrivateKey(e,n){try{const r=await crypto.subtle.importKey("jwk",JSON.parse(n),{name:"RSA-OAEP",hash:"SHA-256"},!0,["decrypt"]),s=Uint8Array.from(atob(e),c=>c.charCodeAt(0)),l=await crypto.subtle.decrypt({name:"RSA-OAEP"},r,s);return new Uint8Array(l)}catch(r){throw console.error("RSA decryption failed:",r),new Error(`Failed to decrypt: ${r instanceof Error?r.message:"Unknown error"}`)}}static async decryptEmail(e,n){try{const r=n.find(m=>m.PublicKey===e.encryptionKey);if(!r)throw new Error("Encryption key not found");const s=await $t.decryptWithPrivateKey(e.encryptedSymmetricKey,r.PrivateKey),l=Mo.Buffer.from(s).toString("base64"),c={...e};return c.subject=await $t.symmetricDecrypt(e.subject,l),c.fromDisplay=await $t.symmetricDecrypt(e.fromDisplay,l),c.fromDomain=await $t.symmetricDecrypt(e.fromDomain,l),c.fromLocal=await $t.symmetricDecrypt(e.fromLocal,l),e.messageHtml&&(c.messageHtml=await $t.symmetricDecrypt(e.messageHtml,l)),e.messagePlain&&(c.messagePlain=await $t.symmetricDecrypt(e.messagePlain,l)),c}catch(r){throw new Error(r instanceof Error?r.message:"Failed to decrypt email")}}static async decryptEmailList(e,n){return Promise.all(e.map(async r=>{try{const s=n.find(p=>p.PublicKey===r.encryptionKey);if(!s)throw new Error("Encryption key not found");const l=await $t.decryptWithPrivateKey(r.encryptedSymmetricKey,s.PrivateKey),c=Mo.Buffer.from(l).toString("base64"),m={...r};return m.subject=await $t.symmetricDecrypt(r.subject,c),m.fromDisplay=await $t.symmetricDecrypt(r.fromDisplay,c),m.fromDomain=await $t.symmetricDecrypt(r.fromDomain,c),m.fromLocal=await $t.symmetricDecrypt(r.fromLocal,c),r.messagePreview&&(m.messagePreview=await $t.symmetricDecrypt(r.messagePreview,c)),m}catch(s){throw new Error(s instanceof Error?s.message:"Failed to decrypt email")}}))}static async decryptAttachment(e,n,r){try{const s=r.find(m=>m.PublicKey===n.encryptionKey);if(!s)throw new Error("Encryption key not found");const l=await $t.decryptWithPrivateKey(n.encryptedSymmetricKey,s.PrivateKey),c=Mo.Buffer.from(l).toString("base64");return await $t.symmetricDecryptBytes(e,c)}catch(s){throw new Error(s instanceof Error?s.message:"Failed to decrypt attachment")}}}class iB{constructor(e){Ue(this,"webApi");Ue(this,"pollingInterval",null);Ue(this,"requestId",null);Ue(this,"privateKey",null);Ue(this,"publicKeyHash",null);this.webApi=e}async computePublicKeyHash(e){const r=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(s)).map(m=>m.toString(16).padStart(2,"0")).join("").substring(0,16)}async initiate(){try{const e=await $t.generateRsaKeyPair();this.privateKey=e.privateKey,this.publicKeyHash=await this.computePublicKeyHash(e.publicKey);const n=await this.webApi.rawFetch("auth/mobile-login/initiate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientPublicKey:e.publicKey})});if(!n.ok)throw ei.GENERIC;const r=await n.json();return this.requestId=r.requestId,{requestId:this.requestId,publicKeyHash:this.publicKeyHash}}catch(e){throw typeof e=="string"&&Object.values(ei).includes(e)?e:ei.GENERIC}}async startPolling(e,n){if(!this.requestId||!this.privateKey)throw new Error("Must call initiate() before starting polling");const r=async()=>{try{if(!this.requestId){this.stopPolling();return}const s=await this.webApi.rawFetch(`auth/mobile-login/poll/${this.requestId}`,{method:"GET"});if(!s.ok){if(s.status===404){this.stopPolling(),this.privateKey=null,this.requestId=null,n(ei.TIMEOUT);return}throw new Error(`Polling failed: ${s.status}`)}const l=await s.json();if(l.fulfilled&&l.encryptedSymmetricKey){this.stopPolling();const c=await $t.decryptWithPrivateKey(l.encryptedDecryptionKey,this.privateKey),m=Mo.Buffer.from(c).toString("base64"),p=await $t.decryptWithPrivateKey(l.encryptedSymmetricKey,this.privateKey),g=Mo.Buffer.from(p).toString("base64"),A=await $t.symmetricDecrypt(l.encryptedToken,g),f=await $t.symmetricDecrypt(l.encryptedRefreshToken,g),v=await $t.symmetricDecrypt(l.encryptedUsername,g);this.privateKey=null,this.requestId=null;const w=await this.webApi.rawFetch("auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:v})});if(!w.ok){n(ei.GENERIC);return}const S=await w.json(),T={username:v,token:A,refreshToken:f,decryptionKey:m,salt:S.salt,encryptionType:S.encryptionType,encryptionSettings:S.encryptionSettings};e(T)}}catch{this.stopPolling(),this.privateKey=null,this.requestId=null,n(ei.GENERIC)}};this.pollingInterval=setInterval(r,3e3),setTimeout(()=>{this.pollingInterval&&(this.stopPolling(),this.privateKey=null,this.requestId=null,n(ei.TIMEOUT))},21e4)}stopPolling(){this.pollingInterval&&(clearInterval(this.pollingInterval),this.pollingInterval=null)}cleanup(){this.stopPolling(),this.privateKey=null,this.requestId=null,this.publicKeyHash=null}}const ok=({isOpen:t,onClose:e,onSuccess:n,webApi:r,mode:s="login"})=>{const{t:l}=it(),[c,m]=b.useState(null),[p,g]=b.useState(null),[A,f]=b.useState(120),v=b.useRef(null),w=b.useRef(null),S=x=>{switch(x){case ei.TIMEOUT:return l("common.errors.mobileLoginRequestExpired");case ei.GENERIC:default:return l("common.errors.unknownError")}};b.useEffect(()=>{if(c&&A>0&&t)return w.current=setInterval(()=>{f(x=>x<=1?(w.current&&clearInterval(w.current),0):x-1)},1e3),()=>{w.current&&clearInterval(w.current)}},[c,A,t]),b.useEffect(()=>t?((async()=>{try{g(null),m(null),f(120),v.current||(v.current=new iB(r));const{requestId:O,publicKeyHash:_}=await v.current.initiate(),j=`aliasvault://open/mobile-unlock/${O}?pk=${_}`,G=await sk.toDataURL(j,{width:256,margin:2});m(G),await v.current.startPolling(async P=>{try{await n(P),T()}catch{m(null),g(ei.GENERIC)}},P=>{m(null),g(P)})}catch(O){typeof O=="string"&&Object.values(ei).includes(O)?g(O):g(ei.GENERIC)}})(),()=>{v.current&&v.current.cleanup(),w.current&&clearInterval(w.current)}):void 0,[t]);const T=()=>{v.current&&v.current.cleanup(),w.current&&clearInterval(w.current),m(null),g(null),f(120),e()},k=x=>{const O=Math.floor(x/60),_=x%60;return`${O}:${_.toString().padStart(2,"0")}`},L=l(s==="unlock"?"auth.unlockWithMobile":"auth.loginWithMobile"),R=l("auth.scanQrCode");return d.jsxs(ai,{isOpen:t,onClose:T,title:L,showHeaderBorder:!1,bodyClassName:"px-6 pb-6",children:[d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-4",children:R}),p&&d.jsx("div",{className:"mb-4 p-3 bg-red-100 dark:bg-red-900/30 border border-red-400 dark:border-red-700 rounded text-red-700 dark:text-red-400 text-sm",children:S(p)}),c&&d.jsxs("div",{className:"flex flex-col items-center mb-4",children:[d.jsx("img",{src:c,alt:"QR Code",className:"border-4 border-gray-200 dark:border-gray-600 rounded mb-3"}),d.jsx("div",{className:"text-gray-700 dark:text-gray-300 text-sm font-medium",children:k(A)})]}),!c&&!p&&d.jsx("div",{className:"flex justify-center py-8",children:d.jsx("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary-600"})}),d.jsx("button",{type:"button",onClick:T,className:"mt-4 w-full inline-flex justify-center rounded-md bg-white dark:bg-gray-700 px-3 py-2 text-sm font-semibold text-gray-900 dark:text-gray-200 shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-gray-600 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-primary-500",children:l("common.cancel")})]})};var Ya=(t=>(t.EXPAND="expand",t.EDIT="edit",t.DELETE="delete",t.SETTINGS="settings",t.RELOAD="reload",t.EXTERNAL_LINK="external_link",t.SAVE="save",t.PLUS="plus",t.TAB="tab",t.EYE="eye",t.EYE_OFF="eye_off",t))(Ya||{});const Mf=({type:t,className:e="w-5 h-5"})=>({expand:d.jsx("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4"})}),edit:d.jsx("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})}),delete:d.jsx("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})}),settings:d.jsxs("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})]}),reload:d.jsx("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})}),external_link:d.jsxs("svg",{className:e,fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:[d.jsx("path",{d:"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"}),d.jsx("path",{d:"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"})]}),save:d.jsx("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"})}),plus:d.jsx("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})}),tab:d.jsxs("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2H5a2 2 0 00-2-2z"}),d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 5a2 2 0 012-2h4a2 2 0 012 2v2H8V5z"})]}),eye:d.jsxs("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})]}),eye_off:d.jsx("svg",{className:e,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"})})})[t]||null,Pn=({onClick:t,title:e,iconType:n,variant:r="default",id:s,disabled:l=!1,isLoading:c=!1})=>{const m={default:"text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700",primary:"text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 hover:bg-primary-100 dark:hover:bg-primary-900/20",danger:"text-red-500 hover:text-red-600 hover:bg-red-100 dark:hover:bg-red-900/20"},p=l||c;return d.jsx("button",{id:s,onClick:t,disabled:p,className:`p-2 rounded-lg ${m[r]} ${p?"opacity-50 cursor-not-allowed":""}`,title:e,children:c?d.jsxs("svg",{className:"animate-spin h-5 w-5",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[d.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),d.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}):d.jsx(Mf,{type:n})})},lk=()=>{const[t,e]=b.useState(mn.DEFAULT_API_URL);return{apiUrl:t,setApiUrl:e,loadApiUrl:async()=>{const s=await Te.getItem("local:apiUrl");s&&s.length>0?e(s):e(mn.DEFAULT_API_URL)},getDisplayUrl:()=>{const s=t.replace("https://","").replace("http://","").replace(":443","").replace("/api","");return s==="app.aliasvault.net"?"aliasvault.net":s}}},rB=()=>{const{loadApiUrl:t,getDisplayUrl:e}=lk(),n=Pa(),{t:r}=it();b.useEffect(()=>{t()},[t]);const s=()=>{n("/auth-settings")};return d.jsxs("div",{className:"text-sm text-gray-600 dark:text-gray-400 mb-4",children:["(",r("auth.connectingTo")," ",d.jsx("button",{onClick:s,type:"button",className:"text-orange-500 hover:text-orange-600 dark:text-orange-400 dark:hover:text-orange-500 underline",children:e()}),")"]})},su={type:"Argon2Id",settings:JSON.stringify({DegreeOfParallelism:1,MemorySize:19456,Iterations:2})},Va=class Va{static async initWasm(){if(!this.wasmInitialized)return this.wasmInitPromise?this.wasmInitPromise:(this.wasmInitPromise=(async()=>{try{const e=Qo.runtime.getURL("src/aliasvault_core_bg.wasm"),r=await(await fetch(e)).arrayBuffer();await If({module_or_path:r}),this.wasmInitialized=!0}catch(e){throw this.wasmInitPromise=null,e}})(),this.wasmInitPromise)}static normalizeUsername(e){return e.toLowerCase().trim()}static async generateSalt(){return await this.initWasm(),E_()}static bytesToHexString(e){return Array.from(e).map(n=>n.toString(16).padStart(2,"0")).join("").toUpperCase()}static bytesToBase64(e){return btoa(String.fromCharCode(...e))}static async derivePrivateKey(e,n,r){return await this.initWasm(),h_(e,Va.normalizeUsername(n),r)}static async deriveVerifier(e){return await this.initWasm(),A_(e)}static async generateEphemeral(){return await this.initWasm(),y_()}static async deriveSession(e,n,r,s,l){return await this.initWasm(),f_(e,n,r,Va.normalizeUsername(s),l)}static async prepareCredentials(e,n,r,s){const l=await $t.deriveKeyFromPassword(e,n,r,s);return{passwordHashString:Va.bytesToHexString(l),passwordHashBase64:Va.bytesToBase64(l)}}static generateSrpIdentity(){return crypto.randomUUID()}static async prepareRegistration(e,n){const r=Va.normalizeUsername(e),s=await Va.generateSalt(),l=Va.generateSrpIdentity(),c=await Va.prepareCredentials(n,s,su.type,su.settings),m=await Va.derivePrivateKey(s,l,c.passwordHashString),p=await Va.deriveVerifier(m);return{username:r,salt:s,verifier:p,encryptionType:su.type,encryptionSettings:su.settings,srpIdentity:l}}static async registerUser(e,n,r){try{const s=await Va.prepareRegistration(n,r),l=e.replace(/\/$/,"")+"/v1/",c=await fetch(`${l}Auth/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!c.ok){const p=await c.text();let g=`Registration failed with status ${c.status}`;try{g=JSON.parse(p).title||g}catch{g=p||g}return{success:!1,error:g}}return{success:!0,token:await c.json()}}catch(s){return{success:!1,error:s instanceof Error?s.message:"Unknown error occurred"}}}static async login(e,n,r,s=!1){try{const l=e.replace(/\/$/,"")+"/v1/",c=Va.normalizeUsername(n),m=await fetch(`${l}Auth/login`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:c})});if(!m.ok){const k=await m.text();try{return{success:!1,error:JSON.parse(k).title}}catch{return{success:!1,error:k||"Login initiation failed"}}}const p=await m.json(),g=p.srpIdentity??c,A=await Va.prepareCredentials(r,p.salt,p.encryptionType,p.encryptionSettings),f=await Va.generateEphemeral(),v=await Va.derivePrivateKey(p.salt,g,A.passwordHashString),w=await Va.deriveSession(f.secret,p.serverEphemeral,p.salt,g,v),S=await fetch(`${l}Auth/validate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:c,rememberMe:s,clientPublicEphemeral:f.public,clientSessionProof:w.proof})});if(!S.ok){const k=await S.text();try{return{success:!1,error:JSON.parse(k).title}}catch{return{success:!1,error:k||"Login validation failed"}}}const T=await S.json();return T.requiresTwoFactor?{success:!1,requiresTwoFactor:!0,loginResponse:p,passwordHashBase64:A.passwordHashBase64}:{success:!0,token:T.token,passwordHashBase64:A.passwordHashBase64,loginResponse:p}}catch(l){return{success:!1,error:l instanceof Error?l.message:"Unknown error occurred"}}}};Ue(Va,"wasmInitialized",!1),Ue(Va,"wasmInitPromise",null);let En=Va;class dk{constructor(e){Ue(this,"webApiService");this.webApiService=e}async initiateLogin(e){const n=En.normalizeUsername(e),r=await this.webApiService.rawFetch("Auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:n})});if(r.status===400){const l=await r.json();throw new ls(l.title)}return await r.json()}async validateLogin(e,n,r,s){const l=En.normalizeUsername(e),c=s.srpIdentity??l,m=await En.generateEphemeral(),p=await En.derivePrivateKey(s.salt,c,n),g=await En.deriveSession(m.secret,s.serverEphemeral,s.salt,c,p),A={username:l,rememberMe:r,clientPublicEphemeral:m.public,clientSessionProof:g.proof},f=await this.webApiService.rawFetch("Auth/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(A)});if(f.status===400){const w=await f.json();throw new ls(w.title)}return await f.json()}async validateLogin2Fa(e,n,r,s,l){const c=En.normalizeUsername(e),m=s.srpIdentity??c,p=await En.generateEphemeral(),g=await En.derivePrivateKey(s.salt,m,n),A=await En.deriveSession(p.secret,s.serverEphemeral,s.salt,m,g),f={username:c,rememberMe:r,clientPublicEphemeral:p.public,clientSessionProof:A.proof,code2Fa:l},v=await this.webApiService.rawFetch("Auth/validate-2fa",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)});if(v.status===400){const S=await v.json();throw new ls(S.title)}return await v.json()}}let uh=!1,Mb=!1;const sB=()=>{const{t}=it(),e=Pa(),n=xi(),r=qt(),{setHeaderButtons:s}=Ei(),[l,c]=b.useState({username:"",password:""}),{showLoading:m,hideLoading:p,setIsInitialLoading:g}=va(),[A,f]=b.useState(!0),[v,w]=b.useState(!1),[S,T]=b.useState(null),[k,L]=b.useState(null),[R,x]=b.useState(null),[O,_]=b.useState(!1),[j,G]=b.useState(""),[P,B]=b.useState(null),[z,Q]=b.useState(null),[ae,Y]=b.useState(!1),ne=Gi(),fe=new dk(ne),X=async(W,ie,we)=>{const le=await Te.getItem("local:encryptedVault"),ve=await Te.getItem("local:serverRevision"),Pe=await Te.getItem("local:username");let _e=W.vault.blob;if(le&&ve!==null){const Ye=we.toLowerCase().trim(),Ot=Pe==null?void 0:Pe.toLowerCase().trim();if(Pe&&Ot!==Ye)console.info(`Existing vault belongs to different user (${Pe}), using server vault for ${we}`);else try{const Ve=await $t.symmetricDecrypt(le,ie);if(ve>=W.vault.currentRevisionNumber){console.info(`Existing vault is more advanced (rev ${ve} >= ${W.vault.currentRevisionNumber}), preserving local vault and will upload to server`),_e=le,await St("STORE_VAULT_METADATA",{publicEmailDomainList:W.vault.publicEmailDomainList,privateEmailDomainList:W.vault.privateEmailDomainList,hiddenPrivateEmailDomainList:W.vault.hiddenPrivateEmailDomainList},"background"),await r.loadDatabase(Ve);return}console.info(`Server vault is more advanced (rev ${W.vault.currentRevisionNumber} > ${ve}), using server vault`)}catch{console.info("Existing vault could not be decrypted (password changed), using server vault")}}await St("STORE_ENCRYPTED_VAULT",{vaultBlob:W.vault.blob,serverRevision:W.vault.currentRevisionNumber},"background"),await St("STORE_VAULT_METADATA",{publicEmailDomainList:W.vault.publicEmailDomainList,privateEmailDomainList:W.vault.privateEmailDomainList,hiddenPrivateEmailDomainList:W.vault.hiddenPrivateEmailDomainList},"background");const Ke=await $t.symmetricDecrypt(_e,ie);await r.loadDatabase(Ke)},te=async(W,ie,we,le,ve)=>{const Pe=await ne.authFetch("Vault",{method:"GET",headers:{Authorization:`Bearer ${ie}`}});await n.setAuthTokens(W,ie,we),await r.storeEncryptionKey(le),await r.storeEncryptionKeyDerivationParams({salt:ve.salt,encryptionType:ve.encryptionType,encryptionSettings:ve.encryptionSettings}),await X(Pe,le,W),uh=!1,e("/reinitialize",{replace:!0}),p()};b.useEffect(()=>{(async()=>{const ie=await Te.getItem("local:clientUrl");let we=mn.DEFAULT_CLIENT_URL;if(ie&&ie.length>0&&(we=ie),B(we),!Mb){Mb=!0;const le=await St("GET_TWO_FACTOR_STATE",null,"background");if(le){c({username:le.username,password:""}),T(le.loginResponse),L(le.passwordHashString),x(le.passwordHashBase64),f(le.rememberMe),_(!0),g(!1);return}}if(!uh){uh=!0;const le=await Te.getItem("local:username");le&&c(ve=>({...ve,username:le}))}g(!1)})()},[g]),b.useEffect(()=>{const W=Fa.isPopup()?null:d.jsx(d.Fragment,{children:d.jsx(Pn,{onClick:()=>Fa.openInNewPopup(),title:"Open in new window",iconType:Ya.EXPAND})});return s(W),()=>{s(null)}},[s]);const ce=async W=>{W.preventDefault(),Q(null);try{m(),n.clearGlobalMessage();const ie=En.normalizeUsername(l.username),we=await fe.initiateLogin(ie),{passwordHashString:le,passwordHashBase64:ve}=await En.prepareCredentials(l.password,we.salt,we.encryptionType,we.encryptionSettings),Pe=await fe.validateLogin(ie,le,A,we);if(Pe.requiresTwoFactor){T(we),L(le),x(ve),_(!0),await St("STORE_TWO_FACTOR_STATE",{username:ie,loginResponse:we,passwordHashString:le,passwordHashBase64:ve,rememberMe:A},"background"),p();return}if(!Pe.token)throw new Error(t("common.errors.unknownError"));await te(ie,Pe.token.token,Pe.token.refreshToken,ve,we)}catch(ie){ie instanceof ls?Q(t("common.apiErrors."+ie.message)):Uo(ie)?Q(ss(ie,t("common.errors.serverError"))):Q(t("common.errors.serverError")),p()}},oe=async W=>{W.preventDefault(),Q(null);try{if(m(),!k||!R||!S)throw new Error(t("common.errors.unknownError"));const ie=j.trim();if(!/^\d{6}$/.test(ie))throw new Error(t("common.errors.invalidCode"));const we=En.normalizeUsername(l.username),le=await fe.validateLogin2Fa(we,k,A,S,parseInt(j));if(!le.token)throw new Error(t("common.errors.unknownError"));await St("CLEAR_TWO_FACTOR_STATE",null,"background"),await te(we,le.token.token,le.token.refreshToken,R,S),_(!1),G(""),L(null),x(null),T(null)}catch(ie){console.error("2FA error:",ie),ie instanceof ls?Q(t("common.apiErrors."+ie.message)):Uo(ie)?Q(ss(ie,t("common.errors.serverError"))):Q(t("common.errors.serverError")),p()}},F=async W=>{m();try{n.clearGlobalMessage();const ie=await ne.authFetch("Vault",{method:"GET",headers:{Authorization:`Bearer ${W.token}`}});await n.setAuthTokens(W.username,W.token,W.refreshToken),await r.storeEncryptionKey(W.decryptionKey),await r.storeEncryptionKeyDerivationParams({salt:W.salt,encryptionType:W.encryptionType,encryptionSettings:W.encryptionSettings}),await X(ie,W.decryptionKey,W.username),p(),g(!1),e("/reinitialize",{replace:!0})}catch(ie){throw Q(ie instanceof Error?ie.message:t("common.errors.unknownError")),p(),ie}},J=W=>{const{name:ie,value:we}=W.target;c(le=>({...le,[ie]:we}))};return O?d.jsx("div",{children:d.jsxs("form",{onSubmit:oe,className:"bg-white dark:bg-gray-700 w-full shadow-md rounded px-8 pt-6 pb-8 mb-4",children:[z&&d.jsx("div",{className:"mb-4 text-red-500 dark:text-red-400 text-sm",children:z}),d.jsxs("div",{className:"mb-6",children:[d.jsx("p",{className:"text-gray-700 dark:text-gray-200 mb-4",children:t("auth.twoFactorTitle")}),d.jsx("label",{className:"block text-gray-700 dark:text-gray-200 text-sm font-bold mb-2",htmlFor:"twoFactorCode",children:t("auth.authCode")}),d.jsx("input",{className:"shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 dark:text-gray-200 dark:bg-gray-800 dark:border-gray-600 leading-tight focus:outline-none focus:shadow-outline",id:"twoFactorCode",type:"text",value:j,onChange:W=>G(W.target.value),placeholder:t("auth.authCodePlaceholder"),required:!0})]}),d.jsxs("div",{className:"flex flex-col w-full space-y-2",children:[d.jsx(Sa,{type:"submit",children:t("auth.verify")}),d.jsx(Sa,{type:"button",onClick:async()=>{await St("CLEAR_TWO_FACTOR_STATE",null,"background"),c({username:"",password:""}),_(!1),G(""),L(null),x(null),T(null),Q(null)},variant:"secondary",children:t("common.cancel")})]}),d.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mt-4 text-center",children:t("auth.twoFactorNote")})]})}):d.jsx("div",{className:"flex flex-col items-center justify-center p-4",children:d.jsxs("div",{className:"w-full max-w-md",children:[d.jsxs("form",{onSubmit:ce,className:"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",children:[d.jsxs("div",{className:"text-center mb-6",children:[d.jsx("h2",{className:"text-xl font-bold text-gray-900 dark:text-white",children:t("auth.loginTitle")}),d.jsx(rB,{})]}),z&&d.jsx("div",{className:"mb-4 text-red-500 dark:text-red-400 text-sm",children:z}),d.jsxs("div",{className:"mb-4",children:[d.jsx("label",{className:"block text-gray-700 dark:text-gray-200 font-medium mb-2",htmlFor:"username",children:t("auth.username")}),d.jsx("input",{className:"shadow appearance-none border rounded-lg w-full py-2 px-3 text-gray-700 dark:text-gray-200 dark:bg-gray-700 dark:border-gray-600 leading-tight focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent",id:"username",type:"text",name:"username",placeholder:t("auth.usernamePlaceholder"),value:l.username,onChange:J,required:!0})]}),d.jsxs("div",{className:"mb-4",children:[d.jsx("label",{className:"block text-gray-700 dark:text-gray-200 font-medium mb-2",htmlFor:"password",children:t("common.password")}),d.jsxs("div",{className:"relative",children:[d.jsx("input",{className:"shadow appearance-none border rounded-lg w-full py-2 px-3 pr-10 text-gray-700 dark:text-gray-200 dark:bg-gray-700 dark:border-gray-600 leading-tight focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent",id:"password",type:v?"text":"password",name:"password",placeholder:t("auth.passwordPlaceholder"),value:l.password,onChange:J,required:!0}),d.jsx("button",{type:"button",className:"absolute right-2 top-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",onClick:()=>w(!v),tabIndex:-1,children:d.jsx(Mf,{type:v?Ya.EYE_OFF:Ya.EYE,className:"w-5 h-5 text-gray-400 dark:text-gray-500"})})]})]}),d.jsx("div",{className:"mb-6",children:d.jsxs("label",{className:"flex items-center",children:[d.jsx("input",{type:"checkbox",checked:A,onChange:W=>f(W.target.checked),className:"mr-2"}),d.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-200",children:t("auth.rememberMe")})]})}),d.jsx(Sa,{type:"submit",children:d.jsx("div",{className:"flex items-center justify-center gap-2",children:t("auth.loginButton")})}),d.jsxs("button",{type:"button",onClick:()=>Y(!0),className:"w-full max-w-md mt-4 px-4 py-2 text-sm font-medium text-center text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 dark:bg-gray-600 dark:text-white dark:border-gray-500 dark:hover:bg-gray-500 dark:focus:ring-gray-700 flex items-center justify-center gap-2",children:[d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"})}),t("auth.loginWithMobile")]}),d.jsxs("div",{className:"text-center text-sm text-gray-500 dark:text-gray-400 mt-6",children:[t("auth.noAccount")," ",d.jsx("a",{href:P??"",target:"_blank",rel:"noopener noreferrer",className:"text-orange-500 hover:text-orange-600 dark:text-orange-400 dark:hover:text-orange-500",children:t("auth.createVault")})]})]}),d.jsx(ok,{isOpen:ae,onClose:()=>Y(!1),onSuccess:F,webApi:ne,mode:"login"})]})})},Rs=({type:t,message:e,className:n=""})=>{const r=()=>{const s="p-3 border rounded-md text-sm";switch(t){case"error":return`${s} bg-red-100 dark:bg-red-900/30 border-red-300 dark:border-red-700 text-red-800 dark:text-red-300`;case"success":return`${s} bg-green-100 dark:bg-green-900/30 border-green-300 dark:border-green-700 text-green-800 dark:text-green-300`;case"warning":return`${s} bg-yellow-100 dark:bg-yellow-900/30 border-yellow-300 dark:border-yellow-700 text-yellow-800 dark:text-yellow-300`;case"info":return`${s} bg-blue-100 dark:bg-blue-900/30 border-blue-300 dark:border-blue-700 text-blue-800 dark:text-blue-300`;default:return s}};return d.jsx("div",{className:`${r()} ${n}`,children:e})},_f=({isOpen:t,onClose:e,onConfirm:n})=>{const{t:r}=it(),[s,l]=b.useState(null),c=b.useCallback(async()=>{try{const m=await St("GET_SYNC_STATE",{},"background");l(m.isDirty)}catch(m){console.error("Failed to check sync state:",m),l(!1)}},[]);return b.useEffect(()=>{t&&(l(null),c())},[t,c]),!t||s===null?null:s?d.jsxs(ai,{isOpen:t,onClose:e,maxWidth:"max-w-sm",showHeaderBorder:!1,showCloseButton:!1,bodyClassName:"p-6",children:[d.jsxs("div",{className:"flex items-start mb-4",children:[d.jsx("div",{className:"flex-shrink-0",children:d.jsx("svg",{className:"h-6 w-6 text-amber-500",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"})})}),d.jsx("div",{className:"ml-3",children:d.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:r("logout.unsyncedChangesTitle")})})]}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-6",children:r("logout.unsyncedChangesWarning")}),d.jsxs("div",{className:"flex gap-3",children:[d.jsx("button",{onClick:e,className:"flex-1 px-4 py-2 bg-gray-200 hover:bg-gray-300 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-900 dark:text-white rounded-md transition-colors",children:r("common.cancel")}),d.jsx("button",{onClick:n,className:"flex-1 px-4 py-2 bg-red-500 hover:bg-red-600 text-white rounded-md transition-colors",children:r("logout.logoutAnyway")})]})]}):d.jsxs(ai,{isOpen:t,onClose:e,maxWidth:"max-w-sm",showHeaderBorder:!1,showCloseButton:!1,bodyClassName:"p-6",children:[d.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white mb-3",children:r("common.logout")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-6",children:r("auth.logoutConfirm")}),d.jsxs("div",{className:"flex gap-3",children:[d.jsx("button",{onClick:e,className:"flex-1 px-4 py-2 bg-gray-200 hover:bg-gray-300 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-900 dark:text-white rounded-md transition-colors",children:r("common.cancel")}),d.jsx("button",{onClick:n,className:"flex-1 px-4 py-2 bg-red-500 hover:bg-red-600 text-white rounded-md transition-colors",children:r("common.logout")})]})]})},_b=()=>{var n;const{t}=it(),{username:e}=Md();return d.jsxs("div",{className:"flex flex-col items-center mb-6",children:[d.jsx("div",{className:"w-12 h-12 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center mb-3",children:d.jsx("span",{className:"text-primary-600 dark:text-primary-400 text-2xl font-medium",children:((n=e==null?void 0:e[0])==null?void 0:n.toUpperCase())||"?"})}),d.jsx("p",{className:"font-medium text-gray-900 dark:text-white text-base",children:e}),d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:t("common.loggedIn")})]})},oB=()=>{const{t}=it(),e=xi(),n=Md(),r=qt(),s=Pa(),{setHeaderButtons:l}=Ei(),c=Gi(),m=new dk(c),[p,g]=b.useState("password"),[A,f]=b.useState(!1),[v,w]=b.useState(""),[S,T]=b.useState(!1),[k,L]=b.useState(0),R=10,x=5,[O,_]=b.useState(""),[j,G]=b.useState(6),P=b.useRef(null),B=b.useRef(null),[z,Q]=b.useState(null),{showLoading:ae,hideLoading:Y,setIsInitialLoading:ne}=va(),[fe,X]=b.useState(!1),[te,ce]=b.useState(!1),oe=async()=>{try{const Ve=await c.getStatus();if(Ve.serverVersion==="0.0.0")return ne(!1),await r.setIsOffline(!0),{online:!1,error:null};const Me=c.validateStatusResponse(Ve);return Me!==null?(await e.logout(t("common.errors."+Me)),{online:!1,error:Me}):(ne(!1),await r.setIsOffline(!1),{online:!0,error:null})}catch{return ne(!1),{online:!1,error:"sessionExpired"}}};b.useEffect(()=>{(async()=>{const[Me,Qe]=await Promise.all([MN(),x_()]);f(Me),G(Qe||6),g(Me?"pin":"password");const ht=await rt.getPasswordUnlockFailedAttempts();L(ht),await oe()})()},[]),b.useEffect(()=>{const Ve=Fa.isPopup()?null:d.jsx(Pn,{onClick:()=>Fa.openInNewPopup(),title:t("common.openInNewWindow"),iconType:Ya.EXPAND});return l(Ve),()=>{l(null)}},[l,t]),b.useEffect(()=>{if(p!=="pin")return;const Ve=()=>{P.current&&P.current.focus()},Me=()=>{Ve()},Qe=()=>{Ve()};Ve();const ht=B.current;return ht&&ht.addEventListener("click",Me),window.addEventListener("focus",Qe),()=>{ht&&ht.removeEventListener("click",Me),window.removeEventListener("focus",Qe)}},[p]);const F=async Ve=>{Ve.preventDefault(),Q(null),ae();const Me=await oe();if(Me.error){Y();return}try{let Qe;if(Me.online){const Ie=await m.initiateLogin(n.username);Qe=(await En.prepareCredentials(v,Ie.salt,Ie.encryptionType,Ie.encryptionSettings)).passwordHashBase64,await r.storeEncryptionKeyDerivationParams({salt:Ie.salt,encryptionType:Ie.encryptionType,encryptionSettings:Ie.encryptionSettings})}else{const Ie=await St("GET_ENCRYPTION_KEY_DERIVATION_PARAMS",{},"background");if(!Ie){Q(t("common.errors.serverNotAvailable")),Y();return}Qe=(await En.prepareCredentials(v,Ie.salt,Ie.encryptionType,Ie.encryptionSettings)).passwordHashBase64,await r.setIsOffline(!0)}await r.storeEncryptionKey(Qe);const ht=await r.loadStoredDatabase();if(!ht)throw new Error(t("common.errors.wrongPassword"));if(await ht.hasPendingMigrations()){s("/upgrade",{replace:!0}),Y();return}await rt.setVaultLockedDismissUntil(0),await WE(),await rt.resetPasswordUnlockFailedAttempts(),L(0),s("/reinitialize",{replace:!0})}catch(Qe){Qe instanceof Cd?await e.logout(Qe.message):Uo(Qe)?Ru(ss(Qe,""))===Bo.VAULT_DECRYPT_FAILED?await le():Q(ss(Qe,t("common.errors.wrongPassword"))):await le(),console.error("Unlock error:",Qe)}finally{Y()}},J=b.useCallback(async Ve=>{_(Ve),Q(null),Ve.length===j&&(await new Promise(Me=>setTimeout(Me,50)),await we(Ve))},[j]),W=Ve=>{O.length<8&&J(O+Ve)},ie=()=>{_(O.slice(0,-1)),Q(null)},we=async(Ve=O)=>{if(Ve.length===j){Q(null),ae();try{const Me=await D_(Ve);(await oe()).online||await r.setIsOffline(!0),await r.storeEncryptionKey(Me);const ht=await r.loadStoredDatabase();if(!ht)throw new zh(3);if(await ht.hasPendingMigrations()){s("/upgrade",{replace:!0}),Y();return}await rt.setVaultLockedDismissUntil(0),s("/reinitialize",{replace:!0}),Y()}catch(Me){if(Me instanceof bu)f(!1),g("password"),Q(t("settings.unlockMethod.pinLocked"));else if(Me instanceof zh){const Qe=Me.attemptsRemaining;Q(Qe===1?t("settings.unlockMethod.incorrectPinSingular"):t("settings.unlockMethod.incorrectPin",{attemptsRemaining:Qe})),_("")}else Me instanceof Sd?(Q(t("settings.unlockMethod.invalidPinFormat")),_("")):Uo(Me)?(Ru(ss(Me,""))===Bo.VAULT_DECRYPT_FAILED?(console.error("PIN unlock failed (decryption error):",Me),Q(t("settings.unlockMethod.incorrectPin",{attemptsRemaining:3}))):(console.error("PIN unlock failed:",Me),Q(ss(Me,t("common.errors.unknownErrorTryAgain")))),_("")):(console.error("PIN unlock failed:",Me),Q(t("common.errors.unknownErrorTryAgain")),_(""));Y()}}},le=async()=>{const Ve=k+1;L(Ve),await rt.setPasswordUnlockFailedAttempts(Ve);const Me=R-Ve;w(""),Ve>=R?(Q(t("auth.maxAttemptsReached")),setTimeout(async()=>{await n.clearAuthUserInitiated()},2e3)):Ve>=x?Q(t("auth.passwordAttemptsWarning",{remainingAttempts:Me})):Q(t("common.errors.wrongPassword"))},ve=()=>{ce(!0)},Pe=async()=>{ce(!1);try{await c.revokeTokens(),await n.clearAuthUserInitiated()}catch(Ve){console.error("Error during logout:",Ve)}},_e=async Ve=>{ae();try{await c.revokeCurrentTokens(),await n.setAuthTokens(Ve.username,Ve.token,Ve.refreshToken),await r.storeEncryptionKey(Ve.decryptionKey),await r.storeEncryptionKeyDerivationParams({salt:Ve.salt,encryptionType:Ve.encryptionType,encryptionSettings:Ve.encryptionSettings});const Me=await r.loadStoredDatabase();if(!Me)throw new Error(t("common.errors.unknownErrorTryAgain"));if(await Me.hasPendingMigrations()){s("/upgrade",{replace:!0}),Y();return}await rt.setVaultLockedDismissUntil(0),await WE(),await rt.resetPasswordUnlockFailedAttempts(),L(0),s("/reinitialize",{replace:!0})}catch(Me){Me instanceof Cd?await e.logout(Me.message):Uo(Me)?Q(ss(Me,t("common.errors.unknownErrorTryAgain"))):Q(t("common.errors.unknownErrorTryAgain")),console.error("Mobile unlock error:",Me)}finally{Y()}},Ke=()=>{g("password"),Q(null)},Ye=()=>{g("pin"),Q(null)},Ot=Array.from({length:j},(Ve,Me)=>d.jsx("div",{className:`w-4 h-4 rounded-full border-2 transition-all ${Me<O.length?"bg-primary-500 border-primary-500":"bg-transparent border-gray-300 dark:border-gray-600"}`},Me));return p==="pin"?d.jsx("div",{ref:B,className:"flex flex-col items-center justify-center p-4",children:d.jsxs("div",{className:"w-full max-w-md",children:[d.jsx(_b,{}),d.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",children:[d.jsxs("div",{className:"text-center mb-4",children:[d.jsx("h1",{className:"text-xl font-bold text-gray-900 dark:text-white mb-1",children:t("auth.unlockTitle")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:t("auth.enterPinToUnlock")})]}),d.jsx("div",{className:"flex justify-center gap-2 mb-4",children:Ot}),z&&d.jsx(Rs,{type:"error",message:z,className:"mb-3 text-center"}),d.jsx("input",{ref:P,type:"password",inputMode:"numeric",pattern:"[0-9]*",maxLength:8,value:O,onChange:Ve=>J(Ve.target.value.replace(/\D/g,"")),className:"w-0 h-0 opacity-0 absolute",autoFocus:!0,"aria-label":"PIN input"}),d.jsx("div",{children:d.jsxs("div",{className:"grid grid-cols-3 gap-2",children:[[1,2,3,4,5,6,7,8,9].map(Ve=>d.jsx("button",{type:"button",onClick:()=>W(Ve.toString()),className:"h-12 flex items-center justify-center text-xl font-semibold bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-900 dark:text-white rounded-lg transition-colors active:scale-95",children:Ve},Ve)),d.jsx("div",{}),d.jsx("button",{type:"button",onClick:()=>W("0"),className:"h-12 flex items-center justify-center text-xl font-semibold bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-900 dark:text-white rounded-lg transition-colors active:scale-95",children:"0"}),d.jsx("button",{type:"button",onClick:ie,className:"h-12 flex items-center justify-center bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-900 dark:text-white rounded-lg transition-colors active:scale-95","aria-label":"Backspace",children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2M3 12l6.414 6.414a2 2 0 001.414.586H19a2 2 0 002-2V7a2 2 0 00-2-2h-8.172a2 2 0 00-1.414.586L3 12z"})})})]})})]}),d.jsx("div",{className:"mt-4",children:d.jsx("div",{className:"text-center text-sm text-gray-500 dark:text-gray-400 mt-6",children:d.jsx("button",{type:"button",onClick:Ke,className:"text-primary-600 hover:text-primary-700 dark:text-primary-500 dark:hover:text-primary-400 hover:underline font-medium",children:t("auth.useMasterPassword")})})})]})}):d.jsxs("div",{className:"flex flex-col items-center justify-center p-4",children:[d.jsxs("div",{className:"w-full max-w-md",children:[d.jsx(_b,{}),d.jsxs("form",{onSubmit:F,className:"bg-white dark:bg-gray-800 rounded-lg shadow-lg p-6",children:[d.jsx("div",{className:"text-center mb-6",children:d.jsx("h1",{className:"text-xl font-bold text-gray-900 dark:text-white",children:t("auth.unlockTitle")})}),z&&d.jsx(Rs,{type:"error",message:z,className:"mb-4"}),d.jsxs("div",{className:"mb-4",children:[d.jsx("label",{className:"block text-gray-700 dark:text-gray-200 font-medium mb-2",htmlFor:"password",children:t("auth.masterPassword")}),d.jsxs("div",{className:"relative",children:[d.jsx("input",{className:"shadow appearance-none border rounded-lg w-full py-2 px-3 pr-10 text-gray-700 dark:text-gray-200 dark:bg-gray-700 dark:border-gray-600 leading-tight focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent",id:"password",type:S?"text":"password",value:v,onChange:Ve=>w(Ve.target.value),placeholder:t("auth.passwordPlaceholder"),required:!0,autoFocus:!0}),d.jsx("button",{type:"button",className:"absolute right-2 top-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",onClick:()=>T(!S),tabIndex:-1,children:d.jsx(Mf,{type:S?Ya.EYE_OFF:Ya.EYE,className:"w-5 h-5 text-gray-400 dark:text-gray-500"})})]})]}),d.jsx(Sa,{type:"submit",children:t("auth.unlockVault")}),!r.isOffline&&d.jsxs("button",{type:"button",onClick:()=>X(!0),className:"w-full max-w-md mt-4 px-4 py-2 text-sm font-medium text-center text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-100 focus:ring-4 focus:ring-gray-200 dark:bg-gray-600 dark:text-white dark:border-gray-500 dark:hover:bg-gray-500 dark:focus:ring-gray-700 flex items-center justify-center gap-2",children:[d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"})}),t("auth.unlockWithMobile")]}),d.jsxs("div",{className:"text-center text-sm text-gray-500 dark:text-gray-400 mt-6",children:[t("auth.switchAccounts")," ",d.jsx("button",{type:"button",onClick:ve,className:"text-primary-600 hover:text-primary-700 dark:text-primary-500 dark:hover:text-primary-400 hover:underline font-medium",children:t("common.logout")})]})]})]}),A&&d.jsx("div",{className:"text-center text-sm text-gray-500 dark:text-gray-400 mt-6",children:d.jsx("button",{type:"button",onClick:Ye,className:"text-primary-600 hover:text-primary-700 dark:text-primary-500 dark:hover:text-primary-400 hover:underline font-medium",children:t("auth.unlockWithPin")})}),d.jsx(ok,{isOpen:fe,onClose:()=>X(!1),onSuccess:_e,webApi:c,mode:"unlock"}),d.jsx(_f,{isOpen:te,onClose:()=>ce(!1),onConfirm:Pe})]})},Fb=2.5,lB=()=>{const t=Pa(),{t:e}=it(),[n,r]=b.useState(!1),[s,l]=b.useState(null),[c,m]=b.useState(!0),p=b.useRef(null),g=b.useRef(null),A=b.useCallback(()=>{p.current&&(clearInterval(p.current),p.current=null)},[]),f=b.useCallback(()=>{var k;A(),l(Fb),(k=g.current)==null||k.startAnimation(Fb),p.current=setInterval(()=>{l(L=>L===null||L<=1?(A(),window.close(),null):L-1)},1e3)},[A]),v=b.useCallback(()=>{var k;A(),l(null),(k=g.current)==null||k.stopAnimation()},[A]),w=async k=>{r(k),await rt.setAutoCloseUnlockPopup(k),k?f():v()},S=()=>{v();const k=new URL(window.location.href);k.searchParams.delete("mode"),window.history.replaceState({},"",k),t("/items")},T=()=>{v(),window.close()};return b.useEffect(()=>((async()=>{const L=await rt.getAutoCloseUnlockPopup();r(L),m(!1),L&&setTimeout(()=>{f()},0)})(),()=>{A()}),[A,f]),d.jsxs("div",{className:"flex flex-col items-center justify-center p-6 text-center",children:[d.jsx(bf,{ref:g,isVisible:s!==null,colorClass:"bg-primary-500"}),d.jsx("div",{className:"mb-4 text-green-600 dark:text-green-400",children:d.jsx("svg",{className:"w-12 h-12 mx-auto",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})})}),d.jsx("h2",{className:"text-xl font-semibold mb-4 text-gray-900 dark:text-white",children:e("auth.unlockSuccessTitle")}),d.jsx("p",{className:"mb-6 text-gray-600 dark:text-gray-400",children:e("auth.unlockSuccessDescription")}),d.jsxs("div",{className:"space-y-3 w-full",children:[d.jsx("button",{onClick:T,className:"w-full px-4 py-2 text-white bg-primary-600 rounded hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2",children:e("auth.closePopup")}),d.jsx("button",{onClick:S,className:"w-full px-4 py-2 text-gray-900 bg-white border border-gray-300 rounded hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600 dark:border-gray-600",children:e("auth.browseVault")})]}),d.jsx("div",{className:"w-full mt-6 pt-4 border-t border-gray-200 dark:border-gray-700",children:d.jsxs("label",{className:"flex items-center justify-center gap-2 cursor-pointer text-xs text-gray-400 dark:text-gray-500",children:[d.jsx("input",{type:"checkbox",checked:n,onChange:k=>w(k.target.checked),disabled:c,className:"w-3.5 h-3.5 rounded border-gray-300 text-gray-400 focus:ring-gray-400 dark:border-gray-600 dark:bg-gray-700"}),d.jsx("span",{children:e("auth.autoCloseUnlockPopup")})]})})]})};function Hs(){const t=qt(),e=b.useRef(null),n=b.useCallback(async c=>{await c();const m=t.sqliteClient.exportToBase64(),p=await St("GET_ENCRYPTION_KEY",{},"background"),g=await $t.symmetricEncrypt(m,p);await St("STORE_ENCRYPTED_VAULT",{vaultBlob:g,markDirty:!0},"background"),await t.refreshSyncState()},[t]),r=b.useCallback(()=>{e.current&&clearInterval(e.current),console.info("[VaultMutate] Starting to poll for sync completion"),e.current=setInterval(async()=>{try{const c=await St("GET_SYNC_STATE",{},"background");!c.isDirty&&!c.isSyncInProgress&&(console.info("[VaultMutate] Sync completed (isDirty=false, isSyncInProgress=false), clearing uploading indicator"),t.setIsUploading(!1),t.setIsSyncing(!1),await t.refreshSyncState(),e.current&&(clearInterval(e.current),e.current=null))}catch(c){console.error("[VaultMutate] Error polling sync state:",c)}},500)},[t]),s=b.useCallback(()=>{t.setIsUploading(!0),St("FULL_VAULT_SYNC",{},"background").then(async c=>{const m=c;if(!m.success&&(m.error||m.errorKey)){e.current&&(clearInterval(e.current),e.current=null),t.setIsUploading(!1);return}m.hasNewVault&&await t.loadStoredDatabase()}).catch(c=>{console.error("Background sync error:",c)}),r()},[t,r]);return{executeVaultMutationAsync:b.useCallback(async c=>{await n(c),s()},[n,s])}}const Ff=()=>{const{t}=it(),e=xi(),n=qt();return{syncVault:b.useCallback(async(s={})=>{const{onSuccess:l,onError:c,onStatus:m,onOffline:p,onUpgradeRequired:g}=s;try{if(!await e.initializeAuth())return!1;m==null||m(t("common.checkingVaultUpdates"));const f=await St("CHECK_SYNC_STATUS",{},"background");if(f.requiresLogout){const w=f.errorKey?t("common.errors."+f.errorKey):void 0;return await e.logout(w),!1}f.hasNewerVault?n.setIsSyncing(!0):f.hasDirtyChanges&&!f.isOffline&&n.setIsUploading(!0);const v=await St("FULL_VAULT_SYNC",{},"background");if(v.requiresLogout){const w=v.errorKey?t("common.errors."+v.errorKey):v.error;return await e.logout(w),!1}if(v.wasOffline)return await n.setIsOffline(!0),m==null||m(t("common.offlineMode")),p==null||p(),l==null||l(!1),!0;if(n.isOffline&&await n.setIsOffline(!1),v.upgradeRequired)return g==null||g(),!1;if(!v.success){const w=v.errorKey?t("common.errors."+v.errorKey):v.error??t("common.errors.unknownError");return c==null||c(w),!1}return v.hasNewVault&&(m==null||m(t("common.syncingUpdatedVault")),await n.loadStoredDatabase()),await n.refreshSyncState(),l==null||l(v.hasNewVault),!0}catch(A){const f=A instanceof Error?A.message:"Unknown error during vault sync";return console.error("Vault sync error:",A),c==null||c(f),!1}finally{n.setIsSyncing(!1),n.setIsUploading(!1)}},[e,n,t])}},dB=()=>{var X;const{t}=it(),{username:e}=xi(),n=Md(),r=qt(),{sqliteClient:s}=r,{setHeaderButtons:l}=Ei(),[c,m]=b.useState(!1),[p,g]=b.useState(null),[A,f]=b.useState(null),[v,w]=b.useState(null),[S,T]=b.useState(!1),[k,L]=b.useState(!1),[R,x]=b.useState(!1),{setIsInitialLoading:O}=va(),_=Gi(),{executeVaultMutationAsync:j}=Hs(),{syncVault:G}=Ff(),P=Pa();b.useEffect(()=>{const te=Fa.isPopup()?null:d.jsx(d.Fragment,{children:d.jsx(Pn,{onClick:()=>Fa.openInNewPopup(),title:t("common.openInNewWindow"),iconType:Ya.EXPAND})});return l(te),()=>{l(null)}},[l,t]);const B=b.useCallback(async()=>{try{if(s){const te=await s.getDatabaseVersion(),ce=await s.getLatestDatabaseVersion();g(te),f(ce)}}catch(te){console.error("Failed to load version information:",te),w(t("upgrade.alerts.unableToGetVersionInfo"))}finally{O(!1)}},[s,O,t]);b.useEffect(()=>{B()},[B]);const z=async()=>{if(!s||!p||!A){w(t("upgrade.alerts.unableToGetVersionInfo"));return}if(await _.isSelfHosted()){T(!0);return}await Q()},Q=async()=>{if(!s||!p||!A){w(t("upgrade.alerts.unableToGetVersionInfo"));return}m(!0),w(null);try{const ce=new Ph().getUpgradeVaultSql(p.revision,A.revision);if(!ce.success)throw new Error(ce.error??t("upgrade.alerts.upgradeFailed"));if(ce.sqlCommands.length===0){await ae();return}await j(async()=>{for(let oe=0;oe<ce.sqlCommands.length;oe++){const F=ce.sqlCommands[oe];try{s.executeRaw(F)}catch(J){throw console.error(`Error executing SQL command ${oe+1}:`,F,J),new Error(t("upgrade.alerts.failedToApplyMigration",{current:oe+1,total:ce.sqlCommands.length}))}}}),await ae()}catch(te){console.error("Upgrade failed:",te),w(te instanceof Error?te.message:t("common.errors.unknownError"))}finally{m(!1)}},ae=async()=>{try{await G({onSuccess:()=>{P("/items")},onError:te=>{console.error("Sync error after upgrade:",te),P("/items")}})}catch(te){console.error("Error during post-upgrade sync:",te),P("/items")}},Y=()=>{x(!0)},ne=async()=>{x(!1);try{await _.revokeTokens(),await n.clearAuthUserInitiated()}catch(te){console.error("Error during logout:",te)}},fe=()=>{L(!0)};return d.jsxs("div",{children:[c&&d.jsxs("div",{className:"fixed inset-0 flex flex-col justify-center items-center bg-white dark:bg-gray-900 bg-opacity-90 dark:bg-opacity-90 z-50",children:[d.jsx(Ai,{}),d.jsx("div",{className:"text-sm text-gray-500 mt-2",children:t("upgrade.upgrading")})]}),d.jsx(Id,{isOpen:S,onClose:()=>T(!1),onConfirm:()=>{T(!1),Q()},title:t("upgrade.alerts.selfHostedServer"),message:t("upgrade.alerts.selfHostedWarning"),confirmText:t("upgrade.alerts.continueUpgrade"),cancelText:t("common.cancel")}),d.jsx(Id,{isOpen:k,onClose:()=>L(!1),onConfirm:()=>L(!1),title:t("upgrade.whatsNew"),message:`${t("upgrade.whatsNewDescription")}

${(A==null?void 0:A.description)??t("upgrade.noDescriptionAvailable")}`}),d.jsxs("form",{className:"w-full px-2 pt-2 pb-2 mb-4",children:[v&&d.jsx("div",{className:"mb-4 text-red-500 dark:text-red-400",children:v}),d.jsxs("div",{className:"flex items-center space-x-3 mb-4",children:[d.jsx("div",{className:"flex-shrink-0",children:d.jsx("div",{className:"w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center",children:d.jsx("span",{className:"text-primary-600 dark:text-primary-400 text-lg font-medium",children:((X=e==null?void 0:e[0])==null?void 0:X.toUpperCase())||"?"})})}),d.jsx("div",{children:d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:e})})]}),d.jsx("h2",{className:"text-xl font-bold dark:text-gray-200 mb-4",children:t("upgrade.title")}),d.jsxs("div",{className:"mb-6",children:[d.jsx("p",{className:"text-gray-700 dark:text-gray-200 mb-4",children:t("upgrade.subtitle")}),d.jsxs("div",{className:"bg-gray-50 dark:bg-gray-800 rounded p-4 mb-4",children:[d.jsxs("div",{className:"flex items-center justify-between mb-2",children:[d.jsx("span",{className:"font-medium text-gray-700 dark:text-gray-200",children:t("upgrade.versionInformation")}),d.jsx("button",{type:"button",onClick:fe,className:"bg-gray-200 dark:bg-gray-600 text-gray-800 dark:text-gray-200 rounded-full w-6 h-6 flex items-center justify-center text-sm font-bold hover:bg-gray-300 dark:hover:bg-gray-500",title:t("upgrade.whatsNew"),children:"?"})]}),d.jsxs("div",{className:"space-y-2",children:[d.jsxs("div",{className:"flex justify-between items-center",children:[d.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:t("upgrade.yourVault")}),d.jsx("span",{className:"text-sm font-bold text-orange-600 dark:text-orange-400",children:(p==null?void 0:p.compatibleUpToVersion)??"..."})]}),d.jsxs("div",{className:"flex justify-between items-center",children:[d.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400",children:t("upgrade.newVersion")}),d.jsx("span",{className:"text-sm font-bold text-green-600 dark:text-green-400",children:(A==null?void 0:A.releaseVersion)??"..."})]})]})]})]}),d.jsxs("div",{className:"flex flex-col w-full space-y-2",children:[d.jsx(Sa,{type:"button",id:"upgrade-button",onClick:z,children:t(c?"upgrade.upgrading":"upgrade.upgrade")}),d.jsx("button",{type:"button",onClick:Y,className:"text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 text-sm font-medium py-2",disabled:c,children:t("common.logout")})]})]}),d.jsx(_f,{isOpen:R,onClose:()=>x(!1),onConfirm:ne})]})};/*! @license DOMPurify 3.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.0/LICENSE */const{entries:ck,setPrototypeOf:Bb,isFrozen:cB,getPrototypeOf:uB,getOwnPropertyDescriptor:mB}=Object;let{freeze:Sn,seal:yi,create:dd}=Object,{apply:qh,construct:Yh}=typeof Reflect<"u"&&Reflect;Sn||(Sn=function(e){return e});yi||(yi=function(e){return e});qh||(qh=function(e,n){for(var r=arguments.length,s=new Array(r>2?r-2:0),l=2;l<r;l++)s[l-2]=arguments[l];return e.apply(n,s)});Yh||(Yh=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];return new e(...r)});const Jl=Tn(Array.prototype.forEach),gB=Tn(Array.prototype.lastIndexOf),Pb=Tn(Array.prototype.pop),Xl=Tn(Array.prototype.push),pB=Tn(Array.prototype.splice),Iu=Tn(String.prototype.toLowerCase),mh=Tn(String.prototype.toString),gh=Tn(String.prototype.match),So=Tn(String.prototype.replace),hB=Tn(String.prototype.indexOf),fB=Tn(String.prototype.trim),Si=Tn(Object.prototype.hasOwnProperty),Cn=Tn(RegExp.prototype.test),$l=AB(TypeError);function Tn(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];return qh(t,e,r)}}function AB(t){return function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return Yh(t,n)}}function Ft(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Iu;Bb&&Bb(t,null);let r=e.length;for(;r--;){let s=e[r];if(typeof s=="string"){const l=n(s);l!==s&&(cB(e)||(e[r]=l),s=l)}t[s]=!0}return t}function yB(t){for(let e=0;e<t.length;e++)Si(t,e)||(t[e]=null);return t}function Oi(t){const e=dd(null);for(const[n,r]of ck(t))Si(t,n)&&(Array.isArray(r)?e[n]=yB(r):r&&typeof r=="object"&&r.constructor===Object?e[n]=Oi(r):e[n]=r);return e}function Zl(t,e){for(;t!==null;){const r=mB(t,e);if(r){if(r.get)return Tn(r.get);if(typeof r.value=="function")return Tn(r.value)}t=uB(t)}function n(){return null}return n}const Ob=Sn(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ph=Sn(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),hh=Sn(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),EB=Sn(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),fh=Sn(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),bB=Sn(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),jb=Sn(["#text"]),Hb=Sn(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),Ah=Sn(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Vb=Sn(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),ou=Sn(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),vB=yi(/\{\{[\w\W]*|[\w\W]*\}\}/gm),wB=yi(/<%[\w\W]*|[\w\W]*%>/gm),IB=yi(/\$\{[\w\W]*/gm),CB=yi(/^data-[\-\w.\u00B7-\uFFFF]+$/),SB=yi(/^aria-[\-\w]+$/),uk=yi(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),TB=yi(/^(?:\w+script|data):/i),NB=yi(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),mk=yi(/^html$/i),kB=yi(/^[a-z][.\w]*(-[.\w]+)+$/i);var zb=Object.freeze({__proto__:null,ARIA_ATTR:SB,ATTR_WHITESPACE:NB,CUSTOM_ELEMENT:kB,DATA_ATTR:CB,DOCTYPE_NAME:mk,ERB_EXPR:wB,IS_ALLOWED_URI:uk,IS_SCRIPT_OR_DATA:TB,MUSTACHE_EXPR:vB,TMPLIT_EXPR:IB});const ed={element:1,text:3,progressingInstruction:7,comment:8,document:9},xB=function(){return typeof window>"u"?null:window},LB=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null;const s="data-tt-policy-suffix";n&&n.hasAttribute(s)&&(r=n.getAttribute(s));const l="dompurify"+(r?"#"+r:"");try{return e.createPolicy(l,{createHTML(c){return c},createScriptURL(c){return c}})}catch{return console.warn("TrustedTypes policy "+l+" could not be created."),null}},Qb=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function gk(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:xB();const e=Re=>gk(Re);if(e.version="3.4.0",e.removed=[],!t||!t.document||t.document.nodeType!==ed.document||!t.Element)return e.isSupported=!1,e;let{document:n}=t;const r=n,s=r.currentScript,{DocumentFragment:l,HTMLTemplateElement:c,Node:m,Element:p,NodeFilter:g,NamedNodeMap:A=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:f,DOMParser:v,trustedTypes:w}=t,S=p.prototype,T=Zl(S,"cloneNode"),k=Zl(S,"remove"),L=Zl(S,"nextSibling"),R=Zl(S,"childNodes"),x=Zl(S,"parentNode");if(typeof c=="function"){const Re=n.createElement("template");Re.content&&Re.content.ownerDocument&&(n=Re.content.ownerDocument)}let O,_="";const{implementation:j,createNodeIterator:G,createDocumentFragment:P,getElementsByTagName:B}=n,{importNode:z}=r;let Q=Qb();e.isSupported=typeof ck=="function"&&typeof x=="function"&&j&&j.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:ae,ERB_EXPR:Y,TMPLIT_EXPR:ne,DATA_ATTR:fe,ARIA_ATTR:X,IS_SCRIPT_OR_DATA:te,ATTR_WHITESPACE:ce,CUSTOM_ELEMENT:oe}=zb;let{IS_ALLOWED_URI:F}=zb,J=null;const W=Ft({},[...Ob,...ph,...hh,...fh,...jb]);let ie=null;const we=Ft({},[...Hb,...Ah,...Vb,...ou]);let le=Object.seal(dd(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ve=null,Pe=null;const _e=Object.seal(dd(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Ke=!0,Ye=!0,Ot=!1,Ve=!0,Me=!1,Qe=!0,ht=!1,Ie=!1,Be=!1,Ge=!1,qe=!1,nt=!1,We=!0,Ee=!1;const je="user-content-";let Je=!0,ut=!1,Dt={},M=null;const C=Ft({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let N=null;const K=Ft({},["audio","video","img","source","image","track"]);let ee=null;const pe=Ft({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Se="http://www.w3.org/1998/Math/MathML",Oe="http://www.w3.org/2000/svg",lt="http://www.w3.org/1999/xhtml";let wt=lt,kt=!1,ft=null;const bi=Ft({},[Se,Oe,lt],mh);let La=Ft({},["mi","mo","mn","ms","mtext"]),gn=Ft({},["annotation-xml"]);const jt=Ft({},["title","style","font","a","script"]);let na=null;const De=["application/xhtml+xml","text/html"],Oa="text/html";let xt=null,Rt=null;const Da=n.createElement("form"),sn=function(q){return q instanceof RegExp||q instanceof Function},Ht=function(){let q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Rt&&Rt===q)){if((!q||typeof q!="object")&&(q={}),q=Oi(q),na=De.indexOf(q.PARSER_MEDIA_TYPE)===-1?Oa:q.PARSER_MEDIA_TYPE,xt=na==="application/xhtml+xml"?mh:Iu,J=Si(q,"ALLOWED_TAGS")?Ft({},q.ALLOWED_TAGS,xt):W,ie=Si(q,"ALLOWED_ATTR")?Ft({},q.ALLOWED_ATTR,xt):we,ft=Si(q,"ALLOWED_NAMESPACES")?Ft({},q.ALLOWED_NAMESPACES,mh):bi,ee=Si(q,"ADD_URI_SAFE_ATTR")?Ft(Oi(pe),q.ADD_URI_SAFE_ATTR,xt):pe,N=Si(q,"ADD_DATA_URI_TAGS")?Ft(Oi(K),q.ADD_DATA_URI_TAGS,xt):K,M=Si(q,"FORBID_CONTENTS")?Ft({},q.FORBID_CONTENTS,xt):C,ve=Si(q,"FORBID_TAGS")?Ft({},q.FORBID_TAGS,xt):Oi({}),Pe=Si(q,"FORBID_ATTR")?Ft({},q.FORBID_ATTR,xt):Oi({}),Dt=Si(q,"USE_PROFILES")?q.USE_PROFILES:!1,Ke=q.ALLOW_ARIA_ATTR!==!1,Ye=q.ALLOW_DATA_ATTR!==!1,Ot=q.ALLOW_UNKNOWN_PROTOCOLS||!1,Ve=q.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Me=q.SAFE_FOR_TEMPLATES||!1,Qe=q.SAFE_FOR_XML!==!1,ht=q.WHOLE_DOCUMENT||!1,Ge=q.RETURN_DOM||!1,qe=q.RETURN_DOM_FRAGMENT||!1,nt=q.RETURN_TRUSTED_TYPE||!1,Be=q.FORCE_BODY||!1,We=q.SANITIZE_DOM!==!1,Ee=q.SANITIZE_NAMED_PROPS||!1,Je=q.KEEP_CONTENT!==!1,ut=q.IN_PLACE||!1,F=q.ALLOWED_URI_REGEXP||uk,wt=q.NAMESPACE||lt,La=q.MATHML_TEXT_INTEGRATION_POINTS||La,gn=q.HTML_INTEGRATION_POINTS||gn,le=q.CUSTOM_ELEMENT_HANDLING||dd(null),q.CUSTOM_ELEMENT_HANDLING&&sn(q.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(le.tagNameCheck=q.CUSTOM_ELEMENT_HANDLING.tagNameCheck),q.CUSTOM_ELEMENT_HANDLING&&sn(q.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(le.attributeNameCheck=q.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),q.CUSTOM_ELEMENT_HANDLING&&typeof q.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(le.allowCustomizedBuiltInElements=q.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Me&&(Ye=!1),qe&&(Ge=!0),Dt&&(J=Ft({},jb),ie=dd(null),Dt.html===!0&&(Ft(J,Ob),Ft(ie,Hb)),Dt.svg===!0&&(Ft(J,ph),Ft(ie,Ah),Ft(ie,ou)),Dt.svgFilters===!0&&(Ft(J,hh),Ft(ie,Ah),Ft(ie,ou)),Dt.mathMl===!0&&(Ft(J,fh),Ft(ie,Vb),Ft(ie,ou))),_e.tagCheck=null,_e.attributeCheck=null,q.ADD_TAGS&&(typeof q.ADD_TAGS=="function"?_e.tagCheck=q.ADD_TAGS:(J===W&&(J=Oi(J)),Ft(J,q.ADD_TAGS,xt))),q.ADD_ATTR&&(typeof q.ADD_ATTR=="function"?_e.attributeCheck=q.ADD_ATTR:(ie===we&&(ie=Oi(ie)),Ft(ie,q.ADD_ATTR,xt))),q.ADD_URI_SAFE_ATTR&&Ft(ee,q.ADD_URI_SAFE_ATTR,xt),q.FORBID_CONTENTS&&(M===C&&(M=Oi(M)),Ft(M,q.FORBID_CONTENTS,xt)),q.ADD_FORBID_CONTENTS&&(M===C&&(M=Oi(M)),Ft(M,q.ADD_FORBID_CONTENTS,xt)),Je&&(J["#text"]=!0),ht&&Ft(J,["html","head","body"]),J.table&&(Ft(J,["tbody"]),delete ve.tbody),q.TRUSTED_TYPES_POLICY){if(typeof q.TRUSTED_TYPES_POLICY.createHTML!="function")throw $l('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof q.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw $l('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');O=q.TRUSTED_TYPES_POLICY,_=O.createHTML("")}else O===void 0&&(O=LB(w,s)),O!==null&&typeof _=="string"&&(_=O.createHTML(""));Sn&&Sn(q),Rt=q}},Mt=Ft({},[...ph,...hh,...EB]),Kt=Ft({},[...fh,...bB]),Vt=function(q){let Ae=x(q);(!Ae||!Ae.tagName)&&(Ae={namespaceURI:wt,tagName:"template"});const Fe=Iu(q.tagName),Tt=Iu(Ae.tagName);return ft[q.namespaceURI]?q.namespaceURI===Oe?Ae.namespaceURI===lt?Fe==="svg":Ae.namespaceURI===Se?Fe==="svg"&&(Tt==="annotation-xml"||La[Tt]):!!Mt[Fe]:q.namespaceURI===Se?Ae.namespaceURI===lt?Fe==="math":Ae.namespaceURI===Oe?Fe==="math"&&gn[Tt]:!!Kt[Fe]:q.namespaceURI===lt?Ae.namespaceURI===Oe&&!gn[Tt]||Ae.namespaceURI===Se&&!La[Tt]?!1:!Kt[Fe]&&(jt[Fe]||!Mt[Fe]):!!(na==="application/xhtml+xml"&&ft[q.namespaceURI]):!1},da=function(q){Xl(e.removed,{element:q});try{x(q).removeChild(q)}catch{k(q)}},pa=function(q,Ae){try{Xl(e.removed,{attribute:Ae.getAttributeNode(q),from:Ae})}catch{Xl(e.removed,{attribute:null,from:Ae})}if(Ae.removeAttribute(q),q==="is")if(Ge||qe)try{da(Ae)}catch{}else try{Ae.setAttribute(q,"")}catch{}},Xa=function(q){let Ae=null,Fe=null;if(Be)q="<remove></remove>"+q;else{const Yt=gh(q,/^[\r\n\t ]+/);Fe=Yt&&Yt[0]}na==="application/xhtml+xml"&&wt===lt&&(q='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+q+"</body></html>");const Tt=O?O.createHTML(q):q;if(wt===lt)try{Ae=new v().parseFromString(Tt,na)}catch{}if(!Ae||!Ae.documentElement){Ae=j.createDocument(wt,"template",null);try{Ae.documentElement.innerHTML=kt?_:Tt}catch{}}const It=Ae.body||Ae.documentElement;return q&&Fe&&It.insertBefore(n.createTextNode(Fe),It.childNodes[0]||null),wt===lt?B.call(Ae,ht?"html":"body")[0]:ht?Ae.documentElement:It},pn=function(q){return G.call(q.ownerDocument||q,q,g.SHOW_ELEMENT|g.SHOW_COMMENT|g.SHOW_TEXT|g.SHOW_PROCESSING_INSTRUCTION|g.SHOW_CDATA_SECTION,null)},Ta=function(q){return q instanceof f&&(typeof q.nodeName!="string"||typeof q.textContent!="string"||typeof q.removeChild!="function"||!(q.attributes instanceof A)||typeof q.removeAttribute!="function"||typeof q.setAttribute!="function"||typeof q.namespaceURI!="string"||typeof q.insertBefore!="function"||typeof q.hasChildNodes!="function")},ha=function(q){return typeof m=="function"&&q instanceof m};function Ra(Re,q,Ae){Jl(Re,Fe=>{Fe.call(e,q,Ae,Rt)})}const jn=function(q){let Ae=null;if(Ra(Q.beforeSanitizeElements,q,null),Ta(q))return da(q),!0;const Fe=xt(q.nodeName);if(Ra(Q.uponSanitizeElement,q,{tagName:Fe,allowedTags:J}),Qe&&q.hasChildNodes()&&!ha(q.firstElementChild)&&Cn(/<[/\w!]/g,q.innerHTML)&&Cn(/<[/\w!]/g,q.textContent)||Qe&&q.namespaceURI===lt&&Fe==="style"&&ha(q.firstElementChild)||q.nodeType===ed.progressingInstruction||Qe&&q.nodeType===ed.comment&&Cn(/<[/\w]/g,q.data))return da(q),!0;if(ve[Fe]||!(_e.tagCheck instanceof Function&&_e.tagCheck(Fe))&&!J[Fe]){if(!ve[Fe]&&He(Fe)&&(le.tagNameCheck instanceof RegExp&&Cn(le.tagNameCheck,Fe)||le.tagNameCheck instanceof Function&&le.tagNameCheck(Fe)))return!1;if(Je&&!M[Fe]){const Tt=x(q)||q.parentNode,It=R(q)||q.childNodes;if(It&&Tt){const Yt=It.length;for(let Zt=Yt-1;Zt>=0;--Zt){const wa=T(It[Zt],!0);wa.__removalCount=(q.__removalCount||0)+1,Tt.insertBefore(wa,L(q))}}}return da(q),!0}return q instanceof p&&!Vt(q)||(Fe==="noscript"||Fe==="noembed"||Fe==="noframes")&&Cn(/<\/no(script|embed|frames)/i,q.innerHTML)?(da(q),!0):(Me&&q.nodeType===ed.text&&(Ae=q.textContent,Jl([ae,Y,ne],Tt=>{Ae=So(Ae,Tt," ")}),q.textContent!==Ae&&(Xl(e.removed,{element:q.cloneNode()}),q.textContent=Ae)),Ra(Q.afterSanitizeElements,q,null),!1)},de=function(q,Ae,Fe){if(Pe[Ae]||We&&(Ae==="id"||Ae==="name")&&(Fe in n||Fe in Da))return!1;if(!(Ye&&!Pe[Ae]&&Cn(fe,Ae))){if(!(Ke&&Cn(X,Ae))){if(!(_e.attributeCheck instanceof Function&&_e.attributeCheck(Ae,q))){if(!ie[Ae]||Pe[Ae]){if(!(He(q)&&(le.tagNameCheck instanceof RegExp&&Cn(le.tagNameCheck,q)||le.tagNameCheck instanceof Function&&le.tagNameCheck(q))&&(le.attributeNameCheck instanceof RegExp&&Cn(le.attributeNameCheck,Ae)||le.attributeNameCheck instanceof Function&&le.attributeNameCheck(Ae,q))||Ae==="is"&&le.allowCustomizedBuiltInElements&&(le.tagNameCheck instanceof RegExp&&Cn(le.tagNameCheck,Fe)||le.tagNameCheck instanceof Function&&le.tagNameCheck(Fe))))return!1}else if(!ee[Ae]){if(!Cn(F,So(Fe,ce,""))){if(!((Ae==="src"||Ae==="xlink:href"||Ae==="href")&&q!=="script"&&hB(Fe,"data:")===0&&N[q])){if(!(Ot&&!Cn(te,So(Fe,ce,"")))){if(Fe)return!1}}}}}}}return!0},He=function(q){return q!=="annotation-xml"&&gh(q,oe)},ze=function(q){Ra(Q.beforeSanitizeAttributes,q,null);const{attributes:Ae}=q;if(!Ae||Ta(q))return;const Fe={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ie,forceKeepAttr:void 0};let Tt=Ae.length;for(;Tt--;){const It=Ae[Tt],{name:Yt,namespaceURI:Zt,value:wa}=It,ma=xt(Yt),ii=wa;let ca=Yt==="value"?ii:fB(ii);if(Fe.attrName=ma,Fe.attrValue=ca,Fe.keepAttr=!0,Fe.forceKeepAttr=void 0,Ra(Q.uponSanitizeAttribute,q,Fe),ca=Fe.attrValue,Ee&&(ma==="id"||ma==="name")&&(pa(Yt,q),ca=je+ca),Qe&&Cn(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,ca)){pa(Yt,q);continue}if(ma==="attributename"&&gh(ca,"href")){pa(Yt,q);continue}if(Fe.forceKeepAttr)continue;if(!Fe.keepAttr){pa(Yt,q);continue}if(!Ve&&Cn(/\/>/i,ca)){pa(Yt,q);continue}Me&&Jl([ae,Y,ne],Wi=>{ca=So(ca,Wi," ")});const Hn=xt(q.nodeName);if(!de(Hn,ma,ca)){pa(Yt,q);continue}if(O&&typeof w=="object"&&typeof w.getAttributeType=="function"&&!Zt)switch(w.getAttributeType(Hn,ma)){case"TrustedHTML":{ca=O.createHTML(ca);break}case"TrustedScriptURL":{ca=O.createScriptURL(ca);break}}if(ca!==ii)try{Zt?q.setAttributeNS(Zt,Yt,ca):q.setAttribute(Yt,ca),Ta(q)?da(q):Pb(e.removed)}catch{pa(Yt,q)}}Ra(Q.afterSanitizeAttributes,q,null)},yt=function(q){let Ae=null;const Fe=pn(q);for(Ra(Q.beforeSanitizeShadowDOM,q,null);Ae=Fe.nextNode();)Ra(Q.uponSanitizeShadowNode,Ae,null),jn(Ae),ze(Ae),Ae.content instanceof l&&yt(Ae.content);Ra(Q.afterSanitizeShadowDOM,q,null)};return e.sanitize=function(Re){let q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Ae=null,Fe=null,Tt=null,It=null;if(kt=!Re,kt&&(Re="<!-->"),typeof Re!="string"&&!ha(Re))if(typeof Re.toString=="function"){if(Re=Re.toString(),typeof Re!="string")throw $l("dirty is not a string, aborting")}else throw $l("toString is not a function");if(!e.isSupported)return Re;if(Ie||Ht(q),e.removed=[],typeof Re=="string"&&(ut=!1),ut){if(Re.nodeName){const wa=xt(Re.nodeName);if(!J[wa]||ve[wa])throw $l("root node is forbidden and cannot be sanitized in-place")}}else if(Re instanceof m)Ae=Xa("<!---->"),Fe=Ae.ownerDocument.importNode(Re,!0),Fe.nodeType===ed.element&&Fe.nodeName==="BODY"||Fe.nodeName==="HTML"?Ae=Fe:Ae.appendChild(Fe);else{if(!Ge&&!Me&&!ht&&Re.indexOf("<")===-1)return O&&nt?O.createHTML(Re):Re;if(Ae=Xa(Re),!Ae)return Ge?null:nt?_:""}Ae&&Be&&da(Ae.firstChild);const Yt=pn(ut?Re:Ae);for(;Tt=Yt.nextNode();)jn(Tt),ze(Tt),Tt.content instanceof l&&yt(Tt.content);if(ut)return Re;if(Ge){if(Me){Ae.normalize();let wa=Ae.innerHTML;Jl([ae,Y,ne],ma=>{wa=So(wa,ma," ")}),Ae.innerHTML=wa}if(qe)for(It=P.call(Ae.ownerDocument);Ae.firstChild;)It.appendChild(Ae.firstChild);else It=Ae;return(ie.shadowroot||ie.shadowrootmode)&&(It=z.call(r,It,!0)),It}let Zt=ht?Ae.outerHTML:Ae.innerHTML;return ht&&J["!doctype"]&&Ae.ownerDocument&&Ae.ownerDocument.doctype&&Ae.ownerDocument.doctype.name&&Cn(mk,Ae.ownerDocument.doctype.name)&&(Zt="<!DOCTYPE "+Ae.ownerDocument.doctype.name+`>
`+Zt),Me&&Jl([ae,Y,ne],wa=>{Zt=So(Zt,wa," ")}),O&&nt?O.createHTML(Zt):Zt},e.setConfig=function(){let Re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ht(Re),Ie=!0},e.clearConfig=function(){Rt=null,Ie=!1},e.isValidAttribute=function(Re,q,Ae){Rt||Ht({});const Fe=xt(Re),Tt=xt(q);return de(Fe,Tt,Ae)},e.addHook=function(Re,q){typeof q=="function"&&Xl(Q[Re],q)},e.removeHook=function(Re,q){if(q!==void 0){const Ae=gB(Q[Re],q);return Ae===-1?void 0:pB(Q[Re],Ae,1)[0]}return Pb(Q[Re])},e.removeHooks=function(Re){Q[Re]=[]},e.removeAllHooks=function(){Q=Qb()},e}var DB=gk();const RB={ALLOWED_TAGS:["div","span","p","br","hr","h1","h2","h3","h4","h5","h6","ul","ol","li","table","thead","tbody","tfoot","tr","th","td","a","img","b","i","u","s","strike","strong","em","small","sub","sup","blockquote","pre","code","font","center"],ALLOWED_ATTR:["style","class","id","width","height","align","valign","bgcolor","color","border","cellpadding","cellspacing","colspan","rowspan","face","size","href","target","rel","src","alt","title"],ALLOW_DATA_ATTR:!1,ADD_ATTR:["target"],FORBID_TAGS:["script","object","embed","iframe","frame","frameset","form","input","button","textarea","select","option","link","meta","base","applet"],FORBID_ATTR:["onerror","onload","onclick","onmouseover","onmouseout","onfocus","onblur","onchange","onsubmit","onreset","onkeydown","onkeyup","onkeypress","ondblclick","oncontextmenu","onmousedown","onmouseup","onmousemove","ondrag","ondrop"]};class UB{sanitizeHtmlForEmailViewing(e){if(!e||e.trim()==="")return e;try{return DB.sanitize(e,RB)}catch(n){return console.error(`Error in sanitizeHtmlForEmailViewing: ${n instanceof Error?n.message:String(n)}`),""}}sanitizeAndPrepareEmailHtml(e){if(!e||e.trim()==="")return e;const n=this.sanitizeHtmlForEmailViewing(e);return this.convertAnchorTagsToOpenInNewTab(n)}convertAnchorTagsToOpenInNewTab(e){try{const r=new DOMParser().parseFromString(e,"text/html"),s=r.querySelectorAll("a[href]");return s.length>0&&s.forEach(l=>{if((!l.hasAttribute("target")||l.getAttribute("target")!=="_blank")&&l.setAttribute("target","_blank"),!l.hasAttribute("rel"))l.setAttribute("rel","noopener noreferrer");else{const c=l.getAttribute("rel")??"",m=new Set(c.split(" ").filter(p=>p.trim()!==""));m.add("noopener"),m.add("noreferrer"),l.setAttribute("rel",Array.from(m).join(" "))}}),r.documentElement.outerHTML}catch(n){return console.error(`Error in convertAnchorTagsToOpenInNewTab: ${n instanceof Error?n.message:String(n)}`),e}}normalizeUsername(e){return e.toLowerCase().trim()}}const MB=new UB,_d=(t=!1,e=300)=>{const[n,r]=b.useState(t),s=b.useRef(null),l=b.useRef(null),c=b.useCallback(m=>{if(m)r(!0),l.current=Date.now();else{const p=l.current?Date.now()-l.current:0,g=Math.max(0,e-p);g===0?r(!1):(s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{r(!1)},g))}},[e]);return b.useEffect(()=>{t&&(r(!0),l.current=Date.now())},[t,r]),b.useEffect(()=>()=>{s.current&&clearTimeout(s.current)},[]),[n,c]},_B=()=>{const{t}=it(),{id:e}=qu(),n=Pa(),r=qt(),s=Gi(),[l,c]=b.useState(null),[m,p]=b.useState(null),[g,A]=_d(!0,150),[f,v]=b.useState(!1),[w,S]=b.useState(!1),{setIsInitialLoading:T}=va(),{setHeaderButtons:k}=Ei(),[L,R]=b.useState(!1);b.useEffect(()=>{Fa.isPopup()&&(window.history.replaceState({},"","popup.html#/emails"),window.history.pushState({},"",`popup.html#/emails/${e}`)),(async()=>{try{if(A(!0),c(null),!(r!=null&&r.sqliteClient)||!e)return;if(r.isOffline){c(t("emails.offlineMessage")),A(!1),T(!1);return}const G=await s.get(`Email/${e}`),P=r.sqliteClient.settings.getAllEncryptionKeys(),B=await $t.decryptEmail(G,P);p(B)}catch(G){c(G instanceof Error?G.message:"An error occurred")}finally{A(!1),T(!1)}})()},[e,r==null?void 0:r.sqliteClient,r.isOffline,t,s,A,T]);const x=b.useCallback(async()=>{try{await s.delete(`Email/${e}`),Fa.isPopup()?window.close():n("/emails")}catch(j){c(j instanceof Error?j.message:"Failed to delete email")}},[e,s,n]),O=b.useCallback(()=>{Fa.openInNewPopup(`/emails/${e}`)},[e]),_=async j=>{try{const G=await s.downloadBlob(`Email/${e}/attachments/${j.id}`);if(!(r!=null&&r.sqliteClient)||!m){c("Database context or email not available");return}const P=r.sqliteClient.settings.getAllEncryptionKeys(),B=await $t.decryptAttachment(G,m,P);if(!B){c("Failed to decrypt attachment");return}const z=new Blob([new Uint8Array(B)],{type:j.mimeType??"application/octet-stream"}),Q=window.URL.createObjectURL(z),ae=document.createElement("a");ae.href=Q,ae.download=j.filename,document.body.appendChild(ae),ae.click(),window.URL.revokeObjectURL(Q),document.body.removeChild(ae)}catch(G){console.error("handleDownloadAttachment error",G),c(G instanceof Error?G.message:"Failed to download attachment")}};return b.useEffect(()=>{if(!L){const j=d.jsxs("div",{className:"flex items-center gap-2",children:[!Fa.isPopup()&&d.jsx(Pn,{onClick:O,title:t("common.openInNewWindow"),iconType:Ya.EXPAND}),d.jsx(Pn,{onClick:()=>v(!0),title:t("emails.deleteEmailTitle"),iconType:Ya.DELETE,variant:"danger"})]});k(j),R(!0)}return()=>{}},[k,L,O,t]),b.useEffect(()=>()=>k(null),[k]),g?d.jsx("div",{className:"flex justify-center items-center p-8",children:d.jsx(Ai,{})}):l?d.jsxs("div",{className:"text-red-500",children:[t("common.error")," ",l]}):m?d.jsxs("div",{className:"max-w-4xl mx-auto",children:[d.jsx(Id,{isOpen:f,onClose:()=>v(!1),onConfirm:()=>{v(!1),x()},title:t("emails.deleteEmailTitle"),message:t("emails.deleteEmailConfirm"),confirmText:t("common.delete"),cancelText:t("common.cancel"),variant:"danger"}),d.jsxs("div",{children:[d.jsxs("div",{children:[d.jsx("div",{className:"flex justify-between items-start",children:d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("h1",{className:"text-lg font-bold text-gray-900 dark:text-white",children:m.subject}),d.jsx("button",{onClick:()=>S(!w),className:"p-1 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",title:t(w?"common.hideDetails":"common.showDetails"),children:d.jsx("svg",{className:`w-4 h-4 text-gray-500 dark:text-gray-400 transition-transform ${w?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})})]})}),w&&d.jsxs("div",{className:"space-y-1 text-sm text-gray-600 dark:text-gray-400 mt-2",children:[d.jsxs("p",{children:[d.jsx("span",{className:"font-bold",children:t("emails.from")})," ",d.jsx("span",{title:m.fromLocal+"@"+m.fromDomain,children:m.fromDisplay})]}),d.jsxs("p",{children:[d.jsx("span",{className:"font-bold",children:t("emails.to")})," ",d.jsxs("span",{title:m.toLocal+"@"+m.toDomain,children:[m.toLocal,"@",m.toDomain]})]}),d.jsxs("p",{children:[d.jsx("span",{className:"font-bold",children:t("emails.date")})," ",new Date(m.dateSystem).toLocaleString()]})]})]}),d.jsx("div",{className:"bg-white mt-4",children:m.messageHtml?d.jsx("iframe",{srcDoc:MB.sanitizeAndPrepareEmailHtml(m.messageHtml),className:"w-full min-h-[500px] border-0",title:t("emails.emailContent"),sandbox:"allow-popups allow-popups-to-escape-sandbox"}):d.jsx("pre",{className:"whitespace-pre-wrap text-gray-800 p-3",children:m.messagePlain})}),m.attachments&&m.attachments.length>0&&d.jsxs("div",{className:"p-6 border-t border-gray-200 dark:border-gray-700",children:[d.jsx("h2",{className:"text-lg font-semibold mb-4 text-gray-900 dark:text-white",children:t("common.attachments")}),d.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4",children:m.attachments.map(j=>d.jsxs("button",{onClick:()=>_(j),className:"flex items-center space-x-2 text-sm text-gray-600 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400 text-left",children:[d.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13"})}),d.jsxs("span",{children:[j.filename," (",Math.ceil(j.filesize/1024)," KB)"]})]},j.id))})]})]})]}):d.jsx("div",{className:"text-gray-500",children:t("emails.emailNotFound")})},ti=({children:t,className:e=""})=>d.jsx("h1",{className:`text-gray-900 dark:text-white text-xl ${e}`,children:t}),Jh=({onClick:t})=>d.jsxs("div",{className:"px-2 items-center",children:[d.jsxs("div",{className:"relative inline-flex items-center",children:[d.jsx("button",{id:"reload-vault",onClick:t,className:"absolute p-2 hover:bg-gray-200 rounded-2xl",children:d.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"h-4 w-4 text-gray-400",viewBox:"0 0 20 20",fill:"currentColor",children:d.jsx("path",{fillRule:"evenodd",d:"M4 2a1 1 0 011 1v2.101a7.002 7.002 0 0111.601 2.566 1 1 0 11-1.885.666A5.002 5.002 0 005.999 7H9a1 1 0 010 2H4a1 1 0 01-1-1V3a1 1 0 011-1zm.008 9.057a1 1 0 011.276.61A5.002 5.002 0 0014.001 13H11a1 1 0 110-2h5a1 1 0 011 1v5a1 1 0 11-2 0v-2.101a7.002 7.002 0 01-11.601-2.566 1 1 0 01.61-1.276z",clipRule:"evenodd"})})}),d.jsxs("svg",{"aria-hidden":"true",className:"inline w-8 h-8 text-gray-200 dark:text-gray-600",viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[d.jsx("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",fill:"currentColor"}),d.jsx("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",fill:"currentFill"})]})]}),d.jsx("span",{className:"sr-only",children:"Loading..."})]}),FB=()=>{const{t}=it(),e=qt(),n=Gi(),{setHeaderButtons:r}=Ei(),[s,l]=b.useState(null),[c,m]=b.useState([]),{setIsInitialLoading:p}=va(),[g,A]=b.useState(1),[f,v]=b.useState(0),[w,S]=b.useState(!1),[T,k]=_d(!0,100),L=50,R=b.useCallback(async(j=!0)=>{try{if(k(!0),l(null),!(e!=null&&e.sqliteClient))return;if(e.isOffline){k(!1),p(!1);return}const G=e.sqliteClient.items.getAllEmailAddresses();try{const P=await n.post("EmailBox/bulk",{addresses:G,page:1,pageSize:L}),B=e.sqliteClient.settings.getAllEncryptionKeys(),z=await $t.decryptEmailList(P.mails,B);j&&(m(z),A(P.currentPage),v(P.totalRecords))}catch(P){throw console.error(P),new Error(t("common.errors.unknownError"))}}catch(G){l(G instanceof Error?G.message:t("common.errors.unknownError"))}finally{k(!1),p(!1)}},[e==null?void 0:e.sqliteClient,e.isOffline,n,k,p,t,L]),x=b.useCallback(async()=>{if(!(w||!(e!=null&&e.sqliteClient)||e.isOffline))try{S(!0),l(null);const j=e.sqliteClient.items.getAllEmailAddresses(),G=g+1,P=await n.post("EmailBox/bulk",{addresses:j,page:G,pageSize:L}),B=e.sqliteClient.settings.getAllEncryptionKeys(),z=await $t.decryptEmailList(P.mails,B);m(Q=>[...Q,...z]),A(P.currentPage),v(P.totalRecords)}catch(j){l(j instanceof Error?j.message:t("common.errors.unknownError")),console.error("Failed to load more emails:",j)}finally{S(!1)}},[w,e==null?void 0:e.sqliteClient,e.isOffline,n,g,L,t]);b.useEffect(()=>{R()},[R]),b.useEffect(()=>{const j=Fa.isPopup()?null:d.jsx(Pn,{onClick:()=>Fa.openInNewPopup(),title:t("common.openInNewWindow"),iconType:Ya.EXPAND});return r(j),()=>{r(null)}},[r,t]);const O=j=>{const G=new Date,P=new Date(j),B=Math.floor((G.getTime()-P.getTime())/1e3);if(B<60)return t("emails.dateFormat.justNow");if(B<3600){const z=Math.floor(B/60);return z===1?t("emails.dateFormat.minutesAgo_single",{count:z}):t("emails.dateFormat.minutesAgo_plural",{count:z})}else if(B<86400){const z=Math.floor(B/3600);return z===1?t("emails.dateFormat.hoursAgo_single",{count:z}):t("emails.dateFormat.hoursAgo_plural",{count:z})}else return B<172800?t("emails.dateFormat.yesterday"):P.toLocaleDateString("en-GB",{day:"2-digit",month:"2-digit"})};if(T)return d.jsx("div",{className:"flex justify-center items-center p-8",children:d.jsx(Ai,{})});if(s)return d.jsxs("div",{className:"text-red-500",children:[t("common.error"),": ",s]});if(e.isOffline)return d.jsxs("div",{children:[d.jsx("div",{className:"flex justify-between items-center mb-4",children:d.jsx(ti,{children:t("emails.title")})}),d.jsx("div",{className:"text-gray-500 dark:text-gray-400 space-y-2",children:d.jsx("p",{className:"text-sm",children:t("emails.offlineMessage")})})]});if(c.length===0)return d.jsxs("div",{children:[d.jsxs("div",{className:"flex justify-between items-center mb-4",children:[d.jsx(ti,{children:t("emails.title")}),d.jsx(Jh,{onClick:R})]}),d.jsx("div",{className:"text-gray-500 dark:text-gray-400 space-y-2",children:d.jsx("p",{className:"text-sm",children:t("emails.noEmailsDescription")})})]});const _=f>c.length;return d.jsxs("div",{children:[d.jsxs("div",{className:"flex justify-between items-center mb-4",children:[d.jsx(ti,{children:t("emails.title")}),d.jsx(Jh,{onClick:()=>R(!0)})]}),d.jsx("div",{className:"space-y-2",children:c.map(j=>d.jsxs(Ju,{to:`/emails/${j.id}`,className:"block p-4 bg-white dark:bg-gray-800 rounded-lg shadow hover:shadow-md transition-shadow border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700",children:[d.jsxs("div",{className:"flex justify-between items-start mb-2",children:[d.jsx("div",{className:"text-gray-900 dark:text-white mb-1 font-bold",children:j.subject}),d.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400",children:O(j.dateSystem)})]}),d.jsx("div",{className:"text-gray-600 text-sm dark:text-gray-300 line-clamp-2",children:j.messagePreview})]},j.id))}),_&&c.length>0&&d.jsx("div",{className:"mt-4",children:d.jsx("button",{onClick:x,disabled:w,className:"w-full px-4 py-2 text-sm font-medium text-primary-600 bg-primary-50 border border-primary-200 rounded-md hover:bg-primary-100 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:text-primary-400 dark:bg-primary-900/20 dark:border-primary-800 dark:hover:bg-primary-900/30",children:w?d.jsxs("span",{className:"flex items-center justify-center",children:[d.jsxs("svg",{className:"animate-spin -ml-1 mr-2 h-4 w-4",fill:"none",viewBox:"0 0 24 24",children:[d.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),d.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),t("common.loading")]}):d.jsx("span",{children:t("emails.loadMore",{count:f-c.length})})})})]})},BB=()=>{const{isFullyInitialized:t}=J_();return t?d.jsx(tU,{to:"/reinitialize",replace:!0}):null},PB=()=>d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})}),OB=()=>d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})}),jB=()=>d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15.172 7l-6.586 6.586a2 2 0 102.828 2.828l6.414-6.586a4 4 0 00-5.656-5.656l-6.415 6.585a6 6 0 108.486 8.486L20.5 13"})}),_u=()=>d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})}),HB=t=>{switch(t){case pt.Notes:return d.jsx(PB,{});default:return d.jsx(_u,{})}},VB=t=>{switch(t){case"2fa":return d.jsx(OB,{});case"attachments":return d.jsx(jB,{});default:return d.jsx(_u,{})}},zB=({optionalSystemFields:t,visibleFieldKeys:e,optionalSections:n,callbacks:r})=>{const{t:s}=it(),[l,c]=b.useState(!1),[m,p]=b.useState(!1),[g,A]=b.useState(""),[f,v]=b.useState("Text"),w=b.useCallback(()=>{p(!0),c(!1)},[]),S=b.useCallback(()=>{g.trim()&&(r.onAddCustomField(g,f),A(""),v("Text"),p(!1))},[g,f,r]),T=b.useCallback(()=>{A(""),v("Text"),p(!1)},[]),k=b.useCallback(x=>{r.onAddSystemField(x),c(!1)},[r]),L=b.useCallback(x=>{x(),c(!1)},[]),R=b.useMemo(()=>{const x=[];return t.forEach(O=>{e.has(O.FieldKey)||x.push({key:O.FieldKey,label:s(`fieldLabels.${O.FieldKey}`,{defaultValue:O.FieldKey}),icon:HB(O.Category),action:()=>k(O.FieldKey)})}),n.forEach(O=>{O.isVisible||x.push({key:O.key,label:s(`common.${O.key==="2fa"?"twoFactorAuthentication":O.key}`),icon:VB(O.key),action:()=>L(O.onAdd)})}),x},[t,e,n,s,k,L]);return d.jsxs(d.Fragment,{children:[d.jsxs("div",{className:"relative",children:[d.jsx("button",{type:"button",id:"add-field-menu",onClick:()=>c(!l),className:"w-full px-4 py-2 border-2 border-dashed border-gray-300 dark:border-gray-600 text-gray-600 dark:text-gray-400 rounded-md hover:border-primary-500 hover:text-primary-600 dark:hover:text-primary-400 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 transition-colors flex items-center justify-center gap-2",children:d.jsx(_u,{})}),l&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"fixed inset-0 z-10 bg-black bg-opacity-50",onClick:()=>c(!1)}),d.jsxs("div",{className:"absolute bottom-full left-0 right-0 mb-1 z-20 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-md shadow-lg overflow-hidden",children:[R.map(x=>d.jsxs("button",{type:"button",onClick:x.action,className:"w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 flex items-center gap-3 border-b border-gray-100 dark:border-gray-700 last:border-b-0 text-gray-700 dark:text-gray-300",children:[d.jsx("span",{className:"text-gray-500 dark:text-gray-400",children:x.icon}),d.jsx("span",{children:x.label})]},x.key)),d.jsxs("button",{type:"button",onClick:w,className:"w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 flex items-center gap-3 border-b border-gray-100 dark:border-gray-700 last:border-b-0 text-gray-700 dark:text-gray-300",children:[d.jsx("span",{className:"text-gray-500 dark:text-gray-400",children:d.jsx(_u,{})}),d.jsx("span",{children:s("itemTypes.addCustomField")})]})]})]})]}),d.jsx(ai,{isOpen:m,onClose:T,title:s("itemTypes.addCustomField"),footer:d.jsxs("div",{className:"flex gap-3",children:[d.jsx("button",{type:"button",onClick:S,disabled:!g.trim(),className:"flex-1 px-4 py-2 bg-primary-600 text-white rounded-md hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 disabled:opacity-50 disabled:cursor-not-allowed",children:s("common.add")}),d.jsx("button",{type:"button",onClick:T,className:"px-4 py-2 border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 rounded-md hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500",children:s("common.cancel")})]}),children:d.jsxs("div",{className:"space-y-4",children:[d.jsxs("div",{children:[d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:s("itemTypes.fieldLabel")}),d.jsx("input",{type:"text",value:g,onChange:x=>A(x.target.value),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:text-white",placeholder:s("itemTypes.enterFieldName"),autoFocus:!0})]}),d.jsxs("div",{children:[d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:s("itemTypes.fieldType")}),d.jsxs("select",{value:f,onChange:x=>v(x.target.value),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:text-white",children:[d.jsx("option",{value:"Text",children:s("itemTypes.fieldTypes.text")}),d.jsx("option",{value:"Hidden",children:s("itemTypes.fieldTypes.hidden")}),d.jsx("option",{value:"Email",children:s("itemTypes.fieldTypes.email")}),d.jsx("option",{value:"URL",children:s("itemTypes.fieldTypes.url")}),d.jsx("option",{value:"Phone",children:s("itemTypes.fieldTypes.phone")}),d.jsx("option",{value:"Number",children:s("itemTypes.fieldTypes.number")}),d.jsx("option",{value:"Date",children:s("itemTypes.fieldTypes.date")}),d.jsx("option",{value:"TextArea",children:s("itemTypes.fieldTypes.textArea")})]})]})]})})]})};function QB(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.useMemo(()=>r=>{e.forEach(s=>s(r))},e)}const Zu=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ko(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function Bf(t){return"nodeType"in t}function On(t){var e,n;return t?Ko(t)?t:Bf(t)&&(e=(n=t.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function Pf(t){const{Document:e}=On(t);return t instanceof e}function Fd(t){return Ko(t)?!1:t instanceof On(t).HTMLElement}function pk(t){return t instanceof On(t).SVGElement}function Go(t){return t?Ko(t)?t.document:Bf(t)?Pf(t)?t:Fd(t)||pk(t)?t.ownerDocument:document:document:document}const Ki=Zu?b.useLayoutEffect:b.useEffect;function Of(t){const e=b.useRef(t);return Ki(()=>{e.current=t}),b.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s<n;s++)r[s]=arguments[s];return e.current==null?void 0:e.current(...r)},[])}function KB(){const t=b.useRef(null),e=b.useCallback((r,s)=>{t.current=setInterval(r,s)},[]),n=b.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,n]}function Td(t,e){e===void 0&&(e=[t]);const n=b.useRef(t);return Ki(()=>{n.current!==t&&(n.current=t)},e),n}function Bd(t,e){const n=b.useRef();return b.useMemo(()=>{const r=t(n.current);return n.current=r,r},[...e])}function Fu(t){const e=Of(t),n=b.useRef(null),r=b.useCallback(s=>{s!==n.current&&(e==null||e(s,n.current)),n.current=s},[]);return[n,r]}function Xh(t){const e=b.useRef();return b.useEffect(()=>{e.current=t},[t]),e.current}let yh={};function Pd(t,e){return b.useMemo(()=>{if(e)return e;const n=yh[t]==null?0:yh[t]+1;return yh[t]=n,t+"-"+n},[t,e])}function hk(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];return r.reduce((l,c)=>{const m=Object.entries(c);for(const[p,g]of m){const A=l[p];A!=null&&(l[p]=A+t*g)}return l},{...e})}}const _o=hk(1),Nd=hk(-1);function GB(t){return"clientX"in t&&"clientY"in t}function jf(t){if(!t)return!1;const{KeyboardEvent:e}=On(t.target);return e&&t instanceof e}function WB(t){if(!t)return!1;const{TouchEvent:e}=On(t.target);return e&&t instanceof e}function $h(t){if(WB(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return GB(t)?{x:t.clientX,y:t.clientY}:null}const kd=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[kd.Translate.toString(t),kd.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),Kb="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function qB(t){return t.matches(Kb)?t:t.querySelector(Kb)}const YB={display:"none"};function JB(t){let{id:e,value:n}=t;return qa.createElement("div",{id:e,style:YB},n)}function XB(t){let{id:e,announcement:n,ariaLiveType:r="assertive"}=t;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return qa.createElement("div",{id:e,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function $B(){const[t,e]=b.useState("");return{announce:b.useCallback(r=>{r!=null&&e(r)},[]),announcement:t}}const fk=b.createContext(null);function ZB(t){const e=b.useContext(fk);b.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of <DndContext>");return e(t)},[t,e])}function eP(){const[t]=b.useState(()=>new Set),e=b.useCallback(r=>(t.add(r),()=>t.delete(r)),[t]);return[b.useCallback(r=>{let{type:s,event:l}=r;t.forEach(c=>{var m;return(m=c[s])==null?void 0:m.call(c,l)})},[t]),e]}const tP={draggable:`
    To pick up a draggable item, press the space bar.
    While dragging, use the arrow keys to move the item.
    Press space again to drop the item in its new position, or press escape to cancel.
  `},aP={onDragStart(t){let{active:e}=t;return"Picked up draggable item "+e.id+"."},onDragOver(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(t){let{active:e}=t;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function nP(t){let{announcements:e=aP,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=tP}=t;const{announce:l,announcement:c}=$B(),m=Pd("DndLiveRegion"),[p,g]=b.useState(!1);if(b.useEffect(()=>{g(!0)},[]),ZB(b.useMemo(()=>({onDragStart(f){let{active:v}=f;l(e.onDragStart({active:v}))},onDragMove(f){let{active:v,over:w}=f;e.onDragMove&&l(e.onDragMove({active:v,over:w}))},onDragOver(f){let{active:v,over:w}=f;l(e.onDragOver({active:v,over:w}))},onDragEnd(f){let{active:v,over:w}=f;l(e.onDragEnd({active:v,over:w}))},onDragCancel(f){let{active:v,over:w}=f;l(e.onDragCancel({active:v,over:w}))}}),[l,e])),!p)return null;const A=qa.createElement(qa.Fragment,null,qa.createElement(JB,{id:r,value:s.draggable}),qa.createElement(XB,{id:m,announcement:c}));return n?xo.createPortal(A,n):A}var Wa;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(Wa||(Wa={}));function Bu(){}function Gb(t,e){return b.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function iP(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return b.useMemo(()=>[...e].filter(r=>r!=null),[...e])}const Ni=Object.freeze({x:0,y:0});function Ak(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function yk(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function rP(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function Wb(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function Ek(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function qb(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const sP=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=qb(e,e.left,e.top),l=[];for(const c of r){const{id:m}=c,p=n.get(m);if(p){const g=Ak(qb(p),s);l.push({id:m,data:{droppableContainer:c,value:g}})}}return l.sort(yk)},oP=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=Wb(e),l=[];for(const c of r){const{id:m}=c,p=n.get(m);if(p){const g=Wb(p),A=s.reduce((v,w,S)=>v+Ak(g[S],w),0),f=Number((A/4).toFixed(4));l.push({id:m,data:{droppableContainer:c,value:f}})}}return l.sort(yk)};function lP(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),l=Math.min(e.top+e.height,t.top+t.height),c=s-r,m=l-n;if(r<s&&n<l){const p=e.width*e.height,g=t.width*t.height,A=c*m,f=A/(p+g-A);return Number(f.toFixed(4))}return 0}const dP=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const l of r){const{id:c}=l,m=n.get(c);if(m){const p=lP(m,e);p>0&&s.push({id:c,data:{droppableContainer:l,value:p}})}}return s.sort(rP)};function cP(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function bk(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:Ni}function uP(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),l=1;l<r;l++)s[l-1]=arguments[l];return s.reduce((c,m)=>({...c,top:c.top+t*m.y,bottom:c.bottom+t*m.y,left:c.left+t*m.x,right:c.right+t*m.x}),{...n})}}const mP=uP(1);function gP(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function pP(t,e,n){const r=gP(e);if(!r)return t;const{scaleX:s,scaleY:l,x:c,y:m}=r,p=t.left-c-(1-s)*parseFloat(n),g=t.top-m-(1-l)*parseFloat(n.slice(n.indexOf(" ")+1)),A=s?t.width/s:t.width,f=l?t.height/l:t.height;return{width:A,height:f,top:g,right:p+A,bottom:g+f,left:p}}const hP={ignoreTransform:!1};function Wo(t,e){e===void 0&&(e=hP);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:g,transformOrigin:A}=On(t).getComputedStyle(t);g&&(n=pP(n,g,A))}const{top:r,left:s,width:l,height:c,bottom:m,right:p}=n;return{top:r,left:s,width:l,height:c,bottom:m,right:p}}function Yb(t){return Wo(t,{ignoreTransform:!0})}function fP(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function AP(t,e){return e===void 0&&(e=On(t).getComputedStyle(t)),e.position==="fixed"}function yP(t,e){e===void 0&&(e=On(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const l=e[s];return typeof l=="string"?n.test(l):!1})}function em(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(Pf(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!Fd(s)||pk(s)||n.includes(s))return n;const l=On(t).getComputedStyle(s);return s!==t&&yP(s,l)&&n.push(s),AP(s,l)?n:r(s.parentNode)}return t?r(t):n}function vk(t){const[e]=em(t,1);return e??null}function Eh(t){return!Zu||!t?null:Ko(t)?t:Bf(t)?Pf(t)||t===Go(t).scrollingElement?window:Fd(t)?t:null:null}function wk(t){return Ko(t)?t.scrollX:t.scrollLeft}function Ik(t){return Ko(t)?t.scrollY:t.scrollTop}function Zh(t){return{x:wk(t),y:Ik(t)}}var rn;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(rn||(rn={}));function Ck(t){return!Zu||!t?!1:t===document.scrollingElement}function Sk(t){const e={x:0,y:0},n=Ck(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,l=t.scrollLeft<=e.x,c=t.scrollTop>=r.y,m=t.scrollLeft>=r.x;return{isTop:s,isLeft:l,isBottom:c,isRight:m,maxScroll:r,minScroll:e}}const EP={x:.2,y:.2};function bP(t,e,n,r,s){let{top:l,left:c,right:m,bottom:p}=n;r===void 0&&(r=10),s===void 0&&(s=EP);const{isTop:g,isBottom:A,isLeft:f,isRight:v}=Sk(t),w={x:0,y:0},S={x:0,y:0},T={height:e.height*s.y,width:e.width*s.x};return!g&&l<=e.top+T.height?(w.y=rn.Backward,S.y=r*Math.abs((e.top+T.height-l)/T.height)):!A&&p>=e.bottom-T.height&&(w.y=rn.Forward,S.y=r*Math.abs((e.bottom-T.height-p)/T.height)),!v&&m>=e.right-T.width?(w.x=rn.Forward,S.x=r*Math.abs((e.right-T.width-m)/T.width)):!f&&c<=e.left+T.width&&(w.x=rn.Backward,S.x=r*Math.abs((e.left+T.width-c)/T.width)),{direction:w,speed:S}}function vP(t){if(t===document.scrollingElement){const{innerWidth:l,innerHeight:c}=window;return{top:0,left:0,right:l,bottom:c,width:l,height:c}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function Tk(t){return t.reduce((e,n)=>_o(e,Zh(n)),Ni)}function wP(t){return t.reduce((e,n)=>e+wk(n),0)}function IP(t){return t.reduce((e,n)=>e+Ik(n),0)}function CP(t,e){if(e===void 0&&(e=Wo),!t)return;const{top:n,left:r,bottom:s,right:l}=e(t);vk(t)&&(s<=0||l<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const SP=[["x",["left","right"],wP],["y",["top","bottom"],IP]];class Hf{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=em(n),s=Tk(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[l,c,m]of SP)for(const p of c)Object.defineProperty(this,p,{get:()=>{const g=m(r),A=s[l]-g;return this.rect[p]+A},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Ad{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function TP(t){const{EventTarget:e}=On(t);return t instanceof e?t:Go(t)}function bh(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var hi;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(hi||(hi={}));function Jb(t){t.preventDefault()}function NP(t){t.stopPropagation()}var zt;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(zt||(zt={}));const Nk={start:[zt.Space,zt.Enter],cancel:[zt.Esc],end:[zt.Space,zt.Enter,zt.Tab]},kP=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case zt.Right:return{...n,x:n.x+25};case zt.Left:return{...n,x:n.x-25};case zt.Down:return{...n,y:n.y+25};case zt.Up:return{...n,y:n.y-25}}};class Vf{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new Ad(Go(n)),this.windowListeners=new Ad(On(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(hi.Resize,this.handleCancel),this.windowListeners.add(hi.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(hi.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&CP(r),n(Ni)}handleKeyDown(e){if(jf(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:l=Nk,coordinateGetter:c=kP,scrollBehavior:m="smooth"}=s,{code:p}=e;if(l.end.includes(p)){this.handleEnd(e);return}if(l.cancel.includes(p)){this.handleCancel(e);return}const{collisionRect:g}=r.current,A=g?{x:g.left,y:g.top}:Ni;this.referenceCoordinates||(this.referenceCoordinates=A);const f=c(e,{active:n,context:r.current,currentCoordinates:A});if(f){const v=Nd(f,A),w={x:0,y:0},{scrollableAncestors:S}=r.current;for(const T of S){const k=e.code,{isTop:L,isRight:R,isLeft:x,isBottom:O,maxScroll:_,minScroll:j}=Sk(T),G=vP(T),P={x:Math.min(k===zt.Right?G.right-G.width/2:G.right,Math.max(k===zt.Right?G.left:G.left+G.width/2,f.x)),y:Math.min(k===zt.Down?G.bottom-G.height/2:G.bottom,Math.max(k===zt.Down?G.top:G.top+G.height/2,f.y))},B=k===zt.Right&&!R||k===zt.Left&&!x,z=k===zt.Down&&!O||k===zt.Up&&!L;if(B&&P.x!==f.x){const Q=T.scrollLeft+v.x,ae=k===zt.Right&&Q<=_.x||k===zt.Left&&Q>=j.x;if(ae&&!v.y){T.scrollTo({left:Q,behavior:m});return}ae?w.x=T.scrollLeft-Q:w.x=k===zt.Right?T.scrollLeft-_.x:T.scrollLeft-j.x,w.x&&T.scrollBy({left:-w.x,behavior:m});break}else if(z&&P.y!==f.y){const Q=T.scrollTop+v.y,ae=k===zt.Down&&Q<=_.y||k===zt.Up&&Q>=j.y;if(ae&&!v.x){T.scrollTo({top:Q,behavior:m});return}ae?w.y=T.scrollTop-Q:w.y=k===zt.Down?T.scrollTop-_.y:T.scrollTop-j.y,w.y&&T.scrollBy({top:-w.y,behavior:m});break}}this.handleMove(e,_o(Nd(f,this.referenceCoordinates),w))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Vf.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=Nk,onActivation:s}=e,{active:l}=n;const{code:c}=t.nativeEvent;if(r.start.includes(c)){const m=l.activatorNode.current;return m&&t.target!==m?!1:(t.preventDefault(),s==null||s({event:t.nativeEvent}),!0)}return!1}}];function Xb(t){return!!(t&&"distance"in t)}function $b(t){return!!(t&&"delay"in t)}class zf{constructor(e,n,r){var s;r===void 0&&(r=TP(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:l}=e,{target:c}=l;this.props=e,this.events=n,this.document=Go(c),this.documentListeners=new Ad(this.document),this.listeners=new Ad(r),this.windowListeners=new Ad(On(c)),this.initialCoordinates=(s=$h(l))!=null?s:Ni,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(hi.Resize,this.handleCancel),this.windowListeners.add(hi.DragStart,Jb),this.windowListeners.add(hi.VisibilityChange,this.handleCancel),this.windowListeners.add(hi.ContextMenu,Jb),this.documentListeners.add(hi.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if($b(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(Xb(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(hi.Click,NP,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(hi.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:l}=this,{onMove:c,options:{activationConstraint:m}}=l;if(!s)return;const p=(n=$h(e))!=null?n:Ni,g=Nd(s,p);if(!r&&m){if(Xb(m)){if(m.tolerance!=null&&bh(g,m.tolerance))return this.handleCancel();if(bh(g,m.distance))return this.handleStart()}if($b(m)&&bh(g,m.tolerance))return this.handleCancel();this.handlePending(m,g);return}e.cancelable&&e.preventDefault(),c(p)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===zt.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const xP={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class Qf extends zf{constructor(e){const{event:n}=e,r=Go(n.target);super(e,xP,r)}}Qf.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r==null||r({event:n}),!0)}}];const LP={move:{name:"mousemove"},end:{name:"mouseup"}};var ef;(function(t){t[t.RightClick=2]="RightClick"})(ef||(ef={}));class DP extends zf{constructor(e){super(e,LP,Go(e.event.target))}}DP.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===ef.RightClick?!1:(r==null||r({event:n}),!0)}}];const vh={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class RP extends zf{constructor(e){super(e,vh)}static setup(){return window.addEventListener(vh.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(vh.move.name,e)};function e(){}}}RP.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r==null||r({event:n}),!0)}}];var yd;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(yd||(yd={}));var Pu;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(Pu||(Pu={}));function UP(t){let{acceleration:e,activator:n=yd.Pointer,canScroll:r,draggingRect:s,enabled:l,interval:c=5,order:m=Pu.TreeOrder,pointerCoordinates:p,scrollableAncestors:g,scrollableAncestorRects:A,delta:f,threshold:v}=t;const w=_P({delta:f,disabled:!l}),[S,T]=KB(),k=b.useRef({x:0,y:0}),L=b.useRef({x:0,y:0}),R=b.useMemo(()=>{switch(n){case yd.Pointer:return p?{top:p.y,bottom:p.y,left:p.x,right:p.x}:null;case yd.DraggableRect:return s}},[n,s,p]),x=b.useRef(null),O=b.useCallback(()=>{const j=x.current;if(!j)return;const G=k.current.x*L.current.x,P=k.current.y*L.current.y;j.scrollBy(G,P)},[]),_=b.useMemo(()=>m===Pu.TreeOrder?[...g].reverse():g,[m,g]);b.useEffect(()=>{if(!l||!g.length||!R){T();return}for(const j of _){if((r==null?void 0:r(j))===!1)continue;const G=g.indexOf(j),P=A[G];if(!P)continue;const{direction:B,speed:z}=bP(j,P,R,e,v);for(const Q of["x","y"])w[Q][B[Q]]||(z[Q]=0,B[Q]=0);if(z.x>0||z.y>0){T(),x.current=j,S(O,c),k.current=z,L.current=B;return}}k.current={x:0,y:0},L.current={x:0,y:0},T()},[e,O,r,T,l,c,JSON.stringify(R),JSON.stringify(w),S,g,_,A,JSON.stringify(v)])}const MP={x:{[rn.Backward]:!1,[rn.Forward]:!1},y:{[rn.Backward]:!1,[rn.Forward]:!1}};function _P(t){let{delta:e,disabled:n}=t;const r=Xh(e);return Bd(s=>{if(n||!r||!s)return MP;const l={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[rn.Backward]:s.x[rn.Backward]||l.x===-1,[rn.Forward]:s.x[rn.Forward]||l.x===1},y:{[rn.Backward]:s.y[rn.Backward]||l.y===-1,[rn.Forward]:s.y[rn.Forward]||l.y===1}}},[n,e,r])}function FP(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return Bd(s=>{var l;return e==null?null:(l=r??s)!=null?l:null},[r,e])}function BP(t,e){return b.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,l=s.activators.map(c=>({eventName:c.eventName,handler:e(c.handler,r)}));return[...n,...l]},[]),[t,e])}var xd;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(xd||(xd={}));var tf;(function(t){t.Optimized="optimized"})(tf||(tf={}));const Zb=new Map;function PP(t,e){let{dragging:n,dependencies:r,config:s}=e;const[l,c]=b.useState(null),{frequency:m,measure:p,strategy:g}=s,A=b.useRef(t),f=k(),v=Td(f),w=b.useCallback(function(L){L===void 0&&(L=[]),!v.current&&c(R=>R===null?L:R.concat(L.filter(x=>!R.includes(x))))},[v]),S=b.useRef(null),T=Bd(L=>{if(f&&!n)return Zb;if(!L||L===Zb||A.current!==t||l!=null){const R=new Map;for(let x of t){if(!x)continue;if(l&&l.length>0&&!l.includes(x.id)&&x.rect.current){R.set(x.id,x.rect.current);continue}const O=x.node.current,_=O?new Hf(p(O),O):null;x.rect.current=_,_&&R.set(x.id,_)}return R}return L},[t,l,n,f,p]);return b.useEffect(()=>{A.current=t},[t]),b.useEffect(()=>{f||w()},[n,f]),b.useEffect(()=>{l&&l.length>0&&c(null)},[JSON.stringify(l)]),b.useEffect(()=>{f||typeof m!="number"||S.current!==null||(S.current=setTimeout(()=>{w(),S.current=null},m))},[m,f,w,...r]),{droppableRects:T,measureDroppableContainers:w,measuringScheduled:l!=null};function k(){switch(g){case xd.Always:return!1;case xd.BeforeDragging:return n;default:return!n}}}function kk(t,e){return Bd(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function OP(t,e){return kk(t,e)}function jP(t){let{callback:e,disabled:n}=t;const r=Of(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:l}=window;return new l(r)},[r,n]);return b.useEffect(()=>()=>s==null?void 0:s.disconnect(),[s]),s}function tm(t){let{callback:e,disabled:n}=t;const r=Of(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:l}=window;return new l(r)},[n]);return b.useEffect(()=>()=>s==null?void 0:s.disconnect(),[s]),s}function HP(t){return new Hf(Wo(t),t)}function ev(t,e,n){e===void 0&&(e=HP);const[r,s]=b.useState(null);function l(){s(p=>{if(!t)return null;if(t.isConnected===!1){var g;return(g=p??n)!=null?g:null}const A=e(t);return JSON.stringify(p)===JSON.stringify(A)?p:A})}const c=jP({callback(p){if(t)for(const g of p){const{type:A,target:f}=g;if(A==="childList"&&f instanceof HTMLElement&&f.contains(t)){l();break}}}}),m=tm({callback:l});return Ki(()=>{l(),t?(m==null||m.observe(t),c==null||c.observe(document.body,{childList:!0,subtree:!0})):(m==null||m.disconnect(),c==null||c.disconnect())},[t]),r}function VP(t){const e=kk(t);return bk(t,e)}const tv=[];function zP(t){const e=b.useRef(t),n=Bd(r=>t?r&&r!==tv&&t&&e.current&&t.parentNode===e.current.parentNode?r:em(t):tv,[t]);return b.useEffect(()=>{e.current=t},[t]),n}function QP(t){const[e,n]=b.useState(null),r=b.useRef(t),s=b.useCallback(l=>{const c=Eh(l.target);c&&n(m=>m?(m.set(c,Zh(c)),new Map(m)):null)},[]);return b.useEffect(()=>{const l=r.current;if(t!==l){c(l);const m=t.map(p=>{const g=Eh(p);return g?(g.addEventListener("scroll",s,{passive:!0}),[g,Zh(g)]):null}).filter(p=>p!=null);n(m.length?new Map(m):null),r.current=t}return()=>{c(t),c(l)};function c(m){m.forEach(p=>{const g=Eh(p);g==null||g.removeEventListener("scroll",s)})}},[s,t]),b.useMemo(()=>t.length?e?Array.from(e.values()).reduce((l,c)=>_o(l,c),Ni):Tk(t):Ni,[t,e])}function av(t,e){e===void 0&&(e=[]);const n=b.useRef(null);return b.useEffect(()=>{n.current=null},e),b.useEffect(()=>{const r=t!==Ni;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?Nd(t,n.current):Ni}function KP(t){b.useEffect(()=>{if(!Zu)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n==null||n()}},t.map(e=>{let{sensor:n}=e;return n}))}function GP(t,e){return b.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:l}=r;return n[s]=c=>{l(c,e)},n},{}),[t,e])}function xk(t){return b.useMemo(()=>t?fP(t):null,[t])}const nv=[];function WP(t,e){e===void 0&&(e=Wo);const[n]=t,r=xk(n?On(n):null),[s,l]=b.useState(nv);function c(){l(()=>t.length?t.map(p=>Ck(p)?r:new Hf(e(p),p)):nv)}const m=tm({callback:c});return Ki(()=>{m==null||m.disconnect(),c(),t.forEach(p=>m==null?void 0:m.observe(p))},[t]),s}function qP(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return Fd(e)?e:t}function YP(t){let{measure:e}=t;const[n,r]=b.useState(null),s=b.useCallback(g=>{for(const{target:A}of g)if(Fd(A)){r(f=>{const v=e(A);return f?{...f,width:v.width,height:v.height}:v});break}},[e]),l=tm({callback:s}),c=b.useCallback(g=>{const A=qP(g);l==null||l.disconnect(),A&&(l==null||l.observe(A)),r(A?e(A):null)},[e,l]),[m,p]=Fu(c);return b.useMemo(()=>({nodeRef:m,rect:n,setRef:p}),[n,m,p])}const JP=[{sensor:Qf,options:{}},{sensor:Vf,options:{}}],XP={current:{}},Cu={draggable:{measure:Yb},droppable:{measure:Yb,strategy:xd.WhileDragging,frequency:tf.Optimized},dragOverlay:{measure:Wo}};class Ed extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const $P={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Ed,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Bu},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Cu,measureDroppableContainers:Bu,windowRect:null,measuringScheduled:!1},ZP={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Bu,draggableNodes:new Map,over:null,measureDroppableContainers:Bu},am=b.createContext(ZP),Lk=b.createContext($P);function eO(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Ed}}}function tO(t,e){switch(e.type){case Wa.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case Wa.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case Wa.DragEnd:case Wa.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Wa.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new Ed(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case Wa.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,l=t.droppable.containers.get(n);if(!l||r!==l.key)return t;const c=new Ed(t.droppable.containers);return c.set(n,{...l,disabled:s}),{...t,droppable:{...t.droppable,containers:c}}}case Wa.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const l=new Ed(t.droppable.containers);return l.delete(n),{...t,droppable:{...t.droppable,containers:l}}}default:return t}}function aO(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=b.useContext(am),l=Xh(r),c=Xh(n==null?void 0:n.id);return b.useEffect(()=>{if(!e&&!r&&l&&c!=null){if(!jf(l)||document.activeElement===l.target)return;const m=s.get(c);if(!m)return;const{activatorNode:p,node:g}=m;if(!p.current&&!g.current)return;requestAnimationFrame(()=>{for(const A of[p.current,g.current]){if(!A)continue;const f=qB(A);if(f){f.focus();break}}})}},[r,e,s,c,l]),null}function nO(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,l)=>l({transform:s,...r}),n):n}function iO(t){return b.useMemo(()=>({draggable:{...Cu.draggable,...t==null?void 0:t.draggable},droppable:{...Cu.droppable,...t==null?void 0:t.droppable},dragOverlay:{...Cu.dragOverlay,...t==null?void 0:t.dragOverlay}}),[t==null?void 0:t.draggable,t==null?void 0:t.droppable,t==null?void 0:t.dragOverlay])}function rO(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const l=b.useRef(!1),{x:c,y:m}=typeof s=="boolean"?{x:s,y:s}:s;Ki(()=>{if(!c&&!m||!e){l.current=!1;return}if(l.current||!r)return;const g=e==null?void 0:e.node.current;if(!g||g.isConnected===!1)return;const A=n(g),f=bk(A,r);if(c||(f.x=0),m||(f.y=0),l.current=!0,Math.abs(f.x)>0||Math.abs(f.y)>0){const v=vk(g);v&&v.scrollBy({top:f.y,left:f.x})}},[e,c,m,r,n])}const Dk=b.createContext({...Ni,scaleX:1,scaleY:1});var is;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(is||(is={}));const sO=b.memo(function(e){var n,r,s,l;let{id:c,accessibility:m,autoScroll:p=!0,children:g,sensors:A=JP,collisionDetection:f=dP,measuring:v,modifiers:w,...S}=e;const T=b.useReducer(tO,void 0,eO),[k,L]=T,[R,x]=eP(),[O,_]=b.useState(is.Uninitialized),j=O===is.Initialized,{draggable:{active:G,nodes:P,translate:B},droppable:{containers:z}}=k,Q=G!=null?P.get(G):null,ae=b.useRef({initial:null,translated:null}),Y=b.useMemo(()=>{var jt;return G!=null?{id:G,data:(jt=Q==null?void 0:Q.data)!=null?jt:XP,rect:ae}:null},[G,Q]),ne=b.useRef(null),[fe,X]=b.useState(null),[te,ce]=b.useState(null),oe=Td(S,Object.values(S)),F=Pd("DndDescribedBy",c),J=b.useMemo(()=>z.getEnabled(),[z]),W=iO(v),{droppableRects:ie,measureDroppableContainers:we,measuringScheduled:le}=PP(J,{dragging:j,dependencies:[B.x,B.y],config:W.droppable}),ve=FP(P,G),Pe=b.useMemo(()=>te?$h(te):null,[te]),_e=gn(),Ke=OP(ve,W.draggable.measure);rO({activeNode:G!=null?P.get(G):null,config:_e.layoutShiftCompensation,initialRect:Ke,measure:W.draggable.measure});const Ye=ev(ve,W.draggable.measure,Ke),Ot=ev(ve?ve.parentElement:null),Ve=b.useRef({activatorEvent:null,active:null,activeNode:ve,collisionRect:null,collisions:null,droppableRects:ie,draggableNodes:P,draggingNode:null,draggingNodeRect:null,droppableContainers:z,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Me=z.getNodeFor((n=Ve.current.over)==null?void 0:n.id),Qe=YP({measure:W.dragOverlay.measure}),ht=(r=Qe.nodeRef.current)!=null?r:ve,Ie=j?(s=Qe.rect)!=null?s:Ye:null,Be=!!(Qe.nodeRef.current&&Qe.rect),Ge=VP(Be?null:Ye),qe=xk(ht?On(ht):null),nt=zP(j?Me??ve:null),We=WP(nt),Ee=nO(w,{transform:{x:B.x-Ge.x,y:B.y-Ge.y,scaleX:1,scaleY:1},activatorEvent:te,active:Y,activeNodeRect:Ye,containerNodeRect:Ot,draggingNodeRect:Ie,over:Ve.current.over,overlayNodeRect:Qe.rect,scrollableAncestors:nt,scrollableAncestorRects:We,windowRect:qe}),je=Pe?_o(Pe,B):null,Je=QP(nt),ut=av(Je),Dt=av(Je,[Ye]),M=_o(Ee,ut),C=Ie?mP(Ie,Ee):null,N=Y&&C?f({active:Y,collisionRect:C,droppableRects:ie,droppableContainers:J,pointerCoordinates:je}):null,K=Ek(N,"id"),[ee,pe]=b.useState(null),Se=Be?Ee:_o(Ee,Dt),Oe=cP(Se,(l=ee==null?void 0:ee.rect)!=null?l:null,Ye),lt=b.useRef(null),wt=b.useCallback((jt,na)=>{let{sensor:De,options:Oa}=na;if(ne.current==null)return;const xt=P.get(ne.current);if(!xt)return;const Rt=jt.nativeEvent,Da=new De({active:ne.current,activeNode:xt,event:Rt,options:Oa,context:Ve,onAbort(Ht){if(!P.get(Ht))return;const{onDragAbort:Kt}=oe.current,Vt={id:Ht};Kt==null||Kt(Vt),R({type:"onDragAbort",event:Vt})},onPending(Ht,Mt,Kt,Vt){if(!P.get(Ht))return;const{onDragPending:pa}=oe.current,Xa={id:Ht,constraint:Mt,initialCoordinates:Kt,offset:Vt};pa==null||pa(Xa),R({type:"onDragPending",event:Xa})},onStart(Ht){const Mt=ne.current;if(Mt==null)return;const Kt=P.get(Mt);if(!Kt)return;const{onDragStart:Vt}=oe.current,da={activatorEvent:Rt,active:{id:Mt,data:Kt.data,rect:ae}};xo.unstable_batchedUpdates(()=>{Vt==null||Vt(da),_(is.Initializing),L({type:Wa.DragStart,initialCoordinates:Ht,active:Mt}),R({type:"onDragStart",event:da}),X(lt.current),ce(Rt)})},onMove(Ht){L({type:Wa.DragMove,coordinates:Ht})},onEnd:sn(Wa.DragEnd),onCancel:sn(Wa.DragCancel)});lt.current=Da;function sn(Ht){return async function(){const{active:Kt,collisions:Vt,over:da,scrollAdjustedTranslate:pa}=Ve.current;let Xa=null;if(Kt&&pa){const{cancelDrop:pn}=oe.current;Xa={activatorEvent:Rt,active:Kt,collisions:Vt,delta:pa,over:da},Ht===Wa.DragEnd&&typeof pn=="function"&&await Promise.resolve(pn(Xa))&&(Ht=Wa.DragCancel)}ne.current=null,xo.unstable_batchedUpdates(()=>{L({type:Ht}),_(is.Uninitialized),pe(null),X(null),ce(null),lt.current=null;const pn=Ht===Wa.DragEnd?"onDragEnd":"onDragCancel";if(Xa){const Ta=oe.current[pn];Ta==null||Ta(Xa),R({type:pn,event:Xa})}})}}},[P]),kt=b.useCallback((jt,na)=>(De,Oa)=>{const xt=De.nativeEvent,Rt=P.get(Oa);if(ne.current!==null||!Rt||xt.dndKit||xt.defaultPrevented)return;const Da={active:Rt};jt(De,na.options,Da)===!0&&(xt.dndKit={capturedBy:na.sensor},ne.current=Oa,wt(De,na))},[P,wt]),ft=BP(A,kt);KP(A),Ki(()=>{Ye&&O===is.Initializing&&_(is.Initialized)},[Ye,O]),b.useEffect(()=>{const{onDragMove:jt}=oe.current,{active:na,activatorEvent:De,collisions:Oa,over:xt}=Ve.current;if(!na||!De)return;const Rt={active:na,activatorEvent:De,collisions:Oa,delta:{x:M.x,y:M.y},over:xt};xo.unstable_batchedUpdates(()=>{jt==null||jt(Rt),R({type:"onDragMove",event:Rt})})},[M.x,M.y]),b.useEffect(()=>{const{active:jt,activatorEvent:na,collisions:De,droppableContainers:Oa,scrollAdjustedTranslate:xt}=Ve.current;if(!jt||ne.current==null||!na||!xt)return;const{onDragOver:Rt}=oe.current,Da=Oa.get(K),sn=Da&&Da.rect.current?{id:Da.id,rect:Da.rect.current,data:Da.data,disabled:Da.disabled}:null,Ht={active:jt,activatorEvent:na,collisions:De,delta:{x:xt.x,y:xt.y},over:sn};xo.unstable_batchedUpdates(()=>{pe(sn),Rt==null||Rt(Ht),R({type:"onDragOver",event:Ht})})},[K]),Ki(()=>{Ve.current={activatorEvent:te,active:Y,activeNode:ve,collisionRect:C,collisions:N,droppableRects:ie,draggableNodes:P,draggingNode:ht,draggingNodeRect:Ie,droppableContainers:z,over:ee,scrollableAncestors:nt,scrollAdjustedTranslate:M},ae.current={initial:Ie,translated:C}},[Y,ve,N,C,P,ht,Ie,ie,z,ee,nt,M]),UP({..._e,delta:B,draggingRect:C,pointerCoordinates:je,scrollableAncestors:nt,scrollableAncestorRects:We});const bi=b.useMemo(()=>({active:Y,activeNode:ve,activeNodeRect:Ye,activatorEvent:te,collisions:N,containerNodeRect:Ot,dragOverlay:Qe,draggableNodes:P,droppableContainers:z,droppableRects:ie,over:ee,measureDroppableContainers:we,scrollableAncestors:nt,scrollableAncestorRects:We,measuringConfiguration:W,measuringScheduled:le,windowRect:qe}),[Y,ve,Ye,te,N,Ot,Qe,P,z,ie,ee,we,nt,We,W,le,qe]),La=b.useMemo(()=>({activatorEvent:te,activators:ft,active:Y,activeNodeRect:Ye,ariaDescribedById:{draggable:F},dispatch:L,draggableNodes:P,over:ee,measureDroppableContainers:we}),[te,ft,Y,Ye,L,F,P,ee,we]);return qa.createElement(fk.Provider,{value:x},qa.createElement(am.Provider,{value:La},qa.createElement(Lk.Provider,{value:bi},qa.createElement(Dk.Provider,{value:Oe},g)),qa.createElement(aO,{disabled:(m==null?void 0:m.restoreFocus)===!1})),qa.createElement(nP,{...m,hiddenTextDescribedById:F}));function gn(){const jt=(fe==null?void 0:fe.autoScrollEnabled)===!1,na=typeof p=="object"?p.enabled===!1:p===!1,De=j&&!jt&&!na;return typeof p=="object"?{...p,enabled:De}:{enabled:De}}}),oO=b.createContext(null),iv="button",lO="Draggable";function dO(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const l=Pd(lO),{activators:c,activatorEvent:m,active:p,activeNodeRect:g,ariaDescribedById:A,draggableNodes:f,over:v}=b.useContext(am),{role:w=iv,roleDescription:S="draggable",tabIndex:T=0}=s??{},k=(p==null?void 0:p.id)===e,L=b.useContext(k?Dk:oO),[R,x]=Fu(),[O,_]=Fu(),j=GP(c,e),G=Td(n);Ki(()=>(f.set(e,{id:e,key:l,node:R,activatorNode:O,data:G}),()=>{const B=f.get(e);B&&B.key===l&&f.delete(e)}),[f,e]);const P=b.useMemo(()=>({role:w,tabIndex:T,"aria-disabled":r,"aria-pressed":k&&w===iv?!0:void 0,"aria-roledescription":S,"aria-describedby":A.draggable}),[r,w,T,k,S,A.draggable]);return{active:p,activatorEvent:m,activeNodeRect:g,attributes:P,isDragging:k,listeners:r?void 0:j,node:R,over:v,setNodeRef:x,setActivatorNodeRef:_,transform:L}}function cO(){return b.useContext(Lk)}const uO="Droppable",mO={timeout:25};function gO(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const l=Pd(uO),{active:c,dispatch:m,over:p,measureDroppableContainers:g}=b.useContext(am),A=b.useRef({disabled:n}),f=b.useRef(!1),v=b.useRef(null),w=b.useRef(null),{disabled:S,updateMeasurementsFor:T,timeout:k}={...mO,...s},L=Td(T??r),R=b.useCallback(()=>{if(!f.current){f.current=!0;return}w.current!=null&&clearTimeout(w.current),w.current=setTimeout(()=>{g(Array.isArray(L.current)?L.current:[L.current]),w.current=null},k)},[k]),x=tm({callback:R,disabled:S||!c}),O=b.useCallback((P,B)=>{x&&(B&&(x.unobserve(B),f.current=!1),P&&x.observe(P))},[x]),[_,j]=Fu(O),G=Td(e);return b.useEffect(()=>{!x||!_.current||(x.disconnect(),f.current=!1,x.observe(_.current))},[_,x]),b.useEffect(()=>(m({type:Wa.RegisterDroppable,element:{id:r,key:l,disabled:n,node:_,rect:v,data:G}}),()=>m({type:Wa.UnregisterDroppable,key:l,id:r})),[r]),b.useEffect(()=>{n!==A.current.disabled&&(m({type:Wa.SetDroppableDisabled,id:r,key:l,disabled:n}),A.current.disabled=n)},[r,l,n,m]),{active:c,rect:v,isOver:(p==null?void 0:p.id)===r,node:_,over:p,setNodeRef:j}}function Kf(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function pO(t,e){return t.reduce((n,r,s)=>{const l=e.get(r);return l&&(n[s]=l),n},Array(t.length))}function lu(t){return t!==null&&t>=0}function hO(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}function fO(t){return typeof t=="boolean"?{draggable:t,droppable:t}:t}const Rk=t=>{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const l=Kf(e,r,n),c=e[s],m=l[s];return!m||!c?null:{x:m.left-c.left,y:m.top-c.top,scaleX:m.width/c.width,scaleY:m.height/c.height}},du={scaleX:1,scaleY:1},AO=t=>{var e;let{activeIndex:n,activeNodeRect:r,index:s,rects:l,overIndex:c}=t;const m=(e=l[n])!=null?e:r;if(!m)return null;if(s===n){const g=l[c];return g?{x:0,y:n<c?g.top+g.height-(m.top+m.height):g.top-m.top,...du}:null}const p=yO(l,s,n);return s>n&&s<=c?{x:0,y:-m.height-p,...du}:s<n&&s>=c?{x:0,y:m.height+p,...du}:{x:0,y:0,...du}};function yO(t,e,n){const r=t[e],s=t[e-1],l=t[e+1];return r?n<e?s?r.top-(s.top+s.height):l?l.top-(r.top+r.height):0:l?l.top-(r.top+r.height):s?r.top-(s.top+s.height):0:0}const Uk="Sortable",Mk=qa.createContext({activeIndex:-1,containerId:Uk,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Rk,disabled:{draggable:!1,droppable:!1}});function EO(t){let{children:e,id:n,items:r,strategy:s=Rk,disabled:l=!1}=t;const{active:c,dragOverlay:m,droppableRects:p,over:g,measureDroppableContainers:A}=cO(),f=Pd(Uk,n),v=m.rect!==null,w=b.useMemo(()=>r.map(j=>typeof j=="object"&&"id"in j?j.id:j),[r]),S=c!=null,T=c?w.indexOf(c.id):-1,k=g?w.indexOf(g.id):-1,L=b.useRef(w),R=!hO(w,L.current),x=k!==-1&&T===-1||R,O=fO(l);Ki(()=>{R&&S&&A(w)},[R,w,S,A]),b.useEffect(()=>{L.current=w},[w]);const _=b.useMemo(()=>({activeIndex:T,containerId:f,disabled:O,disableTransforms:x,items:w,overIndex:k,useDragOverlay:v,sortedRects:pO(w,p),strategy:s}),[T,f,O.draggable,O.droppable,x,w,k,p,v,s]);return qa.createElement(Mk.Provider,{value:_},e)}const bO=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return Kf(n,r,s).indexOf(e)},vO=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:l,newIndex:c,previousItems:m,previousContainerId:p,transition:g}=t;return!g||!r||m!==l&&s===c?!1:n?!0:c!==s&&e===p},wO={duration:200,easing:"ease"},_k="transform",IO=kd.Transition.toString({property:_k,duration:0,easing:"linear"}),CO={roleDescription:"sortable"};function SO(t){let{disabled:e,index:n,node:r,rect:s}=t;const[l,c]=b.useState(null),m=b.useRef(n);return Ki(()=>{if(!e&&n!==m.current&&r.current){const p=s.current;if(p){const g=Wo(r.current,{ignoreTransform:!0}),A={x:p.left-g.left,y:p.top-g.top,scaleX:p.width/g.width,scaleY:p.height/g.height};(A.x||A.y)&&c(A)}}n!==m.current&&(m.current=n)},[e,n,r,s]),b.useEffect(()=>{l&&c(null)},[l]),l}function TO(t){let{animateLayoutChanges:e=vO,attributes:n,disabled:r,data:s,getNewIndex:l=bO,id:c,strategy:m,resizeObserverConfig:p,transition:g=wO}=t;const{items:A,containerId:f,activeIndex:v,disabled:w,disableTransforms:S,sortedRects:T,overIndex:k,useDragOverlay:L,strategy:R}=b.useContext(Mk),x=NO(r,w),O=A.indexOf(c),_=b.useMemo(()=>({sortable:{containerId:f,index:O,items:A},...s}),[f,s,O,A]),j=b.useMemo(()=>A.slice(A.indexOf(c)),[A,c]),{rect:G,node:P,isOver:B,setNodeRef:z}=gO({id:c,data:_,disabled:x.droppable,resizeObserverConfig:{updateMeasurementsFor:j,...p}}),{active:Q,activatorEvent:ae,activeNodeRect:Y,attributes:ne,setNodeRef:fe,listeners:X,isDragging:te,over:ce,setActivatorNodeRef:oe,transform:F}=dO({id:c,data:_,attributes:{...CO,...n},disabled:x.draggable}),J=QB(z,fe),W=!!Q,ie=W&&!S&&lu(v)&&lu(k),we=!L&&te,le=we&&ie?F:null,Pe=ie?le??(m??R)({rects:T,activeNodeRect:Y,activeIndex:v,overIndex:k,index:O}):null,_e=lu(v)&&lu(k)?l({id:c,items:A,activeIndex:v,overIndex:k}):O,Ke=Q==null?void 0:Q.id,Ye=b.useRef({activeId:Ke,items:A,newIndex:_e,containerId:f}),Ot=A!==Ye.current.items,Ve=e({active:Q,containerId:f,isDragging:te,isSorting:W,id:c,index:O,items:A,newIndex:Ye.current.newIndex,previousItems:Ye.current.items,previousContainerId:Ye.current.containerId,transition:g,wasDragging:Ye.current.activeId!=null}),Me=SO({disabled:!Ve,index:O,node:P,rect:G});return b.useEffect(()=>{W&&Ye.current.newIndex!==_e&&(Ye.current.newIndex=_e),f!==Ye.current.containerId&&(Ye.current.containerId=f),A!==Ye.current.items&&(Ye.current.items=A)},[W,_e,f,A]),b.useEffect(()=>{if(Ke===Ye.current.activeId)return;if(Ke!=null&&Ye.current.activeId==null){Ye.current.activeId=Ke;return}const ht=setTimeout(()=>{Ye.current.activeId=Ke},50);return()=>clearTimeout(ht)},[Ke]),{active:Q,activeIndex:v,attributes:ne,data:_,rect:G,index:O,newIndex:_e,items:A,isOver:B,isSorting:W,isDragging:te,listeners:X,node:P,overIndex:k,over:ce,setNodeRef:J,setActivatorNodeRef:oe,setDroppableNodeRef:z,setDraggableNodeRef:fe,transform:Me??Pe,transition:Qe()};function Qe(){if(Me||Ot&&Ye.current.newIndex===O)return IO;if(!(we&&!jf(ae)||!g)&&(W||Ve))return kd.Transition.toString({...g,property:_k})}}function NO(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t==null?void 0:t.draggable)!=null?n:e.draggable,droppable:(r=t==null?void 0:t.droppable)!=null?r:e.droppable}}function Ou(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const kO=[zt.Down,zt.Right,zt.Up,zt.Left],xO=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:l,over:c,scrollableAncestors:m}}=e;if(kO.includes(t.code)){if(t.preventDefault(),!n||!r)return;const p=[];l.getEnabled().forEach(f=>{if(!f||f!=null&&f.disabled)return;const v=s.get(f.id);if(v)switch(t.code){case zt.Down:r.top<v.top&&p.push(f);break;case zt.Up:r.top>v.top&&p.push(f);break;case zt.Left:r.left>v.left&&p.push(f);break;case zt.Right:r.left<v.left&&p.push(f);break}});const g=oP({collisionRect:r,droppableRects:s,droppableContainers:p});let A=Ek(g,"id");if(A===(c==null?void 0:c.id)&&g.length>1&&(A=g[1].id),A!=null){const f=l.get(n.id),v=l.get(A),w=v?s.get(v.id):null,S=v==null?void 0:v.node.current;if(S&&w&&f&&v){const k=em(S).some((j,G)=>m[G]!==j),L=Fk(f,v),R=LO(f,v),x=k||!L?{x:0,y:0}:{x:R?r.width-w.width:0,y:R?r.height-w.height:0},O={x:w.left,y:w.top};return x.x&&x.y?O:Nd(O,x)}}}};function Fk(t,e){return!Ou(t)||!Ou(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function LO(t,e){return!Ou(t)||!Ou(e)||!Fk(t,e)?!1:t.data.current.sortable.index<e.data.current.sortable.index}const DO=({htmlFor:t,label:e,onLabelChange:n,onDelete:r})=>{const[s,l]=b.useState(!1),[c,m]=b.useState(e),p=()=>{c.trim()&&(n(c.trim()),l(!1))},g=()=>{m(e),l(!1)},A=f=>{f.key==="Enter"?p():f.key==="Escape"&&g()};return s?d.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[d.jsx("input",{type:"text",value:c,onChange:f=>m(f.target.value),onKeyDown:A,onBlur:p,className:"flex-1 px-2 py-1 text-sm font-medium text-gray-700 dark:text-gray-300 border border-primary-500 rounded focus:outline-none focus:ring-1 focus:ring-primary-500 dark:bg-gray-700 dark:border-primary-400",placeholder:"Field label",autoFocus:!0}),d.jsx("button",{type:"button",onClick:p,className:"text-green-600 dark:text-green-400 hover:text-green-700 dark:hover:text-green-300 text-xs px-2 py-1",children:"✓"}),d.jsx("button",{type:"button",onClick:g,className:"text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 text-xs px-2 py-1",children:"✕"})]}):d.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[d.jsx("label",{htmlFor:t,className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:e}),d.jsx("button",{type:"button",onClick:()=>l(!0),className:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 text-xs",title:"Edit label",children:d.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z"})})}),r&&d.jsx("button",{type:"button",onClick:r,className:"text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300 text-xs",title:"Delete field",children:d.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})})})]})},RO=({name:t})=>{switch(t){case"visibility":return d.jsxs(d.Fragment,{children:[d.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),d.jsx("circle",{cx:"12",cy:"12",r:"3"})]});case"visibility-off":return d.jsxs(d.Fragment,{children:[d.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),d.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]});case"refresh":return d.jsxs(d.Fragment,{children:[d.jsx("path",{d:"M23 4v6h-6"}),d.jsx("path",{d:"M1 20v-6h6"}),d.jsx("path",{d:"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"})]});case"settings":return d.jsxs(d.Fragment,{children:[d.jsx("path",{d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),d.jsx("path",{d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})]});default:return null}},Od=b.forwardRef(({id:t,label:e,value:n,onChange:r,type:s="text",placeholder:l,required:c=!1,multiline:m=!1,rows:p=1,error:g,buttons:A=[],showPassword:f,onShowPasswordChange:v},w)=>{const{t:S}=it(),[T,k]=qa.useState(!1),L=f!==void 0?f:T,R=_=>{f!==void 0?v==null||v(_):k(_)},x=`mt-1 block text-sm w-full rounded-md ${g?"border-red-500":"border-gray-300 dark:border-gray-600"} text-gray-900 sm:text-sm rounded-lg shadow-sm border focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white dark:placeholder-gray-400 py-2 px-3`,O=s==="password"?[...A,{icon:L?"visibility-off":"visibility",onClick:()=>R(!L),title:S(L?"common.hidePassword":"common.showPassword")}]:A;return d.jsxs("div",{children:[d.jsxs("label",{htmlFor:t,className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:[e,c&&d.jsx("span",{className:"text-red-500 ml-1",children:"*"})]}),d.jsxs("div",{className:"relative",children:[m?d.jsx("textarea",{id:t,value:n,onChange:_=>r(_.target.value),rows:p,placeholder:l,className:x}):d.jsx("input",{ref:w,type:s==="password"&&!L?"password":"text",id:t,value:n,onChange:_=>r(_.target.value),placeholder:l,className:x}),O.length>0&&d.jsx("div",{className:"absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-2",children:O.map((_,j)=>d.jsx("button",{type:"button",onClick:_.onClick,title:_.title,className:"p-1 text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white transition-colors duration-200",children:d.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:d.jsx(RO,{name:_.icon})})},j))})]}),g&&d.jsx("p",{className:"mt-1 text-sm text-red-500",children:g})]})});Od.displayName="FormInput";const Bk=({id:t,label:e,value:n,onChange:r,placeholder:s,error:l,showValue:c,onShowValueChange:m})=>{const{t:p}=it(),[g,A]=b.useState(!1),f=c!==void 0?c:g,v=b.useCallback(S=>{c!==void 0?m==null||m(S):A(S)},[c,m]),w=b.useCallback(()=>{v(!f)},[f,v]);return d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{htmlFor:t,className:"block text-sm font-medium text-gray-900 dark:text-white",children:e}),d.jsxs("div",{className:"flex",children:[d.jsx("div",{className:"relative flex-grow",children:d.jsx("input",{type:f?"text":"password",id:t,value:n,onChange:S=>r(S.target.value),placeholder:s,className:"outline-0 text-sm shadow-sm border border-gray-300 bg-gray-50 text-gray-900 sm:text-sm rounded-l-lg block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white"})}),d.jsx("div",{className:"flex",children:d.jsx("button",{type:"button",onClick:w,className:"px-3 text-gray-500 dark:text-white bg-gray-200 hover:bg-gray-300 focus:ring-4 focus:outline-none focus:ring-gray-300 font-medium rounded-r-lg text-sm dark:bg-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-800",title:p(f?"common.hidePassword":"common.showPassword"),children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:f?d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"}):d.jsxs(d.Fragment,{children:[d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})]})})})})]}),l&&d.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:l})]})},UO=({field:t,value:e,onValueChange:n,onLabelChange:r,onDelete:s})=>{const{attributes:l,listeners:c,setNodeRef:m,transform:p,transition:g,isDragging:A}=TO({id:t.tempId}),f={transform:kd.Transform.toString(p),transition:g,opacity:A?.5:1,zIndex:A?1e3:"auto"},v=()=>t.fieldType===ea.TextArea?d.jsx("textarea",{id:t.tempId,value:e,onChange:w=>n(w.target.value),rows:4,className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:text-white"}):t.isHidden||t.fieldType===ea.Hidden||t.fieldType===ea.Password?d.jsx(Bk,{id:t.tempId,label:"",value:e,onChange:n}):d.jsx(Od,{id:t.tempId,label:"",value:e,onChange:n,type:"text"});return d.jsxs("div",{ref:m,style:f,className:"relative bg-white dark:bg-gray-800",children:[d.jsx("div",{className:"cursor-grab active:cursor-grabbing",...l,...c,children:d.jsx(DO,{htmlFor:t.tempId,label:t.label,onLabelChange:r,onDelete:s})}),v()]})},MO=({customFields:t,fieldValues:e,onFieldsReorder:n,onFieldValueChange:r,onFieldLabelChange:s,onFieldDelete:l})=>{const c=iP(Gb(Qf,{activationConstraint:{distance:8}}),Gb(Vf,{coordinateGetter:xO})),m=b.useCallback(p=>{const{active:g,over:A}=p;if(A&&g.id!==A.id){const f=t.findIndex(T=>T.tempId===g.id),v=t.findIndex(T=>T.tempId===A.id),S=Kf(t,f,v).map((T,k)=>({...T,displayOrder:k}));n(S)}},[t,n]);return t.length===0?null:d.jsx(sO,{sensors:c,collisionDetection:sP,onDragEnd:m,children:d.jsx(EO,{items:t.map(p=>p.tempId),strategy:AO,children:d.jsx("div",{className:"space-y-3",children:t.map(p=>d.jsx(UO,{field:p,value:e[p.tempId]||"",onValueChange:g=>r(p.tempId,g),onLabelChange:g=>s(p.tempId,g),onDelete:()=>l(p.tempId)},p.tempId))})})})},_O=({id:t,value:e,onChange:n,error:r,required:s=!1,onRemove:l,onGenerateAlias:c,isEmailMode:m,onEmailModeChange:p})=>{const{t:g}=it(),A=qt(),f=m!==void 0,[v,w]=b.useState(!0),S=f?m:v,T=b.useCallback(oe=>{const F=typeof oe=="function"?oe(S):oe;f&&p?p(F):w(F)},[f,p,S]),[k,L]=b.useState(""),[R,x]=b.useState(""),[O,_]=b.useState(!1),[j,G]=b.useState([]),[P,B]=b.useState([]),[z,Q]=b.useState([]),ae=b.useRef(null),Y=b.useRef(!1);b.useEffect(()=>{(async()=>{const F=await A.getVaultMetadata();G((F==null?void 0:F.publicEmailDomains)??[]),B((F==null?void 0:F.privateEmailDomains)??[]),Q((F==null?void 0:F.hiddenPrivateEmailDomains)??[])})()},[A]);const ne=b.useMemo(()=>P.length>0&&!(P.length===1&&(P[0]==="DISABLED.TLD"||P[0]==="")),[P]);b.useEffect(()=>{if(!e){L(""),R||(ne&&P[0]?x(P[0]):j[0]&&x(j[0]));return}if(e.includes("@")){const[oe,F]=e.split("@");if(L(oe),x(F),!Y.current){const J=j.includes(F)||P.includes(F)||z.includes(F);f&&p?p(!J):f||T(!J)}}else L(e),!R&&!e.includes("@")&&(ne&&P[0]?x(P[0]):j[0]&&x(j[0]))},[e,j,P,z,ne,f,p,R,T]),b.useEffect(()=>{if(Y.current||!e||!e.includes("@"))return;const oe=e.split("@")[1];if(!oe)return;const F=j.includes(oe)||P.includes(oe)||z.includes(oe);f&&p?p(!F):f||F&&S&&T(!1)},[j,P,z,e,S,f,p,T]),b.useEffect(()=>{if(!S&&e&&!e.includes("@")&&e.trim()){const oe=ne&&P[0]?P[0]:j[0],F=R||oe;F&&(!R&&oe&&x(oe),n(`${e}@${F}`))}},[e,S,R,ne,P,j,n]);const fe=b.useCallback(oe=>{const F=oe.target.value;if(Y.current=!1,S){n(F);return}if(F.includes("@")){T(!0),n(F);return}if(L(F),!F||F.trim()==="")n("");else{const J=R||(ne&&P[0]?P[0]:j[0]||"");J?(n(`${F}@${J}`),R||x(J)):n(F)}},[S,R,n,T,ne,P,j]),X=b.useCallback(oe=>{x(oe);const F=k.includes("@")?k.split("@")[0]:k;!F||F.trim()===""?n(""):n(`${F}@${oe}`),T(!1),_(!1)},[k,n,T]),te=b.useCallback(()=>{Y.current=!0;const oe=!S;if(T(oe),oe)n(""),L("");else{const F=ne&&P[0]?P[0]:j[0];x(F),L(""),n("")}},[S,ne,j,P,n,T]);b.useEffect(()=>{const oe=F=>{ae.current&&!ae.current.contains(F.target)&&_(!1)};if(O)return document.addEventListener("mousedown",oe),()=>{document.removeEventListener("mousedown",oe)}},[O]);const ce=b.useCallback(()=>{Y.current=!0,T(!1);const oe=ne&&P[0]?P[0]:j[0];oe&&x(oe),L(""),n(""),c&&c()},[c,T,ne,P,j,n]);return d.jsxs("div",{className:"space-y-2",children:[d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("div",{className:"flex items-center",children:d.jsxs("div",{className:"flex items-center",children:[d.jsx("button",{type:"button",onClick:S?void 0:te,className:`text-sm font-medium transition-colors ${S?"text-primary-600 dark:text-primary-400":"text-gray-400 dark:text-gray-500 hover:text-gray-600 dark:hover:text-gray-400 cursor-pointer"}`,children:g("common.email")}),d.jsx("span",{className:"mx-2 text-gray-400 dark:text-gray-500",children:"/"}),d.jsx("button",{type:"button",onClick:S?ce:void 0,className:`text-sm font-medium transition-colors ${S?"text-gray-400 dark:text-gray-500 hover:text-gray-600 dark:hover:text-gray-400 cursor-pointer":"text-primary-600 dark:text-primary-400"}`,children:g("common.alias")}),s&&d.jsx("span",{className:"text-red-500 ml-1",children:"*"})]})}),l&&d.jsx("button",{type:"button",onClick:l,className:"w-5 h-5 flex items-center justify-center text-gray-300 hover:text-red-400 dark:text-gray-500 dark:hover:text-red-400 transition-colors",title:g("common.delete"),children:d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),d.jsxs("div",{className:"relative w-full",children:[d.jsxs("div",{className:"flex w-full",children:[d.jsx("input",{type:"text",id:t,className:`flex-1 min-w-0 px-3 py-2 border text-sm ${r?"border-red-500":"border-gray-300 dark:border-gray-600"} ${S?"rounded-md":"rounded-l-md"} focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:text-white`,value:S?e:k,onChange:fe}),!S&&d.jsxs("button",{type:"button",onClick:()=>_(!O),className:`inline-flex items-center px-2 py-2 border border-l-0 border-gray-300 dark:border-gray-600 ${c?"":"rounded-r-md"} bg-gray-50 dark:bg-gray-600 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-500 cursor-pointer text-sm truncate max-w-[120px]`,children:[d.jsx("span",{className:"text-gray-500 dark:text-gray-400",children:"@"}),d.jsx("span",{className:"truncate ml-0.5",children:R})]}),!S&&c&&d.jsx("button",{type:"button",onClick:c,className:"px-3 text-gray-500 dark:text-white bg-gray-200 hover:bg-gray-300 focus:ring-4 focus:outline-none focus:ring-gray-300 font-medium rounded-r-lg text-sm border-l border-gray-300 dark:border-gray-700 dark:bg-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-800",title:g("common.generate"),children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})})]}),O&&!S&&d.jsx("div",{ref:ae,className:"absolute z-50 mt-2 w-full bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 max-h-96 overflow-y-auto",children:d.jsxs("div",{className:"p-4",children:[ne&&d.jsxs("div",{className:"mb-4",children:[d.jsxs("h4",{className:"text-sm font-semibold text-gray-700 dark:text-gray-300 mb-2",children:[g("items.privateEmailTitle")," ",d.jsxs("span",{className:"text-gray-500 dark:text-gray-400",children:["(",g("items.privateEmailAliasVaultServer"),")"]})]}),d.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-3",children:g("items.privateEmailDescription")}),d.jsx("div",{className:"flex flex-wrap gap-2",children:P.filter(oe=>!z.includes(oe)).map(oe=>d.jsx("button",{type:"button",onClick:()=>X(oe),className:`px-3 py-1.5 text-sm rounded-md transition-colors ${R===oe?"bg-primary-600 text-white hover:bg-primary-700":"bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600 border border-gray-300 dark:border-gray-600"}`,children:oe},oe))})]}),d.jsxs("div",{className:ne?"border-t border-gray-200 dark:border-gray-600 pt-4":"",children:[d.jsx("h4",{className:"text-sm font-semibold text-gray-700 dark:text-gray-300 mb-2",children:g("items.publicEmailTitle")}),d.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400 mb-3",children:g("items.publicEmailDescription")}),d.jsx("div",{className:"flex flex-wrap gap-2",children:j.map(oe=>d.jsx("button",{type:"button",onClick:()=>X(oe),className:`px-3 py-1.5 text-sm rounded-md transition-colors ${R===oe?"bg-primary-600 text-white hover:bg-primary-700":"bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600 border border-gray-300 dark:border-gray-600"}`,children:oe},oe))})]})]})})]}),r&&d.jsx("p",{className:"text-sm text-red-500 mt-1",children:r})]})},cu=({title:t,children:e,actions:n})=>d.jsxs("div",{className:"bg-white dark:bg-gray-800 p-4 rounded-lg border border-gray-200 dark:border-gray-700",children:[t&&d.jsxs("h2",{className:"text-lg font-semibold mb-4 text-gray-900 dark:text-white flex items-center justify-between",children:[typeof t=="string"?d.jsx("span",{children:t}):t,n&&d.jsx("div",{className:"flex items-center gap-2",children:n})]}),d.jsx("div",{className:"space-y-4",children:e})]});var FO=class{constructor(t){this.lowercaseChars="abcdefghijklmnopqrstuvwxyz",this.uppercaseChars="ABCDEFGHIJKLMNOPQRSTUVWXYZ",this.numberChars="0123456789",this.specialChars="!@#$%^&*()_+-=[]{}|;:,.<>?",this.ambiguousChars="Il1O0oZzSsBbGg2568|[]{}()<>;:,.`'\"_-",this.length=18,this.useLowercase=!0,this.useUppercase=!0,this.useNumbers=!0,this.useSpecial=!0,this.useNonAmbiguous=!1,t&&this.applySettings(t)}applySettings(t){return this.length=t.Length,this.useLowercase=t.UseLowercase,this.useUppercase=t.UseUppercase,this.useNumbers=t.UseNumbers,this.useSpecial=t.UseSpecialChars,this.useNonAmbiguous=t.UseNonAmbiguousChars,this}setLength(t){return this.length=t,this}useLowercaseLetters(t){return this.useLowercase=t,this}useUppercaseLetters(t){return this.useUppercase=t,this}useNumericCharacters(t){return this.useNumbers=t,this}useSpecialCharacters(t){return this.useSpecial=t,this}useNonAmbiguousCharacters(t){return this.useNonAmbiguous=t,this}getUnbiasedRandomIndex(t){const e=Math.floor(4294967296/t)*t;for(;;){const n=new Uint32Array(1);crypto.getRandomValues(n);const r=n[0];if(r<e)return r%t}}generateRandomPassword(){const t=this.buildCharacterSet();let e=this.generateInitialPassword(t);return e=this.ensureRequirements(e),e}buildCharacterSet(){let t="";return this.useLowercase&&(t+=this.lowercaseChars),this.useUppercase&&(t+=this.uppercaseChars),this.useNumbers&&(t+=this.numberChars),this.useSpecial&&(t+=this.specialChars),t.length===0&&(t=this.lowercaseChars),this.useNonAmbiguous&&(t=this.removeAmbiguousCharacters(t)),t}removeAmbiguousCharacters(t){for(const e of this.ambiguousChars)t=t.replace(e,"");return t}generateInitialPassword(t){let e="";for(let n=0;n<this.length;n++)e+=t[this.getUnbiasedRandomIndex(t.length)];return e}ensureRequirements(t){return this.useLowercase&&!/[a-z]/.exec(t)&&(t=this.addCharacterFromSet(t,this.getSafeCharacterSet(this.lowercaseChars))),this.useUppercase&&!/[A-Z]/.exec(t)&&(t=this.addCharacterFromSet(t,this.getSafeCharacterSet(this.uppercaseChars))),this.useNumbers&&!/\d/.exec(t)&&(t=this.addCharacterFromSet(t,this.getSafeCharacterSet(this.numberChars))),this.useSpecial&&!/[!@#$%^&*()_+\-=[\]{}|;:,.<>?]/.exec(t)&&(t=this.addCharacterFromSet(t,this.getSafeCharacterSet(this.specialChars))),t}getSafeCharacterSet(t){return this.useNonAmbiguous?this.removeAmbiguousCharacters(t):t}addCharacterFromSet(t,e){const n=this.getUnbiasedRandomIndex(this.length),r=e[this.getUnbiasedRandomIndex(e.length)];return t.substring(0,n)+r+t.substring(n+1)}},Gf=t=>new FO(t);const BO=({isOpen:t,onClose:e,onSave:n,onSettingsChange:r,initialSettings:s})=>{const{t:l}=it(),[c,m]=b.useState(s),[p,g]=b.useState(""),A=b.useCallback(S=>{try{const k=Gf(S).generateRandomPassword();g(k)}catch(T){console.error("Error generating preview password:",T),g("")}},[]);b.useEffect(()=>{t&&(m({...s}),A({...s}))},[t,s,A]);const f=b.useCallback((S,T)=>{const k={...c,[S]:T};m(k),A(k),r==null||r(k)},[c,A,r]),v=b.useCallback(()=>{A(c)},[c,A]),w=b.useCallback(()=>{n(p),e()},[p,n,e]);return d.jsx(ai,{isOpen:t,onClose:e,title:l("items.changePasswordComplexity"),maxWidth:"max-w-lg",footer:d.jsx("div",{className:"flex justify-end",children:d.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 rounded-md bg-gray-600 px-3 py-2 text-sm font-semibold text-white shadow-sm hover:bg-gray-500",onClick:w,children:[d.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M15 13l-3 3m0 0l-3-3m3 3V8m0 13a9 9 0 110-18 9 9 0 010 18z"})}),l("common.use")]})}),children:d.jsxs("div",{className:"space-y-4",children:[d.jsx("div",{children:d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("input",{type:"text",value:p,readOnly:!0,className:"flex-1 bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:text-white font-mono"}),d.jsx("button",{type:"button",onClick:v,className:"px-3 py-2 text-sm text-gray-500 dark:text-white bg-gray-200 hover:bg-gray-300 focus:ring-4 focus:outline-none focus:ring-gray-300 font-medium rounded-lg dark:bg-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-800",title:l("common.generate"),children:d.jsx("svg",{className:"w-4 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})})]})}),d.jsxs("div",{className:"space-y-3",children:[d.jsxs("div",{className:"grid grid-cols-2 gap-2",children:[d.jsx("button",{type:"button",onClick:()=>f("UseLowercase",!c.UseLowercase),className:`flex items-center justify-center px-3 py-2 rounded-md text-sm font-medium transition-colors ${c.UseLowercase?"bg-primary-600 text-white hover:bg-primary-700":"bg-gray-200 text-gray-700 hover:bg-gray-300 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"}`,title:l("items.includeLowercase"),children:d.jsx("span",{className:"font-mono text-base",children:"a-z"})}),d.jsx("button",{type:"button",onClick:()=>f("UseUppercase",!c.UseUppercase),className:`flex items-center justify-center px-3 py-2 rounded-md text-sm font-medium transition-colors ${c.UseUppercase?"bg-primary-600 text-white hover:bg-primary-700":"bg-gray-200 text-gray-700 hover:bg-gray-300 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"}`,title:l("items.includeUppercase"),children:d.jsx("span",{className:"font-mono text-base",children:"A-Z"})}),d.jsx("button",{type:"button",onClick:()=>f("UseNumbers",!c.UseNumbers),className:`flex items-center justify-center px-3 py-2 rounded-md text-sm font-medium transition-colors ${c.UseNumbers?"bg-primary-600 text-white hover:bg-primary-700":"bg-gray-200 text-gray-700 hover:bg-gray-300 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"}`,title:l("items.includeNumbers"),children:d.jsx("span",{className:"font-mono text-base",children:"0-9"})}),d.jsx("button",{type:"button",onClick:()=>f("UseSpecialChars",!c.UseSpecialChars),className:`flex items-center justify-center px-3 py-2 rounded-md text-sm font-medium transition-colors ${c.UseSpecialChars?"bg-primary-600 text-white hover:bg-primary-700":"bg-gray-200 text-gray-700 hover:bg-gray-300 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"}`,title:l("items.includeSpecialChars"),children:d.jsx("span",{className:"font-mono text-base",children:"!@#"})})]}),d.jsxs("div",{className:"flex items-center",children:[d.jsx("input",{id:"use-non-ambiguous",type:"checkbox",checked:c.UseNonAmbiguousChars,onChange:S=>f("UseNonAmbiguousChars",S.target.checked),className:"h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 rounded dark:bg-gray-700 dark:border-gray-600"}),d.jsx("label",{htmlFor:"use-non-ambiguous",className:"ml-2 text-sm text-gray-700 dark:text-gray-300",children:l("items.avoidAmbiguousChars")})]})]})]})})},bd=8,af=256,PO=0,Wf=100,Pk=2;function OO(t){const e=Math.max(0,Math.min(1,t/Wf)),n=Math.pow(e,Pk),r=bd+n*(af-bd);return Math.round(r)}function jO(t){const n=(Math.max(bd,Math.min(af,t))-bd)/(af-bd);return Math.pow(n,1/Pk)*Wf}const HO=({id:t,label:e,value:n,onChange:r,placeholder:s,error:l,showPassword:c,onShowPasswordChange:m,initialSettings:p,onSettingsChange:g})=>{const{t:A}=it(),f=qt(),[v,w]=b.useState(!1),[S,T]=b.useState(!1),[k,L]=b.useState(null),[R,x]=b.useState(!1),O=c!==void 0?c:v,_=b.useCallback(Y=>{c!==void 0?m==null||m(Y):w(Y)},[c,m]);b.useEffect(()=>{(async()=>{try{if(f.sqliteClient){if(p!==void 0)L(p);else{const ne=f.sqliteClient.settings.getPasswordSettings();L(ne)}x(!0)}}catch(ne){console.error("Error loading password settings:",ne)}})()},[f.sqliteClient,p]);const j=b.useCallback(Y=>{try{const fe=Gf(Y).generateRandomPassword();r(fe),_(!0)}catch(ne){console.error("Error generating password:",ne)}},[r,_]),G=b.useCallback(Y=>{if(!k)return;const ne=parseFloat(Y.target.value),fe=OO(ne),X={...k,Length:fe};L(X),g==null||g(X),j(X)},[k,j,g]),P=b.useCallback(()=>{k&&j(k)},[j,k]),B=b.useCallback(Y=>{r(Y),_(!0)},[r,_]),z=b.useCallback(Y=>{L(Y),g==null||g(Y)},[g]),Q=b.useCallback(()=>{_(!O)},[O,_]),ae=b.useCallback(()=>{T(!0)},[]);return!k||!R?d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{htmlFor:t,className:"block text-sm font-medium text-gray-900 dark:text-white",children:e}),d.jsx("div",{className:"animate-pulse bg-gray-200 dark:bg-gray-700 h-10 rounded-lg"})]}):d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{htmlFor:t,className:"block text-sm font-medium text-gray-900 dark:text-white",children:e}),d.jsxs("div",{className:"flex",children:[d.jsx("div",{className:"relative flex-grow",children:d.jsx("input",{type:O?"text":"password",id:t,value:n,onChange:Y=>r(Y.target.value),placeholder:s,className:"outline-0 text-sm shadow-sm border border-gray-300 bg-gray-50 text-gray-900 sm:text-sm rounded-l-lg block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white"})}),d.jsxs("div",{className:"flex",children:[d.jsx("button",{type:"button",onClick:Q,className:"px-3 text-gray-500 dark:text-white bg-gray-200 hover:bg-gray-300 focus:ring-4 focus:outline-none focus:ring-gray-300 font-medium text-sm dark:bg-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-800",title:A(O?"common.hidePassword":"common.showPassword"),children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:O?d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.88 9.88l-3.29-3.29m7.532 7.532l3.29 3.29M3 3l3.59 3.59m0 0A9.953 9.953 0 0112 5c4.478 0 8.268 2.943 9.543 7a10.025 10.025 0 01-4.132 5.411m0 0L21 21"}):d.jsxs(d.Fragment,{children:[d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}),d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"})]})})}),d.jsx("button",{type:"button",onClick:P,className:"px-3 text-gray-500 dark:text-white bg-gray-200 hover:bg-gray-300 focus:ring-4 focus:outline-none focus:ring-gray-300 font-medium rounded-r-lg text-sm border-l border-gray-300 dark:border-gray-700 dark:bg-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-800",title:A("common.generate"),children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})})]})]}),d.jsxs("div",{className:"pt-2",children:[d.jsxs("div",{className:"flex items-center justify-between mb-2",children:[d.jsx("label",{htmlFor:`${t}-length`,className:"text-sm font-medium text-gray-700 dark:text-gray-300",children:A("items.passwordLength")}),d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-400 font-mono",children:k.Length}),d.jsx("button",{type:"button",onClick:ae,className:"text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300",title:A("items.changePasswordComplexity"),children:d.jsxs("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:[d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})]})})]})]}),d.jsx("input",{type:"range",id:`${t}-length`,min:PO,max:Wf,step:"0.1",value:jO(k.Length),onChange:G,className:"w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer dark:bg-gray-700"})]}),l&&d.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:l}),d.jsx(BO,{isOpen:S,onClose:()=>T(!1),onSave:B,onSettingsChange:z,initialSettings:k})]})},VO=({id:t,label:e,value:n,onChange:r,placeholder:s,error:l,onRegenerate:c})=>{const{t:m}=it(),p=b.useCallback(A=>{r(A.target.value)},[r]),g=b.useCallback(()=>{c()},[c]);return d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{htmlFor:t,className:"block text-sm font-medium text-gray-900 dark:text-white",children:e}),d.jsxs("div",{className:"flex",children:[d.jsx("div",{className:"relative flex-grow",children:d.jsx("input",{type:"text",id:t,value:n,onChange:p,placeholder:s,className:"outline-0 text-sm shadow-sm bg-gray-50 border border-gray-300 text-gray-900 sm:text-sm rounded-l-lg block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white"})}),d.jsx("div",{className:"flex",children:d.jsx("button",{type:"button",onClick:g,className:"px-3 text-gray-500 dark:text-white bg-gray-200 hover:bg-gray-300 focus:ring-4 focus:outline-none focus:ring-gray-300 font-medium rounded-r-lg text-sm dark:bg-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-800",title:m("common.generate"),children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})})})]}),l&&d.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:l})]})},zO=({attachments:t,onAttachmentsChange:e,itemId:n})=>{const{t:r}=it(),[s,l]=b.useState(""),c=async g=>{const A=g.target.files;if(!(!A||A.length===0)){l(r("attachmentUploader.uploading"));try{const f=[...t];for(const v of Array.from(A)){const w=await v.arrayBuffer(),S=new Uint8Array(w),T={Id:crypto.randomUUID().toUpperCase(),Filename:v.name,Blob:S,ItemId:"",CreatedAt:new Date().toISOString(),UpdatedAt:new Date().toISOString(),IsDeleted:!1};f.push(T)}e(f),l(r("attachmentUploader.uploadSuccess")),setTimeout(()=>l(""),3e3)}catch(f){console.error("Error uploading files:",f),l(r("common.errors.unknownErrorTryAgain")),setTimeout(()=>l(""),3e3)}g.target.value=""}},m=g=>{try{const A=[...t],f=A.findIndex(v=>v.Id===g.Id);f!==-1&&A.splice(f,1),e(A),l(r("attachmentUploader.deleteSuccess")),setTimeout(()=>l(""),3e3)}catch(A){console.error("Error deleting attachment:",A),l(r("common.errors.unknownErrorTryAgain")),setTimeout(()=>l(""),3e3)}},p=t.filter(g=>!g.IsDeleted);return d.jsxs("div",{className:"bg-white dark:bg-gray-800 p-4 rounded-lg border border-gray-200 dark:border-gray-700",children:[d.jsx("h2",{className:"text-lg font-semibold mb-4 text-gray-900 dark:text-white",children:r("common.attachments")}),d.jsxs("div",{className:"space-y-4",children:[d.jsx("div",{children:d.jsx("input",{type:"file",multiple:!0,onChange:c,className:"block w-full text-sm text-gray-900 border border-gray-300 rounded-lg cursor-pointer bg-gray-50 dark:text-gray-400 focus:outline-none dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400"})}),s&&d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:s}),p.length>0&&d.jsx("div",{children:d.jsx("div",{className:"space-y-2",children:p.map(g=>d.jsxs("div",{className:"flex items-center justify-between p-2 bg-gray-50 dark:bg-gray-700 rounded border border-gray-200 dark:border-gray-600",children:[d.jsxs("div",{className:"flex flex-col",children:[d.jsx("span",{className:"text-sm font-medium text-gray-900 dark:text-white",children:g.Filename}),d.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:new Date(g.CreatedAt).toLocaleDateString()})]}),d.jsx("button",{type:"button",onClick:()=>m(g),className:"text-red-500 hover:text-red-700 focus:outline-none","aria-label":`Delete ${g.Filename}`,children:d.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})})})]},g.Id))})})]})]})},nf=({className:t="w-5 h-5"})=>d.jsx("svg",{className:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:d.jsx("path",{d:"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"})}),QO=({itemId:t})=>{const{t:e}=it(),n=qt(),[r,s]=b.useState([]),[l,c]=b.useState(!0);return b.useEffect(()=>{if(!(n!=null&&n.sqliteClient)||!t){c(!1);return}try{const m=n.sqliteClient.passkeys.getByItemId(t);s(m)}catch(m){console.error("Error loading passkeys:",m)}finally{c(!1)}},[n==null?void 0:n.sqliteClient,t]),l?d.jsx("div",{className:"flex justify-center p-2",children:d.jsx(Ai,{})}):r.length===0?null:d.jsxs("div",{className:"space-y-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:e("passkeys.passkey")}),r.map(m=>d.jsx("div",{className:"p-3 rounded bg-gray-50 dark:bg-gray-900 border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"flex items-start gap-2",children:[d.jsx(nf,{className:"w-5 h-5 text-gray-600 dark:text-gray-400 mt-0.5 flex-shrink-0"}),d.jsxs("div",{className:"flex-1",children:[d.jsx("div",{className:"mb-1",children:d.jsx("span",{className:"text-sm font-medium text-gray-900 dark:text-white",children:m.DisplayName||e("passkeys.passkey")})}),d.jsx("div",{className:"space-y-1 mb-2",children:m.RpId&&d.jsxs("div",{children:[d.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:[e("passkeys.site"),":"," "]}),d.jsx("span",{className:"text-sm text-gray-900 dark:text-white",children:m.RpId})]})}),d.jsx("p",{className:"text-xs text-gray-600 dark:text-gray-400",children:e("passkeys.helpText")})]})]})},m.Id))]})},KO=({itemId:t,passkeyIdsMarkedForDeletion:e,onPasskeyMarkedForDeletion:n})=>{const{t:r}=it(),s=qt(),[l,c]=b.useState([]),[m,p]=b.useState(!0);b.useEffect(()=>{if(!(s!=null&&s.sqliteClient)||!t){p(!1);return}try{const f=s.sqliteClient.passkeys.getByItemId(t);c(f)}catch(f){console.error("Error loading passkeys:",f)}finally{p(!1)}},[s==null?void 0:s.sqliteClient,t]);const g=f=>{e.includes(f)||n([...e,f])},A=f=>{n(e.filter(v=>v!==f))};return m?d.jsx("div",{className:"flex justify-center p-2",children:d.jsx(Ai,{})}):l.length===0?null:d.jsxs("div",{className:"bg-white dark:bg-gray-800 p-4 rounded-lg border border-gray-200 dark:border-gray-700",children:[d.jsx("h2",{className:"text-lg font-semibold mb-4 text-gray-900 dark:text-white",children:r("passkeys.passkey")}),d.jsx("div",{className:"space-y-3",children:l.map(f=>e.includes(f.Id)?d.jsx("div",{className:"p-3 rounded bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800",children:d.jsxs("div",{className:"flex items-start gap-2",children:[d.jsx(nf,{className:"w-5 h-5 text-red-600 dark:text-red-400 mt-0.5 flex-shrink-0"}),d.jsxs("div",{className:"flex-1",children:[d.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[d.jsx("span",{className:"text-sm font-medium text-red-900 dark:text-red-100",children:r("passkeys.passkeyMarkedForDeletion")}),d.jsx("button",{type:"button",onClick:()=>A(f.Id),className:"text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300",title:r("common.undo"),children:d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("path",{d:"M3 7v6h6"}),d.jsx("path",{d:"M21 17a9 9 0 00-9-9 9 9 0 00-6 2.3L3 13"})]})})]}),d.jsx("p",{className:"text-xs text-red-800 dark:text-red-200",children:r("passkeys.passkeyWillBeDeleted")})]})]})},f.Id):d.jsx("div",{className:"p-3 rounded bg-gray-50 dark:bg-gray-900 border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"flex items-start gap-2",children:[d.jsx(nf,{className:"w-5 h-5 text-gray-600 dark:text-gray-400 mt-0.5 flex-shrink-0"}),d.jsxs("div",{className:"flex-1",children:[d.jsxs("div",{className:"mb-1 flex items-center justify-between",children:[d.jsx("span",{className:"text-sm font-medium text-gray-900 dark:text-white",children:f.DisplayName||r("passkeys.passkey")}),d.jsx("button",{type:"button",onClick:()=>g(f.Id),className:"text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300",title:r("common.delete"),children:d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("polyline",{points:"3 6 5 6 21 6"}),d.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}),d.jsx("line",{x1:"10",y1:"11",x2:"10",y2:"17"}),d.jsx("line",{x1:"14",y1:"11",x2:"14",y2:"17"})]})})]}),d.jsx("div",{className:"space-y-1 mb-2",children:f.RpId&&d.jsxs("div",{children:[d.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:[r("passkeys.site"),":"," "]}),d.jsx("span",{className:"text-sm text-gray-900 dark:text-white",children:f.RpId})]})}),d.jsx("p",{className:"text-xs text-gray-600 dark:text-gray-400",children:r("passkeys.helpText")})]})]})},f.Id))})]})};//! otpauth 9.4.0 | (c) Héctor Molinero Fernández | MIT | https://github.com/hectorm/otpauth
//! noble-hashes 1.7.1 | (c) Paul Miller | MIT | https://github.com/paulmillr/noble-hashes
const GO=t=>{const e=new ArrayBuffer(8),n=new Uint8Array(e);let r=t;for(let s=7;s>=0&&r!==0;s--)n[s]=r&255,r-=n[s],r/=256;return n};function ju(t){if(!Number.isSafeInteger(t)||t<0)throw new Error("positive integer expected, got "+t)}function WO(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"}function nm(t,...e){if(!WO(t))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(t.length))throw new Error("Uint8Array expected of length "+e+", got length="+t.length)}function qO(t){if(typeof t!="function"||typeof t.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");ju(t.outputLen),ju(t.blockLen)}function Oo(t,e=!0){if(t.destroyed)throw new Error("Hash instance has been destroyed");if(e&&t.finished)throw new Error("Hash#digest() has already been called")}function Ok(t,e){nm(t);const n=e.outputLen;if(t.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function YO(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function wh(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}function Pi(t,e){return t<<32-e|t>>>e}function Ih(t,e){return t<<e|t>>>32-e>>>0}const rv=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function JO(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}function sv(t){for(let e=0;e<t.length;e++)t[e]=JO(t[e])}function XO(t){if(typeof t!="string")throw new Error("utf8ToBytes expected string, got "+typeof t);return new Uint8Array(new TextEncoder().encode(t))}function im(t){return typeof t=="string"&&(t=XO(t)),nm(t),t}class qf{clone(){return this._cloneInto()}}function qo(t){const e=r=>t().update(im(r)).digest(),n=t();return e.outputLen=n.outputLen,e.blockLen=n.blockLen,e.create=()=>t(),e}class jk extends qf{update(e){return Oo(this),this.iHash.update(e),this}digestInto(e){Oo(this),nm(e,this.outputLen),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){const e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||(e=Object.create(Object.getPrototypeOf(this),{}));const{oHash:n,iHash:r,finished:s,destroyed:l,blockLen:c,outputLen:m}=this;return e=e,e.finished=s,e.destroyed=l,e.blockLen=c,e.outputLen=m,e.oHash=n._cloneInto(e.oHash),e.iHash=r._cloneInto(e.iHash),e}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}constructor(e,n){super(),this.finished=!1,this.destroyed=!1,qO(e);const r=im(n);if(this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const s=this.blockLen,l=new Uint8Array(s);l.set(r.length>s?e.create().update(r).digest():r);for(let c=0;c<l.length;c++)l[c]^=54;this.iHash.update(l),this.oHash=e.create();for(let c=0;c<l.length;c++)l[c]^=106;this.oHash.update(l),l.fill(0)}}const rf=(t,e,n)=>new jk(t,e).update(n).digest();rf.create=(t,e)=>new jk(t,e);function $O(t,e,n,r){if(typeof t.setBigUint64=="function")return t.setBigUint64(e,n,r);const s=BigInt(32),l=BigInt(4294967295),c=Number(n>>s&l),m=Number(n&l),p=r?4:0,g=r?0:4;t.setUint32(e+p,c,r),t.setUint32(e+g,m,r)}function Hk(t,e,n){return t&e^~t&n}function Vk(t,e,n){return t&e^t&n^e&n}class Yf extends qf{update(e){Oo(this);const{view:n,buffer:r,blockLen:s}=this;e=im(e);const l=e.length;for(let c=0;c<l;){const m=Math.min(s-this.pos,l-c);if(m===s){const p=wh(e);for(;s<=l-c;c+=s)this.process(p,c);continue}r.set(e.subarray(c,c+m),this.pos),this.pos+=m,c+=m,this.pos===s&&(this.process(n,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Oo(this),Ok(e,this),this.finished=!0;const{buffer:n,view:r,blockLen:s,isLE:l}=this;let{pos:c}=this;n[c++]=128,this.buffer.subarray(c).fill(0),this.padOffset>s-c&&(this.process(r,0),c=0);for(let f=c;f<s;f++)n[f]=0;$O(r,s-8,BigInt(this.length*8),l),this.process(r,0);const m=wh(e),p=this.outputLen;if(p%4)throw new Error("_sha2: outputLen should be aligned to 32bit");const g=p/4,A=this.get();if(g>A.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<g;f++)m.setUint32(4*f,A[f],l)}digest(){const{buffer:e,outputLen:n}=this;this.digestInto(e);const r=e.slice(0,n);return this.destroy(),r}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:n,buffer:r,length:s,finished:l,destroyed:c,pos:m}=this;return e.length=s,e.pos=m,e.finished=l,e.destroyed=c,s%n&&e.buffer.set(r),e}constructor(e,n,r,s){super(),this.blockLen=e,this.outputLen=n,this.padOffset=r,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=wh(this.buffer)}}const td=new Uint32Array([1732584193,4023233417,2562383102,271733878,3285377520]),Zr=new Uint32Array(80);class ZO extends Yf{get(){const{A:e,B:n,C:r,D:s,E:l}=this;return[e,n,r,s,l]}set(e,n,r,s,l){this.A=e|0,this.B=n|0,this.C=r|0,this.D=s|0,this.E=l|0}process(e,n){for(let p=0;p<16;p++,n+=4)Zr[p]=e.getUint32(n,!1);for(let p=16;p<80;p++)Zr[p]=Ih(Zr[p-3]^Zr[p-8]^Zr[p-14]^Zr[p-16],1);let{A:r,B:s,C:l,D:c,E:m}=this;for(let p=0;p<80;p++){let g,A;p<20?(g=Hk(s,l,c),A=1518500249):p<40?(g=s^l^c,A=1859775393):p<60?(g=Vk(s,l,c),A=2400959708):(g=s^l^c,A=3395469782);const f=Ih(r,5)+g+m+A+Zr[p]|0;m=c,c=l,l=Ih(s,30),s=r,r=f}r=r+this.A|0,s=s+this.B|0,l=l+this.C|0,c=c+this.D|0,m=m+this.E|0,this.set(r,s,l,c,m)}roundClean(){Zr.fill(0)}destroy(){this.set(0,0,0,0,0),this.buffer.fill(0)}constructor(){super(64,20,8,!1),this.A=td[0]|0,this.B=td[1]|0,this.C=td[2]|0,this.D=td[3]|0,this.E=td[4]|0}}const ej=qo(()=>new ZO),tj=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),es=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ts=new Uint32Array(64);class zk extends Yf{get(){const{A:e,B:n,C:r,D:s,E:l,F:c,G:m,H:p}=this;return[e,n,r,s,l,c,m,p]}set(e,n,r,s,l,c,m,p){this.A=e|0,this.B=n|0,this.C=r|0,this.D=s|0,this.E=l|0,this.F=c|0,this.G=m|0,this.H=p|0}process(e,n){for(let f=0;f<16;f++,n+=4)ts[f]=e.getUint32(n,!1);for(let f=16;f<64;f++){const v=ts[f-15],w=ts[f-2],S=Pi(v,7)^Pi(v,18)^v>>>3,T=Pi(w,17)^Pi(w,19)^w>>>10;ts[f]=T+ts[f-7]+S+ts[f-16]|0}let{A:r,B:s,C:l,D:c,E:m,F:p,G:g,H:A}=this;for(let f=0;f<64;f++){const v=Pi(m,6)^Pi(m,11)^Pi(m,25),w=A+v+Hk(m,p,g)+tj[f]+ts[f]|0,T=(Pi(r,2)^Pi(r,13)^Pi(r,22))+Vk(r,s,l)|0;A=g,g=p,p=m,m=c+w|0,c=l,l=s,s=r,r=w+T|0}r=r+this.A|0,s=s+this.B|0,l=l+this.C|0,c=c+this.D|0,m=m+this.E|0,p=p+this.F|0,g=g+this.G|0,A=A+this.H|0,this.set(r,s,l,c,m,p,g,A)}roundClean(){ts.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}constructor(){super(64,32,8,!1),this.A=es[0]|0,this.B=es[1]|0,this.C=es[2]|0,this.D=es[3]|0,this.E=es[4]|0,this.F=es[5]|0,this.G=es[6]|0,this.H=es[7]|0}}class aj extends zk{constructor(){super(),this.A=-1056596264,this.B=914150663,this.C=812702999,this.D=-150054599,this.E=-4191439,this.F=1750603025,this.G=1694076839,this.H=-1090891868,this.outputLen=28}}const nj=qo(()=>new zk),ij=qo(()=>new aj),uu=BigInt(2**32-1),sf=BigInt(32);function Qk(t,e=!1){return e?{h:Number(t&uu),l:Number(t>>sf&uu)}:{h:Number(t>>sf&uu)|0,l:Number(t&uu)|0}}function Kk(t,e=!1){let n=new Uint32Array(t.length),r=new Uint32Array(t.length);for(let s=0;s<t.length;s++){const{h:l,l:c}=Qk(t[s],e);[n[s],r[s]]=[l,c]}return[n,r]}const rj=(t,e)=>BigInt(t>>>0)<<sf|BigInt(e>>>0),sj=(t,e,n)=>t>>>n,oj=(t,e,n)=>t<<32-n|e>>>n,lj=(t,e,n)=>t>>>n|e<<32-n,dj=(t,e,n)=>t<<32-n|e>>>n,cj=(t,e,n)=>t<<64-n|e>>>n-32,uj=(t,e,n)=>t>>>n-32|e<<64-n,mj=(t,e)=>e,gj=(t,e)=>t,Gk=(t,e,n)=>t<<n|e>>>32-n,Wk=(t,e,n)=>e<<n|t>>>32-n,qk=(t,e,n)=>e<<n-32|t>>>64-n,Yk=(t,e,n)=>t<<n-32|e>>>64-n;function pj(t,e,n,r){const s=(e>>>0)+(r>>>0);return{h:t+n+(s/2**32|0)|0,l:s|0}}const hj=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),fj=(t,e,n,r)=>e+n+r+(t/2**32|0)|0,Aj=(t,e,n,r)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0),yj=(t,e,n,r,s)=>e+n+r+s+(t/2**32|0)|0,Ej=(t,e,n,r,s)=>(t>>>0)+(e>>>0)+(n>>>0)+(r>>>0)+(s>>>0),bj=(t,e,n,r,s,l)=>e+n+r+s+l+(t/2**32|0)|0,Lt={fromBig:Qk,split:Kk,toBig:rj,shrSH:sj,shrSL:oj,rotrSH:lj,rotrSL:dj,rotrBH:cj,rotrBL:uj,rotr32H:mj,rotr32L:gj,rotlSH:Gk,rotlSL:Wk,rotlBH:qk,rotlBL:Yk,add:pj,add3L:hj,add3H:fj,add4L:Aj,add4H:yj,add5H:bj,add5L:Ej},[vj,wj]=Lt.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(t=>BigInt(t))),as=new Uint32Array(80),ns=new Uint32Array(80);class Jk extends Yf{get(){const{Ah:e,Al:n,Bh:r,Bl:s,Ch:l,Cl:c,Dh:m,Dl:p,Eh:g,El:A,Fh:f,Fl:v,Gh:w,Gl:S,Hh:T,Hl:k}=this;return[e,n,r,s,l,c,m,p,g,A,f,v,w,S,T,k]}set(e,n,r,s,l,c,m,p,g,A,f,v,w,S,T,k){this.Ah=e|0,this.Al=n|0,this.Bh=r|0,this.Bl=s|0,this.Ch=l|0,this.Cl=c|0,this.Dh=m|0,this.Dl=p|0,this.Eh=g|0,this.El=A|0,this.Fh=f|0,this.Fl=v|0,this.Gh=w|0,this.Gl=S|0,this.Hh=T|0,this.Hl=k|0}process(e,n){for(let x=0;x<16;x++,n+=4)as[x]=e.getUint32(n),ns[x]=e.getUint32(n+=4);for(let x=16;x<80;x++){const O=as[x-15]|0,_=ns[x-15]|0,j=Lt.rotrSH(O,_,1)^Lt.rotrSH(O,_,8)^Lt.shrSH(O,_,7),G=Lt.rotrSL(O,_,1)^Lt.rotrSL(O,_,8)^Lt.shrSL(O,_,7),P=as[x-2]|0,B=ns[x-2]|0,z=Lt.rotrSH(P,B,19)^Lt.rotrBH(P,B,61)^Lt.shrSH(P,B,6),Q=Lt.rotrSL(P,B,19)^Lt.rotrBL(P,B,61)^Lt.shrSL(P,B,6),ae=Lt.add4L(G,Q,ns[x-7],ns[x-16]),Y=Lt.add4H(ae,j,z,as[x-7],as[x-16]);as[x]=Y|0,ns[x]=ae|0}let{Ah:r,Al:s,Bh:l,Bl:c,Ch:m,Cl:p,Dh:g,Dl:A,Eh:f,El:v,Fh:w,Fl:S,Gh:T,Gl:k,Hh:L,Hl:R}=this;for(let x=0;x<80;x++){const O=Lt.rotrSH(f,v,14)^Lt.rotrSH(f,v,18)^Lt.rotrBH(f,v,41),_=Lt.rotrSL(f,v,14)^Lt.rotrSL(f,v,18)^Lt.rotrBL(f,v,41),j=f&w^~f&T,G=v&S^~v&k,P=Lt.add5L(R,_,G,wj[x],ns[x]),B=Lt.add5H(P,L,O,j,vj[x],as[x]),z=P|0,Q=Lt.rotrSH(r,s,28)^Lt.rotrBH(r,s,34)^Lt.rotrBH(r,s,39),ae=Lt.rotrSL(r,s,28)^Lt.rotrBL(r,s,34)^Lt.rotrBL(r,s,39),Y=r&l^r&m^l&m,ne=s&c^s&p^c&p;L=T|0,R=k|0,T=w|0,k=S|0,w=f|0,S=v|0,{h:f,l:v}=Lt.add(g|0,A|0,B|0,z|0),g=m|0,A=p|0,m=l|0,p=c|0,l=r|0,c=s|0;const fe=Lt.add3L(z,ae,ne);r=Lt.add3H(fe,B,Q,Y),s=fe|0}({h:r,l:s}=Lt.add(this.Ah|0,this.Al|0,r|0,s|0)),{h:l,l:c}=Lt.add(this.Bh|0,this.Bl|0,l|0,c|0),{h:m,l:p}=Lt.add(this.Ch|0,this.Cl|0,m|0,p|0),{h:g,l:A}=Lt.add(this.Dh|0,this.Dl|0,g|0,A|0),{h:f,l:v}=Lt.add(this.Eh|0,this.El|0,f|0,v|0),{h:w,l:S}=Lt.add(this.Fh|0,this.Fl|0,w|0,S|0),{h:T,l:k}=Lt.add(this.Gh|0,this.Gl|0,T|0,k|0),{h:L,l:R}=Lt.add(this.Hh|0,this.Hl|0,L|0,R|0),this.set(r,s,l,c,m,p,g,A,f,v,w,S,T,k,L,R)}roundClean(){as.fill(0),ns.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}}class Ij extends Jk{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}}const Cj=qo(()=>new Jk),Sj=qo(()=>new Ij),Xk=[],$k=[],Zk=[],Tj=BigInt(0),ad=BigInt(1),Nj=BigInt(2),kj=BigInt(7),xj=BigInt(256),Lj=BigInt(113);for(let t=0,e=ad,n=1,r=0;t<24;t++){[n,r]=[r,(2*n+3*r)%5],Xk.push(2*(5*r+n)),$k.push((t+1)*(t+2)/2%64);let s=Tj;for(let l=0;l<7;l++)e=(e<<ad^(e>>kj)*Lj)%xj,e&Nj&&(s^=ad<<(ad<<BigInt(l))-ad);Zk.push(s)}const[Dj,Rj]=Kk(Zk,!0),ov=(t,e,n)=>n>32?qk(t,e,n):Gk(t,e,n),lv=(t,e,n)=>n>32?Yk(t,e,n):Wk(t,e,n);function Uj(t,e=24){const n=new Uint32Array(10);for(let r=24-e;r<24;r++){for(let c=0;c<10;c++)n[c]=t[c]^t[c+10]^t[c+20]^t[c+30]^t[c+40];for(let c=0;c<10;c+=2){const m=(c+8)%10,p=(c+2)%10,g=n[p],A=n[p+1],f=ov(g,A,1)^n[m],v=lv(g,A,1)^n[m+1];for(let w=0;w<50;w+=10)t[c+w]^=f,t[c+w+1]^=v}let s=t[2],l=t[3];for(let c=0;c<24;c++){const m=$k[c],p=ov(s,l,m),g=lv(s,l,m),A=Xk[c];s=t[A],l=t[A+1],t[A]=p,t[A+1]=g}for(let c=0;c<50;c+=10){for(let m=0;m<10;m++)n[m]=t[c+m];for(let m=0;m<10;m++)t[c+m]^=~n[(m+2)%10]&n[(m+4)%10]}t[0]^=Dj[r],t[1]^=Rj[r]}n.fill(0)}class Jf extends qf{keccak(){rv||sv(this.state32),Uj(this.state32,this.rounds),rv||sv(this.state32),this.posOut=0,this.pos=0}update(e){Oo(this);const{blockLen:n,state:r}=this;e=im(e);const s=e.length;for(let l=0;l<s;){const c=Math.min(n-this.pos,s-l);for(let m=0;m<c;m++)r[this.pos++]^=e[l++];this.pos===n&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:e,suffix:n,pos:r,blockLen:s}=this;e[r]^=n,(n&128)!==0&&r===s-1&&this.keccak(),e[s-1]^=128,this.keccak()}writeInto(e){Oo(this,!1),nm(e),this.finish();const n=this.state,{blockLen:r}=this;for(let s=0,l=e.length;s<l;){this.posOut>=r&&this.keccak();const c=Math.min(r-this.posOut,l-s);e.set(n.subarray(this.posOut,this.posOut+c),s),this.posOut+=c,s+=c}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return ju(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Ok(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:n,suffix:r,outputLen:s,rounds:l,enableXOF:c}=this;return e||(e=new Jf(n,r,s,c,l)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=l,e.suffix=r,e.outputLen=s,e.enableXOF=c,e.destroyed=this.destroyed,e}constructor(e,n,r,s=!1,l=24){if(super(),this.blockLen=e,this.suffix=n,this.outputLen=r,this.enableXOF=s,this.rounds=l,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,ju(r),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=YO(this.state)}}const rm=(t,e,n)=>qo(()=>new Jf(e,t,n)),Mj=rm(6,144,224/8),_j=rm(6,136,256/8),Fj=rm(6,104,384/8),Bj=rm(6,72,512/8),jo=(()=>{if(typeof globalThis=="object")return globalThis;Object.defineProperty(Object.prototype,"__GLOBALTHIS__",{get(){return this},configurable:!0});try{if(typeof __GLOBALTHIS__<"u")return __GLOBALTHIS__}finally{delete Object.prototype.__GLOBALTHIS__}if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global})(),dv={SHA1:ej,SHA224:ij,SHA256:nj,SHA384:Sj,SHA512:Cj,"SHA3-224":Mj,"SHA3-256":_j,"SHA3-384":Fj,"SHA3-512":Bj},Xf=t=>{switch(!0){case/^(?:SHA-?1|SSL3-SHA1)$/i.test(t):return"SHA1";case/^SHA(?:2?-)?224$/i.test(t):return"SHA224";case/^SHA(?:2?-)?256$/i.test(t):return"SHA256";case/^SHA(?:2?-)?384$/i.test(t):return"SHA384";case/^SHA(?:2?-)?512$/i.test(t):return"SHA512";case/^SHA3-224$/i.test(t):return"SHA3-224";case/^SHA3-256$/i.test(t):return"SHA3-256";case/^SHA3-384$/i.test(t):return"SHA3-384";case/^SHA3-512$/i.test(t):return"SHA3-512";default:throw new TypeError(`Unknown hash algorithm: ${t}`)}},Pj=(t,e,n)=>{if(rf){const r=dv[t]??dv[Xf(t)];return rf(r,e,n)}else throw new Error("Missing HMAC function")},of="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",Oj=t=>{t=t.replace(/ /g,"");let e=t.length;for(;t[e-1]==="=";)--e;t=(e<t.length?t.substring(0,e):t).toUpperCase();const n=new ArrayBuffer(t.length*5/8|0),r=new Uint8Array(n);let s=0,l=0,c=0;for(let m=0;m<t.length;m++){const p=of.indexOf(t[m]);if(p===-1)throw new TypeError(`Invalid character found: ${t[m]}`);l=l<<5|p,s+=5,s>=8&&(s-=8,r[c++]=l>>>s)}return r},jj=t=>{let e=0,n=0,r="";for(let s=0;s<t.length;s++)for(n=n<<8|t[s],e+=8;e>=5;)r+=of[n>>>e-5&31],e-=5;return e>0&&(r+=of[n<<5-e&31]),r},Hj=t=>{t=t.replace(/ /g,"");const e=new ArrayBuffer(t.length/2),n=new Uint8Array(e);for(let r=0;r<t.length;r+=2)n[r/2]=parseInt(t.substring(r,r+2),16);return n},Vj=t=>{let e="";for(let n=0;n<t.length;n++){const r=t[n].toString(16);r.length===1&&(e+="0"),e+=r}return e.toUpperCase()},zj=t=>{const e=new ArrayBuffer(t.length),n=new Uint8Array(e);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r)&255;return n},Qj=t=>{let e="";for(let n=0;n<t.length;n++)e+=String.fromCharCode(t[n]);return e},cv=jo.TextEncoder?new jo.TextEncoder:null,uv=jo.TextDecoder?new jo.TextDecoder:null,Kj=t=>{if(!cv)throw new Error("Encoding API not available");return cv.encode(t)},Gj=t=>{if(!uv)throw new Error("Encoding API not available");return uv.decode(t)},Wj=t=>{var e;if((e=jo.crypto)!=null&&e.getRandomValues)return jo.crypto.getRandomValues(new Uint8Array(t));throw new Error("Cryptography API not available")};class br{static fromLatin1(e){return new br({buffer:zj(e).buffer})}static fromUTF8(e){return new br({buffer:Kj(e).buffer})}static fromBase32(e){return new br({buffer:Oj(e).buffer})}static fromHex(e){return new br({buffer:Hj(e).buffer})}get buffer(){return this.bytes.buffer}get latin1(){return Object.defineProperty(this,"latin1",{enumerable:!0,writable:!1,configurable:!1,value:Qj(this.bytes)}),this.latin1}get utf8(){return Object.defineProperty(this,"utf8",{enumerable:!0,writable:!1,configurable:!1,value:Gj(this.bytes)}),this.utf8}get base32(){return Object.defineProperty(this,"base32",{enumerable:!0,writable:!1,configurable:!1,value:jj(this.bytes)}),this.base32}get hex(){return Object.defineProperty(this,"hex",{enumerable:!0,writable:!1,configurable:!1,value:Vj(this.bytes)}),this.hex}constructor({buffer:e,size:n=20}={}){this.bytes=typeof e>"u"?Wj(n):new Uint8Array(e),Object.defineProperty(this,"bytes",{enumerable:!0,writable:!1,configurable:!1,value:this.bytes})}}const qj=(t,e)=>{{if(t.length!==e.length)throw new TypeError("Input strings must have the same length");let n=-1,r=0;for(;++n<t.length;)r|=t.charCodeAt(n)^e.charCodeAt(n);return r===0}};class za{static get defaults(){return{issuer:"",label:"OTPAuth",issuerInLabel:!0,algorithm:"SHA1",digits:6,counter:0,window:1}}static generate({secret:e,algorithm:n=za.defaults.algorithm,digits:r=za.defaults.digits,counter:s=za.defaults.counter}){const l=Pj(n,e.bytes,GO(s)),c=l[l.byteLength-1]&15;return(((l[c]&127)<<24|(l[c+1]&255)<<16|(l[c+2]&255)<<8|l[c+3]&255)%10**r).toString().padStart(r,"0")}generate({counter:e=this.counter++}={}){return za.generate({secret:this.secret,algorithm:this.algorithm,digits:this.digits,counter:e})}static validate({token:e,secret:n,algorithm:r,digits:s=za.defaults.digits,counter:l=za.defaults.counter,window:c=za.defaults.window}){if(e.length!==s)return null;let m=null;const p=g=>{const A=za.generate({secret:n,algorithm:r,digits:s,counter:g});qj(e,A)&&(m=g-l)};p(l);for(let g=1;g<=c&&m===null&&(p(l-g),!(m!==null||(p(l+g),m!==null)));++g);return m}validate({token:e,counter:n=this.counter,window:r}){return za.validate({token:e,secret:this.secret,algorithm:this.algorithm,digits:this.digits,counter:n,window:r})}toString(){const e=encodeURIComponent;return`otpauth://hotp/${this.issuer.length>0?this.issuerInLabel?`${e(this.issuer)}:${e(this.label)}?issuer=${e(this.issuer)}&`:`${e(this.label)}?issuer=${e(this.issuer)}&`:`${e(this.label)}?`}secret=${e(this.secret.base32)}&algorithm=${e(this.algorithm)}&digits=${e(this.digits)}&counter=${e(this.counter)}`}constructor({issuer:e=za.defaults.issuer,label:n=za.defaults.label,issuerInLabel:r=za.defaults.issuerInLabel,secret:s=new br,algorithm:l=za.defaults.algorithm,digits:c=za.defaults.digits,counter:m=za.defaults.counter}={}){this.issuer=e,this.label=n,this.issuerInLabel=r,this.secret=typeof s=="string"?br.fromBase32(s):s,this.algorithm=Xf(l),this.digits=c,this.counter=m}}class xa{static get defaults(){return{issuer:"",label:"OTPAuth",issuerInLabel:!0,algorithm:"SHA1",digits:6,period:30,window:1}}static counter({period:e=xa.defaults.period,timestamp:n=Date.now()}={}){return Math.floor(n/1e3/e)}counter({timestamp:e=Date.now()}={}){return xa.counter({period:this.period,timestamp:e})}static remaining({period:e=xa.defaults.period,timestamp:n=Date.now()}={}){return e*1e3-n%(e*1e3)}remaining({timestamp:e=Date.now()}={}){return xa.remaining({period:this.period,timestamp:e})}static generate({secret:e,algorithm:n,digits:r,period:s=xa.defaults.period,timestamp:l=Date.now()}){return za.generate({secret:e,algorithm:n,digits:r,counter:xa.counter({period:s,timestamp:l})})}generate({timestamp:e=Date.now()}={}){return xa.generate({secret:this.secret,algorithm:this.algorithm,digits:this.digits,period:this.period,timestamp:e})}static validate({token:e,secret:n,algorithm:r,digits:s,period:l=xa.defaults.period,timestamp:c=Date.now(),window:m}){return za.validate({token:e,secret:n,algorithm:r,digits:s,counter:xa.counter({period:l,timestamp:c}),window:m})}validate({token:e,timestamp:n,window:r}){return xa.validate({token:e,secret:this.secret,algorithm:this.algorithm,digits:this.digits,period:this.period,timestamp:n,window:r})}toString(){const e=encodeURIComponent;return`otpauth://totp/${this.issuer.length>0?this.issuerInLabel?`${e(this.issuer)}:${e(this.label)}?issuer=${e(this.issuer)}&`:`${e(this.label)}?issuer=${e(this.issuer)}&`:`${e(this.label)}?`}secret=${e(this.secret.base32)}&algorithm=${e(this.algorithm)}&digits=${e(this.digits)}&period=${e(this.period)}`}constructor({issuer:e=xa.defaults.issuer,label:n=xa.defaults.label,issuerInLabel:r=xa.defaults.issuerInLabel,secret:s=new br,algorithm:l=xa.defaults.algorithm,digits:c=xa.defaults.digits,period:m=xa.defaults.period}={}){this.issuer=e,this.label=n,this.issuerInLabel=r,this.secret=typeof s=="string"?br.fromBase32(s):s,this.algorithm=Xf(l),this.digits=c,this.period=m}}const Yj=/^otpauth:\/\/([ht]otp)\/(.+)\?([A-Z0-9.~_-]+=[^?&]*(?:&[A-Z0-9.~_-]+=[^?&]*)*)$/i,Jj=/^[2-7A-Z]+=*$/i,Xj=/^SHA(?:1|224|256|384|512|3-224|3-256|3-384|3-512)$/i,$j=/^[+-]?\d+$/,mv=/^\+?[1-9]\d*$/;class Zj{static parse(e){let n;try{n=e.match(Yj)}catch{}if(!Array.isArray(n))throw new URIError("Invalid URI format");const r=n[1].toLowerCase(),s=n[2].split(/(?::|%3A) *(.+)/i,2).map(decodeURIComponent),l=n[3].split("&").reduce((p,g)=>{const A=g.split(/=(.*)/,2).map(decodeURIComponent),f=A[0].toLowerCase(),v=A[1],w=p;return w[f]=v,w},{});let c;const m={};if(r==="hotp")if(c=za,typeof l.counter<"u"&&$j.test(l.counter))m.counter=parseInt(l.counter,10);else throw new TypeError("Missing or invalid 'counter' parameter");else if(r==="totp"){if(c=xa,typeof l.period<"u")if(mv.test(l.period))m.period=parseInt(l.period,10);else throw new TypeError("Invalid 'period' parameter")}else throw new TypeError("Unknown OTP type");if(typeof l.issuer<"u"&&(m.issuer=l.issuer),s.length===2?(m.label=s[1],typeof m.issuer>"u"||m.issuer===""?m.issuer=s[0]:s[0]===""&&(m.issuerInLabel=!1)):(m.label=s[0],typeof m.issuer<"u"&&m.issuer!==""&&(m.issuerInLabel=!1)),typeof l.secret<"u"&&Jj.test(l.secret))m.secret=l.secret;else throw new TypeError("Missing or invalid 'secret' parameter");if(typeof l.algorithm<"u")if(Xj.test(l.algorithm))m.algorithm=l.algorithm;else throw new TypeError("Invalid 'algorithm' parameter");if(typeof l.digits<"u")if(mv.test(l.digits))m.digits=parseInt(l.digits,10);else throw new TypeError("Invalid 'digits' parameter");return new c(m)}static stringify(e){if(e instanceof za||e instanceof xa)return e.toString();throw new TypeError("Invalid 'HOTP/TOTP' object")}}const lf=({isOpen:t,onClose:e,onConfirm:n,title:r,message:s,confirmText:l})=>{const{t:c}=it();return d.jsx(ai,{isOpen:t,onClose:e,title:r,maxWidth:"max-w-sm",footer:d.jsxs("div",{className:"flex justify-end gap-2",children:[d.jsx("button",{onClick:e,className:"px-4 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 rounded",children:c("common.cancel")}),d.jsx("button",{onClick:n,className:"px-4 py-2 text-sm bg-red-600 text-white rounded hover:bg-red-700",children:l})]}),children:d.jsx("p",{className:"text-gray-500 dark:text-gray-400",children:s})})},e4=({totpCodes:t,onTotpCodesChange:e,originalTotpCodeIds:n,isAddFormVisible:r,formData:s,onStateChange:l,itemDisplayName:c,itemUsername:m})=>{const{t:p}=it(),[g,A]=b.useState(null),[f,v]=b.useState(!1),[w,S]=b.useState(null),[T,k]=b.useState(""),[L,R]=b.useState(""),[x,O]=b.useState(!1),[_,j]=b.useState(null),[G,P]=b.useState(!1),[B,z]=b.useState(null),Q=(le,ve)=>{let Pe=le.trim(),_e=ve.trim();if(Pe.toLowerCase().startsWith("otpauth://totp/"))try{const Ke=Zj.parse(Pe);Ke instanceof xa&&(Pe=Ke.secret.base32,!_e&&Ke.label&&(_e=Ke.label))}catch{throw new Error(p("totp.errors.invalidSecretKey"))}if(Pe=Pe.replace(/\s/g,""),!/^[A-Z2-7]+=*$/i.test(Pe))throw new Error(p("totp.errors.invalidSecretKey"));return{secretKey:Pe,name:_e||p("totp.defaultName")}},ae=()=>{l({isAddFormVisible:!0,formData:{name:"",secretKey:""}}),A(null)},Y=()=>{l({isAddFormVisible:!1,formData:{name:"",secretKey:""}}),A(null)},ne=le=>{l({isAddFormVisible:r,formData:{...s,...le}})},fe=le=>{if(le==null||le.preventDefault(),A(null),!s.secretKey){A(p("items.validation.required"));return}try{const{secretKey:ve,name:Pe}=Q(s.secretKey,s.name),_e={Id:crypto.randomUUID().toUpperCase(),Name:Pe,SecretKey:ve,ItemId:""},Ke=[...t,_e];e(Ke),Y()}catch(ve){ve instanceof Error?A(ve.message):A(p("common.errors.unknownErrorTryAgain"))}},X=le=>{z(le),P(!0)},te=()=>{if(!B)return;const le=n.includes(B.Id);let ve;le?ve=t.map(Pe=>Pe.Id===B.Id?{...Pe,IsDeleted:!0}:Pe):ve=t.filter(Pe=>Pe.Id!==B.Id),e(ve),P(!1),z(null)},ce=()=>{P(!1),z(null)},oe=le=>{S(le),k(le.Name),R(le.SecretKey),v(!0),O(!1)},F=()=>{v(!1),S(null),k(""),R(""),O(!1),j(null)},J=()=>{if(!w)return;const le=t.map(ve=>ve.Id===w.Id?{...ve,Name:T,SecretKey:L}:ve);e(le),F()},W=()=>{if(!x&&w){const le=c||"AliasVault",ve=m||w.Name,_e=`otpauth://totp/${`${encodeURIComponent(le)}:${encodeURIComponent(ve)}`}?secret=${w.SecretKey}&issuer=${encodeURIComponent(le)}`;sk.toDataURL(_e,{width:256,margin:2,color:{dark:"#000000",light:"#FFFFFF"}}).then(Ke=>j(Ke)).catch(Ke=>console.error("Failed to generate QR code:",Ke))}O(!x)},ie=t.filter(le=>!le.IsDeleted),we=ie.length>0;return d.jsxs("div",{className:"bg-white dark:bg-gray-800 p-4 rounded-lg border border-gray-200 dark:border-gray-700",children:[d.jsxs("div",{className:"flex justify-between items-center mb-4",children:[d.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:p("common.twoFactorAuthentication")}),we&&!r&&d.jsx("button",{type:"button",onClick:ae,className:"w-8 h-8 flex items-center justify-center text-primary-700 hover:text-white border border-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg dark:border-primary-500 dark:text-primary-500 dark:hover:text-white dark:hover:bg-primary-600 dark:focus:ring-primary-800",title:p("totp.addCode"),children:d.jsxs("svg",{className:"w-5 h-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),d.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})})]}),!we&&!r&&d.jsxs("button",{type:"button",onClick:ae,className:"w-full py-1.5 px-4 flex items-center justify-center gap-2 text-primary-700 hover:text-white border border-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg dark:border-primary-500 dark:text-primary-500 dark:hover:text-white dark:hover:bg-primary-600 dark:focus:ring-primary-800",children:[d.jsxs("svg",{className:"w-5 h-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),d.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),d.jsx("span",{children:p("totp.addCode")})]}),r&&d.jsxs("div",{className:"p-4 mb-4 bg-gray-50 border border-gray-200 rounded-lg dark:bg-gray-700 dark:border-gray-600",children:[d.jsxs("div",{className:"flex justify-between items-center mb-4",children:[d.jsx("h4",{className:"text-lg font-medium text-gray-900 dark:text-white",children:p("totp.addCode")}),we&&d.jsx("button",{type:"button",onClick:Y,className:"text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 inline-flex justify-center items-center dark:hover:bg-gray-600 dark:hover:text-white",children:d.jsx("svg",{className:"w-3 h-3",fill:"none",viewBox:"0 0 14 14",children:d.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6"})})})]}),d.jsx("p",{className:"mb-4 text-sm text-gray-500 dark:text-gray-400",children:p("totp.instructions")}),g&&d.jsx("div",{className:"mb-4 p-3 bg-red-50 border border-red-200 rounded-lg dark:bg-red-900/20 dark:border-red-800",children:d.jsx("p",{className:"text-sm text-red-800 dark:text-red-200",children:g})}),d.jsxs("div",{className:"mb-4",children:[d.jsx("label",{htmlFor:"totp-name",className:"block mb-2 text-sm font-medium text-gray-900 dark:text-white",children:p("totp.nameOptional")}),d.jsx("input",{id:"totp-name",type:"text",value:s.name,onChange:le=>ne({name:le.target.value}),className:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 block w-full p-2.5 dark:bg-gray-600 dark:border-gray-500 dark:placeholder-gray-400 dark:text-white"})]}),d.jsxs("div",{className:"mb-4",children:[d.jsx("label",{htmlFor:"totp-secret",className:"block mb-2 text-sm font-medium text-gray-900 dark:text-white",children:p("totp.secretKey")}),d.jsx("input",{id:"totp-secret",type:"text",value:s.secretKey,onChange:le=>ne({secretKey:le.target.value}),onKeyDown:le=>{le.key==="Enter"&&(le.preventDefault(),fe(le))},className:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 block w-full p-2.5 dark:bg-gray-600 dark:border-gray-500 dark:placeholder-gray-400 dark:text-white"})]}),d.jsx("div",{className:"flex justify-end",children:d.jsx("button",{type:"button",onClick:le=>fe(le),className:"text-white bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800",children:p("common.save")})})]}),we&&d.jsx("div",{className:"grid grid-cols-1 gap-4 mt-4",children:ie.map(le=>d.jsx("div",{className:"p-2 ps-3 pe-3 bg-gray-50 border border-gray-200 rounded-lg dark:bg-gray-700 dark:border-gray-600",children:d.jsxs("div",{className:"flex justify-between items-center gap-2",children:[d.jsx("div",{className:"flex items-center flex-1",children:d.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white",children:le.Name})}),d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("div",{className:"flex flex-col items-end",children:d.jsx("div",{className:"text-sm text-gray-500 dark:text-gray-400",children:p("totp.saveToViewCode")})}),d.jsx("button",{type:"button",onClick:()=>oe(le),className:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300",title:p("common.edit"),children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})}),d.jsx("button",{type:"button",onClick:()=>X(le),className:"text-red-600 hover:text-red-800 dark:text-red-500 dark:hover:text-red-400",title:p("common.delete"),children:d.jsx("svg",{className:"w-5 h-5",fill:"currentColor",viewBox:"0 0 20 20",children:d.jsx("path",{fillRule:"evenodd",d:"M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z",clipRule:"evenodd"})})})]})]})},le.Id))}),d.jsx(ai,{isOpen:f,onClose:F,title:p("common.edit"),maxWidth:"max-w-lg",children:d.jsx("div",{className:"space-y-4",children:w&&d.jsxs("div",{className:"space-y-3",children:[d.jsxs("div",{children:[d.jsx("label",{className:"block text-sm font-medium text-gray-900 dark:text-white mb-2",children:p("totp.nameOptional")}),d.jsx("input",{type:"text",value:T,onChange:le=>k(le.target.value),className:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:text-white",placeholder:p("totp.nameOptional")})]}),d.jsxs("div",{children:[d.jsxs("div",{className:"flex items-center justify-between mb-2",children:[d.jsx("label",{className:"text-sm font-medium text-gray-900 dark:text-white",children:p("totp.secretKey")}),d.jsx("button",{type:"button",onClick:W,className:"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 p-1",title:x?p("common.hide")+" QR Code":p("common.show")+" QR Code",children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M16 20h4M4 12h4m12 0h.01M5 8h2a1 1 0 001-1V5a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1zm12 0h2a1 1 0 001-1V5a1 1 0 00-1-1h-2a1 1 0 00-1 1v2a1 1 0 001 1zM5 20h2a1 1 0 001-1v-2a1 1 0 00-1-1H5a1 1 0 00-1 1v2a1 1 0 001 1z"})})})]}),d.jsx("input",{type:"text",value:L,onChange:le=>R(le.target.value),className:"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-primary-500 focus:border-primary-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:text-white font-mono",placeholder:p("totp.secretKey")}),x&&_&&d.jsx("div",{className:"flex justify-center mt-3",children:d.jsx("div",{className:"bg-white border-2 border-white rounded-lg",children:d.jsx("img",{src:_,alt:"TOTP QR Code",className:"w-64 h-64"})})})]}),d.jsx("button",{type:"button",onClick:J,className:"w-full text-white bg-primary-700 hover:bg-primary-800 focus:ring-4 focus:outline-none focus:ring-primary-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-primary-600 dark:hover:bg-primary-700 dark:focus:ring-primary-800",children:p("common.save")})]})})}),d.jsx(lf,{isOpen:G,onClose:ce,onConfirm:te,title:p("totp.deleteTotpCodeTitle"),message:p("totp.deleteTotpCodeConfirmation",{name:B==null?void 0:B.Name}),confirmText:p("common.delete")})]})},t4=({inputRef:t,value:e,onChange:n,folders:r,selectedFolderId:s,onFolderChange:l})=>{const{t:c}=it(),[m,p]=b.useState(!1),[g,A]=b.useState(new Set),f=r.find(x=>x.Id===s),v=b.useMemo(()=>qM(r),[r]);b.useEffect(()=>{if(s&&r.length>0){const x=LN(s,r);x.length>0&&A(new Set(x))}else A(new Set)},[s,r]);const w=b.useCallback(x=>{A(O=>{const _=new Set(O);return _.has(x)?_.delete(x):_.add(x),_})},[]),S=b.useCallback(x=>{l(x),p(!1)},[l]),T=b.useCallback(x=>{n(x.target.value)},[n]),k=b.useCallback(()=>{p(!0)},[]),L=b.useCallback(()=>{p(!1)},[]),R=b.useCallback((x,O=0)=>{const _=g.has(x.Id),j=x.children.length>0,G=s===x.Id;return d.jsxs("div",{children:[d.jsxs("button",{type:"button",onClick:()=>S(x.Id),className:`w-full px-3 py-2 text-left rounded-md flex items-center gap-2 transition-colors ${G?"bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300":"text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700"}`,style:{paddingLeft:`${O*12+12}px`},children:[j&&d.jsx("button",{type:"button",onClick:P=>{P.stopPropagation(),w(x.Id)},className:"p-0.5 hover:bg-gray-200 dark:hover:bg-gray-600 rounded transition-colors",children:d.jsx("svg",{className:`w-3 h-3 transition-transform ${_?"rotate-90":""}`,fill:"currentColor",viewBox:"0 0 20 20",children:d.jsx("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})})}),d.jsx("svg",{className:`w-5 h-5 shrink-0 ${G?"text-primary-500":"text-gray-400"} ${j?"":"ml-5"}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})}),d.jsx("span",{className:"font-medium flex-1",children:x.Name}),G&&d.jsx("svg",{className:"w-5 h-5 text-primary-600 dark:text-primary-400",fill:"currentColor",viewBox:"0 0 20 20",children:d.jsx("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})]}),j&&_&&d.jsx("div",{children:x.children.map(P=>R(P,O+1))})]},x.Id)},[g,s,S,w]);return d.jsxs(d.Fragment,{children:[d.jsxs("div",{children:[d.jsxs("label",{htmlFor:"itemName",className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1",children:[c("items.itemName")," ",d.jsx("span",{className:"text-red-500",children:"*"})]}),d.jsxs("div",{className:"relative flex items-center",children:[d.jsx("input",{ref:t,id:"itemName",type:"text",value:e,onChange:T,className:`w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:text-white ${s?"pr-28":"pr-10"}`,required:!0}),d.jsxs("button",{type:"button",onClick:k,className:`absolute right-1 z-10 flex items-center gap-1 px-2 py-1 rounded transition-colors text-xs ${s?"bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400 hover:bg-primary-200 dark:hover:bg-primary-900/50":"text-gray-500 dark:text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-600"}`,title:(f==null?void 0:f.Name)||"-",children:[d.jsx("svg",{className:"w-4 h-4 shrink-0",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})}),s&&d.jsx("span",{className:"max-w-16 truncate",children:f==null?void 0:f.Name})]})]})]}),m&&d.jsxs("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:[d.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-80 transition-opacity",onClick:L}),d.jsx("div",{className:"fixed inset-0 flex items-center justify-center p-4",children:d.jsxs("div",{className:"relative transform overflow-hidden rounded-lg bg-white dark:bg-gray-800 px-4 pb-4 pt-5 text-left shadow-xl transition-all w-full max-w-sm",children:[d.jsxs("button",{type:"button",className:"absolute right-4 top-4 text-gray-400 hover:text-gray-500 focus:outline-none",onClick:L,children:[d.jsx("span",{className:"sr-only",children:c("common.close")}),d.jsx("svg",{className:"h-6 w-6",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})]}),d.jsx("div",{className:"mb-4",children:d.jsx("h3",{className:"text-lg font-semibold leading-6 text-gray-900 dark:text-white",children:c("items.folder")})}),d.jsxs("div",{className:"space-y-1 max-h-64 overflow-y-auto",children:[d.jsxs("button",{type:"button",onClick:()=>S(null),className:`w-full px-3 py-2 text-left rounded-md flex items-center gap-3 transition-colors ${s?"text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700":"bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300"}`,children:[d.jsx("svg",{className:`w-5 h-5 ${s?"text-gray-400":"text-primary-500"}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"})}),d.jsx("span",{className:"font-medium",children:"—"}),!s&&d.jsx("svg",{className:"w-5 h-5 ml-auto text-primary-600 dark:text-primary-400",fill:"currentColor",viewBox:"0 0 20 20",children:d.jsx("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})]}),v.map(x=>R(x,0))]})]})})]})]})},Hu=[{type:Ea.Login,titleKey:"itemTypes.login.title",iconSvg:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"})})},{type:Ea.Alias,titleKey:"itemTypes.alias.title",iconSvg:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})})},{type:Ea.CreditCard,titleKey:"itemTypes.creditCard.title",iconSvg:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z"})})},{type:Ea.Note,titleKey:"itemTypes.note.title",iconSvg:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}],a4=({selectedType:t,isEditMode:e,showDropdown:n,onDropdownToggle:r,onTypeChange:s,onRegenerateAlias:l})=>{const{t:c}=it(),m=Hu.find(p=>p.type===t);return d.jsxs("div",{className:"relative",children:[d.jsxs("div",{className:"w-full px-4 py-2 bg-primary-50 dark:bg-primary-900/20 border border-primary-200 dark:border-primary-800 rounded-lg flex items-center gap-2",children:[d.jsxs("button",{type:"button",onClick:()=>r(!n),className:"flex-1 flex items-center justify-between hover:opacity-80 transition-opacity",children:[d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("span",{className:"text-primary-600 dark:text-primary-400",children:m==null?void 0:m.iconSvg}),d.jsxs("span",{className:"text-primary-700 dark:text-primary-300 font-medium text-sm",children:[c(e?"itemTypes.editing":"itemTypes.creating")," ",m?c(m.titleKey):""]})]}),d.jsx("svg",{className:`w-4 h-4 text-primary-500 transition-transform ${n?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),t===Ea.Alias&&!e&&l&&d.jsx("button",{type:"button",onClick:p=>{p.stopPropagation(),l()},className:"flex-shrink-0 p-1.5 text-primary-600 dark:text-primary-400 hover:text-primary-700 dark:hover:text-primary-300 hover:bg-primary-100 dark:hover:bg-primary-900/40 rounded transition-colors",title:c("itemTypes.regenerateAlias"),children:d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("path",{d:"M23 4v6h-6"}),d.jsx("path",{d:"M20.49 15a9 9 0 1 1-2.12-9.36L23 10"})]})})]}),n&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"fixed inset-0 z-10",onClick:()=>r(!1)}),d.jsx("div",{className:"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-md shadow-lg",children:Hu.map(p=>d.jsxs("button",{type:"button",onClick:()=>s(p.type),className:`w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 flex items-center gap-3 border-b border-gray-100 dark:border-gray-700 last:border-b-0 ${t===p.type?"bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300":"text-gray-900 dark:text-white"}`,children:[d.jsx("span",{className:t===p.type?"text-primary-600 dark:text-primary-400":"text-gray-500 dark:text-gray-400",children:p.iconSvg}),d.jsx("span",{className:"font-medium",children:c(p.titleKey)}),t===p.type&&d.jsx("svg",{className:"w-5 h-5 ml-auto text-primary-600 dark:text-primary-400",fill:"currentColor",viewBox:"0 0 20 20",children:d.jsx("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})]},p.type))})]})]})};var ex=(t=>(t.Male="Male",t.Female="Female",t.Other="Other",t))(ex||{}),$f=class pr{constructor(){this.symbols=[".","-"]}generateUsername(e){let n=this.generateEmailPrefix(e);return n=n.replace(/[^a-zA-Z0-9]/g,""),n.length<pr.MIN_LENGTH?n+=this.generateRandomString(pr.MIN_LENGTH-n.length):n.length>pr.MAX_LENGTH&&(n=n.substring(0,pr.MAX_LENGTH)),n}generateEmailPrefix(e){const n=[];switch(typeof e.birthDate=="string"&&(e.birthDate=new Date(e.birthDate)),this.getSecureRandom(4)){case 0:n.push(e.firstName.substring(0,1).toLowerCase()+e.lastName.toLowerCase());break;case 1:n.push((e.firstName+e.lastName).toLowerCase());break;case 2:n.push(e.firstName.toLowerCase()+e.lastName.substring(0,1).toLowerCase());break;case 3:n.push(e.firstName.substring(0,Math.min(3,e.firstName.length)).toLowerCase()+e.lastName.toLowerCase());break}switch(this.getSecureRandom(2)){case 0:n.push(e.birthDate.getFullYear().toString());break;case 1:n.push(e.birthDate.getFullYear().toString().substring(2));break}let r=n.join(this.getRandomSymbol());if(this.getSecureRandom(2)===0){const s=this.getSecureRandom(r.length);r=r.slice(0,s)+this.getRandomSymbol()+r.slice(s)}return r=this.sanitizeEmailPrefix(r),r.length<pr.MIN_LENGTH?r+=this.generateRandomString(pr.MIN_LENGTH-r.length):r.length>pr.MAX_LENGTH&&(r=r.substring(0,pr.MAX_LENGTH)),r}generateRandomEmailPrefix(e=14){return this.generateRandomString(e)}sanitizeEmailPrefix(e){let n=e.replace(/[^a-zA-Z0-9._-]/g,"");return n=n.replace(/[-_.]{2,}/g,r=>r[0]),n=n.replace(/^[-._]+/,""),n=n.replace(/[-._]*$/,""),n}getRandomSymbol(){return this.getSecureRandom(3)===0?this.symbols[this.getSecureRandom(this.symbols.length)]:""}generateRandomString(e){const n="abcdefghijklmnopqrstuvwxyz0123456789";return Array.from({length:e},()=>n.charAt(this.getSecureRandom(n.length))).join("")}getSecureRandom(e){const n=new Uint32Array(1);return crypto.getRandomValues(n),n[0]%e}};$f.MIN_LENGTH=6;$f.MAX_LENGTH=20;var Zf=$f,Li=class{constructor(){this.firstNamesMale=[],this.firstNamesFemale=[],this.lastNames=[],this.random=Math.random,this.firstNamesMale=this.getFirstNamesMaleJson(),this.firstNamesFemale=this.getFirstNamesFemaleJson(),this.lastNames=this.getLastNamesJson()}getFirstNamesMaleByDecade(){return[]}getFirstNamesFemaleByDecade(){return[]}generateRandomDateOfBirth(t){if(t){const{targetYear:m,yearDeviation:p}=t;if(p===0){const g=new Date(m,0,1),A=new Date(m,11,31),f=g.getTime()+this.random()*(A.getTime()-g.getTime());return new Date(f)}else{const g=m-p,A=m+p,f=new Date(g,0,1),v=new Date(A,11,31),w=f.getTime()+this.random()*(v.getTime()-f.getTime());return new Date(w)}}const e=new Date,n=21,r=65,s=new Date(e.getFullYear()-r,e.getMonth(),e.getDate()),l=new Date(e.getFullYear()-n,e.getMonth(),e.getDate()),c=s.getTime()+this.random()*(l.getTime()-s.getTime());return new Date(c)}selectFirstnamesForBirthdate(t,e){const n=t.getFullYear(),r=e?this.getFirstNamesMaleByDecade():this.getFirstNamesFemaleByDecade();if(r.length===0)return e?this.firstNamesMale:this.firstNamesFemale;const s=r.filter(c=>n>=c.startYear&&n<=c.endYear);if(s.length>0){const c=[];return s.forEach(m=>c.push(...m.names)),c}const l=[];return r.forEach(c=>l.push(...c.names)),l.length>0?l:e?this.firstNamesMale:this.firstNamesFemale}generateRandomIdentity(t,e){const n={firstName:"",lastName:"",gender:"Male",birthDate:new Date,emailPrefix:"",nickName:""};let r;t==="random"||t===void 0?r=this.random()<.5?"Male":"Female":t==="male"?r="Male":t==="female"?r="Female":r="Male",n.gender=r,n.birthDate=this.generateRandomDateOfBirth(e);let s;if(r==="Male")s=this.selectFirstnamesForBirthdate(n.birthDate,!0);else if(r==="Female")s=this.selectFirstnamesForBirthdate(n.birthDate,!1);else{const c=this.random()<.5;s=this.selectFirstnamesForBirthdate(n.birthDate,c)}n.firstName=s[Math.floor(this.random()*s.length)],n.lastName=this.lastNames[Math.floor(this.random()*this.lastNames.length)];const l=new Zf;return n.emailPrefix=l.generateEmailPrefix(n),n.nickName=l.generateUsername(n),n}},n4=["William","Karl","Emil","Oscar","Malthe","Noah","Valdemar","Aksel","August","Oliver","Lucas","Alfred","Theo","Elias","Arthur","Otto","Elliot","Felix","Victor","Magnus","Hugo","Viggo","Matheo","Louie","Liam","Lauge","Anton","Theodor","Anker","Konrad","Peter","Michael","Lars","Jens","Thomas","Henrik","Søren","Christian","Martin","Jan","Morten","Jesper","Anders","Niels","Mads","Rasmus","Per","Mikkel","Kim","Hans","Ole","Jørgen","Erik","Frederik","John","Jonas","Mathias","Claus","Daniel","Asger","Albert","Arne","Børge","Carl","Cornelius","Ebbe","Edvard","Egon","Ejvind","Elmer","Eskild","Finn","Frode","Georg","Gerhard","Gorm","Gregers","Gunnar","Harald","Henning","Ib","Ivar","Jakob","Jeppe","Joakim","Johan","Johannes","Julius","Kaj","Kasper","Kenneth","Kevin","Kristian","Kurt","Kåre","Lasse","Leif","Marius","Nicklas"],i4=["Emma","Ella","Luna","Alma","Frida","Olivia","Agnes","Clara","Sofia","Karla","Ida","Asta","Josefine","Anna","Ellie","Victoria","Laura","Freja","Maja","Isabella","Mathilde","Lærke","Sara","Caroline","Alberte","Nikoline","Emilie","Katrine","Julie","Merle","Signe","Nanna","Rosa","Esther","Simone","Edith","Augusta","Dagmar","Ingrid","Astrid","Gerda","Bodil","Gudrun","Gunhild","Thora","Thyra","Helga","Olga","Oda","Margrethe","Anne","Mette","Kirsten","Hanne","Marianne","Lene","Susanne","Pia","Gitte","Bente","Dorte","Lone","Tina","Camilla","Louise","Cecilie","Sofie","Line","Trine","Sanne","Rikke","Malene","Pernille","Henriette","Charlotte","Amalie","Mille","Silje","Tilde","Liv","Ea","Vega","Vilje","Elva","Thea","Caya","Lotus","Carla","Agnete","Alice","Alvilda","Annie","Ane","Almine","Doris","Dorthea"],r4=["Nielsen","Jensen","Hansen","Pedersen","Andersen","Christensen","Larsen","Sørensen","Rasmussen","Jørgensen","Petersen","Madsen","Kristensen","Olsen","Thomsen","Christiansen","Poulsen","Johansen","Møller","Schmidt","Holm","Knudsen","Mortensen","Jacobsen","Jakobsen","Henriksen","Lauridsen","Bendtsen","Jepsen","Bach","Krogh","Bech","Bøgh","Friis","Nygaard","Winther","Bachmann","Vinther","Kragh","Storm","Berg","Buhl","Kjeldsen","Hedegaard","Kjær","Damgaard","Dam","Brandt","Vestergaard","Lund","Schou","Overgaard","Søndergaard","Ravn","Steensen","Brodersen","Holst","Skov","Iversen","Krog","Aagaard","Frost","Lauesen","Gade","Grøn","Fog","Hjorth","Bloch","Hvid","Busk","Buhmann","Klitgaard","Kofod","Borup","Bramsen","Bredesen","Breum","Brock","Brøndum","Bundgaard","Bødker","Bøttcher","Carlsen","Clausen","Dahl","Dalgaard","Dalsgaard","Daugaard","Davidsen","Degn","Dietz","Dirksen","Dreyer","Due","Duelund","Duus","Ebbesen","Edelberg"],s4=class extends Li{getFirstNamesMaleJson(){return n4}getFirstNamesFemaleJson(){return i4}getLastNamesJson(){return r4}},o4=["Müller","Schmidt","Schneider","Fischer","Weber","Meyer","Wagner","Schulz","Becker","Hoffmann","Schäfer","Koch","Richter","Bauer","Klein","Wolf","Schröder","Neumann","Schwarz","Zimmermann","Braun","Hofmann","Krüger","Hartmann","Lange","Schmitt","Werner","Schmitz","Krause","Meier","Lehmann","Schmid","Schulze","Maier","Köhler","Herrmann","Walter","König","Mayer","Huber","Kaiser","Fuchs","Peters","Lang","Scholz","Möller","Weiß","Jung","Hahn","Schubert","Vogel","Friedrich","Günther","Keller","Winkler","Frank","Berger","Roth","Beck","Lorenz","Baumann","Franke","Albrecht","Schuster","Simon","Ludwig","Böhm","Winter","Kraus","Martin","Schumacher","Krämer","Vogt","Otto","Jäger","Stein","Groß","Sommer","Seidel","Heinrich","Haas","Brandt","Schreiber","Graf","Dietrich","Schulte","Kühn","Ziegler","Kuhn","Pohl","Engel","Horn","Bergmann","Voigt","Busch","Thomas","Sauer","Arnold","Pfeiffer","Wolff","Beyer","Seifert","Ernst","Lindner","Hübner","Kramer","Jansen","Franz","Peter","Hansen","Wenzel","Götz","Paul","Riedel","Barth","Kern","Hermann","Nagel","Wilhelm","Ott","Bock","Langer","Grimm","Ritter","Haase","Lenz","Förster","Mohr","Kruse","Schumann","Jahn","Thiel","Kaufmann","Zimmer","Hoppe","Petersen","Fiedler","Berg","Arndt","Marx","Lutz","Fritz","Kraft","Michel","Walther","Böttcher","Schütz","Eckert","Sander","Thiele","Reuter","Reinhardt","Schindler","Ebert","Kunz","Schilling","Schramm","Voß","Nowak","Hein","Hesse","Frey","Rudolph","Fröhlich","Beckmann","Kunze","Herzog","Bayer","Behrens","Stephan","Büttner","Gruber","Adam","Gärtner","Witt","Maurer","Bender","Bachmann","Schultz","Seitz","Geiger","Stahl","Steiner","Scherer","Kirchner","Dietz","Ullrich","Kurz","Breuer","Gerlach","Ulrich","Brinkmann","Fink","Heinz","Löffler","Reichert","Naumann","Böhme","Schröter","Blum","Göbel","Moser","Schlüter","Brunner","Körner","Schenk","Wirth","Wegner","Brand","Wendt","Stark","Schwab","Krebs","Heller","Wolter","Reimann","Rieger","Unger","Binder","Bruns","Döring","Menzel","Buchholz","Ackermann","Rose","Meißner","Janssen","Bartsch","May","Hirsch","Jakob","Schiller","Kopp","John","Hinz","Bach","Pfeifer","Bischoff","Engelhardt","Wilke","Sturm","Hildebrandt","Siebert","Urban","Link","Rohde","Kohl","Linke","Wittmann","Fricke","Köster","Gebhardt","Weiss","Vetter","Freitag","Nickel","Hennig","Rau","Münch","Witte","Noack","Renner","Westphal","Reich","Will","Baier","Kolb","Brückner","Marquardt","Kiefer","Keil","Henning","Heinze","Funk","Lemke","Ahrens","Esser","Pieper","Baum","Conrad","Schlegel","Fuhrmann","Decker","Jacob","Held","Röder","Berndt","Hanke","Kirsch","Neubauer","Hammer","Stoll","Erdmann","Mann","Philipp","Schön","Wiese","Kremer","Bartels","Klose","Mertens","Schreiner","Dittrich","Krieger","Kröger","Krug","Harms","Henke","Großmann","Martens","Heß","Schrader","Strauß","Adler","Herbst","Kühne","Heine","Konrad","Kluge","Henkel","Wiedemann","Albert","Popp","Wimmer","Karl","Wahl","Stadler","Hamann","Kuhlmann","Steffen","Lindemann","Fritsch","Bernhardt","Burkhardt","Preuß","Metzger","Bader","Nolte","Hauser","Blank","Beier","Klaus","Probst","Hess","Zander","Miller","Niemann","Funke","Haupt","Burger","Bode","Holz","Jost","Rauch","Rothe","Herold","Jordan","Anders","Fleischer","Wiegand","Hartung","Janßen","Lohmann","Krauß","Vollmer","Baur","Heinemann","Wild","Brenner","Reichel","Wetzel","Christ","Rausch","Hummel","Reiter","Mayr","Knoll","Kroll","Wegener","Beer","Schade","Neubert","Merz","Schüler","Strobel","Diehl","Behrendt","Glaser","Feldmann","Hagen","Jacobs","Rupp","Geißler","Straub","Hohmann","Römer","Stock","Haag","Meister","Freund","Dörr","Kessler","Betz","Seiler","Altmann","Weise","Metz","Eder","Busse","Mai","Wunderlich","Schütte","Hentschel","Voss","Weis","Heck","Born","Falk","Raab","Lauer","Völker","Bittner","Merkel","Sonntag","Moritz","Ehlers","Bertram","Hartwig","Rapp","Gerber","Zeller","Scharf","Pietsch","Kellner","Bär","Eichhorn","Giese","Wulf","Block","Opitz","Gottschalk","Jürgens","Greiner","Wieland","Benz","Keßler","Steffens","Heil","Seeger","Stumpf","Gross","Bühler","Eberhardt","Hiller","Buck","Weigel","Schweizer","Albers","Heuer","Pape","Hempel","Schott","Schütze","Scheffler","Engelmann","Wiesner","Runge","Geyer","Neuhaus","Forster","Oswald","Radtke","Heim","Geisler","Appel","Weidner","Seidl","Moll","Dorn","Klemm","Barthel","Gabriel","Springer","Timm","Engels","Kretschmer","Reimer","Steinbach","Hensel","Wichmann","Eichler","Hecht","Winkelmann","Heise","Noll","Fleischmann","Neugebauer","Hinrichs","Schaller","Lechner","Brandl","Mack","Gebauer","Siegel","Zahn","Singer","Michels","Schuler","Scholl","Uhlig","Brüggemann","Specht","Bürger","Eggert","Baumgartner","Weller","Schnell","Börner","Brauer","Kohler","Pfaff","Auer","Drescher","Otte","Frenzel","Petzold","Rother","Hagemann","Sattler","Wirtz","Ruf","Schirmer","Sauter","Schürmann","Junker","Walz","Dreyer","Sievers","Haller","Prinz","Stolz","Hausmann","Dick","Lux","Schnabel","Elsner","Kühl","Gerhardt","Klotz","Rabe","Schick","Faber","Riedl","Kranz","Fries","Reichelt","Rösch","Langner","Maaß","Wittig","Geier","Finke","Kasper","Maas","Bremer","Rath","Knapp","Dittmann","Kahl","Volk","Faust","Harder","Biermann","Pütz","Kempf","Mielke","Michaelis","Yilmaz","Abel","Thieme","Schütt","Hauck","Cordes","Eberle","Schaefer","Wehner","Haug","Fritzsche","Kilian","Eggers","Große","Matthes","Reinhold","Paulus","Dürr","Bohn","Thoma","Schober","Koller","Korn","Höhne","Hering","Gerdes","Ullmann","Jensen","Endres","Bernhard","Leonhardt","Eckhardt","Schaaf","Höfer","Junge","Rademacher","Pilz","Hellwig","Knorr","Helbig","Melzer","Lippert","Evers","Bahr","Klinger","Heitmann","Ehrhardt","Heinrichs","Horstmann","Behr","Stöhr","Drews","Rudolf","Sieber","Theis","Groth","Hecker","Weiler","Kemper","Rost","Lück","Claus","Hildebrand","Steinmetz","Götze","Trautmann","Blume","Kurth","Augustin","Nitsche","Janke","Jahnke","Klug","Damm","Heimann","Strauch","Schlosser","Uhl","Böhmer","Ries","Hellmann","Höhn","Hertel","Dreher","Borchert","Huth","Sperling","Just","Stenzel","Kunkel","Lau","Sprenger","Schönfeld","Pohlmann","Heilmann","Wacker","Lehner","Teichmann","Kaminski","Vogl","Gehrke","Hartl","Vogler","Schroeder","Thomsen","Nitschke","Engler","Liedtke","Wille","Starke","Friedrichs","Kirchhoff","Schwarze","Balzer","Reinhard","Heinen","Lotz","Küster","Kretzschmar","Schöne","Clemens","Hornung","Ulbrich","Renz","Hofer","Ruppert","Lohse","Schuh","Amann","Westermann","Stiller","Burmeister","Alt","Hampel","Brockmann","Wessel","Späth","Hoyer","Mader","Bartel","Rößler","Krieg","Grote","Schwarzer","Schweitzer","Scheer","Bosch","Zink","Roos","Wagener","Oppermann","Henze","Lehnert","Seemann","Trapp","Reiß","David","Pfeffer","Grau","Horst","Diekmann","Korte","Rehm","Wilde","Schleicher","Lampe","Grundmann","Veit","Daniel","Eisele","Hafner","Steinert","Sachs","Pfister","Kühnel","Schüller","Klatt","Bischof","Wendel","Tietz","Frick","Buschmann","Steinke","Menke","Baumeister","Kirschner","Loos","Ebner","Kastner","Wolters","Orth","Stange","Becher","Helm","Knobloch","Wörner","Heyer","Nguyen","Baumgärtner","Grund","Brüning","Ostermann","Cremer","Schauer","Jacobi","Ewald","Fürst","Widmann","Otten","Büchner","Petri","Fritsche","Kock","Ehlert","Kleine","Eckstein","Hacker","Brandes","Buchner","Hagedorn","Keck","Häusler","Muth","Apel","Heuser","Bastian","Kersten","Stamm","Niemeyer","Berthold","Gehrmann","Weinert","Schatz","Hager","Volkmann","Michael","Wieczorek","Wilms","Burghardt","Schultze","Merten","Schwartz","Kling","Rode","Neu","Mende","Thies","Böttger","Schell","Spindler","Pabst","Grün","Weiland","Mühlbauer","Hanisch","Doll","Janzen","Adams","Hermes","Haack","Cramer","Spies","Stern","Kugler","Budde","Jakobs","Scheller","Rösler","Reiser","Jonas","Herr","Ebeling","Wulff","Pauli","Löhr","Lukas","Rahn","Sachse","Köhn","Backhaus","Mahler","Hille","Kowalski","Heidrich","Brück","Gottwald","Heidenreich","Baumgarten","Hamm","Körber","Kübler","Frisch","Hardt","Enders","Bräuer","Seidler","Küpper","Lauterbach","Zeidler","Eckardt","Kreuzer","Schiffer","Schaper","Gehring","Hannemann","Ortmann","Petry","Thiemann","Tiedemann","Grünewald","Johannsen","Scheel","Volz","Kunert","Dieckmann","Bormann","Obermeier","Knauer","Schaub","Eilers","Berner","Pahl","Reinecke","Herz","Henn","Brehm","Hoff","Resch","Ochs","Krohn","Lerch","Raabe","Ehrlich","Hack","Friedl","Reis","Rogge","Meurer","Thelen","Drechsler","Hölscher","Morgenstern","Sommerfeld","Ebel","Kellermann","Rupprecht","Post","Hillebrand","Hill","Paulsen","Grabowski","Bolz","Lorenzen","Welsch","Seibel","Kleinert","Schröer","Jaeger","Wächter","Boldt","Palm","Kratz","Reimers","Pusch","Exner","Dietze","Wüst","Andres","Heide","Kaya","Reichardt","Kummer","Metzner","Grube","Ewert","Grunwald","Habermann","Zorn","Fichtner","Emmerich","Mangold","Reif","Ahlers","Kästner","Küppers","Petermann","Stratmann","Sailer","Schuhmacher","Hoch","Struck","Buchmann","Rauscher","Lüdtke","Wendler","Dreier","Zöller","Bucher","Siegert","Finger","Hopf","Rieck","Friese","Hopp","Sahin","Henrich","Spengler"],l4=["Michael","Peter","Hans","Klaus","Wolfgang","Thomas","Jürgen","Andreas","Bernd","Manfred","Rainer","Uwe","Dieter","Joachim","Karl","Holger","Werner","Ralf","Frank","Norbert","Ulrich","Rolf","Jörg","Gerhard","Günther","Helmut","Harald","Jens","Horst","Heinz","Reinhardt","Martin","Detlef","Stefan","Matthias","Volker","Christian","Gerd","Rüdiger","Alexander","Bernhard","Hartmut","Walter","Herbert","Georg","Ronald","Axel","Roland","Dirk","Josef","Lothar","Wilfried","Jan","Karsten","Udo","Ingo","Hermann","Kurt","Olaf","Franz","Siegfried","Dietmar","Mohammed","Heinrich","Alfred","Christoph","Viktor","Lutz","Johannes","Torsten","Kai","Rudolf","Richard","Waldemar","Robert","Jörn","Johann","Ernst","Reinhold","Eckhard","Friedrich","Burghard","Wilhelm","Heiko","Jochen","Harry","Hubert","Paul","Erich","Fred","Achim","Ali","Wolf","Erwin","Mario","Andre","Eberhard","Winfried","Heino","Sven","Willi","Ulf","Bodo","Henry","Vladimir","Dietrich","John","Armin","Edgar","Friedhelm","Gunnar","Arno","Fritz","Gerald","Henning","Abdul","Karlheinz","Andrzej","Markus","Otto","Roman","Knut","Wolfram","Nobert","Gunther","Konrad","Heiner","Mehmet","Nils","Bruno"],d4=["Thomas","Michael","Andreas","Stefan","Frank","Torsten","Peter","Jörg","Ralf","Matthias","Christian","Dirk","Jens","Martin","Klaus","Jürgen","Karsten","Uwe","Bernd","Markus","Oliver","Sven","Wolfgang","Holger","Olaf","Hans","Rainer","Kai","Jan","Volker","Joachim","Christoph","Alexander","Axel","Heiko","Norbert","Manfred","Andre","Dieter","Robert","Ulrich","Detlef","Harald","Ingo","Marc","Roland","Lars","Rolf","Marco","Jochen","Guido","Mike","Jörn","Georg","Gerhard","Rüdiger","Mario","Lutz","Bernhard","Nils","Udo","Dietmar","Gerd","Karl","Horst","Günther","Steffen","Johannes","Werner","Ronald","Arne","Daniel","Helmut","Achim","Mohammed","René","Ulf","Hartmut","Björn","Erik","Heinz","Patrick","Viktor","Walter","Ali","Gerald","Reinhardt","Henning","Tobias","Mehmet","Armin","Sebastian","Helge","Gunnar","Richard","Waldemar","Josef","Knut","Boris","Hermann","Paul","Burghard","Florian","Lothar","Sönke","Tim","Philipp","Franz","Clemens","Wilfried","Siegfried","Johann","Ahmet","Eckhard","Fred","Heinrich","Roman","John","Arno","Mustafa","Hasan","Gregor","Alfred","Arnd","Rudolf","Sergej","David","Manuel","Marcel","Friedrich","José","Marek","Mirko","Sascha","Thilo","Bodo","Darius","Hendrik","Herbert","Nikolai","Wolf","Nikola","Roger","Edgar","Ernst","Henry","Wolfram","Christopher","Vladimir","Gunther","Hüseyin","Harry","Hauke","Wilhelm","Arthur","Winfried","Henrik","Antonio","Felix","Anton","Bruno","Igor","Götz","Tom","Heino","Abdul","Miroslaw","Sören","Bert","Elmar","Hubert","Kurt","Ole","Tillmann","Ahmad","Andrej","Dennis","Adam","Ibrahim","Malte","Raphael","Reinhold","Eduard","Erwin","Marius","Nikolaus","Carlos","Ismail","Nico","Gernot","Jacek","Nicolas","Peer","Albert","Heiner","Timo","Andrzej","Jean","Berthold","Hanno"],c4=["Christian","Michael","Stefan","Andreas","Markus","Thomas","Matthias","Sven","Jan","Alexander","Oliver","Martin","Torsten","Frank","Marco","Marc","Jens","Daniel","Karsten","Andre","Sebastian","Lars","Dirk","Tobias","Jörg","Sascha","Kai","Florian","Christoph","Björn","Peter","Dennis","Mike","Ralf","Patrick","Robert","Holger","René","Nils","Heiko","Mario","Philipp","Olaf","Steffen","Tim","Timo","Ingo","Jürgen","Volker","Marcel","Benjamin","Bernd","Axel","Arne","Klaus","David","Jörn","Felix","Boris","Henning","Wolfgang","Uwe","Mirko","Torben","Johannes","Nico","Manuel","Jochen","Hans","Ali","Joachim","Malte","Mohammed","Roland","Simon","Rainer","Fabian","Gunnar","Ulrich","Ronny","Mehmet","Erik","Guido","Sergej","Hendrik","Viktor","Dominik","Roman","Georg","Bastian","Murat","Helge","Sören","Christopher","Karl","Andrej","Mustafa","Ulf","Lutz","Ole","Ahmet","Moritz","Enrico","Nicolas","Sönke","Paul","Harald","Norbert","Henrik","Raphael","Nikolai","Tom","Danny","Gerrit","Hasan","Gregor","Arthur","Bernhard","Marius","Konstantin","Achim","Norman","John","Thilo","Waldemar","Julian","Clemens","Hakan","Till","Ronald","Eduard","Erkan","Hauke","Manfred","Rüdiger","Adam","Ahmad","Klaas","Ibrahim","Vladimir","Adrian","Eugen","Falk","Maximilian","Richard","Andy","Frederik","Marek","Tino","Kevin","Knut","Pascal","Arnd","Detlef","Gerald","Max","Darius","Heinrich","Hüseyin","Igor","Alexej","Dieter","Eike","Tomasz","Wilhelm","Dietmar","Franz","Gerhard","Johann","Antonio","José","Rolf","Abdul","Peer","Ismail","Nikola","Bülent","Gerd","Jakob","Lukas","Niklas","Robin","Gordon","Friedrich","Jonas","Leif","Michel","Hermann","Oleg","Sandro","Tillmann","Burghard","Henry","Jean","Steven","Benedikt","Nikolaus","Ricardo","Roberto","Vitali","Amir","Günther","Helmut","Ivan","Rico","Falko","Jacek","Kim","Krzysztof","Piotr","Said","Silvio","Udo","Vitalij","Werner","Armin","Ayhan","Bodo","Carlos","Cengiz","Josef","Pierre","Ömer","Arno","Atilla","Birger","Dimitri","Georgios","Götz","Hagen","Hannes","Hartmut","Juan","Kolja","Marcin","Toni","Louis","Metin","Paulo","Pawel","Yusuf","Albert","Alex","Chris","Gunther","Lasse","Orhan","Ramazan","Rudolf","Walter"],u4=["Christian","Sebastian","Jan","Daniel","Stefan","Alexander","Michael","Dennis","Martin","Florian","Tobias","Matthias","Philipp","Patrick","Thomas","Benjamin","Andreas","Markus","Christoph","Marcel","Sven","Sascha","Tim","David","Felix","Johannes","Robert","Marco","Andre","Marc","Oliver","Christopher","Nils","Fabian","Simon","Björn","Timo","René","Dominik","Julian","Jens","Lars","Peter","Steffen","Manuel","Lukas","Moritz","Maximilian","Jonas","Mike","Kai","Frank","Paul","Kevin","Torben","Nico","Karsten","Torsten","Mario","Malte","Bastian","Hendrik","Max","Dirk","Pascal","Erik","Sören","Arne","Jakob","Nicolas","Konstantin","Niklas","Marius","Frederik","Roman","Henning","Jörg","Mirko","Mohammed","Viktor","Ali","Ralf","Raphael","Adrian","Danny","Steven","Ole","Hannes","Lennard","Benedikt","Georg","Marvin","Eugen","Robin","Jochen","Tom","Arthur","Heiko","Nikolai","Jannik","Till","Hans","Richard","Henrik","Pierre","Ronny","Sergej","Holger","Jannis","John","Boris","Jörn","Michel","Johann","Gregor","Klaus","Norman","Clemens","Hauke","Jonathan","Vincent","Enrico","Kim","Axel","Andrej","Toni","Karl","Waldemar","Bernd","Mehmet","Anton","Wolfgang","Ahmad","Mustafa","Andy","Ahmet","Lasse","Tino","Eike","Gerrit","Konrad","Joachim","Steve","Julius","Eduard","Murat","Dimitri","Friedrich","Gunnar","Jürgen","Adam","Ibrahim","Maurice","Klaas","Sönke","Bernhard","Igor","Tillmann","Alexej","Chris","Vladimir","Serkan","Thilo","Helge","Olaf","Roland","Gabriel","Nick","Falk","Nikola","Rico","Kolja","Leif","Pawel","Amir","Ingo","Jascha","Alex","Fatih","Gökhan","Hakan","Hasan","Kamil","Lutz","Marcin","Uwe","Achim","Finn","Samuel","Valentin","Vitali","Damian","Dustin","Franz","Leon","Darius","Erkan","Henry","Maxim","Peer"],m4=["Jan","Lukas","Philipp","Tim","Alexander","Daniel","Tobias","Dennis","Marcel","Felix","Kevin","Florian","Maximilian","Niklas","Jonas","Sebastian","Patrick","Fabian","Christian","Jannik","Julian","David","Marvin","Timo","Marc","Nico","Simon","Finn","Dominik","Nils","Leon","Pascal","Lennard","Max","Tom","Christopher","Benjamin","Moritz","Paul","Lars","Marco","Sven","Christoph","Robin","Johannes","Malte","Michael","Torben","Jakob","Matthias","Martin","Stefan","Mike","Andre","Jannis","Hendrik","Luca","Björn","Nicolas","Markus","René","Vincent","Jonathan","Steven","Frederik","Sascha","Thomas","Erik","Robert","Oliver","Andreas","Nick","Marius","Kai","Ole","Manuel","Joshua","Justin","Steffen","Adrian","Konstantin","Benedikt","Lasse","Louis","Maurice","Julius","Mirko","Anton","Till","John","Henrik","Henry","Bastian","Sören","Leonard","Raphael","Johann","Arne","Hannes","Michel","Karl","Mario","Ben","Mohammed","Viktor","Linus","Nikolai","Dustin","Aaron","Valentin","Peter","Toni","Henning","Marlon","Clemens","Danny","Justus","Jasper","Julien","Chris","Jens","Joel","Hauke","Kim","Richard","Gerrit","Cedric","Pierre","Karsten","Thore","Vivian","Mats","Ricardo","Arthur","Bennet","Fabio","Jannek","Kilian","Leo","Melvin","Noah","Samuel","Timon","Eike","Ali","Leif","Peer","Jean","Hans","Jeremy","Merlin","Jannes","Calvin","Jona","Elias","Lorenz","Marten","Can","Dario","Georg","Ahmet","Enrico","Oskar","Tristan","Jascha","Roman","Colin","Gabriel","Jason","Klaas","Morten","Nikola","Phil","Sönke","Alex","Cem","Konrad","Mattis","Rico","Armin","Brian","Frank","Gregor","Ralf","Thies","Norman","Ruben","Ahmad","Emre","Levin","Mehmet","Torge","Torsten","Bjarne","Kornelius","Steve","Jerome","Marek","Sandro","Thilo","Franz","Kenneth","Axel","Burak","Jörn","Kjell","Milan","Tjark","Kolja","Miguel","Tillmann","Emil","Friedrich","Lion","Rasmus","Tino","Caspar","Mert","Amir","Ibrahim","Joe","Leonhard","Mustafa","Onur","Ferdinand","Joscha","Laurenz","Maxim","Sam","Yasin","Antonio","Jeffrey","Jendrik","Nikolaus","Philippe","Sinan","Damian","Dirk","Fritz","Helge","Juri","Leander","Matti","Michele","Nino","Rouven","Said","Tarek","Theo","Timothy"],g4=["Leon","Lukas","Luca","Jonas","Tim","Finn","Paul","Felix","Maximilian","Louis","Niklas","Max","Ben","Julian","Jan","Philipp","Elias","Moritz","Noah","Jannik","Jannis","Tom","Nico","Simon","David","Alexander","Fabian","Erik","Jakob","Florian","Nils","Justin","Lennard","Nick","Linus","Daniel","Tobias","Jason","Dominik","Colin","Marvin","Mika","Sebastian","Kevin","Johannes","Julius","Robin","Jonathan","Henry","Hannes","Anton","Vincent","Benjamin","Marlon","Timo","Lenny","Adrian","Marc","Joel","Raphael","Dennis","Till","Joshua","Aaron","Emil","Pascal","Ole","Leonard","Leo","Lasse","Marcel","Samuel","Konstantin","Karl","Oskar","Lars","Lennox","Mattis","Jona","Kilian","Christian","Maurice","Justus","Jamie","Oliver","Malte","Silas","Michael","Mohammed","Jeremy","John","Phil","Bastian","Maxim","Johann","Liam","Nicolas","Mike","Levin","Benedikt","Marco","Noel","Luke","Bennet","Cedric","Gabriel","Theo","Matteo","Tyler","Valentin","Fabio","Marius","Jayden","Toni","Richard","Mats","Hendrik","Jannes","Henrik","Julien","Manuel","Arthur","Patrick","Matthias","Frederik","Connor","Tristan","Torben","Markus","Kai","Martin","Arda","Andreas","Damian","Timon","Franz","Michel","Levi","Finley","Robert","Thomas","Ian","Arne","Dustin","Christopher","Christoph","Bruno","Diego","Matti","Clemens","Leander","Magnus","Milan","Danny","Laurin","Lorenz","Laurenz","Sven","Ali","Leandro","Steven","Chris","Dean","Lenn","Pepe","Jasper","Konrad","Devin","Can","Domenik","Friedrich","Sean","Kian","Sam","Kjell","Ryan","Andre","Bjarne","Ruben","Stefan","Nikita","René","Peter","Hugo","Melvin","Jean","Leopold","Malik","Willi","Fritz","Leonardo","Quentin","Ahmet","Enrico","Emilio","Brian","Ferdinand","Antonio","Marten","Nevio","Thore","Joris","Leonhard","Roman","Anthony","Viktor","Henning","Sascha","Alex","Adam","Elia","Josef","Theodor","Jaron","Leif","Georg","Piet","Alessandro","Kaan","Lion","Miguel","Alessio","Carlos","Luan","Ilyas","Ricardo","Yusuf","Jannek","Mert","Peer","Yasin","Enes","Marek","Nino","Arian","Carlo","Janne","Gustav","Hasan","Mattes","Mustafa","William","Jerome","Milo","Dario","Mehmet","Hans","Thilo","Neo","Sören","Mirko","Sandro","Tamino","Emilian","Björn","Korbinian","Pierre","Emanuel","Bela","Benno","Merlin","Tino","Keno","Ludwig","Emre","Jordan","Kerem","Gianluca","Ibrahim","Jesse","Mario","Tjark","Eddy","Lian","Fiete","Etienne","Klaas","Marian","Efe","Jack","Calvin","Semih","Rico","Mick","Darian","Joost","Tommy","Angelo","Romeo","Keanu","Kurt","Raik","Tammo","Dylan","Nikolai","Thies","Armin","Darius","Maddox","Rasmus"],p4=["Ben","Leon","Paul","Jonas","Finn","Lukas","Louis","Luca","Noah","Elias","Felix","Maximilian","Max","Henry","Julian","Moritz","Tim","Emil","Jakob","Philipp","Niklas","Oskar","David","Anton","Alexander","Liam","Matteo","Theo","Tom","Jan"],h4=["Noah","Matteo","Leon","Elias","Finn","Paul","Luca","Emil","Louis","Theo","Henry","Felix","Ben","Liam","Leo","Lukas","Jonas","Jakob","Anton","Oskar","Maximilian","Mohammed","Levi","Milan","Jona","David","Karl","Jannis","Lio","Moritz","Adam","Max","Samuel","Mats","Alexander","Jonathan","Raphael","Aaron","Linus","Julian","Milo","Theodor","Carlo","Philipp","Valentin","Leonard","Erik","Mika","Johann","Niklas"],f4=["Angelika","Monika","Sabine","Karin","Petra","Gabriele","Birgit","Brigitte","Renate","Susanne","Barbara","Ursula","Ute","Marion","Jutta","Ingrid","Cornelia","Heike","Maria","Regina","Elke","Silvia","Andrea","Ulrike","Gisela","Angela","Bärbel","Christine","Martina","Christiane","Doris","Helga","Dagmar","Sigrid","Christa","Gudrun","Beate","Rita","Hannelore","Marlies","Eva","Claudia","Anke","Marianne","Annette","Elisabeth","Astrid","Erika","Heidi","Christel","Rosemarie","Anna","Bettina","Gabriela","Roswita","Ilona","Annegret","Evelyn","Sonja","Inge","Christina","Carmen","Irene","Kirsten","Lydia","Silke","Marina","Margret","Marita","Ruth","Maren","Sibylle","Waltraud","Ingeborg","Katharina","Vera","Heidemarie","Kerstin","Heidrun","Margrit","Carola","Iris","Antje","Katrin","Margit","Manuela","Veronika","Olga","Anne","Dorothea","Hildegard","Irmgard","Edith","Uta","Regine","Margarete","Anita","Frauke","Karen","Valentina","Anja","Tatjana","Ellen","Edeltraud","Verena","Dörte","Ilse","Gerda","Ines","Britta","Corinna","Elvira","Michaela","Annemarie","Anneliese","Gertrud","Gitta","Marie","Susann","Maike","Stefanie","Danuta","Gunda","Margot","Johanna","Irina","Ina","Theresa","Nina","Wiebke"],A4=["Sabine","Susanne","Petra","Andrea","Claudia","Birgit","Martina","Anja","Heike","Kerstin","Bettina","Gabriele","Katrin","Silke","Ute","Christine","Stefanie","Monika","Britta","Ulrike","Barbara","Kirsten","Silvia","Karin","Annette","Christiane","Beate","Manuela","Angela","Anke","Nicole","Marion","Cornelia","Christina","Angelika","Astrid","Elke","Michaela","Regina","Dagmar","Katja","Brigitte","Maria","Iris","Jutta","Antje","Tanja","Doris","Maike","Simone","Maren","Corinna","Sonja","Daniela","Carola","Alexandra","Eva","Ursula","Carmen","Sandra","Karen","Ines","Marina","Katharina","Elisabeth","Bärbel","Renate","Gaby","Anne","Anna","Gabriela","Sibylle","Heidi","Uta","Ina","Sigrid","Frauke","Ilona","Ingrid","Gudrun","Wiebke","Tatjana","Yvonne","Carolin","Patricia","Dörte","Susann","Birte","Rita","Julia","Irina","Bianca","Nikola","Ilka","Olga","Jeanette","Marlies","Helga","Melanie","Verena","Vera","Regine","Kirstin","Evelyn","Irene","Lydia","Christa","Annett","Marianne","Dorothea","Annegret","Elena","Gisela","Imke","Isabell","Heidrun","Viola","Diana","Esther","Susan","Inga","Judith","Ruth","Cordula","Jacqueline","Kai","Veronika","Carina","Roswita","Constanze","Marita","Natalie","Ramona","Ellen","Erika","Fatma","Nina","Svetlana","Dorothee","Inge","Nadja","Jasmin","Anita","Franziska","Friederike","Marie","Svenja","Jessica","Natascha","Rosemarie","Valentina","Ayse","Linda","Beatrix","Johanna","Ariane","Gesa","Larissa","Malgorzata","Miriam","Gunda","Margarete","Natalia","Almut","Ewa","Gitta","Jolanta","Babette","Beatrice","Christel","Christin","Sabrina","Dorit","Jana","Juliane","Hilke","Margret","Beata","Galina","Liane","Danuta","Elvira","Ingeborg","Rosa","Emine","Grit","Hannah","Sabina","Agnes","Edith","Gundula","Inken","Maja","Margit","Bozena","Helena","Theresa","Elzbieta","Hannelore","Tina"],y4=["Nicole","Stefanie","Sandra","Katrin","Claudia","Tanja","Anja","Melanie","Andrea","Daniela","Julia","Susanne","Katja","Christina","Kerstin","Silke","Sabine","Alexandra","Yvonne","Sonja","Nadine","Nina","Simone","Maike","Petra","Christine","Britta","Martina","Anna","Michaela","Manuela","Bianca","Katharina","Silvia","Bettina","Heike","Ulrike","Birgit","Anke","Christiane","Jessica","Monika","Maren","Eva","Anne","Antje","Diana","Jana","Cornelia","Wiebke","Kirsten","Miriam","Tina","Carolin","Astrid","Annette","Maria","Annika","Jennifer","Tatjana","Angela","Corinna","Barbara","Verena","Elena","Jasmin","Birte","Inga","Olga","Natalie","Ines","Iris","Ina","Marion","Beate","Irina","Svenja","Judith","Carina","Sarah","Patricia","Karin","Carmen","Franziska","Janine","Juliane","Saskia","Carola","Doreen","Frauke","Marina","Ute","Isabell","Annett","Christin","Karen","Mandy","Nadja","Svetlana","Natalia","Gabriele","Sabrina","Elke","Ramona","Natascha","Friederike","Ilka","Vanessa","Dagmar","Imke","Jeanette","Dörte","Angelika","Nikola","Rebecca","Regina","Janina","Kirstin","Johanna","Jutta","Elisabeth","Anita","Mareike","Sibylle","Maja","Esther","Vera","Agnieszka","Jenny","Peggy","Ariane","Hannah","Steffi","Joana","Victoria","Magdalena","Fatma","Lena","Sina","Doris","Uta","Larissa","Marie","Evelyn","Ann","Constanze","Jacqueline","Kati","Lydia","Agnes","Dana","Dorothea","Ilona","Kim","Ayse","Gaby","Katarzyna","Mirja","Pamela","Heidi","Helena","Viola","Isabella","Susann","Cindy","Cordula","Emine","Kathleen","Nancy","Beata","Denise","Susan","Ursula","Veronika","Brigitte","Gesa","Martha","Mirjam","Beatrice","Hatice","Dorothee","Linda","Malgorzata","Pia","Grit","Irene","Filiz","Yasemin","Berit","Ellen","Janet","Laura","Lisa","Renate","Ruth","Ewa","Gabriela","Ingrid","Liane","Mariam","Monique","Tamara","Antonia","Svantje","Alice","Margarete","Nele","Manja","Nora","Oksana","Özlem","Nadia","Ricarda","Bärbel","Carolina","Hülya","Inken","Rita","Sophie","Valentina","Violetta","Vivien","Britt","Inna","Leyla","Arzu","Kai","Natalja","Sandy","Silvana","Sophia","Beatrix","Ludmilla","Romy","Selma","Elvira","Helene","Henrike","Oxana","Rabea","Sabina","Wenke","Annegret","Aylin","Charlotte","Dorit","Emma","Jeannine","Marianne","Mona"],E4=["Julia","Stefanie","Anna","Katharina","Katrin","Sarah","Sandra","Nadine","Melanie","Christina","Jennifer","Nicole","Sabrina","Jessica","Annika","Claudia","Nina","Anne","Daniela","Franziska","Anja","Carolin","Jasmin","Christin","Katja","Janina","Jana","Janine","Yvonne","Alexandra","Svenja","Maike","Lena","Laura","Maria","Tanja","Susanne","Lisa","Andrea","Christine","Miriam","Sonja","Johanna","Ann","Sabine","Vanessa","Kerstin","Natalie","Bianca","Eva","Mareike","Marie","Verena","Jacqueline","Isabell","Hannah","Saskia","Simone","Tina","Juliane","Maren","Elena","Rebecca","Martina","Christiane","Carina","Mandy","Olga","Denise","Wiebke","Diana","Marina","Tatjana","Jenny","Manuela","Linda","Michaela","Nadja","Inga","Antje","Corinna","Patricia","Silvia","Ulrike","Kim","Judith","Ines","Monika","Birte","Ina","Victoria","Elisabeth","Theresa","Sina","Irina","Sophie","Silke","Friederike","Britta","Nora","Lea","Nele","Natascha","Bettina","Doreen","Barbara","Angela","Ramona","Cornelia","Anke","Natalia","Magdalena","Nancy","Annette","Astrid","Aylin","Susann","Kathleen","Alina","Lydia","Joana","Kirsten","Jeanette","Martha","Heike","Mona","Anita","Dana","Veronika","Yasemin","Sophia","Carolina","Svetlana","Esther","Charlotte","Antonia","Constanze","Vivien","Luisa","Svantje","Helena","Petra","Steffi","Pia","Susan","Monique","Lina","Mariam","Vera","Merle","Angelika","Karin","Maja","Frauke","Agnes","Isabella","Josephine","Frederike","Michelle","Carmen","Carola","Cindy","Madeleine","Janna","Larissa","Gina","Marlene","Anastasia","Elisa","Regina","Viola","Özlem","Alice","Evelyn","Marleen","Dominique","Lara","Karen","Nikola","Marion","Annabell","Annett","Dorothea","Iris","Henrike","Kira","Mirja","Camilla","Ronja","Valentina","Alena","Ariane","Dorothee","Fatma","Gesa","Agnieszka","Birgit","Ricarda","Sandy","Beate"],b4=["Julia","Anna","Sarah","Lisa","Laura","Katharina","Lena","Vanessa","Annika","Jennifer","Jana","Lea","Marie","Jasmin","Franziska","Hannah","Jessica","Michelle","Nina","Alina","Johanna","Carolin","Christina","Kim","Nadine","Jacqueline","Ann","Luisa","Sophie","Lara","Natalie","Svenja","Sabrina","Isabell","Sandra","Janina","Melanie","Leonie","Antonia","Saskia","Stefanie","Aylin","Denise","Nele","Pia","Alexandra","Katrin","Sophia","Sina","Melina","Janine","Vivien","Rebecca","Anne","Miriam","Victoria","Nicole","Mareike","Lina","Josephine","Merle","Clara","Maria","Maike","Charlotte","Celina","Paula","Carina","Larissa","Christin","Linda","Mandy","Theresa","Kimberly","Elena","Melissa","Jule","Celine","Daniela","Jenny","Kira","Patricia","Ronja","Bianca","Eva","Sonja","Joana","Gina","Tanja","Nora","Yvonne","Pauline","Emily","Natascha","Anja","Marina","Friederike","Angelina","Nadja","Paulina","Lynn","Alicia","Svea","Amelie","Katja","Juliane","Lilly","Marlene","Verena","Chantal","Milena","Maja","Chiara","Selina","Alena","Carlotta","Mona","Annabell","Carla","Claudia","Tatjana","Maren","Elisabeth","Emma","Helena","Inga","Luise","Tamara","Christine","Fiona","Judith","Frederike","Finja","Jill","Fenja","Tina","Cindy","Ina","Janne","Marleen","Mia","Samantha","Annalena","Janika","Henrike","Wiebke","Elisa","Esther","Ricarda","Janna","Stella","Carolina","Dana","Helen","Madeleine","Mara","Simone","Corinna","Diana","Fabienne","Monique","Samira","Sandy","Tabea","Valerie","Malin","Andrea","Birte","Swantje","Veronika","Kerstin","Magdalena","Ramona","Susanne","Greta","Juli","Kaja","Lucy","Zoe","Angelique","Jasmina","Tessa","Lydia","Sabine","Dominique","Malina","Michaela","Charline","Monika","Karen","Mira","Yasemin","Alica","Alice","Alisa","Angelika","Emilia","Henriette","Marieke","Vera","Anneke","Felicia","Giulia","Liza","Maxi","Viola","Annkatrin","Lotta","Olivia","Anastasia","Dilara","Felicitas","Mariam","Marisa","Rieke","Rosa","Beatrice","Constanze","Dorothea","Isabella","Juliana","Katerina","Martina","Merve","Philine","Valentina","Justine","Melisa","Michele","Mika","Nancy","Selin","Alissa","Angela","Cara","Charleen","Deborah","Ellen","Imke","Irina","Jeanette","Leona","Lorena","Manuela","Martha","Silvia","Viviane","Aline","Desiree","Xenia"],v4=["Hannah","Leonie","Anna","Lea","Lena","Mia","Emily","Laura","Lara","Sarah","Emma","Lilly","Marie","Sophie","Nele","Johanna","Lina","Julia","Maja","Sophia","Lisa","Amelie","Alina","Luisa","Leni","Clara","Jana","Charlotte","Paula","Emilia","Jasmin","Zoe","Annika","Katharina","Chiara","Pia","Finja","Josephine","Angelina","Jule","Lucy","Melina","Antonia","Vanessa","Emely","Victoria","Celina","Michelle","Nina","Isabell","Franziska","Fiona","Amy","Celine","Maria","Pauline","Stella","Carolin","Lia","Marlene","Melissa","Ida","Greta","Selina","Helena","Aylin","Merle","Ronja","Sina","Vivien","Mara","Eva","Kim","Elisa","Theresa","Jolina","Mathilda","Jette","Lotta","Luise","Elena","Carla","Jessica","Larissa","Luna","Nelly","Alicia","Lana","Linda","Milena","Miriam","Samira","Frieda","Magdalena","Carlotta","Alexandra","Fabienne","Kira","Helene","Nora","Elisabeth","Natalie","Tabea","Romy","Anne","Paulina","Juli","Christina","Annalena","Kimberly","Samantha","Annabell","Ella","Lynn","Mira","Letizia","Jennifer","Carina","Aaliyah","Rebecca","Anastasia","Dana","Isabella","Diana","Olivia","Lenja","Mariella","Mila","Lucia","Martha","Leyla","Joana","Elina","Carolina","Xenia","Gina","Nicole","Janina","Saskia","Evelyn","Anni","Marleen","Melanie","Svenja","Svea","Chantal","Tessa","Maike","Fenja","Leona","Josie","Joline","Cheyenne","Lorena","Noemi","Helen","Ann","Alissa","Malin","Lilian","Lotte","Mina","Felicitas","Liv","Jenny","Jill","Valentina","Veronika","Alexa","Kaja","Rieke","Yara","Dilara","Tuana","Laila","Tamara","Alisa","Ela","Marina","Alessia","Luana","Patricia","Lene","Jacqueline","Janne","Henriette","Ashley","Franka","Milla","Florentine","Selin","Selma","Giulia","Mona","Lisann","Aleyna","Rosalie","Sonja","Elif","Thea","Maren","Enya","Nadine","Alisha","Freya","Jamie","Denise","Aurelia","Ina","Christin","Judith","Lilith","Alena","Felicia","Juliana","Sandra","Zoey","Linnea","Soraya","Nisa","Stefanie","Juliane","Daria","Jasmina","Josefin","Friederike","Marla","Rosa","Cara","Nika","Naomi","Vivian","Amina","Elli","Cora","Luca","Madita","Mailin","Marieke","Tara","Amira","Liana","Lydia","Joy","Madlen","Nike","Hailey","Madeleine","Mareike","Aimee","Cassandra","Heidi","Joyce","Alea","Janine","Jonna","Sydney","Alia","Ilayda","Livia","Maira","Leana","Valerie","Thalia","Ellen","Emmi","Melisa","Inga","Julina","Smilla","Katja","Melinda","Valeria","Anouk","Liliana","Sabrina","Wiebke","Joleen","Leandra","Zeynep","Katrin","Tamina","Jenna","Levke","Salome","Annelie","Cecilia","Annemarie","Jona","Mary","Mirja","Collien","Alice","Azra","Ceylin","Lavinia","Maxi","Anja","Henrike","Mariam"],w4=["Mia","Emma","Hannah","Sophia","Emilia","Anna","Lea","Lina","Marie","Lena","Leonie","Emily","Amelie","Luisa","Johanna","Clara","Sophie","Lilly","Mila","Leni","Laura","Lara","Nele","Maja","Charlotte","Sarah","Ella","Ida","Mathilda","Frieda"],I4=["Emilia","Sophia","Emma","Hannah","Mia","Lina","Mila","Ella","Clara","Lea","Marie","Leni","Lia","Mathilda","Ida","Anna","Frieda","Leonie","Emily","Maja","Lilly","Luisa","Charlotte","Amelie","Sophie","Lena","Johanna","Lara","Mira","Nora","Nele","Sarah","Malia","Lotta","Juna","Paula","Luna","Elisa","Maria","Romy","Laura","Helena","Thea","Mara","Victoria","Antonia","Elena","Tilda","Carla","Eva"],C4=class extends Li{getFirstNamesMaleJson(){return[]}getFirstNamesFemaleJson(){return[]}getLastNamesJson(){return o4}getFirstNamesMaleByDecade(){return[{startYear:1950,endYear:1959,names:l4},{startYear:1960,endYear:1969,names:d4},{startYear:1970,endYear:1979,names:c4},{startYear:1980,endYear:1989,names:u4},{startYear:1990,endYear:1999,names:m4},{startYear:2e3,endYear:2009,names:g4},{startYear:2010,endYear:2019,names:p4},{startYear:2020,endYear:2029,names:h4}]}getFirstNamesFemaleByDecade(){return[{startYear:1950,endYear:1959,names:f4},{startYear:1960,endYear:1969,names:A4},{startYear:1970,endYear:1979,names:y4},{startYear:1980,endYear:1989,names:E4},{startYear:1990,endYear:1999,names:b4},{startYear:2e3,endYear:2009,names:v4},{startYear:2010,endYear:2019,names:w4},{startYear:2020,endYear:2029,names:I4}]}},S4=["Aaron","Adam","Adrian","Aidan","Aiden","Alan","Albert","Alex","Alexander","Alfred","Amir","Andrew","Anthony","Antonio","Archer","Arthur","Asher","Austin","Axel","Barry","Beau","Beckett","Benjamin","Bennett","Bernard","Blake","Braden","Bradley","Brady","Brandon","Braxton","Brayden","Brendan","Brett","Brian","Bruce","Bryan","Bryce","Bryson","Caden","Caleb","Calvin","Camden","Cameron","Carlos","Carson","Carter","Casey","Cecil","Charles","Chase","Chester","Christian","Christopher","Clarence","Claude","Clifford","Clyde","Cody","Cole","Colin","Collin","Colton","Connor","Cooper","Corey","Craig","Curtis","Dakota","Dale","Dalton","Damian","Dan","Daniel","Darrell","Daryl","David","Dawson","Dean","Declan","Dennis","Derek","Devin","Dominic","Dominick","Don","Douglas","Dustin","Dylan","Earl","Easton","Edgar","Edmund","Edward","Edwin","Eli","Elias","Elijah","Elliot","Elliott","Emilio","Emmett","Eric","Ethan","Eugene","Evan","Everett","Felix","Ferdinand","Floyd","Forrest","Francis","Franklin","Frederick","Gabriel","Gael","Garrett","Gary","Gavin","George","Gerald","Gilbert","Glen","Gordon","Graham","Grant","Grayson","Gregory","Greyson","Harold","Harrison","Harvey","Hayden","Henry","Herman","Howard","Hudson","Hugh","Hugo","Hunter","Ian","Irving","Isaac","Isaiah","Ivan","Jace","Jack","Jackson","Jacob","Jaden","James","Jared","Jason","Jasper","Jayden","Jeffrey","Jeremiah","Jeremy","Jerome","Jesse","Jesus","Joel","John","Jonathan","Jordan","Jorge","Jose","Joseph","Joshua","Josiah","Juan","Justin","Kai","Kayden","Keith","Kenneth","Kevin","Kingston","Knox","Kyle","Landon","Lawrence","Leo","Leon","Leonard","Leonardo","Leslie","Levi","Liam","Lincoln","Lloyd","Logan","Luca","Lucas","Luis","Luke","Maddox","Malachi","Malcolm","Marcus","Mark","Martin","Marvin","Mason","Mateo","Matthew","Maurice","Max","Maxwell","Micah","Michael","Miguel","Miles","Milton","Mitchell","Morris","Nathan","Nathaniel","Neil","Nelson","Nicholas","Noah","Nolan","Norman","Oliver","Oscar","Owen","Parker","Patrick","Paul","Perry","Peter","Philip","Phillip","Preston","Ralph","Randy","Ray","Raymond","Rhett","Richard","Riley","Robert","Roderick","Rodney","Roger","Roland","Roman","Ronald","Ross","Roy","Russell","Ryan","Ryder","Ryker","Samuel","Sawyer","Scott","Sean","Sebastian","Seth","Shane","Shawn","Silas","Simon","Spencer","Stanley","Stephen","Steven","Stuart","Tanner","Terrence","Theodore","Thomas","Timothy","Travis","Trevor","Tristan","Tyler","Vernon","Victor","Vincent","Wade","Wallace","Walter","Warren","Wayne","Wendell","Wesley","Weston","William","Winston","Wyatt","Xavier","Zachariah","Zachary","Zane"],T4=["Aaliyah","Abigail","Ada","Adalyn","Adalynn","Addison","Adeline","Adriana","Alexa","Alexandra","Alice","Alina","Allison","Alyssa","Amara","Amaya","Amelia","Anastasia","Andrea","Anna","Annabelle","Aria","Ariana","Arianna","Arielle","Arya","Ashley","Aspen","Athena","Aubree","Aubrey","Audrey","Aurora","Autumn","Ava","Avery","Ayla","Bailey","Beatrice","Bella","Bianca","Blair","Brianna","Brielle","Brooklyn","Brynn","Calliope","Camila","Camille","Carmen","Caroline","Cassidy","Catalina","Cecilia","Celeste","Charlie","Charlotte","Chloe","Claire","Clara","Cora","Coraline","Dahlia","Daisy","Dakota","Daphne","Dawn","Delilah","Diana","Eden","Eleanor","Elena","Eliana","Elise","Eliza","Elizabeth","Ella","Ellie","Eloise","Ember","Emerson","Emersyn","Emery","Emilia","Emily","Emma","Esme","Esther","Eva","Evangeline","Evelyn","Everly","Faith","Fiona","Flora","Florence","Francesca","Freya","Gabriella","Gemma","Genesis","Georgia","Gianna","Giselle","Grace","Gwendolyn","Hadley","Hailey","Hannah","Harlow","Harmony","Harper","Haven","Hazel","Heidi","Helena","Holly","Hope","Imogen","India","Indie","Iris","Isabel","Isabella","Isabelle","Isla","Ivy","Jade","Jasmine","Jessie","Jocelyn","Josephine","Josie","Julia","Juliana","Juliet","June","Juniper","Kaia","Katherine","Kayla","Kaylee","Keira","Kennedy","Khloe","Kinsley","Kylie","Lara","Laura","Laurel","Layla","Leah","Leilani","Lena","Liliana","Lillian","Lily","Lola","Lorelei","Lucia","Lucy","Luna","Lydia","Lyla","Mabel","Mackenzie","Madeline","Madelyn","Madison","Maeve","Magnolia","Maisie","Malia","Margaret","Margot","Maria","Marina","Marlowe","Mary","Matilda","Maya","Melanie","Melody","Mia","Mira","Miranda","Morgan","Nadia","Naomi","Natalia","Natalie","Nell","Nevaeh","Nina","Noelle","Nora","Norah","Nova","Octavia","Odette","Olive","Olivia","Opal","Ophelia","Paisley","Pearl","Penelope","Peyton","Phoebe","Phoenix","Piper","Poppy","Primrose","Quinn","Raelynn","Ramona","Raven","Reagan","Reese","Riley","River","Robin","Rosalie","Rose","Rosemary","Rowan","Ruby","Ruth","Rylee","Ryleigh","Sabrina","Sadie","Sage","Salem","Samantha","Sarah","Sasha","Savannah","Scarlett","Selena","Serena","Serenity","Sienna","Sierra","Simone","Skye","Skylar","Sloane","Sofia","Sophia","Sophie","Stella","Summer","Sylvia","Sylvie","Talia","Taylor","Tessa","Thea","Thora","Valentina","Valeria","Vera","Victoria","Violet","Vivian","Vivienne","Willa","Willow","Winnie","Winter","Wren","Ximena","Yara","Zara","Zoe","Zoey"],N4=["Abbott","Adams","Aguilar","Alexander","Allen","Alvarez","Anderson","Atkins","Bailey","Baker","Baldwin","Ballard","Barber","Barker","Barnes","Barrett","Bauer","Baxter","Beard","Bell","Bennett","Benson","Black","Blackwood","Blake","Blanchard","Booth","Bowman","Bradley","Briggs","Brooks","Brown","Bryant","Buckley","Burke","Burns","Butler","Byrd","Cain","Campbell","Cannon","Carlson","Carter","Castillo","Castro","Chandler","Chapman","Chavez","Chen","Clark","Clarke","Cobb","Cole","Coleman","Collier","Collins","Conrad","Cook","Cooke","Cooper","Cox","Craig","Crawford","Cross","Cruz","Cunningham","Dalton","Daniel","Davenport","Davis","Dawson","Dempsey","Dennis","Diaz","Dickerson","Dillon","Dixon","Doyle","Duran","Dyer","Edwards","Ellis","Erickson","Evans","Ewing","Farley","Farr","Farrell","Fernandez","Ferris","Fisher","Fitzgerald","Fleming","Fletcher","Flores","Foley","Ford","Foster","Fowler","Frazier","Freeman","Frost","Fuller","Gallagher","Garcia","Gardner","Garner","Garrett","Gates","Gibbs","Gibson","Gill","Glover","Goldberg","Gomez","Gonzales","Gonzalez","Goodman","Goodwin","Gordon","Graham","Graves","Gray","Green","Griffin","Griffith","Gross","Gutierrez","Guzman","Hale","Hall","Hamilton","Hancock","Harmon","Harris","Harrison","Hawkins","Hayes","Hayward","Henderson","Hendricks","Henry","Hensley","Hernandez","Herrera","Hicks","Hill","Hodges","Holland","Holmes","Holt","Hoover","Howard","Hudson","Huffman","Hughes","Humphrey","Hunter","Hutchinson","Isaac","Jackson","Jacobson","James","Jarvis","Jenkins","Jimenez","Johnson","Jones","Jordan","Keller","Kelly","Kennedy","Kent","Kerr","Kim","King","Kirby","Knowles","Koch","Landry","Lang","Lawson","Lee","Levy","Lewis","Livingston","Logan","Long","Lopez","Lowery","Lowry","Lucas","Luna","Malone","Manning","Marsh","Marshall","Martin","Martinez","Mason","May","McBride","McCoy","McDonald","McKinney","Mccarthy","Mcguire","Mckay","Mckenzie","Meadows","Medina","Mendez","Mendoza","Middleton","Miller","Miranda","Mitchell","Moody","Moore","Morales","Moreno","Morgan","Morris","Morse","Murphy","Murray","Myers","Nash","Neal","Nelson","Nguyen","Nichols","Nielsen","Nixon","Norton","Olson","Orr","Ortiz","Owens","Palmer","Parker","Parsons","Patel","Patterson","Payne","Pearce","Pearson","Perez","Perry","Peterson","Phillips","Pickett","Pollard","Porter","Potter","Powell","Pratt","Preston","Price","Ramirez","Ramos","Randall","Ray","Reed","Reyes","Reynolds","Richardson","Riddle","Riley","Rivera","Roach","Robbins","Roberts","Robinson","Rodriguez","Rogers","Romero","Ross","Rowe","Ruiz","Russell","Salinas","Sanchez","Sanders","Santana","Savage","Sawyer","Schmidt","Schultz","Scott","Sellers","Shannon","Sharp","Shaw","Shepherd","Shields","Short","Silva","Simmons","Simpson","Skinner","Sloan","Smith","Snyder","Sparks","Spears","Stanley","Stark","Steele","Stephenson","Stevens","Stewart","Stokes","Sullivan","Sutton","Swanson","Tanner","Tate","Taylor","Thomas","Thompson","Thornton","Torres","Tran","Travis","Tucker","Turner","Tyler","Underwood","Vargas","Vasquez","Vincent","Wagner","Walker","Wallace","Walters","Walton","Ward","Washington","Watkins","Watson","Weaver","Webb","Weeks","Welch","Wells","West","Whitaker","White","Wilcox","Wilkinson","Williams","Willis","Wilson","Winters","Wise","Wolfe","Wood","Woods","Woodward","Wright","Wyatt","Yates","York","Young","Zamora","Zimmerman"],gv=class extends Li{getFirstNamesMaleJson(){return S4}getFirstNamesFemaleJson(){return T4}getLastNamesJson(){return N4}},k4=["Mateo","Leo","Lucas","Hugo","Martín","Enzo","Thiago","Óliver","Manuel","Luca","Daniel","Liam","Mario","Gabriel","Adrián","Alejandro","Dylan","Noah","Pablo","Álvaro","David","Gael","Gonzalo","Rafael","Julen","Miguel","Aarón","Bruno","Marc","Marco","Eric","Izan","Juan","Antonio","Darío","Santiago","Iván","Teo","Alex","Andrés","Jaime","Javier","Leonardo","Marcos","Mathias","Adonay","Kai","Nathan","Pau","Aimar","Biel","Carlos","Dakar","Diego","Fabio","Leandro","Nico","Nil","Rodrigo","Sergio","Aleix","Dante","Derek","Eithan","Ian","Iker","Lorenzo","Pol","Rubén","Samuel","Ángel","Ares","Axel","Haitam","Ismael","José María","Kylian","Luis","Maximiliano","Pedro","Telmo","Unai","Abel","Adam","Aitor","Arnau","Asier","Ignacio","Isaac","Jesús","Joel","Jon","Nael","Raúl","Romeo","Saúl","Yeray","Adria","Alan","Alonso"],x4=["Sofía","Emma","Alma","Lucía","Olivia","Vega","Mía","Valeria","Julia","Lola","Martina","Noa","Alana","Triana","Adhara","Carla","Laia","Carmen","Gala","Paula","Adriane","Daniela","Lía","Alba","Candela","Isabella","Lara","Vera","Aitana","María","Cloe","Luna","Nora","Sara","Victoria","Zoe","Alejandra","Camila","Alicia","Manuela","Mar","Valentina","Ángela","Aina","Amara","Ana","Aria","Bianca","Claudia","Elena","Macarena","Maya","Abril","Blanca","Carolina","Catalina","Gabriela","Violeta","Amaia","Aurora","Cataleya","Gema","Inés","Irati","Jade","Julieta","Ainara","Alaia","Arlet","Atenea","Clara","Marta","Ona","Rocío","Sabela","Amelia","Antonella","Cristina","Elsa","Eva","Georgina","Haizea","India","Iris","Jana","Leyre","Marina","Naia","Sienna","Sol","Zaira","Africa","Alessia","Arabia","Aroa","Diana","Eira","Encarna","Gaia","Gianna"],L4=["García","Rodríguez","González","Fernández","López","Martínez","Sánchez","Pérez","Gómez","Martín","Jimenez","Hernández","Ruiz","Díaz","Moreno","Muñoz","Álvarez","Romero","Gutiérrez","Alonso","Navarro","Torres","Domínguez","Ramos","Vázquez","Ramírez","Gil","Serrano","Morales","Molina","Blanco","Suárez","Castro","Ortega","Delgado","Ortiz","Marin","Rubio","Nuñez","Medina","Sanz","Castillo","Iglesias","Cortés","Garrido","Santos","Guerrero","Lozano","Cano","Cruz","Méndez","Flores","Prieto","Herrera","Peña","León","Márquez","Cabrera","Gallego","Calvo","Vidal","Campos","Reyes","Vega","Fuentes","Carrasco","Diez","Aguilar","Caballero","Nieto","Santana","Vargas","Pascual","Giménez","Herrero","Hidalgo","Montero","Lorenzo","Santiago","Benitez","Duran","Ibáñez","Arias","Mora","Ferrer","Carmona","Vicente","Rojas","Soto","Crespo","Roman","Pastor","Velasco","Parra","Sáez","Moya","Bravo","Rivera","Gallardo","Soler"],D4=class extends Li{getFirstNamesMaleJson(){return k4}getFirstNamesFemaleJson(){return x4}getLastNamesJson(){return L4}},R4=["Abbas","Abbasali","Abbasreza","Abdolrahman","Abdolreza","Ahmad","Ali","Aliakbar","Alihossein","Alireza","Aliyar","Amin","Amir","Amirreza","Anoushirvan","Arad","Arash","Arashmehr","Ardeshir","Arian","Arman","Armin","Arvand","Arvin","Arya","Aryan","Ashkan","Attar","Avan","Babak","Bahador","Bahman","Bahram","Barad","Behnam","Behzad","Bijan","Darian","Davood","Dena","Ebrahim","Ehsan","Ehsanali","Ehsanollah","Elyas","Esmaeil","Esmat","Ezatollah","Faramarz","Farbod","Farhad","Fariborz","Farrokh","Farzad","Farzin","Fazel","Fereydoun","Gholamreza","Habib","Hadi","Hafez","Hamid","Hassan","Hooman","Hormoz","Hossein","Hosseinreza","Ilia","Iman","Jamshid","Javad","Kambiz","Kamran","Kamyar","Karim","Kaveh","Kazem","Keyghobad","Keyhan","Keyvan","Khashayar","Khosrow","Kia","Kian","Kiyan","Kourosh","Latif","Mahan","Mahmoud","Majid","Manouchehr","Masih","Masoud","Matin","Mehdi","Mehrab","Mehrdad","Mehrshad","Mehrshid","Mehrzad","Milad","Mohammad","Mohammadali","Mohammadreza","Mohsen","Morteza","Mostafa","Nader","Naser","Navab","Navid","Nikan","Nima","Nosrat","Nouri","Omran","Parham","Parviz","Payam","Peyman","Pouya","Pouyan","Qasem","Radin","Rahim","Ramin","Rasoul","Rayan","Reza","Rezaali","Roham","Rohollah","Rostam","Rumi","Saadi","Sadegh","Saeed","Sahand","Sahra","Saleh","Samad","Saman","Samyar","Sattar","Seyed","Shahab","Shahin","Shahram","Shahryar","Shahzad","Shaparak","Shapour","Shayan","Shayanmehr","Shervin","Siavash","Siawash","Sina","Sohrab","Soroush","Taghi","Taha","Vahid","Yaghoub","Yahya","Yasin","Yavar","Yazdan","Younes","Yousef"],U4=["Afsaneh","Afsoon","Afsoun","Afsun","Amineh","Anahita","Arezoo","Arezou","Arezu","Asal","Ashraf","Atefeh","Atousa","Ava","Azadeh","Azar","Azra","Bahar","Baran","Behnaz","Behnoosh","Behnoush","Dana","Darya","Delara","Delshad","Donya","Elaheh","Elham","Esmat","Fahimeh","Farah","Fariba","Farideh","Farnaz","Farzaneh","Fatemeh","Fereshteh","Firoozeh","Firouzeh","Firuzeh","Forough","Ghoncheh","Gohar","Gol","Golbahar","Golnar","Golnaz","Golshah","Golshan","Golzar","Hajar","Hamide","Hamideh","Hanieh","Hayat","Hedieh","Helia","Hoda","Homa","Jahanara","Jaleh","Jamileh","Katayoun","Katayun","Khadijeh","Khorshid","Kimia","Ladan","Laleh","Leila","Leili","Leyla","Leyli","Mahboubeh","Mahin","Mahine","Mahnaz","Mahsa","Mahtab","Mahvash","Maliheh","Manijeh","Mansoureh","Marjan","Maryam","Marzieh","Masoomeh","Masoumeh","Mehr","Mehri","Mehrnaz","Mina","Minoo","Minu","Mitra","Mojdeh","Mojgan","Morvarid","Mozhdeh","Mozhgan","Naheed","Nahid","Najmeh","Narges","Nasrin","Nastaran","Nazanin","Nazli","Neda","Negar","Negin","Nika","Niloofar","Niloufar","Niousha","Niusha","Nooshin","Nousha","Noushin","Paniz","Pantea","Parastoo","Parastu","Pari","Parisa","Parvaneh","Parvin","Pegah","Pouran","Raheleh","Rana","Razieh","Reyhaneh","Robab","Robabeh","Roghayeh","Roshan","Roshanak","Roshanara","Roya","Saba","Sadaf","Safa","Sahar","Sakineh","Samaneh","Samira","Sanaz","Sara","Sedigheh","Sepideh","Setare","Setareh","Shabnam","Shadi","Shahla","Shahnaz","Shahrazad","Shahrbanoo","Shahrzad","Shams","Shereen","Shideh","Shireen","Shirin","Shiva","Shohre","Shohreh","Shokoufeh","Shokufeh","Shukria","Sima","Simin","Soheila","Solmaz","Somayeh","Soodeh","Soraya","Soudeh","Sudabeh","Tahereh","Tahmineh","Taraneh","Tayebeh","Vida","Yalda","Yasaman","Yasamin","Zahra","Zeinab","Zeynab","Zhaleh","Ziba","Zinat","Zohreh"],M4=["Abbasi","Abedi","Abhari","Abtahi","Abadi","Abdollahi","Abedzadeh","Adibi","Afkari","Afsari","Afshar","Ahadi","Ahmadi","Ahmadpour","Ajami","Akbari","Akbarian","Akhavan","Akhtar","Alaei","Alamouti","Alavi","Alinejad","Alizadeh","Almasi","Amini","Aminzadeh","Amiri","Amouzgar","Ansari","Anvari","Arabi","Araki","Arbab","Ardalan","Aref","Armand","Arshi","Asadi","Asgari","Asghari","Asgharzadeh","Ashna","Ashrafi","Ashtari","Askari","Asl","Aslani","Attar","Azad","Azadi","Azar","Azari","Azimi","Azizi","Azmoudeh","Babaei","Badr","Badri","Bagheri","Bagherian","Bahar","Bahmani","Bahrami","Bakhshi","Bakhtiari","Banifaz","Baraghani","Barati","Bastani","Bayani","Bayat","Beheshti","Behnam","Behrouz","Behzadi","Besharat","Bijani","Binesh","Boniadi","Borna","Bostani","Choopan","Dabagh","Darya","Dadashi","Daei","Daneshvar","Darvish","Dehghan","Dehkordi","Dorri","Ebrahimi","Eghbali","Ejlali","Elahi","Emadi","Emami","Entezami","Esfahani","Eshraghi","Eskandari","Esmaili","Estesami","Etemad","Fakhar","Falah","Falahi","Fallah","Fanaei","Far","Farah","Farahani","Faraji","Farhadi","Farhang","Farjami","Farrokh","Farsad","Farshad","Farshid","Farsi","Fatehi","Fayyaz","Fazli","Feiz","Ferdowsi","Fereshteh","Fikri","Firouz","Firouzpour","Foroughi","Foroutan","Ghaderi","Ghaffari","Ghasemi","Ghazizadeh","Ghezavat","Ghobadi","Ghorbani","Golzar","Goodarzi","Gorji","Goya","Habibi","Haghighat","Hajati","Hakami","Hakimi","Halimi","Hamidi","Hariri","Hasani","Hashemi","Hassani","Hassanipour","Hosseini","Hatami","Hedayat","Hejazi","Hekmat","Heydari","Hijazi","Homayoun","Hossein","Imani","Irani","Isfahani","Izadi","Jabari","Jabbari","Jafari","Jahanbani","Jahangiri","Jalali","Jaleh","Jalili","Jam","Jamali","Jamshidi","Janati","Javadi","Jobrani","Kanani","Kar","Karami","Kargar","Karimi","Karimian","Kashani","Kashi","Kaveh","Kayhan","Kazemi","Keramat","Keyhan","Khadem","Khalaf","Khalili","Khamenei","Khani","Khorasani","Khorram","Khorsandi","Kia","Kiani","Kianian","Kiarostami","Kimiaei","Kord","Kordestani","Lotfi","Maadi","Madani","Mahdavi","Mahini","Mahjoub","Mahmoudi","Majd","Majidi","Makhdoom","Makki","Malakian","Maleki","Malekzadeh","Manavi","Mansour","Mansouri","Marashi","Marjani","Marzban","Mashhadi","Matin","Mazhari","Maziar","Mazloom","Mehraban","Mehrabi","Mehrabian","Mehrad","Mehran","Mehrdad","Mehri","Mehrzad","Memar","Meshkat","Milani","Miri","Moghadam","Mohammad","Mohammadi","Moini","Mojarad","Mokhtari","Mokri","Molavi","Moradi","Moridi","Mosheli","Mousavi","Nabavi","Naceri","Nader","Naderi","Nafari","Nafisi","Najafi","Namazi","Namdar","Namvar","Naqdi","Naqshbandi","Naqvi","Nariman","Nasab","Naseri","Naserian","Nasiri","Nasri","Navabi","Navaz","Navid","Nayeri","Nazari","Nazarian","Nazem","Nazeri","Negahban","Nejad","Neshat","Niazi","Nik","Nili","Nori","Norouzi","Nouri","Noury","Nozad","Omidyar","Osanloo","Ostad","Pahlavan","Paknia","Panahi","Parastui","Parsa","Parvin","Parvizi","Pashaei","Pedrad","Pejman","Peyman","Pezeshkzad","Pezeshkian","Piran","Qasemi","Rahimi","Ranjbar","Rashidi","Rezaei","Rostami","Rouhani","Sadeghi","Saeedi","Safavi","Sharifi","Shirazi","Tabatabaei","Tabrizi","Tavakoli","Tehrani","Yazdi","Yousefi","Zamani","Zarei"],_4=class extends Li{getFirstNamesMaleJson(){return R4}getFirstNamesFemaleJson(){return U4}getLastNamesJson(){return M4}},F4=["Gabriel","Raphaël","Léo","Louis","Noah","Arthur","Adam","Jules","Maël","Eden","Léon","Liam","Isaac","Sacha","Marceau","Elio","Noé","Lucas","Gabin","Mohamed","Aaron","Imrân","Ayden","Malo","Paul","Ethan","Hugo","Naël","Ibrahim","Marius","Eliott","Nathan","Victor","Théo","Martin","Tom","Ezio","Gaspard","Mathis","Ismaël","Côme","Léandre","Amir","Augustin","Lyam","Aylan","Nino","Antoine","Milo","Robin"],B4=["Louise","Jade","Ambre","Alba","Emma","Alma","Romy","Rose","Alice","Anna","Mia","Lou","Inaya","Adèle","Lina","Eva","Julia","Iris","Agathe","Elena","Giulia","Léna","Noûr","Jeanne","Olivia","Luna","Victoire","Juliette","Léonie","Zoé","Chloé","Nina","Sofia","Léa","Alya","Charlotte","Romane","Victoria","Inès","Esmée","Ava","Lucie","Lola","Lya","Albane","Emy","Mila","Margot","Lyna","Gabrielle"],P4=["Martin","Bernard","Thomas","Petit","Robert","Richard","Durand","Dubois","Moreau","Laurent","Simon","Michel","Lefebvre","Leroy","Roux","David","Bertrand","Morel","Fournier","Girard","Bonnet","Dupont","Lambert","Fontaine","Rousseau","Vincent","Muller","Lefevre","Faure","Andre","Mercier","Blanc","Guerin","Boyer","Garnier","Chevalier","Francois","Legrand","Gauthier","Garcia","Perrin","Robin","Clement","Morin","Nicolas","Henry","Roussel","Mathieu","Gautier","Masson","Marchand","Duval","Denis","Dumont","Marie","Lemaire","Noel","Meyer","Dufour","Meunier","Brun","Blanchard","Giraud","Joly","Riviere","Lucas","Brunet","Gaillard","Barbier","Arnaud","Martinez","Gerard","Roche","Renard","Schmitt","Roy","Leroux","Colin","Vidal","Caron","Picard","Roger","Fabre","Aubert","Lemoine","Renaud","Dumas","Lacroix","Olivier","Philippe","Bourgeois","Pierre","Benoit","Rey","Leclerc","Payet","Rolland","Leclercq","Guillaume","Lecomte"],O4=class extends Li{getFirstNamesMaleJson(){return F4}getFirstNamesFemaleJson(){return B4}getLastNamesJson(){return P4}},j4=["Rossi","Russo","Ferrari","Esposito","Bianchi","Romano","Colombo","Ricci","Marino","Greco","Bruno","Gallo","Conti","De Luca","Mancini","Costa","Giordano","Rizzo","Lombardi","Moretti","Barbieri","Fontana","Santoro","Mariani","Rinaldi","Caruso","Ferrara","Galli","Martini","Leone","Longo","Gentile","Martinelli","Vitale","Serra","Coppola","De Santis","D'Angelo","Marchetti","Parisi","Villa","Conte","Ferraro","Ferri","Fabbri","Bianco","Marini","Grasso","Valentini","Messina"],H4=["Giuseppe","Giovanni","Antonio","Mario","Luigi","Francesco","Angelo","Vincenzo","Pietro","Salvatore","Carlo","Franco","Pasquale","Domenico","Raffaele","Carmelo","Paolo","Sergio","Bruno","Luciano","Giorgio","Aldo","Renato","Piero","Guido","Nicola","Rosario","Vittorio","Michele","Umberto","Romano","Gino","Silvano","Renzo","Attilio","Augusto","Benito","Biagio","Cesare","Corrado","Dino","Egidio","Elio","Enzo","Ettore","Fausto","Felice","Ferdinando","Ferruccio","Gaetano","Gastone","Gennaro","Gerardo","Germano","Italo","Lino","Marino","Nello","Nino","Orazio","Orlando","Osvaldo","Ottavio","Primo","Remo","Rinaldo","Rocco","Ruggero","Severino","Silvio","Ugo","Valerio","Vasco","Walter","Agostino","Alfredo","Armando","Arturo","Claudio","Enrico","Giancarlo","Gianfranco","Alberto","Marcello","Roberto","Stefano","Mauro","Fabio","Maurizio","Massimo","Alessandro","Lorenzo","Andrea","Marco","Giuliano","Adriano","Gianni","Sandro","Leone"],V4=["Roberto","Stefano","Paolo","Marco","Luca","Alessandro","Massimo","Mauro","Fabrizio","Maurizio","Gianluca","Claudio","Giorgio","Piero","Gianfranco","Gianni","Valter","Ivan","Danilo","Moreno","Loris","Sandro","Dario","Nicola","Enrico","Alberto","Fabio","Giuseppe","Antonio","Giovanni","Francesco","Andrea","Michele","Daniele","Emanuele","Vittorio","Silvano","Romano","Giuliano","Tiziano","Massimiliano","Antonello","Arrigo","Aurelio","Bernardo","Carlo","Cesare","Corrado","Costantino","Damiano","Diego","Dino","Donatello","Duccio","Edmondo","Egidio","Elio","Enea","Ercole","Ermanno","Eros","Ezio","Fausto","Ferdinando","Fiorello","Flavio","Floriano","Folco","Franco","Fulvio","Gabriele","Gaetano","Gastone","Giacomo","Gianbattista","Giancarlo","Gianmaria","Gianpaolo","Gianpiero","Gilberto","Gino","Giordano","Gualtiero","Guido","Gustavo","Iacopo","Igor","Ilario","Italo","Ivano","Jacopo","Lamberto","Lando","Lanfranco","Lazzaro","Leo","Leonardo","Leone"],z4=["Alessandro","Andrea","Marco","Luca","Stefano","Davide","Gianluca","Fabio","Francesco","Massimo","Roberto","Simone","Daniele","Emanuele","Christian","Riccardo","Federico","Matteo","Gabriele","Michele","Lorenzo","Alessio","Nicola","Alberto","Fabrizio","Massimiliano","Giorgio","Enrico","Claudio","Paolo","Ivan","Mirko","Manuel","Denis","Igor","Omar","Cristian","Yuri","Alex","Samuel","Mattia","Pietro","Vincenzo","Angelo","Salvatore","Luigi","Domenico","Raffaele","Rosario","Carmelo","Pasquale","Diego","Dario","Giulio","Valerio","Maurizio","Gianni","Sandro","Loris","Moreno","Danilo","Tiziano","Antonello","Bernardo","Carlo","Cesare","Corrado","Costantino","Damiano","Demetrio","Dino","Edoardo","Elia","Emilio","Enzo","Ermanno","Eros","Eugenio","Fausto","Flavio","Fulvio","Gaetano","Gerardo","Gianbattista","Gianmaria","Gianpaolo","Gilberto","Giuliano","Iacopo","Leonardo","Marcello","Martino","Niccolò","Piero","Rinaldo","Ruggero","Samuele","Saverio","Sebastiano","Tommaso"],Q4=["Marco","Andrea","Luca","Alessandro","Stefano","Daniele","Simone","Davide","Matteo","Francesco","Lorenzo","Federico","Gianluca","Fabio","Massimo","Emanuele","Riccardo","Nicola","Christian","Roberto","Michele","Giuseppe","Antonio","Giovanni","Paolo","Alberto","Filippo","Giorgio","Enrico","Tommaso","Giacomo","Mattia","Gabriele","Samuele","Pietro","Vincenzo","Angelo","Raffaele","Domenico","Rosario","Salvatore","Luigi","Mario","Carmelo","Pasquale","Alessio","Cristian","Manuel","Mirko","Ivan","Omar","Denis","Igor","Yuri","Alex","Samuel","Jacopo","Nicolò","Edoardo","Leonardo","Diego","Dario","Giulio","Valerio","Claudio","Mauro","Fabrizio","Maurizio","Gianni","Piero","Sandro","Loris","Moreno","Danilo","Valter","Silvano","Romano","Giuliano","Tiziano","Massimiliano","Antonello","Arrigo","Aurelio","Bernardo","Carlo","Cesare","Corrado","Costantino","Damiano","Demetrio","Dino","Elia","Emilio","Enzo","Ermanno","Eros","Eugenio","Fausto"],K4=["Matteo","Andrea","Luca","Alessandro","Davide","Lorenzo","Francesco","Simone","Marco","Mattia","Federico","Riccardo","Gabriele","Stefano","Daniele","Nicola","Christian","Giacomo","Filippo","Tommaso","Emanuele","Michele","Giuseppe","Antonio","Giovanni","Alberto","Giorgio","Enrico","Pietro","Samuele","Alessio","Edoardo","Leonardo","Diego","Nicolò","Manuel","Mirko","Ivan","Jacopo","Giulio","Valerio","Claudio","Paolo","Roberto","Vincenzo","Angelo","Raffaele","Domenico","Rosario","Salvatore","Luigi","Mario","Carmelo","Pasquale","Massimo","Fabio","Gianluca","Maurizio","Fabrizio","Mauro","Gianni","Piero","Sandro","Loris","Moreno","Danilo","Valter","Silvano","Romano","Giuliano","Tiziano","Massimiliano","Antonello","Arrigo","Aurelio","Bernardo","Carlo","Cesare","Corrado","Costantino","Damiano","Dino","Elia","Emilio","Enea","Ettore","Eugenio","Flavio","Gaetano","Gerardo","Gianmaria","Gianpaolo","Gilberto","Gualtiero","Guido","Gustavo","Iacopo","Igor"],G4=["Francesco","Alessandro","Andrea","Matteo","Lorenzo","Mattia","Davide","Simone","Luca","Gabriele","Riccardo","Federico","Marco","Tommaso","Leonardo","Giuseppe","Antonio","Giovanni","Filippo","Giacomo","Christian","Edoardo","Samuele","Alessio","Michele","Daniele","Stefano","Nicola","Pietro","Giorgio","Enrico","Emanuele","Alberto","Diego","Nicolò","Manuel","Jacopo","Giulio","Valerio","Paolo","Roberto","Vincenzo","Angelo","Raffaele","Domenico","Rosario","Salvatore","Luigi","Mario","Carmelo","Pasquale","Kevin","Thomas","Nicholas","Samuel","Gabriel","Daniel","David","Jonathan","Michael","Patrick","Simon","Steven","William","Anthony","Christopher","George","Harry","Jack","James","Joseph","Joshua","Matthew","Oliver","Oscar","Richard","Robert","Ryan","Elia","Gioele","Enea","Liam","Noah","Ethan","Bryan","Nathan","Aron","Zeno","Leone","Brando","Tancredi","Manfredi","Dante","Lapo","Romeo","Ettore","Achille","Michelangelo","Orlando"],W4=["Francesco","Alessandro","Leonardo","Lorenzo","Mattia","Andrea","Gabriele","Matteo","Riccardo","Tommaso","Edoardo","Giuseppe","Antonio","Davide","Federico","Diego","Giovanni","Marco","Nicolò","Samuele","Michele","Pietro","Luca","Simone","Filippo","Giacomo","Christian","Alessio","Emanuele","Daniele","Stefano","Nicola","Giorgio","Enrico","Alberto","Manuel","Jacopo","Giulio","Valerio","Paolo","Roberto","Vincenzo","Angelo","Raffaele","Domenico","Rosario","Salvatore","Luigi","Mario","Carmelo","Pasquale","Nathan","Liam","Noah","Ethan","Mason","Logan","Lucas","Oliver","Elijah","Aiden","James","Benjamin","William","Alexander","Michael","Daniel","Henry","Jackson","Sebastian","Jack","Samuel","David","Joseph","Carter","Owen","Wyatt","John","Matthew","Luke","Julian","Gioele","Elia","Enea","Leone","Brando","Tancredi","Manfredi","Dante","Lapo","Romeo","Ettore","Achille","Michelangelo","Orlando","Cesare","Vittorio","Augusto","Sebastiano","Damiano","Gregorio","Ludovico","Martino","Niccolò","Rocco","Santo","Saverio","Tiziano","Valentino","Vasco","Zaccaria"],q4=["Maria","Anna","Rosa","Giuseppina","Angela","Giovanna","Teresa","Lucia","Carmela","Caterina","Francesca","Antonietta","Carla","Rita","Paola","Luisa","Fernanda","Franca","Gabriella","Giuliana","Lina","Mirella","Bruna","Adriana","Silvana","Marisa","Iolanda","Ines","Ida","Ester","Elvira","Elsa","Elena","Edda","Dina","Delia","Clara","Bice","Bianca","Assunta","Antonia","Annunziata","Amelia","Amalia","Agata","Ada","Adele","Adelina","Albina","Alda","Alma","Anita","Armida","Aurelia","Aurora","Beatrice","Celeste","Cesira","Clelia","Clotilde","Concetta","Costanza","Daria","Deanna","Dolores","Domenica","Dora","Edvige","Elda","Eleonora","Elisabetta","Emma","Enrica","Ersilia","Eugenia","Evelina","Fabiola","Fiammetta","Filomena","Flora","Floriana","Fulvia","Gemma","Gilda","Gina","Gioia","Grazia","Graziella","Immacolata","Irene","Irma","Isa","Jolanda","Laura","Lidia"],Y4=["Roberta","Patrizia","Cinzia","Daniela","Lorella","Nadia","Monica","Susanna","Tiziana","Donatella","Simonetta","Antonella","Sabrina","Loredana","Marina","Barbara","Paola","Laura","Cristina","Rossella","Simona","Stefania","Manuela","Sonia","Sandra","Loretta","Orietta","Gigliola","Fiorella","Gabriella","Raffaella","Isabella","Marta","Elisabetta","Claudia","Alessandra","Federica","Michela","Serena","Valeria","Cecilia","Letizia","Luciana","Mara","Marcella","Margherita","Mariella","Marilena","Marisa","Milena","Mirella","Natalia","Nicoletta","Norma","Novella","Olga","Ombretta","Oriana","Ornella","Ottavia","Pamela","Piera","Priscilla","Rachele","Rebecca","Regina","Renata","Rita","Romina","Rosalina","Rosanna","Rosetta","Rosina","Santina","Savina","Silvia","Sofia","Speranza","Tina","Vanda","Vanna","Velia","Vera","Vilma","Vincenza","Violante","Virginia","Vittoria","Viviana","Wanda","Zita"],J4=["Barbara","Katia","Debora","Erika","Pamela","Samantha","Moira","Natascia","Tamara","Tatiana","Jessica","Valentina","Ilaria","Serena","Chiara","Silvia","Elena","Elisa","Francesca","Alessia","Federica","Giorgia","Martina","Giulia","Sara","Alice","Veronica","Eleonora","Vanessa","Sabrina","Sonia","Tiziana","Loredana","Antonella","Annamaria","Mariangela","Rosaria","Concetta","Assunta","Domenica","Vincenza","Filomena","Maddalena","Teresa","Lucia","Carmela","Caterina","Antonietta","Carla","Rita","Franca","Marinella","Silvana","Patrizia","Luisa","Monica","Manuela","Michela","Simona","Stefania","Claudia","Valeria","Roberta","Laura","Cristina","Daniela","Paola","Alessandra","Cecilia","Letizia","Marta","Elisabetta","Raffaella","Gabriella","Cinzia","Nadia","Donatella","Lorella","Susanna","Simonetta","Marina","Rossella","Sandra","Loretta","Orietta","Fiorella","Isabella","Gigliola","Margherita","Agnese"],X4=["Valentina","Francesca","Alessandra","Chiara","Silvia","Elena","Laura","Cristina","Roberta","Sara","Giulia","Martina","Alice","Ilaria","Serena","Federica","Michela","Simona","Manuela","Monica","Daniela","Paola","Barbara","Stefania","Claudia","Valeria","Eleonora","Veronica","Elisa","Giorgia","Alessia","Noemi","Giada","Aurora","Sofia","Ludovica","Ginevra","Beatrice","Matilde","Vittoria","Emma","Nicole","Gaia","Camilla","Bianca","Arianna","Melissa","Vanessa","Sabrina","Sonia","Tiziana","Loredana","Antonella","Annamaria","Mariangela","Rosaria","Concetta","Assunta","Domenica","Vincenza","Filomena","Maddalena","Teresa","Lucia","Carmela","Caterina","Antonietta","Carla","Rita","Franca","Marinella","Silvana","Patrizia","Luisa","Katia","Debora","Erika","Pamela","Samantha","Moira","Natascia","Tamara","Tatiana","Jessica","Greta","Rachele","Rebecca","Angelica","Benedetta","Costanza","Diletta","Lucrezia","Marta","Miriam","Asia","Desiree","Sharon","Denise","Chanel"],$4=["Giulia","Chiara","Martina","Sara","Francesca","Alessia","Silvia","Valentina","Alice","Federica","Giorgia","Elena","Laura","Elisa","Ilaria","Eleonora","Serena","Roberta","Cristina","Veronica","Simona","Michela","Manuela","Monica","Daniela","Paola","Barbara","Stefania","Claudia","Valeria","Noemi","Giada","Aurora","Sofia","Ludovica","Ginevra","Beatrice","Matilde","Vittoria","Emma","Nicole","Gaia","Camilla","Bianca","Arianna","Melissa","Vanessa","Sabrina","Sonia","Tiziana","Loredana","Antonella","Annamaria","Mariangela","Rosaria","Concetta","Assunta","Domenica","Vincenza","Filomena","Maddalena","Teresa","Lucia","Carmela","Caterina","Antonietta","Carla","Rita","Anna","Maria","Greta","Rachele","Rebecca","Angelica","Benedetta","Costanza","Diletta","Lucrezia","Marta","Miriam","Asia","Desiree","Sharon","Denise","Chanel","Emily","Jennifer","Jasmine","Luna","Maya","Mia","Michelle","Siria","Sole","Stella","Viola","Virginia","Zoe","Adele","Agata"],Z4=["Giulia","Sofia","Martina","Sara","Chiara","Aurora","Alice","Alessia","Francesca","Giorgia","Ginevra","Ludovica","Greta","Gaia","Emma","Beatrice","Matilde","Vittoria","Noemi","Giada","Elena","Elisa","Anna","Maria","Nicole","Valentina","Federica","Silvia","Laura","Ilaria","Eleonora","Serena","Roberta","Cristina","Veronica","Simona","Michela","Manuela","Monica","Daniela","Paola","Barbara","Stefania","Claudia","Valeria","Arianna","Melissa","Vanessa","Sabrina","Sonia","Tiziana","Loredana","Antonella","Annamaria","Mariangela","Rosaria","Concetta","Assunta","Domenica","Vincenza","Filomena","Maddalena","Teresa","Lucia","Carmela","Caterina","Antonietta","Carla","Rita","Franca","Rachele","Rebecca","Angelica","Benedetta","Costanza","Diletta","Lucrezia","Marta","Miriam","Asia","Desiree","Sharon","Denise","Chanel","Emily","Jennifer","Jasmine","Luna","Maya","Mia","Michelle","Siria","Sole","Stella","Viola","Virginia","Zoe","Adele","Agata","Ambra","Cecilia"],e9=["Sofia","Aurora","Giulia","Ginevra","Alice","Giorgia","Emma","Greta","Martina","Beatrice","Matilde","Ludovica","Vittoria","Nicole","Chiara","Anna","Sara","Bianca","Gaia","Noemi","Francesca","Alessia","Elena","Elisa","Maria","Adele","Viola","Mia","Ambra","Cecilia","Margherita","Linda","Eleonora","Elisabetta","Valeria","Veronica","Vanessa","Sabrina","Pamela","Debora","Nadia","Sonia","Tiziana","Loredana","Antonella","Annamaria","Mariangela","Rosaria","Concetta","Assunta","Domenica","Vincenza","Filomena","Maddalena","Teresa","Lucia","Carmela","Caterina","Antonietta","Carla","Rita","Franca","Marinella","Silvana","Patrizia","Luisa","Ilaria","Monica","Manuela","Michela","Simona","Barbara","Agnese","Anita","Isabel","Chloe","Emily","Luna","Sole","Stella","Azzurra","Gioia","Diletta","Benedetta","Costanza","Angelica","Lucrezia","Marta","Miriam","Rachele","Rebecca","Serena","Zoe","Agata","Cloe","Dafne","Diana","Eva","Flora","Frida","Glenda","Irene","Iris"],t9=class extends Li{getFirstNamesMaleJson(){return[]}getFirstNamesFemaleJson(){return[]}getLastNamesJson(){return j4}getFirstNamesMaleByDecade(){return[{startYear:1950,endYear:1959,names:H4},{startYear:1960,endYear:1969,names:V4},{startYear:1970,endYear:1979,names:z4},{startYear:1980,endYear:1989,names:Q4},{startYear:1990,endYear:1999,names:K4},{startYear:2e3,endYear:2009,names:G4},{startYear:2010,endYear:2019,names:W4}]}getFirstNamesFemaleByDecade(){return[{startYear:1950,endYear:1959,names:q4},{startYear:1960,endYear:1969,names:Y4},{startYear:1970,endYear:1979,names:J4},{startYear:1980,endYear:1989,names:X4},{startYear:1990,endYear:1999,names:$4},{startYear:2e3,endYear:2009,names:Z4},{startYear:2010,endYear:2019,names:e9}]}},a9=["Daan","Luuk","Sem","Finn","Milan","Levi","Noah","Lucas","Jesse","Thijs","Jayden","Bram","Lars","Ruben","Thomas","Tim","Sam","Liam","Julian","Mees","Ties","Sven","Max","Gijs","David","Stijn","Jasper","Niels","Jens","Timo","Cas","Joep","Roan","Tom","Tygo","Teun","Siem","Mats","Thijmen","Rens","Niek","Tobias","Dex","Hugo","Robin","Nick","Floris","Pepijn","Boaz","Olivier","Luca","Jurre","Jelle","Guus","Koen","Bart","Olaf","Wessel","Daniël","Job","Sander","Tijmen","Kai","Quinten","Owen","Morris","Fedde","Joris","Jesper","Mick","Ryan","Milo","Stan","Benjamin","Melle","Jip","Dylan","Brent","Mick","Dean","Otis","Abel","Luc","Sepp","Vince","Rayan","Noud","Hidde","Fabian","Jort","Damian","Boris","Sil","Moos","Aiden","Sep","Mika","Mijs","Mika","Felix","Merlijn","Alexander","Aron","Arthur","Axel","Bas","Bastiaan","Berend","Björn","Casper","Cees","Chris","Christian","Christiaan","Colin","Cornelis","Dani","Dennis","Dirk","Dominic","Eduard","Eelco","Erik","Erwin","Ezra","Faas","Filip","Florian","Frank","Frederik","Freek","Gerard","Gerrit","Giel","Gijs","Glenn","Govert","Harm","Harold","Hendrik","Henrik","Huub","Ian","Ivo","Jacob","Jake","Jan","Jarno","Jason","Jeffrey","Jeremy","Jim","Jimmy","Johan","Johannes","Jonas","Jonathan","Jos","Joshua","Justin","Kay","Kevin","Kjeld","Klaas","Lennard","Lennart","Leon","Lex","Liam","Loek","Lorenzo","Louis","Lowie","Maarten","Magnus","Maikel","Marc","Marcel","Marco","Martijn","Mathias","Matthijs","Maurits","Menno","Michiel","Nathan","Nico","Oscar","Pascal","Patrick","Paul","Peter","Philip","Pieter","Pim","Quincy","Remco","Rick","Rik","Robert","Rogier","Rowan","Ruud","Simon","Stefan","Steven","Thom","Victor","Vincent","Willem","Wouter","Yannick"],n9=["Emma","Sophie","Julia","Mila","Tess","Sara","Anna","Noor","Lotte","Liv","Eva","Nora","Zoë","Evi","Yara","Saar","Nina","Fenna","Lieke","Fleur","Isa","Roos","Lynn","Sofie","Sarah","Milou","Olivia","Maud","Lisa","Vera","Luna","Lina","Noa","Feline","Loïs","Lena","Floor","Charlotte","Esmee","Julie","Iris","Lara","Amber","Hailey","Mia","Lize","Isabelle","Cato","Fenne","Sanne","Norah","Sophia","Ella","Nova","Elin","Femke","Lizzy","Linde","Lauren","Rosalie","Lana","Emily","Elise","Esmée","Anne","Isabelle","Demi","Hannah","Liva","Suze","Fay","Isabel","Benthe","Evi","Amy","Jasmijn","Niene","Sterre","Fenna","Fiene","Liz","Ise","Mara","Nienke","Indy","Romy","Lola","Puck","Nora","Merel","Bente","Eline","Lily","Leah","Naomi","Mirthe","Valerie","Noor","Liva","Jade","Juul","Lise","Myrthe","Veerle","Aafke","Alicia","Amira","Aniek","Annabel","Annelies","Anouk","Astrid","Babette","Bianca","Britt","Carlijn","Chantal","Claire","Dagmar","Danique","Daphne","Denise","Dominique","Doris","Eefje","Elena","Eline","Elisa","Elisabeth","Ellen","Esther","Eveline","Fabienne","Felice","Fleur","Frederique","Gwen","Hanna","Heleen","Helena","Ilona","Imke","Inge","Irene","Iris","Janna","Janneke","Jasmine","Jennifer","Jessica","Joelle","Judith","Julia","Karin","Karlijn","Kim","Kirsten","Kyra","Laura","Lena","Lianne","Liesbeth","Linda","Lisanne","Lisette","Louise","Maartje","Manon","Margot","Marieke","Marijke","Marlies","Marloes","Marthe","Melissa","Michelle","Nadine","Natalie","Nicole","Nina","Noortje","Paulien","Petra","Rachel","Renee","Robin","Rosa","Roxanne","Sabine","Sandra","Saskia","Silke","Simone","Suzanne","Sylvie","Tamara","Tanja","Tara","Thea","Thirza","Tina","Tineke","Ursula","Victoria","Wendy","Wilma","Xandra","Yasmin","Yvette","Yvonne","Zara"],i9=["de Jong","Jansen","de Vries","van den Berg","van Dijk","Bakker","Janssen","Visser","Smit","Meijer","de Boer","Mulder","de Groot","Bos","Vos","Peters","Hendriks","van Leeuwen","Dekker","Brouwer","de Wit","Dijkstra","Smits","de Graaf","van der Meer","van der Linden","Kok","Jacobs","de Haan","Vermeulen","van den Heuvel","van der Veen","van den Broek","de Bruijn","de Bruin","van der Heijden","Schouten","van Beek","Willems","van Vliet","van de Ven","Hoekstra","Maas","Verhoeven","Koster","van Dam","van der Wal","Prins","Blom","Huisman","Peeters","Kuipers","van Veen","van Dongen","Veenstra","Kramer","van den Bosch","van der Meulen","Mol","Zwart","van der Laan","Martens","van de Pol","Postma","Tromp","Borst","Boon","van Doorn","Jonker","van der Velden","Willemsen","van Wijk","Groen","Gerritsen","Bosch","van Loon","van der Ploeg","de Ruiter","Molenaar","Boer","Klein","de Koning","van de Kamp","van der Horst","Verbeek","Vink","Goossens","Scholten","Hartman","van Dalen","van Elst","Brink","Boekel","van de Berg","Berends","van der Hoek","Kuiper","Kooijman","de Lange","van der Sluis","van Gelder","Martens","van Asselt","Timmermans","van Vliet","van Rijn","van Schaik","Bosman","Wolters","van Hout","Hermans","van Rooij","de Vos","van Donselaar","Evers","van den Brink","Verkerk","Groeneveld","van Duijn","Schuurman","Hoogendoorn","van Zanten","Koopman","Cornelissen","van Driel","Teunissen","Versteeg","van Deursen","Schipper","van Kempen","Bouwman","van der Valk","Nijhuis","van der Werf","van den Akker","Verhoef","Wessels","van der Poel","Driessen","van Oosten","Lambrechts","van der Vlist","Hoogeveen","van Gils","Rietveld","Barendrecht","van der Spek","Stam","van der Linde","Boersma","van Dijk","Schepers","van der Kolk","Roelofs","van der Velden","van den Burg","Westra","van der Steen","Pronk","van der Veer","Rozendaal","van den Bos","Konings","van der Wiel","Noordam","van der Laan","Schut","van der Vlugt","Witteveen","van der Zwan","Boogaard","van der Waal","Stolk","van der Windt","Rutten","van der Zanden","Spaans","van der Zwaan","Roos","van der Zijl","Schoenmaker","van Diepen","Romeijn","van Doesburg","Schippers","van Eck","Rijken","van Egmond","Schrama","van Eijk","Ruijter","van Engelen","Sanders","van Es","Schenk","van Essen","van Gaal","van Geenen","van Gent","van Gestel","van Gool","van Grinsven","van Gurp","van Haaften","van Haren","van Hattem","van Hees"],r9=class extends Li{getFirstNamesMaleJson(){return a9}getFirstNamesFemaleJson(){return n9}getLastNamesJson(){return i9}},s9=["Ababei","Apostol","Ardelean","Avram","Baciu","Badea","Balan","Barbu","Bejan","Bicu","Blaga","Boboc","Bogdan","Boroș","Botezatu","Bradea","Bratu","Bucur","Burlacu","Butnaru","Călin","Căpățână","Caragea","Cazan","Ceaușu","Cercel","Cernat","Chiriac","Chirila","Chiriță","Chis","Ciobanu","Ciocan","Ciorbea","Cojocaru","Coman","Constantin","Constantinescu","Cornea","Cosma","Costache","Costin","Cozma","Crăciun","Crețu","Crisan","Cristea","Croitoru","Cuza","Danciu","Danila","Dascălu","David","Diaconescu","Diaconu","Dima","Dincă","Dinu","Dobre","Dobrescu","Dogaru","Drăgan","Drăghici","Drăghicescu","Dumitrascu","Dumitrescu","Dumitru","Duta","Enache","Ene","Farcas","Filimon","Filip","Florea","Florescu","Frățilă","Gabor","Gavrila","Georgescu","Gheorghe","Gheorghita","Gheorghiu","Gherman","Ghiță","Giurgiu","Gliga","Goga","Goran","Grigoras","Grigore","Grigorescu","Grosu","Groza","Hanganu","Hodor","Hossu","Iacob","Iancu","Ieremia","Ilie","Iliuta","Ion","Ionescu","Ioniță","Iordache","Iordănescu","Iorgu","Iosif","Iovu","Irimia","Isac","Istrate","Ivan","Ivascu","Jianu","Lazar","Luca","Luchian","Lungu","Lupu","Macovei","Maftei","Man","Manea","Manole","Manolache","Manolea","Marcu","Marian","Marin","Marinescu","Marta","Matei","Mateescu","Mărgărit","Micu","Mihai","Mihăilescu","Miloș","Mirea","Mirică","Miron","Moise","Moldovan","Moldoveanu","Morar","Moraru","Muntean","Munteanu","Mureșan","Mușat","Năstase","Neacșu","Neagoe","Neagu","Neamțu","Necula","Nedelcu","Negrea","Negrescu","Negru","Nica","Nichita","Nicolae","Nicolescu","Nistor","Niță","Olaru","Oltean","Olteanu","Oprea","Oproiu","Pârvu","Pascu","Pătrașcu","Păun","Pavel","Petre","Petrescu","Pîrvu","Pop","Popa","Popescu","Popovici","Preda","Puiu","Radu","Radulescu","Roman","Roșca","Roșu","Rus","Rusu","Sandu","Sârbu","Sava","Savu","Simion","Simionescu","Socol","Solomon","Spânu","Stan","Stanciu","Stancu","Stănescu","Ștefan","Ștefănescu","Stoian","Stoica","Stroe","Suciu","Tănase","Tătaru","Teodorescu","Ticu","Toma","Tomescu","Trandafir","Trifan","Tudor","Tudoran","Tudose","Ungureanu","Ursu","Vaduva","Varga","Vasile","Vasilescu","Vasiliu","Vatamanu","Vâlcu","Vintilă","Vișan","Vlad","Voicu","Voinea","Zaharia","Zamfir"],o9=["Ion","Gheorghe","Vasile","Constantin","Nicolae","Dumitru","Petre","Ioan","Alexandru","Ștefan","Grigore","Marin","Victor","Cornel","Traian","Ilie","Mircea","Radu","Tudor","Pavel","Costică","Viorel","Aurel","Valeriu","Emil","Andrei","Mihai","Iuliu","Stan","Anghel","Zaharia","Zamfir","Haralambie","Iordache","Savu","Panait","Spiridon","Chiriac","Avram","Axente"],l9=["Mihai","Alexandru","Ion","Ioan","Gheorghe","Vasile","Viorel","Mircea","Ionel","Dan","Valeriu","Emil","Marian","Aurel","Doru","Virgil","Florin","Adrian","Petrică","Nicolae","Ștefan","Constantin","Dumitru","Gelu","Stelian","Silviu","Cezar","Ovidiu","Liviu","Valentin","Romeo","Lucian","Nelu","Gicu","Relu","Tiberiu","Eugen","Corneliu","Dorel","Tănase"],d9=["Cristian","Marius","Gabriel","Daniel","Sorin","Claudiu","Ciprian","Laurențiu","Bogdan","Cosmin","Răzvan","Cătălin","George","Alin","Robert","Leonard","Nicușor","Costel","Paul","Remus","Sergiu","Mugurel","Călin","Horia","Codrin","Septimiu","Sever","Silvestru","Teofil","Valer","Benone","Mihai","Alexandru","Ion","Ioan","Adrian","Florin","Silviu","Ovidiu","Liviu"],c9=["Ionuț","Andrei","Alexandru","Bogdan","Răzvan","Adrian","Cătălin","George","Robert","Cristian","Mihai","Gabriel","Paul","Ion","Ioan","Ștefan","Daniel","Marius","Florin","Cosmin","Claudiu","Ciprian","Alin","Silviu","Vlad","Valentin","Iulian","Marian","Lucian","Doru","Horațiu","Gruia","Glad","Decebal","Dacian","Arcadie","Aristide","Apolodor","Cazimir","Filaret"],u9=["Alexandru","Andrei","Vlad","Robert","Ștefan","Ionuț","Cristian","Mihai","Gabriel","Bogdan","Adrian","Cătălin","Darius","Sebastian","Raul","Denis","Cosmin","George","Alin","Marian","Valentin","Emanuel","Rareș","David","Octavian","Mădălin","Răzvan","Eduard","Ion","Ioan","Basarab","Sabin","Marcel","Narcis","Codruț","Bujor","Camil","Cantemir","Carol","Lorin"],m9=["David","Matei","Luca","Andrei","Alexandru","Ștefan","Darius","Rareș","Eduard","Gabriel","Mario","Nicolas","Iustin","Tudor","Cristian","Ion","Ioan","Teodor","Filip","Ianis","Antonio","Denis","Sebastian","Raul","Victor","Ionuț","Robert","Vlad","Yannis","Mihai","Patrick","Albert","Eric","Vladimir","Iancu","Dominic","Matias","Casian","Damian","Ayan"],g9=["Andrei","David","Matei","Alexandru","Ștefan","Tudor","Filip","Luca","Nicolas","Patrick","Ianis","Albert","Eric","Vladimir","Iancu","Ion","Ioan","Dominic","Matias","Casian","Cezar","Damian","Ayan","Marc","Tomas","Lucas","Victor","Sebastian","Edward","Aris","Mateo","Rian","Beniamin","Clement","Achim","Adam","Adelin","Angel","Anton","Antoniu"],p9=["Maria","Elena","Ana","Floarea","Georgeta","Elisabeta","Marioara","Rodica","Silvia","Constanța","Victoria","Ecaterina","Ileana","Stana","Aurica","Sanda","Viorica","Stela","Anica","Paraschiva","Gherghina","Ioana","Anca","Livia","Lucia","Catrina","Eugenia","Verona","Smaranda","Mioara","Domnica","Olga","Parasca","Profira","Safta","Solomia","Zenovia","Aglaia","Catinca","Chira"],h9=["Maria","Elena","Ana","Mihaela","Doina","Mariana","Angela","Gabriela","Daniela","Viorica","Adriana","Steliana","Eugenia","Lucia","Paula","Carmen","Veronica","Tatiana","Luminița","Camelia","Liliana","Cornelia","Felicia","Simona","Mirela","Geta","Lidia","Adina","Violeta","Otilia","Valeria","Sidonia","Marilena","Julieta","Hortensia","Grațiela","Despina","Cezara","Brândușa","Sonia"],f9=["Maria","Elena","Ana","Monica","Alina","Claudia","Nicoleta","Florentina","Cristina","Ramona","Loredana","Corina","Dana","Oana","Roxana","Alis","Magdalena","Raluca","Delia","Manuela","Ionela","Geanina","Iuliana","Andreea","Valentina","Ruxandra","Lavinia","Denisa","Crina","Codruța","Cosmina","Letiția","Minerva","Medeea","Mirabela","Mihaela","Gabriela","Daniela","Simona","Camelia"],A9=["Maria","Elena","Ana","Andreea","Alexandra","Diana","Roxana","Oana","Adina","Bianca","Raluca","Irina","Mădălina","Denisa","Georgiana","Ioana","Ana-Maria","Laura","Cosmina","Simona","Alina","Cristina","Nicoleta","Mihaela","Ramona","Loredana","Mirela","Daniela","Camelia","Florentina","Sabina","Narcisa","Iulia","Catrinel","Daciana","Steluța","Nora","Malvina","Rada","Zoița"],y9=["Maria","Elena","Ana","Alexandra","Denisa","Bianca","Larisa","Sabrina","Rebeca","Roberta","Beatrice","Patricia","Lorena","Mihaela","Gabriela","Paula","Diana","Laura","Iulia","Mădălina","Georgiana","Andra","Roxana","Oana","Raluca","Corina","Alina","Camelia","Cristina","Nicoleta","Ștefania","Karina","Marta","Ofelia","Melania","Isabela","Riana","Dora","Iasmine","Andrada"],E9=["Maria","Elena","Ana","Ioana","Andra","Daria","Teodora","Alessia","Sara","Maya","Antonia","Eva","Miruna","Erika","Iulia","Alexandra","Andreea","Denisa","Bianca","Deea","Amalia","Carina","Sonia","Catinca","Ilinca","Rebeca","Roberta","Ariana","Medeea","Sofia","Noemi","Aida","Nectaria","Ilona","Agata","Amora","Xenia","Malina","Zenaida","Adora"],b9=["Maria","Elena","Ana","Sofia","Anastasia","Eva","Natalia","Emma","Antonia","Ingrid","Raisa","Anais","Ilinca","Medeea","Teodora","Carla","Amalia","Ines","Irina","Ania","Petra","Cezara","Gloria","Iris","Ema","Clara","Zoe","Adeline","Evelina","Damaris","Arina","Mina","Evelin","Luna","Kira","Tessa","Sia","Ina","Thea","Lia","Sora","Roza","Vanda","Mona","Eliza","Hrisanti","Casiana"],v9=class extends Li{getFirstNamesMaleJson(){return[]}getFirstNamesFemaleJson(){return[]}getLastNamesJson(){return s9}getFirstNamesMaleByDecade(){return[{startYear:1950,endYear:1959,names:o9},{startYear:1960,endYear:1969,names:l9},{startYear:1970,endYear:1979,names:d9},{startYear:1980,endYear:1989,names:c9},{startYear:1990,endYear:1999,names:u9},{startYear:2e3,endYear:2009,names:m9},{startYear:2010,endYear:2019,names:g9}]}getFirstNamesFemaleByDecade(){return[{startYear:1950,endYear:1959,names:p9},{startYear:1960,endYear:1969,names:h9},{startYear:1970,endYear:1979,names:f9},{startYear:1980,endYear:1989,names:A9},{startYear:1990,endYear:1999,names:y9},{startYear:2e3,endYear:2009,names:E9},{startYear:2010,endYear:2019,names:b9}]}},w9=["Adam","Adrian","Albin","Alex","Alexander","Alf","Alfred","Ali","Allan","Alvin","Anders","André","Andreas","Anton","Arne","Aron","Arthur","Arvid","August","Axel","Bengt","Benjamin","Bernt","Bertil","Billy","Birger","Bjarne","Björn","Bo","Börje","Carl","Casper","Christer","Christian","Christoffer","Claes","Conny","Curt","Dan","Daniel","David","Dennis","Dick","Douglas","Eddie","Edvin","Einar","Elias","Elliot","Elton","Emil","Eric","Erik","Erland","Evert","Felix","Filip","Folke","Frank","Fredrik","Gabriel","Gert","Glenn","Gunnar","Gustaf","Gustav","Göran","Gösta","Hampus","Hans","Harald","Harry","Hasse","Helge","Henrik","Herbert","Hjalmar","Holger","Hugo","Håkan","Ingemar","Ingvar","Isak","Ivan","Ivar","Jack","Jacob","Jakob","Jan","Jan-Erik","Jan-Olof","Jens","Jerry","Jesper","Jimmy","Joachim","Joakim","Joel","Johan","Johannes","John","Johnny","Jon","Jonas","Jonathan","Josef","Julian","Jörgen","Kaj","Kalle","Karl","Karl-Erik","Karl-Johan","Kenneth","Kent","Kevin","Kjell","Knut","Krister","Kristian","Kristoffer","Kurt","Lars","Lars-Erik","Lars-Göran","Lars-Olof","Leif","Lennart","Leo","Leon","Liam","Linus","Love","Lucas","Ludvig","Lukas","Magnus","Malte","Manfred","Marcus","Markus","Martin","Mathias","Mats","Matteo","Mattias","Max","Melker","Melvin","Mikael","Milo","Milton","Morgan","Måns","Mårten","Nicklas","Niclas","Niklas","Nils","Noah","Noel","Ola","Oliver","Olle","Olof","Olov","Oscar","Oskar","Ove","Patrik","Paul","Peder","Per","Per-Anders","Per-Arne","Per-Erik","Per-Olof","Peter","Petter","Philip","Pierre","Pontus","Pär","Ralf","Rasmus","Reine","Rickard","Rikard","Robert","Robin","Roger","Roland","Rolf","Ronny","Roy","Ruben","Rune","Samuel","Sebastian","Sigge","Simon","Sixten","Sonny","Staffan","Stefan","Sten","Stig","Sture","Sune","Svante","Sven","Sven-Erik","Sören","Tage","Ted","Teodor","Theo","Theodor","Thomas","Tim","Timmie","Tobias","Tomas","Tommy","Tony","Torbjörn","Tord","Tore","Torsten","Ulf","Uno","Urban","Valter","Verner","Victor","Vidar","Viggo","Viktor","Vilhelm","Vilgot","Vincent","Walter","William","Willy","Åke","Örjan"],I9=["Agnes","Agneta","Alexandra","Alice","Alicia","Alma","Alva","Amanda","Andrea","Anette","Angela","Angelica","Anita","Ann","Ann-Charlott","Ann-Christin","Ann-Kristin","Ann-Louise","Ann-Marie","Ann-Sofie","Anna","Anna-Carin","Anna-Karin","Anna-Lena","Anna-Maria","Anne","Anneli","Annelie","Annika","Astrid","Barbro","Beatrice","Berit","Bettan","Birgit","Birgitta","Bodil","Britt","Britt-Inger","Britt-Marie","Britta","Camilla","Carina","Carita","Carola","Caroline","Catarina","Catrin","Cecilia","Charlotta","Charlotte","Christina","Cornelia","Daniela","Desirée","Doris","Ebba","Edit","Eivor","Elena","Elin","Elina","Elisabet","Elisabeth","Ella","Ellen","Ellinor","Elsa","Elvira","Emelie","Emilia","Emma","Erika","Eva","Eva-Lena","Eva-Marie","Ewa","Fanny","Felicia","Filippa","Freja","Frida","Gabriella","Gerd","Gertrud","Gull-Britt","Gun","Gun-Britt","Gunborg","Gunhild","Gunilla","Gunnel","Hanna","Harriet","Helen","Helena","Helene","Hilma","Ida","Ines","Inga","Inga-Lill","Ingeborg","Ingegärd","Inger","Ingrid","Irene","Iris","Isabell","Isabella","Isabelle","Jeanette","Jennie","Jennifer","Jenny","Jessica","Jill","Joanna","Johanna","Jonna","Josefin","Josephine","Judith","Julia","Kajsa","Karin","Karolina","Katarina","Kerstin","Klara","Kristin","Kristina","Laila","Lena","Lilian","Lilly","Lina","Linda","Linn","Linnea","Linnéa","Lisa","Liselotte","Lisbeth","Liv","Lotta","Louise","Lovisa","Madeleine","Magdalena","Maj","Maj-Britt","Maja","Malin","Margareta","Margit","Margot","Maria","Marianne","Marie","Marie-Louise","Marina","Marita","Marlene","Martina","Matilda","Maud","Melissa","Mikaela","Mimmi","Moa","Molly","Mona","Monica","Märta","Nathalie","Nellie","Nicole","Nicki","Nikki","Nina","Nora","Nova","Olivia","Patricia","Paula","Paulina","Pernilla","Petra","Pia","Rakel","Rebecca","Rebecka","Regina","Renée","Rigmor","Ronja","Rose-Marie","Rosita","Rut","Sabina","Saga","Sandra","Sanna","Sara","Selma","Signe","Sigrid","Siri","Siv","Siw","Sofia","Sofie","Solveig","Sonja","Stella","Stina","Susanne","Svea","Sylvia","Tanja","Terese","Teresia","Therese","Tilde","Tindra","Tina","Tove","Tyra","Ulla","Ulla-Britt","Ulrika","Vanja","Vera","Veronica","Victoria","Viola","Viktoria","Wilma","Yvonne","Åsa","Åse"],C9=["Abrahamsson","Adamsson","Adolfsson","Ahl","Ahlberg","Ahlgren","Ahlqvist","Ahlström","Alexandersson","Alfredsson","Alm","Almgren","Almquist","Almqvist","Andersson","Andreasson","Arvidsson","Asplund","Augustsson","Axelsson","Backman","Bengtsson","Berg","Berggren","Bergh","Berglund","Bergman","Bergqvist","Bergsten","Bergström","Björk","Björklund","Björkman","Blom","Blomberg","Blomgren","Blomqvist","Boberg","Boman","Borg","Boström","Bäckman","Bäckström","Carlsson","Claesson","Dahl","Dahlberg","Dahlgren","Dahlin","Dahlqvist","Dahlström","Danielsson","Davidsson","Edlund","Ek","Ekberg","Ekblad","Eklund","Ekman","Ekström","Eliasson","Elm","Engberg","Englund","Engman","Engström","Eriksson","Erlandsson","Fagerberg","Falk","Fors","Forsberg","Forsgren","Forslund","Forsman","Fransson","Fredriksson","Friberg","Frisk","Grahn","Granberg","Granlund","Gunnarsson","Gustafsson","Göransson","Hagberg","Haglund","Hagman","Hagström","Hall","Hallberg","Hallgren","Hammar","Hammarström","Hansson","Hedin","Hedlund","Hedman","Hellberg","Hellgren","Hellman","Hellqvist","Hellström","Henriksson","Hermansson","Hjort","Holm","Holmberg","Holmgren","Holmqvist","Holmström","Håkansson","Hägg","Hägglund","Högberg","Höglund","Ingvarsson","Isaksson","Israelson","Ivarsson","Jakobsson","Jansson","Jensen","Johannesson","Johansson","Johnsson","Jonas","Jonsson","Jönsson","Karlsson","Karlström","Kjellberg","Knutsson","Kristiansson","Kron","Kullberg","Lager","Landgren","Lantz","Larsson","Leander","Lennartsson","Lilja","Liljeblad","Liljedahl","Liljegren","Lind","Lindberg","Lindblad","Lindblom","Lindell","Lindén","Linder","Lindgren","Lindholm","Lindkvist","Lindman","Lindqvist","Lindstedt","Lindström","Lindvall","Ljung","Ljungberg","Ljunggren","Lund","Lundberg","Lundblad","Lundgren","Lundh","Lundin","Lundmark","Lundqvist","Lundstedt","Lundström","Löfgren","Magnusson","Malm","Malmberg","Malmgren","Malmqvist","Malmström","Martinsson","Mattsson","Melin","Moberg","Molin","Månsson","Mårtensson","Nilsson","Norberg","Nordin","Nordlund","Nordström","Norén","Norlin","Norman","Nyberg","Nygren","Nylander","Nyman","Nyström","Ohlsson","Olofsson","Olsson","Ottosson","Palm","Palmqvist","Paulsson","Persson","Pettersson","Pihl","Pålsson","Rickardsson","Ring","Robertsson","Rosell","Rosén","Rosenberg","Rundqvist","Rydberg","Rydén","Sahlin","Samuelsson","Sandberg","Sandell","Sandin","Sandström","Sjöberg","Sjögren","Sjöholm","Sjölander","Sjölund","Sjöstedt","Sjöström","Skog","Skoglund","Sköld","Stenberg","Stenlund","Stenström","Strand","Strandberg","Ström","Strömberg","Sundberg","Sundell","Sundgren","Sundin","Sundqvist","Sundström","Svanberg","Svedberg","Svensson","Svärd","Söderberg","Södergren","Söderholm","Söderlund","Söderqvist","Söderström","Tholin","Thor","Thulin","Thunberg","Törnblom","Törnqvist","Ullberg","Wahlberg","Wahlgren","Wahlström","Wall","Wallén","Wallgren","Wallin","Wennberg","Wennerberg","Werner","Westberg","Wester","Westerberg","Westerlund","Westin","Westlund","Westman","Wiberg","Wickman","Widén","Wiklund","Wikström","Åberg","Ågren","Åkerberg","Åkerlund","Åkerman","Åkerström","Ålund","Åsberg","Åström","Öberg","Ögren","Öhlin","Öhman","Östberg","Östlund","Östman"],S9=class extends Li{getFirstNamesMaleJson(){return w9}getFirstNamesFemaleJson(){return I9}getLastNamesJson(){return C9}},T9=["Aabid","Aadil","Aaftab","Aahad","Aalam","Aamir","Aarif","Aariz","Aasim","Aatif","Abaan","Abbas","Abdul","Abdul Ahad","Abdul Aziz","Abdul Basit","Abdul Ghafoor","Abdul Hameed","Abdul Hannan","Abdul Jabbar","Abdul Kareem","Abdul Latif","Abdul Malik","Abdul Mannan","Abdul Qadir","Abdul Rahim","Abdul Rashid","Abdul Rauf","Abdul Rehman","Abdul Sattar","Abdul Wahab","Abdullah","Abid","Abrar","Absaar","Adil","Adnan","Afaq","Afzal","Agha","Ahad","Ahmad","Ahmar","Ahsen","Ahsan","Aijaz","Akbar","Akhtar","Akif","Alauddin","Alam","Ali","Altaf","Amaan","Ameen","Amir","Ammar","Anas","Anis","Anwar","Aqeel","Arif","Arman","Arqam","Arsalan","Asad","Ashar","Ashfaq","Ashraf","Asif","Asim","Ata","Athar","Ateeq","Atif","Aun","Aurangzeb","Awais","Ayaz","Azam","Azhar","Aziz","Babar","Babur","Badar","Badr","Badruddin","Bahadur","Bahram","Bakhtiar","Baligh","Baqir","Bari","Bashar","Bashir","Basheer","Basit","Bayazid","Bihzad","Bilal","Binyamin","Bismil","Burhan","Burhanuddin","Cemal","Chaman","Chand","Changez","Chaudhry","Chiragh","Daamir","Daanish","Dabir","Daniyal","Danyal","Dar","Dara","Danish","Daud","Dawood","Deen","Dilawar","Dildar","Dost","Faakhir","Faaris","Faazil","Fahad","Fahim","Faizan","Fakhar","Fakhruddin","Falah","Faran","Faraz","Fareed","Farhad","Faris","Farooq","Farrukh","Faryad","Fateh","Fayyaz","Feroz","Fida","Firdous","Firoz","Furqan","Jabbar","Jabir","Jafar","Jahan","Jahangir","Jahanzaib","Jahanzeb","Jalal","Jalaluddin","Jalib","Jamal","Jameel","Jamshaid","Jamshed","Javed","Jawad","Jibran","Junaid","Kabeer","Kabir","Kaleem","Kamal","Kamil","Kashif","Kazim","Khaleel","Khalid","Khalil","Khan","Khizr","Khurshid","Khurram","Kifayat","Kiran","Kisra","Kumail","Labeeb","Laeeq","Laith","Lais","Latif","Liaqat","Lutf","Lutfi","Lutfullah","Luqman","Maaz","Mahboob","Mahdi","Mahmood","Majid","Malik","Mansoor","Maqbool","Masood","Mehmood","Mehdi","Mehrab","Mian","Mir","Mirza","Mohammad","Mohib","Mohsin","Mohtashim","Moiz","Mubarak","Mubashir","Mudassir","Mufeed","Mujahid","Mukarram","Mukhtar","Mumtaz","Munawar","Munir","Murad","Mustafa","Muzaffar","Nadeem","Nadir","Naeem","Naim","Najam","Najib","Najeeb","Naseem","Nashit","Nasir","Natiq","Nawab","Naveed","Nazim","Nihal","Noor","Nouman","Obaid","Omair","Omar","Osama","Owais","Parsa","Parvez","Pervez","Pervaiz","Qadir","Qaiser","Qasim","Qazi","Qudrat","Qudratullah","Qurban","Qutbuddin","Rabbani","Rafi","Rafique","Rahim","Rahman","Rais","Rajab","Rameez","Rashid","Rauf","Rehan","Riaz","Rizwan","Rohail","Rumi","Sabit","Sadiq","Saeed","Safdar","Safi","Sahir","Salam","Salman","Sameer","Sami","Sarmad","Sarwar","Shabbir","Shafaq","Shahid","Shaheen","Shahbaz","Shahzaib","Shahnawaz","Shahryar","Shams","Sharif","Shaukat","Shehryar","Shoaib","Sibtain","Sikandar","Siraj","Sohail","Suhail","Suleman","Tabish","Tahir","Taj","Talat","Talha","Tameem","Tanveer","Tariq","Tasawwar","Taufiq","Tauqeer","Tayyab","Tufail","Turab","Ubaid","Ubaidullah","Ubayd","Ulfat","Umar","Umair","Usama","Usman","Uwais","Vali","Vasif","Waheed","Wahid","Wajahat","Wajid","Waleed","Wali","Wasif","Waqas","Yaqub","Yahya","Yameen","Yasir","Yaseen","Yousaf","Yousuf","Yunus","Zafar","Zahid","Zahir","Zain","Zakir","Zaman","Zeeshan","Zia","Zubair","Zulfiqar"],N9=["Aabida","Aafiya","Aaliya","Aamina","Aamira","Aaniya","Aarifa","Aasia","Aasiya","Abeer","Abeera","Adeelah","Adeena","Adila","Afifa","Afiya","Afsana","Aiman","Aina","Ainy","Aisha","Aiza","Ajwa","Akira","Aleena","Alia","Alina","Alishba","Almas","Amal","Amani","Ameena","Amira","Anabia","Anam","Anaya","Aneeqa","Anisa","Anum","Aqsa","Arfa","Arisha","Arooba","Arsala","Asfiya","Asma","Atika","Ayesha","Azka","Baano","Bahar","Bahira","Bakhtawar","Balqees","Bano","Bareera","Basma","Batool","Beena","Behjat","Benazir","Bibi","Bisma","Bushra","Cahira","Chahat","Chaman","Chanda","Chandni","Chand","Chinar","Dabira","Dalia","Dania","Dareen","Darina","Deeba","Dilara","Dilawar","Dilnasheen","Dina","Durdanah","Durre","Durriya","Eeman","Eesha","Efa","Ehraam","Eila","Eiliya","Eiman","Eira","Emaan","Eman","Eram","Erisha","Erum","Eshaal","Eshal","Eshita","Faariha","Fabiha","Fahima","Faiza","Fakhira","Falaq","Fareeha","Fariha","Farisa","Fariya","Farzana","Faryal","Fasiha","Fatemah","Fatima","Fawzia","Fehmida","Feroza","Fiza","Gehna","Ghazal","Ghazala","Gohar","Gul","Gulab","Gulalai","Gulbahar","Gulbano","Gulchehra","Gulchin","Gulnar","Gulnaz","Gulraiz","Gulshan","Gulsaba","Gulzar","Habeeba","Habiba","Hadia","Hafsa","Haleema","Hamda","Hameeda","Hania","Hareem","Haseena","Hasna","Haya","Hiba","Hifza","Hina","Hira","Hoor","Huda","Huma","Ibadah","Iffat","Ifra","Ijlal","Ikra","Ila","Ilma","Iman","Inaya","Iqra","Irha","Irum","Isra","Izza","Jabeen","Jahan","Jahanara","Jalila","Jamila","Jannat","Jasmin","Javeria","Jiya","Joya","Juleeha","Kaif","Kainat","Kalsoom","Kanza","Kashaf","Kashifa","Kausar","Khadija","Khalida","Khanam","Khansa","Khawla","Khizra","Kinza","Kiran","Komal","Kubra","Kulsoom","Labeeba","Ladan","Laila","Laiba","Laraib","Latifa","Lina","Liyana","Lubna","Lujaina","Luma","Luqia","Maham","Maheen","Mahira","Mahjabeen","Mahnoor","Mahveen","Malaika","Manahil","Marwa","Maryam","Mehak","Meher","Mehreen","Mehvish","Mishal","Momina","Muneeza","Munira","Naaila","Nabeela","Nadia","Naeema","Naila","Nashita","Nashmia","Natasha","Nazia","Neema","Nighat","Nihal","Nida","Nimra","Nooreen","Nosheen","Omaima","Omera","Ommarah","Omnia","Oraina","Owaiza","Parisa","Parveen","Parvin","Pervaiz","Parween","Parizay","Pehlaaj","Perveen","Pinar","Qamar","Qandeel","Qanita","Qasia","Qirat","Qudsia","Qurratulain","Quratulain","Rabia","Rafia","Rahat","Raima","Rakhshanda","Ramsha","Rania","Rashida","Reema","Rida","Rimsha","Rizwana","Rubab","Rubina","Rukhsana","Saba","Sabeena","Sabreen","Sadia","Safiya","Sahar","Sajida","Sakina","Saliha","Samaira","Sameena","Sanober","Saniya","Saraab","Savera","Sehar","Shabana","Shagufta","Shaheena","Shaista","Shanza","Sharmeen","Shazma","Shehla","Shehnaz","Sidra","Sobia","Sumbal","Sumaira","Sundas","Tabassum","Tahira","Tahseen","Tajwar","Tamanna","Tania","Tasneem","Tayyaba","Tazeen","Tehmina","Tehreem","Tooba","Tuba","Ulfat","Ulya","Umara","Ummara","Ummehabiba","Ummehani","Ummehuma","Ummejaveria","Urooj","Uzma","Vaneeza","Veena","Vibha","Wajiha","Waheeda","Wahida","Waniya","Warda","Wardah","Waseela","Waseema","Widad","Yamna","Yara","Yasira","Yasmeen","Yasmin","Yumna","Zahida","Zahra","Zaiba","Zainab","Zakia","Zamurrad","Zara","Zareena","Zarmeen","Zaynab","Zeba","Zehra","Zohra","Zoya","Zubia","Zulekha","Zunaira"],k9=["Abbasi","Abbas","Abidi","Afridi","Agha","Ahmad","Ahmed","Akbar","Akhtar","Ali","Alvi","Amrohi","Ansari","Anwar","Arain","Ashraf","Asghar","Attari","Awan","Azam","Babar","Badayuni","Bajwa","Bakhtiar","Baloch","Bangash","Barlas","Bashir","Batool","Beg","Behzad","Bengali","Bukhari","Bundi","Butt","Chandio","Chaudhary","Chauhan","Chishti","Chughtai","Chundrigar","Dahri","Dakhani","Dalvi","Dard","Dars","Daud","Dehlavi","Dhariwal","Durrani","Edhi","Ehsan","Ejaz","Elahi","Ebrahim","Farooqi","Faruqi","Fateh","Faizi","Fakhri","Firdausi","Gardezi","Gilani","Ghaznavi","Ghauri","Gondal","Habib","Haider","Hakeem","Hamdani","Hashmi","Hassan","Hussain","Hyder","Ibrahim","Idrisi","Iftikhar","Ilahi","Imami","Isfahani","Jafri","Jahangir","Jalali","Jalal","Jamali","Jatoi","Jilani","Junaidi","Kakakhel","Kamal","Kashif","Kazmi","Khan","Khurshid","Kirmani","Kiyani","Lahori","Lakhnavi","Lari","Leghari","Lughari","Madani","Mahmood","Malik","Mansoor","Marvi","Mashhadi","Masoodi","Mir","Mirza","Mughal","Mufti","Nadvi","Naqvi","Nasir","Niazi","Nizami","Noori","Noorani","Osmani","Panhwar","Paracha","Parvez","Pirzada","Qadri","Qasmi","Qureshi","Rabbani","Rafique","Rahman","Rashid","Rizvi","Sabri","Sadiqi","Saeed","Safi","Safvi","Samarqandi","Siddiqui","Syed","Tabrizi","Tajik","Tariq","Thanvi","Tirmizi","Usmani","Yousafzai","Yunus","Zaidi","Zubairi"],x9=class extends Li{getFirstNamesMaleJson(){return T9}getFirstNamesFemaleJson(){return N9}getLastNamesJson(){return k9}},L9=class{static normalizeBirthDate(t){if(!t||t.trim()===""||t.startsWith("0001-01-01"))return"";const e=t.trim(),n=e.match(/^(\d{4})-(\d{2})-(\d{2})/);if(n){const[,s,l,c]=n;return`${s}-${l}-${c}`}const r=new Date(e);if(!isNaN(r.getTime())){const s=r.getFullYear().toString().padStart(4,"0"),l=(r.getMonth()+1).toString().padStart(2,"0"),c=r.getDate().toString().padStart(2,"0");return`${s}-${l}-${c}`}return""}static isValidBirthDate(t){if(!t||t.trim()===""||t.startsWith("0001-01-01"))return!1;const e=new Date(t);return isNaN(e.getTime())?!1:e.getFullYear()>1&&e.getFullYear()<9999}};function D9(){return[{value:"random",label:"Random"},{value:"21-25",label:"21-25"},{value:"26-30",label:"26-30"},{value:"31-35",label:"31-35"},{value:"36-40",label:"36-40"},{value:"41-45",label:"41-45"},{value:"46-50",label:"46-50"},{value:"51-55",label:"51-55"},{value:"56-60",label:"56-60"},{value:"61-65",label:"61-65"}]}function R9(t){if(t==="random"||!t)return null;const e=t.split("-");if(e.length!==2)return null;const n=parseInt(e[0],10),r=parseInt(e[1],10);if(isNaN(n)||isNaN(r))return null;const s=new Date().getFullYear(),l=Math.floor((n+r)/2),c=s-l,m=Math.floor((r-n)/2);return{targetYear:c,yearDeviation:m}}function U9(){return[{value:"da",label:"Dansk",flag:"🇩🇰",alternativeCodes:["da-DK"]},{value:"de",label:"Deutsch",flag:"🇩🇪",alternativeCodes:["de-DE","de-AT","de-CH","de-LU","de-LI"]},{value:"en",label:"English",flag:"🇬🇧",alternativeCodes:["en-US","en-GB","en-CA","en-AU","en-NZ","en-IE","en-ZA","en-SG","en-IN"]},{value:"es",label:"Español",flag:"🇪🇸",alternativeCodes:["es-ES","es-MX","es-AR","es-CO","es-CL","es-PE","es-VE","es-EC","es-GT","es-CU","es-BO","es-DO","es-HN","es-PY","es-SV","es-NI","es-CR","es-PA","es-UY","es-PR"]},{value:"fr",label:"Français",flag:"🇫🇷",alternativeCodes:["fr-FR","fr-CA","fr-BE","fr-CH","fr-LU","fr-MC"]},{value:"it",label:"Italiano",flag:"🇮🇹",alternativeCodes:["it-IT","it-CH","it-SM","it-VA"]},{value:"nl",label:"Nederlands",flag:"🇳🇱",alternativeCodes:["nl-NL","nl-BE"]},{value:"ro",label:"Română",flag:"🇷🇴",alternativeCodes:["ro-RO","ro-MD"]},{value:"sv",label:"Svenska",flag:"🇸🇪",alternativeCodes:["sv-SE","sv-FI"]},{value:"ur",label:"اردو",flag:"🇵🇰",alternativeCodes:["ur-PK","ur-IN"]},{value:"fa",label:"فارسی",flag:"🇮🇷",alternativeCodes:["fa-IR","fa-AF"]}].sort((e,n)=>e.label.localeCompare(n.label))}var M9=t=>{switch(t.toLowerCase()){case"da":return new s4;case"de":return new C4;case"en":return new gv;case"es":return new D4;case"fa":return new _4;case"fr":return new O4;case"it":return new t9;case"nl":return new r9;case"ro":return new v9;case"sv":return new S9;case"ur":return new x9;default:return console.warn(`Language '${t}' is not supported. Falling back to English.`),new gv}};const _9=()=>{const t=qt(),[e,n]=b.useState({username:null,password:null,email:null}),r=b.useCallback(async()=>{if(!(t!=null&&t.sqliteClient))throw new Error("Database not initialized");const c=t.sqliteClient.settings.getEffectiveIdentityLanguage(),m=M9(c),p=t.sqliteClient.settings.getPasswordSettings(),g=Gf(p);return{identityGenerator:m,passwordGenerator:g}},[t==null?void 0:t.sqliteClient]),s=b.useCallback(async()=>{if(!(t!=null&&t.sqliteClient))return null;try{const{identityGenerator:c,passwordGenerator:m}=await r(),p=t.sqliteClient.settings.getDefaultIdentityGender(),g=t.sqliteClient.settings.getDefaultIdentityAgeRange(),A=R9(g),f=c.generateRandomIdentity(p,A),v=m.generateRandomPassword(),w=t.sqliteClient.settings.getDefaultEmailDomain(),S=w?`${f.emailPrefix}@${w}`:f.emailPrefix,T={email:S,firstName:f.firstName,lastName:f.lastName,gender:f.gender,birthdate:L9.normalizeBirthDate(f.birthDate.toISOString()),username:f.nickName,password:v};return n({username:f.nickName,password:v,email:S}),T}catch(c){return console.error("Error generating random alias:",c),null}},[t==null?void 0:t.sqliteClient,r]),l=b.useCallback(()=>new Zf().generateRandomEmailPrefix(),[]);return{generateAlias:s,generateRandomEmailPrefix:l,lastGeneratedValues:e,setLastGeneratedValues:n}},F9=({formId:t,isLoading:e,formData:n,onRestore:r,skipRestore:s=!1})=>{const l=b.useRef(!1),c=b.useCallback(async()=>{if(e)return;await St("PERSIST_FORM_VALUES",JSON.stringify({formId:t,data:n}),"background")},[t,n,e]),m=b.useCallback(async()=>{if(s||l.current)return!1;const g=await St("GET_PERSISTED_FORM_VALUES",null,"background");try{if(!g)return!1;let A=null;try{A=JSON.parse(g)}catch(v){return console.error("Error parsing persisted form data:",v),!1}return A.formId===t?(l.current=!0,r(A.data),!0):!1}catch(A){return console.error("Error loading persisted form data:",A),!1}},[t,r,s]),p=b.useCallback(async()=>{await St("CLEAR_PERSISTED_FORM_VALUES",null,"background")},[]);return b.useEffect(()=>{e||c()},[e,c]),b.useEffect(()=>()=>{p()},[p]),{loadPersistedValues:m,clearPersistedValues:p,persistFormValues:c}},tx={loginTitle:"Log in to AliasVault",username:"Потребителско име или имейл",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Въведете паролата си",rememberMe:"Запомни ме",loginButton:"Вход",noAccount:"Все още нямате профил?",createVault:"Ново хранилище",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Код за удостоверяване",authCodePlaceholder:"Enter 6-digit code",verify:"Провери",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Главна парола",unlockVault:"Отключи",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Наистина ли искате да излезете от профила си?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"Сега можете да използвате автозапълване в формуляри за вход в браузъра си.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Автоматично затваряне при следващи влизания",connectingTo:"Свързване към",switchAccounts:"Промяна на акаунта?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},ax={vault:"Сейф",emails:"Emails"},nx={loading:"Зареждане...",notice:"Известие",error:"Грешка",cancel:"Отмени",confirm:"Потвърждаване",remove:"Премахване",back:"Назад",next:"Следващ",use:"Използване",add:"Добавяне",delete:"Изтриване",undo:"Отмяна",save:"Запазване",saving:"Запазване...",edit:"Редактиране",create:"Създаване",or:"Или",close:"Затвори",dismiss:"Отхвърляне",logout:"Изход",copied:"Копирано!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Изключено",showPassword:"Show password",hidePassword:"Hide password",show:"Покажи",hide:"Скриване",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Прикачени файлове",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Двуфакторната идентификация",alias:"Alias",notes:"Notes",email:"Имейл",username:"Потребителско име",password:"Парола",generate:"Генериране",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Синхронизиране на хранилището",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Зареждане на още",offline:"Офлайн",offlineMode:"Работа в офлайн режим",pendingSync:"Синхронизиране...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"An unknown error occurred. Please try again.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"An unknown error occurred. Please try again.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},ix={or:"или",new:"Нова",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Затвори",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},rx={title:"Items",itemName:"Име",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Изтриване",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},sx={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Имейл",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},ox={"login.url":"Website URL","login.username":"Потребителско име","login.password":"Парола","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"Имейл","notes.content":"Notes","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},lx={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},dx={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},cx={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},ux={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Главна парола",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},mx={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Създаване на ключ за достъп",createFor:"Create a new passkey for",titleLabel:"Заглавие",titlePlaceholder:"Enter a name for this passkey",createButton:"Създаване на ключ за достъп",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Създаване на ключ за достъп",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},gx={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},px={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},hx={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},fx={offline:"Офлайн",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Отхвърляне"},B9={auth:tx,menu:ax,common:nx,content:ix,items:rx,itemTypes:sx,fieldLabels:ox,totp:lx,attachmentUploader:dx,emails:cx,settings:ux,passkeys:mx,recentlyDeleted:gx,upgrade:px,logout:hx,sync:fx},P9=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:dx,auth:tx,common:nx,content:ix,default:B9,emails:cx,fieldLabels:ox,itemTypes:sx,items:rx,logout:hx,menu:ax,passkeys:mx,recentlyDeleted:gx,settings:ux,sync:fx,totp:lx,upgrade:px},Symbol.toStringTag,{value:"Module"})),Ax={loginTitle:"Log in to AliasVault",username:"Username or email",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Log in",noAccount:"No account yet?",createVault:"Create new vault",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Codi d'autenticació",authCodePlaceholder:"Introduïu el codi de 6 dígits",verify:"Verifica",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Contrasenya Mestra",unlockVault:"Unlock",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Connectant a",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},yx={vault:"Vault",emails:"Emails"},Ex={loading:"S'està carregant...",notice:"Notice",error:"Error",cancel:"Cancel·la",confirm:"Confirma",remove:"Remove",back:"Enrere",next:"Següent",use:"Utilitza",add:"Add",delete:"Suprimeix",undo:"Undo",save:"Desa",saving:"Saving...",edit:"Edita",create:"Create",or:"Or",close:"Tanca",dismiss:"Dismiss",logout:"Tanca la sessió",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Mostra la contrasenya",hidePassword:"Amaga la contrasenya",show:"Show",hide:"Hide",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Attachments",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Two-factor authentication",alias:"Alias",notes:"Notes",email:"Correu electrònic",username:"Nom d’usuari",password:"Contrasenya",generate:"Generate",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Load more",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"An unknown error occurred. Please try again.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"An unknown error occurred. Please try again.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},bx={or:"or",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Tanca",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},vx={title:"Items",itemName:"Nom",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},wx={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Correu electrònic",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},Ix={"login.url":"Website URL","login.username":"Nom d’usuari","login.password":"Contrasenya","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"Correu electrònic","notes.content":"Notes","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},Cx={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},Sx={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},Tx={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},Nx={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Contrasenya Mestra",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},kx={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Títol",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},xx={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},Lx={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},Dx={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},Rx={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},O9={auth:Ax,menu:yx,common:Ex,content:bx,items:vx,itemTypes:wx,fieldLabels:Ix,totp:Cx,attachmentUploader:Sx,emails:Tx,settings:Nx,passkeys:kx,recentlyDeleted:xx,upgrade:Lx,logout:Dx,sync:Rx},j9=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:Sx,auth:Ax,common:Ex,content:bx,default:O9,emails:Tx,fieldLabels:Ix,itemTypes:wx,items:vx,logout:Dx,menu:yx,passkeys:kx,recentlyDeleted:xx,settings:Nx,sync:Rx,totp:Cx,upgrade:Lx},Symbol.toStringTag,{value:"Module"})),Ux={loginTitle:"Log in to AliasVault",username:"Username or email",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Log in",noAccount:"No account yet?",createVault:"Create new vault",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Authentication Code",authCodePlaceholder:"Enter 6-digit code",verify:"Verify",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Master Password",unlockVault:"Unlock",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Connecting to",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},Mx={vault:"Vault",emails:"Emails"},_x={loading:"Loading...",notice:"Notice",error:"Error",cancel:"Cancel",confirm:"Confirm",remove:"Remove",back:"Back",next:"Next",use:"Use",add:"Add",delete:"Delete",undo:"Undo",save:"Save",saving:"Saving...",edit:"Edit",create:"Create",or:"Or",close:"Close",dismiss:"Dismiss",logout:"Logout",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Show password",hidePassword:"Hide password",show:"Show",hide:"Hide",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Attachments",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Two-factor authentication",alias:"Alias",notes:"Notes",email:"Email",username:"Username",password:"Password",generate:"Generate",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Load more",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"An unknown error occurred. Please try again.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"An unknown error occurred. Please try again.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},Fx={or:"or",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Close",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},Bx={title:"Items",itemName:"Name",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},Px={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Email",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},Ox={"login.url":"Website URL","login.username":"Username","login.password":"Password","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"Email","notes.content":"Notes","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},jx={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},Hx={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},Vx={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},zx={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},Qx={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Title",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},Kx={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},Gx={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},Wx={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},qx={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},H9={auth:Ux,menu:Mx,common:_x,content:Fx,items:Bx,itemTypes:Px,fieldLabels:Ox,totp:jx,attachmentUploader:Hx,emails:Vx,settings:zx,passkeys:Qx,recentlyDeleted:Kx,upgrade:Gx,logout:Wx,sync:qx},V9=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:Hx,auth:Ux,common:_x,content:Fx,default:H9,emails:Vx,fieldLabels:Ox,itemTypes:Px,items:Bx,logout:Wx,menu:Mx,passkeys:Qx,recentlyDeleted:Kx,settings:zx,sync:qx,totp:jx,upgrade:Gx},Symbol.toStringTag,{value:"Module"})),Yx={loginTitle:"Log in to AliasVault",username:"Username or email",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Log in",noAccount:"No account yet?",createVault:"Create new vault",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Authentication Code",authCodePlaceholder:"Enter 6-digit code",verify:"Verify",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Master Password",unlockVault:"Unlock",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Connecting to",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},Jx={vault:"Vault",emails:"Emails"},Xx={loading:"Loading...",notice:"Notice",error:"Error",cancel:"Cancel",confirm:"Confirm",remove:"Remove",back:"Back",next:"Next",use:"Use",add:"Add",delete:"Delete",undo:"Undo",save:"Save",saving:"Saving...",edit:"Edit",create:"Create",or:"Or",close:"Close",dismiss:"Dismiss",logout:"Logout",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Show password",hidePassword:"Hide password",show:"Show",hide:"Hide",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Attachments",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Two-factor authentication",alias:"Alias",notes:"Notes",email:"Email",username:"Username",password:"Password",generate:"Generate",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Load more",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"An unknown error occurred. Please try again.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"An unknown error occurred. Please try again.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},$x={or:"or",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Close",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},Zx={title:"Items",itemName:"Name",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},eL={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Email",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},tL={"login.url":"Website URL","login.username":"Username","login.password":"Password","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"Email","notes.content":"Notes","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},aL={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},nL={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},iL={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},rL={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},sL={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Title",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},oL={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},lL={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},dL={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},cL={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},z9={auth:Yx,menu:Jx,common:Xx,content:$x,items:Zx,itemTypes:eL,fieldLabels:tL,totp:aL,attachmentUploader:nL,emails:iL,settings:rL,passkeys:sL,recentlyDeleted:oL,upgrade:lL,logout:dL,sync:cL},Q9=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:nL,auth:Yx,common:Xx,content:$x,default:z9,emails:iL,fieldLabels:tL,itemTypes:eL,items:Zx,logout:dL,menu:Jx,passkeys:sL,recentlyDeleted:oL,settings:rL,sync:cL,totp:aL,upgrade:lL},Symbol.toStringTag,{value:"Module"})),uL={loginTitle:"Log in to AliasVault",username:"Username or email",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Log in",noAccount:"No account yet?",createVault:"Create new vault",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Authentication Code",authCodePlaceholder:"Enter 6-digit code",verify:"Verify",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Master Password",unlockVault:"Unlock",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Connecting to",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},mL={vault:"Vault",emails:"Emails"},gL={loading:"Loading...",notice:"Notice",error:"Error",cancel:"Cancel",confirm:"Confirm",remove:"Remove",back:"Back",next:"Next",use:"Use",add:"Add",delete:"Delete",undo:"Undo",save:"Save",saving:"Saving...",edit:"Edit",create:"Create",or:"Or",close:"Close",dismiss:"Dismiss",logout:"Logout",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Show password",hidePassword:"Hide password",show:"Show",hide:"Hide",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Attachments",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Two-factor authentication",alias:"Alias",notes:"Notes",email:"Email",username:"Username",password:"Password",generate:"Generate",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Load more",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"An unknown error occurred. Please try again.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"An unknown error occurred. Please try again.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},pL={or:"or",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Close",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},hL={title:"Items",itemName:"Name",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},fL={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Email",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},AL={"login.url":"Website URL","login.username":"Username","login.password":"Password","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"Email","notes.content":"Notes","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},yL={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},EL={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},bL={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},vL={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},wL={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Title",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},IL={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},CL={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},SL={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},TL={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},K9={auth:uL,menu:mL,common:gL,content:pL,items:hL,itemTypes:fL,fieldLabels:AL,totp:yL,attachmentUploader:EL,emails:bL,settings:vL,passkeys:wL,recentlyDeleted:IL,upgrade:CL,logout:SL,sync:TL},G9=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:EL,auth:uL,common:gL,content:pL,default:K9,emails:bL,fieldLabels:AL,itemTypes:fL,items:hL,logout:SL,menu:mL,passkeys:wL,recentlyDeleted:IL,settings:vL,sync:TL,totp:yL,upgrade:CL},Symbol.toStringTag,{value:"Module"})),NL={loginTitle:"Log in to AliasVault",username:"Username or email",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Log in",noAccount:"No account yet?",createVault:"Create new vault",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Authentication Code",authCodePlaceholder:"Enter 6-digit code",verify:"Verify",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Master Password",unlockVault:"Unlock",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Connecting to",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},kL={vault:"Vault",emails:"Emails"},xL={loading:"Loading...",notice:"Notice",error:"Error",cancel:"Cancel",confirm:"Confirm",remove:"Remove",back:"Back",next:"Next",use:"Use",add:"Add",delete:"Delete",undo:"Undo",save:"Save",saving:"Saving...",edit:"Edit",create:"Create",or:"Or",close:"Close",dismiss:"Dismiss",logout:"Logout",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Show password",hidePassword:"Hide password",show:"Show",hide:"Hide",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Salin ke papan klip",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Attachments",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Two-factor authentication",alias:"Alias",notes:"Notes",email:"Email",username:"Username",password:"Password",generate:"Generate",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Load more",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"An unknown error occurred. Please try again.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"An unknown error occurred. Please try again.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},LL={or:"or",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Close",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},DL={title:"Items",itemName:"Name",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},RL={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Email",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},UL={"login.url":"Website URL","login.username":"Username","login.password":"Password","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"Email","notes.content":"Notes","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},ML={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},_L={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},FL={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},BL={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},PL={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Title",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},OL={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},jL={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},HL={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},VL={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},W9={auth:NL,menu:kL,common:xL,content:LL,items:DL,itemTypes:RL,fieldLabels:UL,totp:ML,attachmentUploader:_L,emails:FL,settings:BL,passkeys:PL,recentlyDeleted:OL,upgrade:jL,logout:HL,sync:VL},q9=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:_L,auth:NL,common:xL,content:LL,default:W9,emails:FL,fieldLabels:UL,itemTypes:RL,items:DL,logout:HL,menu:kL,passkeys:PL,recentlyDeleted:OL,settings:BL,sync:VL,totp:ML,upgrade:jL},Symbol.toStringTag,{value:"Module"})),zL={loginTitle:"Log in to AliasVault",username:"Username or email",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Log in",noAccount:"No account yet?",createVault:"Create new vault",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Authentication Code",authCodePlaceholder:"Enter 6-digit code",verify:"Verify",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Master Password",unlockVault:"Unlock",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Connecting to",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},QL={vault:"Vault",emails:"Emails"},KL={loading:"Loading...",notice:"Notice",error:"Error",cancel:"Cancel",confirm:"Confirm",remove:"Remove",back:"Back",next:"Next",use:"Use",add:"Add",delete:"Delete",undo:"Undo",save:"Save",saving:"Saving...",edit:"Edit",create:"Create",or:"Or",close:"Close",dismiss:"Dismiss",logout:"Logout",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Show password",hidePassword:"Hide password",show:"Show",hide:"Hide",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Attachments",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Two-factor authentication",alias:"Alias",notes:"Notes",email:"Email",username:"Username",password:"Password",generate:"Generate",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Load more",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"An unknown error occurred. Please try again.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"An unknown error occurred. Please try again.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},GL={or:"or",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Close",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},WL={title:"Items",itemName:"Name",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},qL={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"Email",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},YL={"login.url":"Website URL","login.username":"Username","login.password":"Password","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"Email","notes.content":"Notes","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},JL={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},XL={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},$L={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},ZL={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},e1={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Title",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},t1={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},a1={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},n1={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},i1={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},Y9={auth:zL,menu:QL,common:KL,content:GL,items:WL,itemTypes:qL,fieldLabels:YL,totp:JL,attachmentUploader:XL,emails:$L,settings:ZL,passkeys:e1,recentlyDeleted:t1,upgrade:a1,logout:n1,sync:i1},J9=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:XL,auth:zL,common:KL,content:GL,default:Y9,emails:$L,fieldLabels:YL,itemTypes:qL,items:WL,logout:n1,menu:QL,passkeys:e1,recentlyDeleted:t1,settings:ZL,sync:i1,totp:JL,upgrade:a1},Symbol.toStringTag,{value:"Module"})),r1={loginTitle:"Log in to AliasVault",username:"အသုံးပြုသူအမည် သို့မဟုတ် အီးမေးလ်",usernamePlaceholder:"အမည် / name@company.com",passwordPlaceholder:"သင့် စကားဝှက်အား ရိုက်ထည့်ပါ",rememberMe:"Remember me",loginButton:"လော့ဂ်အင်",noAccount:"အကောင့် မရှိသေးဘူးလား။",createVault:"လုံခြုံရေးအခန်းသစ် ဖန်တီးမည်",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"အတည်ပြုကုဒ်",authCodePlaceholder:"ဂဏန်း ၆ လုံးကုဒ်အား ရိုက်ထည့်ပါ",verify:"အတည်ပြု",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Master Password",unlockVault:"Unlock",unlockWithPin:"PIN ဖြင့် ဖွင့်လှစ်ရန်",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"ချိတ်ဆက်",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},s1={vault:"Vault",emails:"Emails"},o1={loading:"ဝန်ဆွဲတင်နေသည်...",notice:"သတိပေးချက်",error:"အမှား",cancel:"ပယ်ဖျက်မည်",confirm:"အတည်ပြု",remove:"Remove",back:"နောက်သို့",next:"ရှေ့သို့",use:"အသုံးပြု",add:"ပေါင်းထည့်",delete:"ဖျက်မည်",undo:"Undo",save:"သိမ်းဆည်းမည်",saving:"Saving...",edit:"ပြင်ဆင်မည်",create:"Create",or:"Or",close:"ပိတ်မည်",dismiss:"Dismiss",logout:"ထွက်ရန်",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"ဖွင့်ထားသည်",disabled:"အသုံးမပြုထားပါ",showPassword:"Show password",hidePassword:"Hide password",show:"ပြသမည်",hide:"ဝှက်မည်",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"ပူးတွဲဖိုင်များ",loadingAttachments:"Loading attachments...",settings:"အပြင်အဆင်များ",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"နှစ်ဆင့်ခံ သက်သေခံအထောက်အထား",alias:"Alias",notes:"မှတ်စုများ",email:"အီးမေးလ်",username:"အသုံးပြုသူအမည်",password:"စကားဝှက်",generate:"ထုတ်လုပ်မည်",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"နောက်ထပ် ဝန်ဆွဲတင်ရန်",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"ဤအင်္ဂါရပ်ကိုအသုံးပြုရန် AliasVault ဆာဗာကို ဗားရှင်းအသစ်သို့ အပ်ဒိတ်လုပ်ရန် လိုအပ်သည်။ အကူအညီလိုအပ်ပါက ဆာဗာအက်ဒမင်ထံ ဆက်သွယ်ပါ။",unknownError:"An unknown error occurred",unknownErrorTryAgain:"မသိသော အမှားတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကျေးဇူးပြု၍ ပြန်လည်ကြိုးစားပါ။",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"AliasVault ဆာဗာသို့ ချိတ်ဆက်မရနိုင်ပါ။ ကျေးဇူးပြု၍ နောက်တစ်ကြိမ်ထပ်မံကြိုးစားပါ သို့မဟုတ် ပြဿနာ ဆက်လက်ဖြစ်ပေါ်နေပါက ထောက်ပံ့သူအား ဆက်သွယ်ပါ။",wrongPassword:"စကားဝှက် မှားယွင်းနေသည်။ ကျေးဇူးပြု၍ ထပ်မံကြိုးစားပါ။",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"မသိသော အမှားတစ်ခု ဖြစ်ပေါ်ခဲ့သည်။ ကျေးဇူးပြု၍ ပြန်လည်ကြိုးစားပါ။",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},l1={or:"သို့မဟုတ်",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"ပိတ်မည်",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},d1={title:"Items",itemName:"အမည်",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"ဤအရာကို ဖျက်ရန်",deleteItemConfirm:"ဤအရာကို ဖျက်ပစ်မည်မှာ သေချာပါသလား?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},c1={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"အီးမေးလ်",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},u1={"login.url":"Website URL","login.username":"အသုံးပြုသူအမည်","login.password":"စကားဝှက်","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"အီးမေးလ်","notes.content":"မှတ်စုများ","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},m1={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},g1={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},p1={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},h1={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"မည်သည့်အခါတွင်မှ",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},f1={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"ခေါင်းစဉ်",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},A1={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},y1={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},E1={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},b1={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},X9={auth:r1,menu:s1,common:o1,content:l1,items:d1,itemTypes:c1,fieldLabels:u1,totp:m1,attachmentUploader:g1,emails:p1,settings:h1,passkeys:f1,recentlyDeleted:A1,upgrade:y1,logout:E1,sync:b1},$9=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:g1,auth:r1,common:o1,content:l1,default:X9,emails:p1,fieldLabels:u1,itemTypes:c1,items:d1,logout:E1,menu:s1,passkeys:f1,recentlyDeleted:A1,settings:h1,sync:b1,totp:m1,upgrade:y1},Symbol.toStringTag,{value:"Module"})),v1={loginTitle:"Log in to AliasVault",username:"Kullanıcı adı veya e-posta",usernamePlaceholder:"isim / isim@sirket.com",passwordPlaceholder:"Parolanızı girin",rememberMe:"Remember me",loginButton:"Giriş Yap",noAccount:"Henüz hesabınız yok mu?",createVault:"Yeni kasa oluştur",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Doğrulama Kodu",authCodePlaceholder:"6 rakamlı kodu yazın",verify:"Doğrula",twoFactorNote:"Not: Kimlik doğrulayıcı cihazınıza erişiminiz yoksa, web sitesinden giriş yaparak kurtarma kodu ile iki adımlı doğrulamayı sıfırlayabilirsiniz.",masterPassword:"Master Password",unlockVault:"Kilidi aç",unlockWithPin:"Şifre ile aç",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Bağlanıyor",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},w1={vault:"Vault",emails:"E-postalar"},I1={loading:"Yükleniyor...",notice:"Bildirim",error:"Hata",cancel:"İptal",confirm:"Onayla",remove:"Remove",back:"Geri",next:"İleri",use:"Kullan",add:"Ekle",delete:"Sil",undo:"Undo",save:"Kaydet",saving:"Saving...",edit:"Düzenle",create:"Create",or:"Or",close:"Kapat",dismiss:"Dismiss",logout:"Çıkış yap",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Show password",hidePassword:"Hide password",show:"Göster",hide:"Gizle",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"E-postalar yükleniyor…",loadingTotpCodes:"Loading TOTP codes...",attachments:"Ekler",loadingAttachments:"Ekler yükleniyor...",settings:"Ayarlar",recentEmails:"Son e-postalar",credentials:"Kimlik Bilgileri",customFields:"Custom Fields",twoFactorAuthentication:"İki faktörlü kimlik doğrulama",alias:"Alias",notes:"Notlar",email:"E-Posta",username:"Kullanıcı Adı",password:"Parola",generate:"Oluştur",serviceName:"Hizmet Adı",loggedIn:"Logged in",syncingVault:"Kasa senkronize ediliyor",checkingVaultUpdates:"Kasa güncellemeleri kontrol ediliyor",syncingUpdatedVault:"Güncellenmiş kasa senkronize ediliyor",loadMore:"Daha fazla yükle",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"Bilinmeyen bir hata oluştu",unknownErrorTryAgain:"Bilinmeyen bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Parolanız, en son giriş yaptığınızdan bu yana değişti. Güvenlik nedeniyle lütfen tekrar giriş yapın.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Lütfen geçerli 6 haneli doğrulama kodunu girin.",serverError:"AliasVault sunucusuna ulaşılamadı. Lütfen daha sonra tekrar deneyin veya sorun devam ederse destek ile iletişime geçin.",wrongPassword:"Parola yanlış. Lütfen yeniden deneyin.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"Bilinmeyen bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Kullanıcı adı gereklidir.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},C1={or:"yada",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"Kapat",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},S1={title:"Items",itemName:"Ad",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Özel E-posta",privateEmailAliasVaultServer:"AliasVault sunucusu",privateEmailDescription:"Uçtan uca şifreli, tamamen özel.",publicEmailTitle:"Herkese Açık Geçici E-Posta Sağlayıcıları",publicEmailDescription:"Anonim ama mahremiyeti sınırlı. E-posta içeriği, adresi bilen herkes tarafından okunabilir.",validation:{required:"Bu alan zorunludur"}},T1={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"E-Posta",url:"URL",phone:"Phone",number:"Number",date:"Tarih",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},N1={"login.url":"Website URL","login.username":"Kullanıcı Adı","login.password":"Parola","alias.first_name":"Adı","alias.last_name":"Soyadı","alias.gender":"Cinsiyet","alias.birthdate":"Birthdate","login.email":"E-Posta","notes.content":"Notlar","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},k1={addCode:"2FA kodu ekle",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"İsim (opsiyonel)",secretKey:"Gizli anahtar",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Geçersiz gizli anahtar formatı."}},x1={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},L1={title:"E-postalar",deleteEmailTitle:"E-postayı sil",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"Gönderici",to:"Alıcı",date:"Tarih",emailContent:"Email content",emailNotFound:"E-posta bulunamadı",noEmails:"No emails found",noEmailsDescription:"Özel e-posta adreslerinize henüz bir e-posta gelmedi. Yeni bir e-posta aldığınızda burada görünecektir.",offlineMessage:"Çevrimdışısınız. E-postalarınızı yüklemek için lütfen internet bağlantısı sağlayın.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"biraz önce",minutesAgo_single:"{{count}} dakika önce",minutesAgo_plural:"{{count}} dakika önce",hoursAgo_single:"{{count}} saat önce",hoursAgo_plural:"{{count}} saat önce",yesterday:"dün"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},D1={serverUrl:"Server URL",language:"Dil",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Otomatik Kilit Süresi",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"Kasa, yalnızca belirtilen süre boyunca herhangi bir işlem yapılmadığında (otomatik doldurma kullanılmadığında veya uzantı açılmadığında) kilitlenecektir. Ancak, bu ayardan bağımsız olarak tarayıcı kapatıldığında her zaman kilitlenir.",autoLockNever:"Asla",autoLock15Seconds:"15 saniye",autoLock30Seconds:"30 saniye",autoLock1Minute:"1 dakika",autoLock5Minutes:"5 dakika",autoLock15Minutes:"15 dakika",autoLock30Minutes:"30 dakika",autoLock1Hour:"1 saat",autoLock4Hours:"4 saat",autoLock8Hours:"8 saat",autoLock24Hours:"24 saat",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Dil",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Kimlik Oluşturucu",identityGeneratorSettings:{description:"Yeni kimlikler oluştururken varsayılan dil ve cinsiyet tercihlerini yapılandırın.",languageSection:"Dil",languageDescription:"Yeni kimlikler oluşturulurken kullanılacak dili belirleyin.",genderSection:"Cinsiyet",genderDescription:"Yeni kimlikler oluştururken cinsiyet tercihlerini belirleyin.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Rastgele",male:"Erkek",female:"Kadın"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Kasa Açma Yöntemi",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},R1={passkey:"Geçiş anahtarı",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"Başlık",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},U1={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},M1={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},_1={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Yinede çıkış yap"},F1={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},Z9={auth:v1,menu:w1,common:I1,content:C1,items:S1,itemTypes:T1,fieldLabels:N1,totp:k1,attachmentUploader:x1,emails:L1,settings:D1,passkeys:R1,recentlyDeleted:U1,upgrade:M1,logout:_1,sync:F1},e3=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:x1,auth:v1,common:I1,content:C1,default:Z9,emails:L1,fieldLabels:N1,itemTypes:T1,items:S1,logout:_1,menu:w1,passkeys:R1,recentlyDeleted:U1,settings:D1,sync:F1,totp:k1,upgrade:M1},Symbol.toStringTag,{value:"Module"})),B1={loginTitle:"Log in to AliasVault",username:"Username or email",usernamePlaceholder:"name / name@company.com",passwordPlaceholder:"Enter your password",rememberMe:"Remember me",loginButton:"Log in",noAccount:"No account yet?",createVault:"Create new vault",twoFactorTitle:"Please enter the authentication code from your authenticator app.",authCode:"Authentication Code",authCodePlaceholder:"Enter 6-digit code",verify:"Verify",twoFactorNote:"Note: if you don't have access to your authenticator device, you can reset your 2FA with a recovery code by logging in via the website.",masterPassword:"Master Password",unlockVault:"Unlock",unlockWithPin:"Unlock with PIN",enterPinToUnlock:"Enter your PIN to unlock your vault",useMasterPassword:"Use Master Password",unlockTitle:"Unlock Your Vault",logoutConfirm:"Are you sure you want to logout?",unlockSuccessTitle:"Your vault is successfully unlocked",unlockSuccessDescription:"You can now use autofill in login forms in your browser.",closePopup:"Close this popup",browseVault:"Browse vault contents",autoCloseUnlockPopup:"Auto-close on future sign ins",connectingTo:"Connecting to",switchAccounts:"Switch accounts?",loginWithMobile:"Log in using Mobile App",unlockWithMobile:"Unlock using Mobile App",scanQrCode:"Scan this QR code with your AliasVault mobile app to log in and unlock your vault.",passwordAttemptsWarning:"Incorrect password. You will be logged out if you enter the wrong password {{remainingAttempts}} more times.",maxAttemptsReached:"Too many failed unlock attempts. You have been logged out for security reasons."},P1={vault:"Vault",emails:"Emails"},O1={loading:"لوڈ ہو رہا ہے۔۔۔",notice:"Notice",error:"خرابی",cancel:"منسوخ کریں",confirm:"تصدیق کریں",remove:"Remove",back:"واپس جائیں",next:"آگے جائیں",use:"Use",add:"Add",delete:"ڈیلیٹ کریں",undo:"Undo",save:"محفوظ کریں",saving:"Saving...",edit:"ترمیم کریں",create:"Create",or:"Or",close:"بند کریں",dismiss:"Dismiss",logout:"Logout",copied:"Copied!",openInNewWindow:"Open in new window",enabled:"Enabled",disabled:"Disabled",showPassword:"Show password",hidePassword:"Hide password",show:"Show",hide:"Hide",showDetails:"Show details",hideDetails:"Hide details",copyToClipboard:"Copy to clipboard",loadingEmails:"Loading emails...",loadingTotpCodes:"Loading TOTP codes...",attachments:"Attachments",loadingAttachments:"Loading attachments...",settings:"Settings",recentEmails:"Recent emails",credentials:"Credentials",customFields:"Custom Fields",twoFactorAuthentication:"Two-factor authentication",alias:"Alias",notes:"نوٹس",email:"ای میل",username:"صارف کا نام",password:"پاس ورڈ",generate:"جنریٹ کریں",serviceName:"Service Name",loggedIn:"Logged in",syncingVault:"Syncing vault",checkingVaultUpdates:"Checking for vault updates",syncingUpdatedVault:"Syncing updated vault",loadMore:"Load more",offline:"Offline",offlineMode:"Operating in offline mode",pendingSync:"Syncing...",mergingVaultChanges:"Merging vault changes...",uploadingVault:"Uploading vault...",errors:{serverNotAvailable:"The AliasVault server is not available. Please try again later or contact support if the problem persists.",clientVersionNotSupported:"This version of the AliasVault browser extension is not supported by the server anymore. Please update your browser extension to the latest version.",browserExtensionOutdated:"This browser extension is outdated and cannot be used to access this vault. Please update this browser extension to continue.",serverVersionNotSupported:"The AliasVault server needs to be updated to a newer version in order to use this browser extension. Please contact support if you need help.",serverVersionTooOld:"The AliasVault server needs to be updated to a newer version in order to use this feature. Please contact the server admin if you need help.",unknownError:"An unknown error occurred",unknownErrorTryAgain:"ایک نامعلوم مسئلہ پیش آ گیا ہے۔ براہِ کرم دوبارہ کوشش کریں۔",vaultNotAvailable:"Vault not available",vaultIsLocked:"Vault is locked",passwordChanged:"Your password has changed since the last time you logged in. Please login again for security reasons.",syncConflictMaxRetries:"Could not sync vault after multiple attempts. Please try again later.",mergeFailed:"Failed to merge vault changes. Please try again.",vaultTooLarge:"The vault is too large for the server to accept. Try to remove some items or attachments to reduce the size and try again.",invalidCode:"Please enter a valid 6-digit authentication code.",serverError:"Could not reach AliasVault server. Please try again later or contact support if the problem persists.",wrongPassword:"Incorrect password. Please try again.",sessionExpired:"Your session has expired. Please log in again.",mobileLoginRequestExpired:"Mobile login request timed out. Please reload the page and try again."},apiErrors:{UNKNOWN_ERROR:"ایک نامعلوم مسئلہ پیش آ گیا ہے۔ براہِ کرم دوبارہ کوشش کریں۔",ACCOUNT_LOCKED:"Account temporarily locked due to too many failed attempts. Please try again later.",ACCOUNT_BLOCKED:"Your account has been disabled. If you believe this is a mistake, please contact support.",USER_NOT_FOUND:"Invalid username or password. Please try again.",INVALID_AUTHENTICATOR_CODE:"Invalid authenticator code. Please try again.",INVALID_RECOVERY_CODE:"Invalid recovery code. Please try again.",REFRESH_TOKEN_REQUIRED:"Refresh token is required.",INVALID_REFRESH_TOKEN:"Invalid refresh token.",PUBLIC_REGISTRATION_DISABLED:"New account registration is currently disabled on this server. Please contact the administrator.",USERNAME_REQUIRED:"Username is required.",USERNAME_ALREADY_IN_USE:"Username is already in use.",USERNAME_AVAILABLE:"Username is available.",USERNAME_MISMATCH:"Username does not match the current user.",PASSWORD_MISMATCH:"The provided password does not match your current password.",ACCOUNT_SUCCESSFULLY_DELETED:"Account successfully deleted.",USERNAME_EMPTY_OR_WHITESPACE:"Username cannot be empty or whitespace.",USERNAME_TOO_SHORT:"Username too short: must be at least 3 characters long.",USERNAME_TOO_LONG:"Username too long: cannot be longer than 40 characters.",USERNAME_INVALID_EMAIL:"Invalid email address.",USERNAME_INVALID_CHARACTERS:"Username is invalid, can only contain letters or digits.",VAULT_NOT_UP_TO_DATE:"Your vault is not up-to-date. Please synchronize your vault and try again.",INTERNAL_SERVER_ERROR:"Internal server error.",VAULT_ERROR:"The local vault is not up-to-date. Please synchronize your vault by refreshing the page and try again."}},j1={or:"یا",new:"New",vaultLocked:"AliasVault is locked.",creatingNewAlias:"Creating new alias...",noMatchesFound:"No matches found",searchVault:"Search vault...",enterServiceName:"Enter service name",enterEmailAddress:"Enter email address",enterUsername:"Enter username",hideFor1Hour:"Hide for 1 hour (current site)",hidePermanently:"Hide permanently (current site)",createRandomAlias:"Create random alias",createUsernamePassword:"Create username/password",randomAlias:"Random alias",usernamePassword:"Username/password",createAndSaveAlias:"Create and save alias",createAndSaveCredential:"Create and save credential",randomIdentityDescription:"Generate a random identity with a random email address accessible in AliasVault.",randomIdentityDescriptionDropdown:"Random identity with random email",manualCredentialDescription:"Specify your own email address and username.",manualCredentialDescriptionDropdown:"Manual username and password",failedToCreateIdentity:"Failed to create identity. Please try again.",enterEmailAndOrUsername:"Enter email and/or username",autofillWithAliasVault:"Autofill with AliasVault",generateRandomPassword:"Generate random password (copy to clipboard)",generateNewPassword:"Generate new password",togglePasswordVisibility:"Toggle password visibility",passwordCopiedToClipboard:"Password copied to clipboard",openAliasVaultToUpgrade:"Open AliasVault to upgrade",vaultUpgradeRequired:"Vault upgrade required.",dismissPopup:"Dismiss popup",noTotpItemsFound:"No 2FA code matches found",close:"بند کریں",savePrompt:{title:"Save to AliasVault?",neverForThisSite:"Never for this site",addUrlTitle:"Add URL to credential?"}},H1={title:"Items",itemName:"نام",loginCredentials:"Login Credentials",cardInformation:"Card Information",addItem:"Add Item",addNewItem:"Add new item",saveItem:"Save Item",itemDetails:"Item Details",editItem:"Edit Item",untitled:"Untitled",newFolder:"New Folder",createFolder:"Create Folder",editFolder:"Edit Folder",folderName:"Folder Name",folderNameRequired:"Folder name is required",folder:"Folder",welcomeTitle:"Welcome to AliasVault!",welcomeDescription:"To use the AliasVault browser extension: navigate to a website and use the AliasVault autofill popup to create a new credential.",noMatchingItems:"No items match the selected filter.",noMatchingItemsSearch:'No items matching "{{search}}"',noMatchingItemsWithFilter:'No {{filter}} items matching "{{search}}"',clearSearch:"Clear search",clearFilter:"Clear filter",emptyFolderHint:"This folder is empty. To move items to this folder, edit the item and tap the folder icon in the name field.",allItemsInFolders:"All your items are organized in folders. Click a folder above to view your credentials, or use the search to find specific items.",deleteFolder:"Delete Folder",deleteFolderKeepItems:"Delete folder only",deleteFolderKeepItemsDescription:"Items will be moved to the parent folder.",deleteFolderAndItems:"Delete folder and all items",deleteFolderAndItemsDescription:"{{count}} item(s) will be moved to Recently Deleted.",filters:{folders:"Folders",passkeys:"Passkeys",totp:"2FA Codes"},sort:{title:"Sort by",oldestFirst:"Oldest first",newestFirst:"Newest first",alphabetical:"Alphabetical (A-Z)"},deleteItemTitle:"Delete Item",deleteItemConfirm:"Are you sure you want to delete this item?",viewHistory:"View history",history:"History",noHistoryAvailable:"No history available",tags:"Tags",changePasswordComplexity:"Change password complexity",passwordLength:"Password length",includeLowercase:"Include lowercase letters",includeUppercase:"Include uppercase letters",includeNumbers:"Include numbers",includeSpecialChars:"Include special characters",avoidAmbiguousChars:"Avoid ambiguous characters (o, 0, etc.)",privateEmailTitle:"Private Email",privateEmailAliasVaultServer:"AliasVault server",privateEmailDescription:"E2E encrypted, fully private.",publicEmailTitle:"Public Temp Email Providers",publicEmailDescription:"Anonymous but limited privacy. Email content is readable by anyone that knows the address.",validation:{required:"This field is required"}},V1={selectType:"Add New Item",typeLabel:"Item Type",creating:"Creating",editing:"Editing",regenerateAlias:"Regenerate alias",addCustomField:"Add custom field",fieldLabel:"Field Label",enterFieldName:"Enter field name",fieldType:"Field Type",fieldTypes:{text:"Text",hidden:"Hidden (masked text)",email:"ای میل",url:"URL",phone:"Phone",number:"Number",date:"Date",textArea:"Text Area"},login:{title:"Login"},alias:{title:"Alias"},creditCard:{title:"Credit Card"},note:{title:"Secure Note"}},z1={"login.url":"Website URL","login.username":"صارف کا نام","login.password":"پاس ورڈ","alias.first_name":"First Name","alias.last_name":"Last Name","alias.gender":"Gender","alias.birthdate":"Birthdate","login.email":"ای میل","notes.content":"نوٹس","card.cardholder_name":"Cardholder Name","card.number":"Card Number","card.expiry_month":"Expiry Month","card.expiry_year":"Expiry Year","card.cvv":"CVV","card.pin":"PIN"},Q1={addCode:"Add 2FA Code",instructions:"Enter the secret key shown by the website where you want to add two-factor authentication.",nameOptional:"Name (optional)",secretKey:"Secret Key",saveToViewCode:"Save to view code",defaultName:"Authenticator",deleteTotpCodeTitle:"Delete 2FA Code",deleteTotpCodeConfirmation:'Are you sure you want to delete the 2FA code "{{name}}"?',errors:{invalidSecretKey:"Invalid secret key format."}},K1={uploading:"Uploading...",uploadSuccess:"Files uploaded successfully.",deleteSuccess:"Attachment deleted successfully.",firefoxExpandRequired:"To upload files, use the expanded window.",openExpandedWindow:"Open Expanded Window"},G1={title:"Emails",deleteEmailTitle:"Delete Email",deleteEmailConfirm:"Are you sure you want to permanently delete this email?",from:"From",to:"To",date:"Date",emailContent:"Email content",emailNotFound:"Email not found",noEmails:"No emails found",noEmailsDescription:"You have not received any emails at your private email addresses yet. When you receive a new email, it will appear here.",offlineMessage:"You are offline. Please connect to the internet to load your emails.",loadMore:"Load More ({{count}} remaining)",dateFormat:{justNow:"just now",minutesAgo_single:"{{count}} min ago",minutesAgo_plural:"{{count}} mins ago",hoursAgo_single:"{{count}} hr ago",hoursAgo_plural:"{{count}} hrs ago",yesterday:"yesterday"},apiErrors:{CLAIM_DOES_NOT_MATCH_USER:"The current chosen email address is already in use. Please change the email address by editing this credential.",CLAIM_DOES_NOT_EXIST:"An error occurred while trying to load the emails. Please try to edit and save the credential entry to synchronize the database, then try again."}},W1={serverUrl:"Server URL",language:"Language",autofillEnabled:"Enable Autofill",version:"Version",openWebApp:"Open web app",lock:"Lock",globalSettings:"Global Settings",activeOnAllSites:"Active on all sites (unless disabled below)",disabledOnAllSites:"Disabled on all sites",rightClickContextMenu:"Right-click context menu",autofillMatching:"Autofill Matching",autofillMatchingMode:"Autofill matching mode",autofillMatchingModeDescription:"Determines which credentials are considered a match and shown as suggestions in the autofill popup for a given website.",autofillMatchingDefault:"URL + subdomain + name wildcard",autofillMatchingUrlSubdomain:"URL + subdomain",autofillMatchingUrlExact:"Exact URL domain only",siteSpecificSettings:"Site-Specific Settings",enabledForThisSite:"Enabled for this site",disabledForThisSite:"Disabled for this site",resetAllSiteSettings:"Reset all site-specific settings",disabledSites:"Disabled sites",disabledSitesDescription:"Sites where the autofill popup will not appear.",clearAllDisabledSites:"Clear all disabled sites",temporaryUntil:"until",appearance:"Appearance",theme:"Theme",useDefault:"Use default",light:"Light",dark:"Dark",keyboardShortcuts:"Keyboard Shortcuts",configureKeyboardShortcuts:"Configure keyboard shortcuts",configure:"Configure",clipboardClearTimeout:"Clear clipboard after copying",clipboardClearTimeoutDescription:"Automatically clear the clipboard after copying sensitive data",clipboardClearDisabled:"Never clear",clipboardClear5Seconds:"Clear after 5 seconds",clipboardClear10Seconds:"Clear after 10 seconds",clipboardClear15Seconds:"Clear after 15 seconds",autoLockTimeout:"Auto-lock Timeout",autoLockTimeoutDescription:"Automatically lock the vault after a period of inactivity",autoLockTimeoutHelp:"The vault will only lock after the specified period of inactivity (no autofill usage or extension popup opened). The vault will always lock when the browser is closed, regardless of this setting.",autoLockNever:"Never",autoLock15Seconds:"15 seconds",autoLock30Seconds:"30 seconds",autoLock1Minute:"1 minute",autoLock5Minutes:"5 minutes",autoLock15Minutes:"15 minutes",autoLock30Minutes:"30 minutes",autoLock1Hour:"1 hour",autoLock4Hours:"4 hours",autoLock8Hours:"8 hours",autoLock24Hours:"24 hours",versionPrefix:"Version ",autofillSettings:"Autofill Settings",clipboardSettings:"Clipboard Settings",contextMenuSettings:"Context Menu Settings",passkeySettings:"Passkey Settings",contextMenuDescription:"Right-click on input fields to access AliasVault options",selectLanguage:"Select Language",serverConfiguration:"Server Configuration",serverConfigurationDescription:"Configure the AliasVault server URL for self-hosted instances",customApiUrl:"API URL",customClientUrl:"Client URL",apiUrlHint:"The API endpoint URL (usually client URL + /api)",clientUrlHint:"The web interface URL of your self-hosted instance",autofillSettingsDescription:"Enable or disable the autofill popup on web pages",autofillEnabledDescription:"Autofill suggestions will appear on login forms",autofillDisabledDescription:"Autofill suggestions are disabled globally",languageSettings:"Language",validation:{apiUrlRequired:"API URL is required",apiUrlInvalid:"Please enter a valid API URL",clientUrlRequired:"Client URL is required",clientUrlInvalid:"Please enter a valid client URL"},identityGenerator:"Identity Generator",identityGeneratorSettings:{description:"Configure the default language and gender preference for generating new identities.",languageSection:"Language",languageDescription:"Set the language that will be used when generating new identities.",genderSection:"Gender",genderDescription:"Set the gender preference for generating new identities.",ageRangeSection:"Age Range",ageRangeDescription:"Set the age range for generating new identities.",genderOptions:{random:"Random",male:"Male",female:"Female"}},credentialAutofill:"Credential autofill",credentialAutofillDescription:"Show autofill popup when username/password fields are detected",totpAutofill:"2FA code autofill",totpAutofillDescription:"Show autofill popup when 2FA code fields are detected",autoCopyTotpOnAutofill:"Auto-copy 2FA to clipboard",autoCopyTotpOnAutofillDescription:"Automatically copy the first 2FA code to clipboard after autofilling credentials",loginSave:{title:"Save Login Prompt",description:"Show a prompt to save login credentials when you submit a login form on a website.",blockedSites:"Blocked sites",blockedSitesDescription:"Sites where the save prompt will never appear.",clearAllBlockedSites:"Clear all blocked sites"},unlockMethod:{title:"Vault Unlock Method",introText:"Choose how you want to unlock your vault. You can use your master password (always available) or set up a PIN code for faster access. After 3 failed PIN attempts, you'll need to use your master password.",password:"Master Password",pin:"PIN Code",pinDescription:"Unlock vault with PIN code",setupPin:"Setup PIN Code",enterNewPinDescription:"Enter a PIN code consisting of minimum 6 digits",confirmPin:"Confirm PIN",confirmPinDescription:"Enter your PIN again to confirm",invalidPinFormat:"Invalid PIN format",pinMismatch:"PINs do not match",incorrectPin:"Incorrect PIN. {{attemptsRemaining}} attempts remaining.",incorrectPinSingular:"Incorrect PIN. 1 attempt remaining.",enableSuccess:"PIN unlock enabled successfully!",pinLocked:"PIN unlock has been disabled. Please use your master password to unlock your vault.",pinSecurityWarning:"PIN unlock in the browser extension can be less secure than your master password, as PINs typically have lower entropy and may be brute-forced if your device is compromised. Use it only on devices you fully trust."}},q1={passkey:"Passkey",site:"Site",helpText:"Passkeys are created on the website when prompted. They cannot be manually edited. To remove this passkey, you can delete it from this credential. To replace this passkey or create a new one, visit the website and follow its prompts.",passkeyMarkedForDeletion:"Passkey marked for deletion",passkeyWillBeDeleted:"This passkey will be deleted when you save this credential.",useBrowserPasskey:"Use Browser Passkey",bypass:{description:"How long would you like to use the browser's passkey provider for {{origin}}?",thisTimeOnly:"This time only",alwaysForSite:"Always for this site"},authenticate:{title:"Sign in with Passkey",signInFor:"Sign in with passkey for",selectPasskey:"Select a passkey to sign in:",noPasskeysFound:"No passkeys found for this site"},create:{title:"Create Passkey",createFor:"Create a new passkey for",titleLabel:"عنوان",titlePlaceholder:"Enter a name for this passkey",createButton:"Create Passkey",selectPasskeyToReplace:"Select a passkey to replace:",createNewPasskey:"Create New Passkey",replacingPasskey:"Replacing passkey: {{displayName}}",confirmReplace:"Confirm Replace",selectExistingLogin:"Add to existing login:",selectExistingLoginDescription:"Attach this passkey to an existing login credential for this site.",attachingToCredential:"Adding passkey to: {{serviceName}}",attachPasskey:"Add Passkey"},settings:{passkeyProvider:"Passkey Provider",passkeyProviderOn:"Passkey Provider on "}},Y1={title:"Recently Deleted",noItems:"No deleted items",noItemsDescription:"Items you delete will appear here for {{days}} days before being permanently removed.",description:"These items will be permanently deleted after {{days}} days. You can restore them or delete them immediately.",restore:"Restore",deletePermanently:"Delete Permanently",emptyAll:"Empty All",daysRemaining_one:"{{count}} day remaining",daysRemaining_other:"{{count}} days remaining",expiringSoon:"Expiring soon",confirmDeleteTitle:"Delete Permanently?",confirmDeleteMessage:"This item will be permanently deleted and cannot be recovered.",confirmEmptyAllTitle:"Empty Recently Deleted?",confirmEmptyAllMessage:"All {{count}} items will be permanently deleted and cannot be recovered."},J1={title:"Upgrade Vault",subtitle:"AliasVault has updated and your vault needs to be upgraded. This should only take a few seconds.",versionInformation:"Version Information",yourVault:"Your vault version:",newVersion:"New available version:",upgrade:"Upgrade Vault",upgrading:"Upgrading...",whatsNew:"What's New",whatsNewDescription:"An upgrade is required to support the following changes:",noDescriptionAvailable:"No description available for this version.",alerts:{unableToGetVersionInfo:"Unable to get version information. Please try again.",selfHostedServer:"Self-Hosted Server",selfHostedWarning:"If you're using a self-hosted server, make sure to also update your self-hosted instance as otherwise logging in to the web client will stop working.",continueUpgrade:"Continue Upgrade",upgradeFailed:"Upgrade Failed",failedToApplyMigration:"Failed to apply migration ({{current}} of {{total}})"}},X1={unsyncedChangesTitle:"Unsynced Changes",unsyncedChangesWarning:"You have unsynced changes that will be lost if you log out now. Are you sure you want to continue?",logoutAnyway:"Log out anyway"},$1={offline:"Offline",tapToRetry:"Tap to retry sync",syncErrorTitle:"Sync Failed",syncErrorDismiss:"Dismiss"},t3={auth:B1,menu:P1,common:O1,content:j1,items:H1,itemTypes:V1,fieldLabels:z1,totp:Q1,attachmentUploader:K1,emails:G1,settings:W1,passkeys:q1,recentlyDeleted:Y1,upgrade:J1,logout:X1,sync:$1},a3=Object.freeze(Object.defineProperty({__proto__:null,attachmentUploader:K1,auth:B1,common:O1,content:j1,default:t3,emails:G1,fieldLabels:z1,itemTypes:V1,items:H1,logout:X1,menu:P1,passkeys:q1,recentlyDeleted:Y1,settings:W1,sync:$1,totp:Q1,upgrade:J1},Symbol.toStringTag,{value:"Module"})),n3=Object.assign({"../../i18n/locales/bg.json":P9,"../../i18n/locales/ca.json":j9,"../../i18n/locales/cs.json":V9,"../../i18n/locales/da.json":CM,"../../i18n/locales/de.json":SM,"../../i18n/locales/en.json":TM,"../../i18n/locales/es.json":NM,"../../i18n/locales/fa.json":Q9,"../../i18n/locales/fi.json":kM,"../../i18n/locales/fr.json":xM,"../../i18n/locales/he.json":LM,"../../i18n/locales/hu.json":G9,"../../i18n/locales/id.json":q9,"../../i18n/locales/it.json":DM,"../../i18n/locales/ko.json":J9,"../../i18n/locales/my.json":$9,"../../i18n/locales/nl.json":RM,"../../i18n/locales/pl.json":UM,"../../i18n/locales/pt.json":MM,"../../i18n/locales/ro.json":_M,"../../i18n/locales/ru.json":FM,"../../i18n/locales/sv.json":BM,"../../i18n/locales/tr.json":e3,"../../i18n/locales/uk.json":PM,"../../i18n/locales/ur.json":a3,"../../i18n/locales/zh.json":OM}),i3=Object.values(n3).map(t=>t.default);function eA(t){const e=new Set;for(const n of i3){const r=r3(n,t);if(r&&typeof r=="string"){const s=r.toLowerCase().trim();e.add(s)}}return Array.from(e)}function r3(t,e){const n=e.split(".");let r=t;for(const s of n)if(r&&typeof r=="object"&&s in r)r=r[s];else return;return r}const s3=eA("common.email"),o3=eA("common.username"),l3=eA("common.password"),Xn={username:{include:["username","login","identifier","user"]},fullName:{include:["fullname","full-name","full name"]},firstName:{include:["firstname","first-name","first_name","fname","name","given-name"]},lastName:{include:["lastname","last-name","last_name","lname","surname","family-name"]},email:{include:["email","mail","emailaddress"]},emailConfirm:{include:["confirm","verification","repeat","retype","verify","email2"]},password:{include:["password","pwd","pass"],exclude:["otp","totp","tfa","2fa","mfa","twofa","authenticator","one-time","onetime","verification-code","verificationcode","two-factor","second-factor","auth-code","security-code","six-digit"]},birthdate:{include:["birthdate","birth-date","dob","date-of-birth"]},gender:{include:["gender","sex"]},birthDateDay:{include:["-day","birthdate_d","birthdayday","_day","day"]},birthDateMonth:{include:["-month","birthdate_m","birthdaymonth","_month","month"]},birthDateYear:{include:["-year","birthdate_y","birthdayyear","_year","year"]},totp:{include:["totp","otp","one-time","onetime","six-digit","digit-code","token","authenticator","authentication","2fa","twofa","two-factor","mfa","security-code","auth-code","passcode","pin-code","pincode","google_code","verification-code","verificationcode","tfa","tfacode","second-factor","one time password","code"],exclude:["test"]}},Ch={male:["male","man","m","gender1","mr","mr."],female:["female","woman","f","gender2","mrs","mrs.","ms","ms."],other:["other","diverse","custom","prefer not","unknown","gender3"]},pv={resendCode:[/resend/i,/re-send/i,/send\s+again/i,/send\s+code\s+again/i],changeEmail:[/different\s+email/i,/change\s+email/i,/update\s+email/i,/use\s+another\s+email/i]},d3=["search","find","lookup","searchbox","search-box","searchfield","search-field","searchinput","search-input","searchquery","search-query","filter","filterable","filterinput","filter-input","filterfield","filter-field","filterbox","filter-box","setting","settings","config","configuration","timeout","duration","interval","refresh","access"],c3=new Set(["login","signin","sign","register","signup","account","authentication","password","access","auth","session","authenticate","credentials","logout","signout","portal","dashboard","home","welcome","page","site","secure","member","user","profile","settings","menu","overview","index","main","start","landing","free","create","new","your","special","offer","deal","discount","promotion","newsletter","help","support","contact","about","faq","terms","privacy","cookie","service","services","products","shop","store","cart","checkout","online","web","digital","mobile","my","personal","private","general","default","standard","website","system","admin","administrator","platform","portal","gateway","api","interface","console","today","now","current","latest","newest","recent","the","and","or","but","to","up"]),$n={username:{include:["gebruikersnaam","gebruiker","login","identifier"]},fullName:{include:["volledige naam"]},firstName:{include:["voornaam","naam"]},lastName:{include:["achternaam"]},email:{include:["e-mailadres","e-mail"]},emailConfirm:{include:["bevestig","herhaal","verificatie"]},password:{include:["wachtwoord","pwd"]},birthdate:{include:["geboortedatum","geboorte-datum"]},gender:{include:["geslacht","aanhef"]},birthDateDay:{include:["dag"]},birthDateMonth:{include:["maand"]},birthDateYear:{include:["jaar"]},totp:{include:["verificatiecode","eenmalig","authenticatie","tweefactor","beveiligingscode"]}},u3=["zoeken","zoek","zoekveld","zoek-veld","zoekinput","zoek-input","zoekbox","zoek-box","filter","filteren","filterveld","filter-veld","filterinput","filter-input","instelling","instellingen","configuratie","timeout","interval"],Sh={male:["man","mannelijk","heer"],female:["vrouw","vrouwelijk","mevrouw"],other:["anders","iets","overig","onbekend"]},hv={resendCode:[/opnieuw\s+verzenden/i,/verstuur\s+opnieuw/i,/code\s+opnieuw/i,/opnieuw\s+versturen/i],changeEmail:[/ander\s+e-?mail/i,/wijzig\s+e-?mail/i,/e-?mail\s+wijzigen/i,/ander\s+e-?mailadres/i]},m3=new Set(["inloggen","registreren","registratie","aanmelden","inschrijven","uitloggen","wachtwoord","toegang","authenticatie","account","portaal","overzicht","startpagina","welkom","pagina","beveiligd","lid","gebruiker","profiel","instellingen","menu","begin","hoofdpagina","gratis","nieuw","jouw","schrijf","nieuwsbrief","aanbieding","korting","speciaal","actie","hulp","ondersteuning","contact","over","voorwaarden","privacy","cookie","dienst","diensten","producten","winkel","bestellen","winkelwagen","online","web","digitaal","mobiel","mijn","persoonlijk","privé","algemeen","standaard","systeem","beheer","beheerder","platform","portaal","interface","console","vandaag","nu","huidig","recent","nieuwste","je","in","op","de","van","ons","allemaal"]);function Zn(...t){const e=[...new Set(t.flatMap(r=>r.include))],n=[...new Set(t.flatMap(r=>r.exclude??[]))];return n.length>0?{include:e,exclude:n}:{include:e}}const la={username:Zn(Xn.username,$n.username,{include:o3}),fullName:Zn(Xn.fullName,$n.fullName),firstName:Zn(Xn.firstName,$n.firstName),lastName:Zn(Xn.lastName,$n.lastName),email:Zn($n.email,Xn.email,{include:s3}),emailConfirm:Zn(Xn.emailConfirm,$n.emailConfirm),password:Zn(Xn.password,$n.password,{include:l3}),birthdate:Zn(Xn.birthdate,$n.birthdate),gender:Zn(Xn.gender,$n.gender),birthDateDay:Zn(Xn.birthDateDay,$n.birthDateDay),birthDateMonth:Zn(Xn.birthDateMonth,$n.birthDateMonth),birthDateYear:Zn(Xn.birthDateYear,$n.birthDateYear),totp:Zn(Xn.totp,$n.totp)},nd={male:[...new Set([...Ch.male,...Sh.male])],female:[...new Set([...Ch.female,...Sh.female])],other:[...new Set([...Ch.other,...Sh.other])]},fv=new Set([...c3,...m3]),Av={resendCode:[...pv.resendCode,...hv.resendCode],changeEmail:[...pv.changeEmail,...hv.changeEmail]},g3=[...new Set([...d3,...u3])];var Ds=(t=>(t.Username="username",t.Password="password",t.Email="email",t.Totp="totp",t))(Ds||{});class yv{constructor(e,n){Ue(this,"document");Ue(this,"clickedElement");Ue(this,"visibilityCache");var r;if(this.document=e,this.visibilityCache=new Map,n){let s=n.parentElement,l=!0;for(;s&&s!==this.document.body;){if(!this.isElementVisible(s,!0)){l=!1;break}s=s.parentElement}const c=(r=e.defaultView)==null?void 0:r.getComputedStyle(n),m=(c==null?void 0:c.display)==="none"||(c==null?void 0:c.visibility)==="hidden";l&&!m?this.clickedElement=n:this.clickedElement=null}else this.clickedElement=null}containsLoginForm(){let e=this.getFormWrapper();if((e==null?void 0:e.getAttribute("role"))==="dialog"){const c=e.querySelector("form"),m=e.querySelector('[id*="login"], [id*="register"], [class*="auth"], [class*="login"], [class*="register"]');e=c??m??e}if(e||(e=this.document.body),e.querySelectorAll("input").length>200)return!1;const r=this.containsPasswordField(e),s=this.containsLikelyUsernameOrEmailField(e),l=this.containsTotpField(e);return!!(r||s||l)}getForm(){if(!this.clickedElement)return null;const e=this.getFormWrapper();return this.detectFormFields(e)}static getSuggestedServiceName(e,n){const r=e.title,s=4,l=50,c=S=>{const T=S.length>=3&&S.length<=l,k=S.split(/[\s|\-—/\\]+/).length<=s;return T&&k},m=S=>{const T=S.toLowerCase().split(" ").map(R=>R.toLowerCase());let k=0;for(;k<T.length&&fv.has(T[k].toLowerCase());)k++;let L=T.length-1;for(;L>k&&fv.has(T[L].toLowerCase());)L--;return T.slice(k,L+1)},p=(S,T)=>S.split(/[\s|]+/).filter(k=>T.includes(k.toLowerCase())).join(" "),g=n.hostname.replace(/^www\./,""),f=/[|\-—/\\:]/.exec(r);if(f){const S=f.index,T=r.substring(0,S).trim(),k=r.substring(S+1).trim(),L=m(T),R=m(k),x=p(T,L),O=p(k,R),_=c(x),j=c(O);if(_&&j)return[x,O,g];if(_)return[x,g];if(j)return[O,g]}const v=m(r),w=p(r,v);return c(w)?[w,g]:[g]}getFormWrapper(){var n;return(n=this.clickedElement)==null?void 0:n.closest('form, [role="dialog"]')}matchesWordBoundary(e,n){return new RegExp(`(^|[\\s\\-_]|(?<=[a-z])(?=[A-Z]))${n}($|[\\s\\-_]|(?<=[a-z])(?=[A-Z]))`,"i").test(e)}matchesExclusionPatterns(e){var s;const n=[e.id,e.getAttribute("name"),e.getAttribute("placeholder"),e.getAttribute("class"),e.getAttribute("aria-label")].map(l=>(l==null?void 0:l.toLowerCase())??"").filter(l=>l.length>0);if(e.id||e.getAttribute("name")){const l=this.document.querySelector(`label[for="${e.id||e.getAttribute("name")}"]`);l&&n.push(((s=l.textContent)==null?void 0:s.toLowerCase())??"")}const r=g3;for(const l of n)for(const c of r)if(this.matchesWordBoundary(l,c))return!0;return!1}matchesEntryExclude(e,n){var s;if(!n.exclude||n.exclude.length===0)return!1;const r=[e.id,e.getAttribute("name"),e.getAttribute("placeholder"),e.getAttribute("class"),e.getAttribute("aria-label")].map(l=>(l==null?void 0:l.toLowerCase())??"").filter(l=>l.length>0);if(e.id||e.getAttribute("name")){const l=this.document.querySelector(`label[for="${e.id||e.getAttribute("name")}"]`);l&&r.push(((s=l.textContent)==null?void 0:s.toLowerCase())??"")}for(const l of r)for(const c of n.exclude)if(this.matchesWordBoundary(l,c))return!0;return!1}isLikelyFakeField(e){var m,p;const n=(e.getAttribute("name")||"").toLowerCase(),r=(e.id||"").toLowerCase(),s=(e.className||"").toLowerCase();if(n.includes("fake")||r.includes("fake")||s.includes("fake")||["honeypot","bot-field","hp-","hidden-field","bot_check","antispam"].some(g=>n.includes(g)||r.includes(g))||e.getAttribute("aria-hidden")==="true"||e.getAttribute("role")==="presentation")return!0;if(e.getAttribute("tabindex")==="-1"){const g=e.parentElement;if(g){const A=(m=this.document.defaultView)==null?void 0:m.getComputedStyle(g);if(A){const f=parseFloat(A.height),v=A.overflow;if(f===0&&v==="hidden")return!0}}}if(e.readOnly){const g=(p=this.document.defaultView)==null?void 0:p.getComputedStyle(e);if(g&&(g.display==="none"||g.visibility==="hidden"))return!0}return!1}getActualInputElement(e){if(e.tagName.toLowerCase()==="input")return e;const n=e;if(n.shadowRoot){const s=n.shadowRoot.querySelector("input, textarea");if(s)return s}const r=e.querySelector("input, textarea");return r||e}isElementVisible(e,n=!0){var s;if(!e)return!1;if(n&&this.visibilityCache.has(e))return this.visibilityCache.get(e);let r=e;for(;r;){try{const l=(s=this.document.defaultView)==null?void 0:s.getComputedStyle(r);if(!l){let p=r;for(;p;)n&&this.visibilityCache.set(p,!0),p=p.parentElement;return!0}if(l.display==="none"){let p=r;for(;p;)n&&this.visibilityCache.set(p,!1),p=p.parentElement;return!1}if(l.visibility==="hidden"){let p=r;for(;p;)n&&this.visibilityCache.set(p,!1),p=p.parentElement;return!1}if(n&&parseFloat(l.opacity)===0){let p=r;for(;p;)this.visibilityCache.set(p,!1),p=p.parentElement;return!1}if(r.tagName.toLowerCase()==="input"||r.tagName.toLowerCase()==="textarea"||r.tagName.toLowerCase()==="select"){const p=r.getBoundingClientRect(),g=parseFloat(l.height),A=parseFloat(l.width),f=parseFloat(l.maxHeight),v=parseFloat(l.maxWidth);if(p.width===0&&p.height===0&&(g===0||A===0||f===0||v===0))return n&&this.visibilityCache.set(r,!1),!1}if(l.position==="absolute"||l.position==="fixed"){const p=parseFloat(l.left),g=parseFloat(l.top),A=parseFloat(l.right),f=parseFloat(l.bottom);if(p<-5e3||g<-5e3||A<-5e3||f<-5e3){let v=r;for(;v;)n&&this.visibilityCache.set(v,!1),v=v.parentElement;return!1}}const m=l.getPropertyValue("clip");if(m&&m!=="auto"&&m.includes("0")){const p=m.match(/rect\((\d+)[^\d]+(\d+)[^\d]+(\d+)[^\d]+(\d+)\)/);if(p){const[,g,A,f,v]=p.map(Number);if(g===0&&A===0&&f===0&&v===0){let w=r;for(;w;)n&&this.visibilityCache.set(w,!1),w=w.parentElement;return!1}}}}catch{let l=r;for(;l;)n&&this.visibilityCache.set(l,!0),l=l.parentElement;return!0}r=r.parentElement}return n&&this.visibilityCache.set(e,!0),!0}findAllInputFields(e,n,r,s=[],l=!0){var w,S,T,k,L,R,x,O,_,j,G;const c=n.include,m=e?Array.from(e.querySelectorAll("input, select, [type]")):Array.from(this.document.querySelectorAll("input, select, [type]")),g=(e?Array.from(e.querySelectorAll("*")):Array.from(this.document.querySelectorAll("*"))).filter(P=>{const B=P;return B.shadowRoot?B.shadowRoot.querySelector("input, textarea")!==null:!1}),f=[...m,...g].filter((P,B,z)=>z.indexOf(P)===B),v=[];for(const P of Array.from(f)){if(s.includes(P)||this.matchesExclusionPatterns(P)||this.matchesEntryExclude(P,n)||this.isLikelyFakeField(P))continue;if(l){if(!this.isElementVisible(P,!0))continue}else if(!this.isElementVisible(P,!1))continue;let z=P.tagName.toLowerCase()==="select"?"select":((w=P.type)==null?void 0:w.toLowerCase())||((S=P.getAttribute("type"))==null?void 0:S.toLowerCase())||"";const Q=P,ae=Q.shadowRoot&&Q.shadowRoot.querySelector("input, textarea");if(ae&&!z){const W=Q.shadowRoot.querySelector("input, textarea");W&&(z=((T=W.type)==null?void 0:T.toLowerCase())||"text")}if(!r.includes(z)&&!(ae&&r.includes("text")&&!z))continue;if(r.includes("email")&&z==="email"){v.push({input:P,score:-1});continue}if(r.includes("password")&&z==="password"){v.push({input:P,score:-1});continue}const Y=((k=P.getAttribute("data-av-autocomplete")??P.getAttribute("autocomplete"))==null?void 0:k.toLowerCase())??"";if(Y){if(n===la.username&&Y==="username"){v.push({input:P,score:-2});continue}if(n===la.email&&Y==="email"){v.push({input:P,score:-2});continue}if(n===la.password&&(Y==="current-password"||Y==="new-password")){v.push({input:P,score:-2});continue}}const ne=((L=P.getAttribute("aria-describedby"))==null?void 0:L.toLowerCase())??"";if(ne&&n===la.username&&ne.includes("username")){v.push({input:P,score:-2});continue}const fe=[P.id,P.getAttribute("name"),P.getAttribute("placeholder"),P.getAttribute("class"),Y].map(W=>(W==null?void 0:W.toLowerCase())??"");if(P.id||P.getAttribute("name")){const W=this.document.querySelector(`label[for="${P.id||P.getAttribute("name")}"]`);W&&fe.push(((R=W.textContent)==null?void 0:R.toLowerCase())??"")}const X=P.getAttribute("aria-describedby");if(X){const W=X.split(/\s+/);for(const ie of W){const we=this.document.getElementById(ie);we&&fe.push(((x=we.textContent)==null?void 0:x.toLowerCase())??"")}}const te=P.getAttribute("aria-label");te&&fe.push(te.toLowerCase());let ce=P;for(let W=0;W<3&&ce;W++){const ie=ce.querySelectorAll('[slot="label"], [slot="helper-text"]');for(const we of Array.from(ie)){const le=((O=we.textContent)==null?void 0:O.toLowerCase())??"";le&&fe.push(le)}if(ce.shadowRoot){const we=ce.shadowRoot.querySelectorAll('slot[name="label"], slot[name="helper-text"]');for(const le of Array.from(we)){const ve=le.assignedNodes();for(const Pe of ve)Pe.textContent&&fe.push(Pe.textContent.toLowerCase())}}ce=ce.parentElement}const oe=P.parentElement;if(oe)for(const W of Array.from(oe.children))W!==P&&Array.from(W.classList).some(ie=>ie.toLowerCase().includes("label"))&&fe.push(((_=W.textContent)==null?void 0:_.toLowerCase())??"");let F=P;for(let W=0;W<5&&F&&!(F.children.length>15);W++){const ie=F.querySelector("label");if(ie){fe.push(((j=ie.textContent)==null?void 0:j.toLowerCase())??"");break}const we=F.closest("td");if(we){const le=we.closest("tr");if(le){for(const ve of Array.from(le.querySelectorAll("td")))if(ve!==we){fe.push(((G=ve.textContent)==null?void 0:G.toLowerCase())??"");break}}break}F=F.parentElement}let J=c.length;for(let W=0;W<c.length;W++)if(fe.some(ie=>ie.includes(c[W]))){J=W;break}J<c.length&&v.push({input:P,score:J})}return v.sort((P,B)=>P.score-B.score).map(P=>P.input)}findInputField(e,n,r,s=[],l=!0){const c=this.findAllInputFields(e,n,r,s,l),m=this.filterOutNestedDuplicates(c,s);if(r.includes("email")){const p=m.find(g=>(g.type||"").toLowerCase()==="email");if(p)return p}return m.length>0?m[0]:null}findEmailField(e,n=!0){const r=this.findAllInputFields(e,la.email,["text","email"],[],n),c=this.filterOutNestedDuplicates(r).filter(A=>{const f=(A.getAttribute("name")||"").toLowerCase(),v=(A.id||"").toLowerCase(),w=`${f} ${v}`;let S="";if(A.id||f){const L=this.document.querySelector(`label[for="${A.id||f}"]`);L&&(S=(L.textContent||"").toLowerCase())}const T=la.username.include.some(L=>S.includes(L)),k=la.email.include.some(L=>S.includes(L));if(T&&k){const L=la.username.include.some(x=>w.includes(x)),R=la.email.include.some(x=>w.includes(x));if(L&&!R)return!1}return!0})[0]??null,m=c?this.findAllInputFields(e,la.emailConfirm,["text","email"],[c],n):[],g=this.filterOutNestedDuplicates(m)[0]??null;return{primary:c,confirm:g}}findBirthdateFields(e,n=[]){const r=this.findInputField(e,la.birthdate,["date","text"],n);let s="yyyy-mm-dd";if(e&&r){const p=r.closest("div");if(p){const A=[...Array.from(p.getElementsByTagName("label")),...Array.from(p.getElementsByTagName("span")),p].map(f=>{var v;return((v=f.textContent)==null?void 0:v.toLowerCase())??""}).join(" ").replace(/[\s\u00A0]/g,"").toLowerCase();if(/dd[-/]mm[-/]jj/i.test(A)||/dd[-/]mm[-/]yyyy/i.test(A)?s=A.includes("/")?"dd/mm/yyyy":"dd-mm-yyyy":/mm[-/]dd[-/]yyyy/i.test(A)?s=A.includes("/")?"mm/dd/yyyy":"mm-dd-yyyy":/yyyy[-/]mm[-/]dd/i.test(A)&&(s=A.includes("/")?"yyyy/mm/dd":"yyyy-mm-dd"),s==="yyyy-mm-dd"&&r.placeholder){const f=r.placeholder.toLowerCase();/dd[-/]mm/i.test(f)?s=f.includes("/")?"dd/mm/yyyy":"dd-mm-yyyy":/mm[-/]dd/i.test(f)&&(s=f.includes("/")?"mm/dd/yyyy":"mm-dd-yyyy")}}}if(r)return{single:r,format:s,day:null,month:null,year:null};const l=this.findInputField(e,la.birthDateDay,["text","number","select"],n),c=this.findInputField(e,la.birthDateMonth,["text","number","select"],n),m=this.findInputField(e,la.birthDateYear,["text","number","select"],n);return{single:null,format:"yyyy-mm-dd",day:l,month:c,year:m}}findGenderField(e,n=[]){const r=this.findInputField(e,la.gender,["select"],n);if((r==null?void 0:r.tagName.toLowerCase())==="select")return{type:"select",field:r};const s=e?e.querySelectorAll('input[type="radio"][name*="gender"], input[type="radio"][name*="sex"]'):null;if(s&&s.length>0){const c=(m,p=!1)=>Array.from(s).find(g=>{var f,v;const A=[g.value,g.id,g.name,((v=(f=g.labels)==null?void 0:f[0])==null?void 0:v.textContent)??""].map(w=>(w==null?void 0:w.toLowerCase())??"");return p&&(nd.male.some(w=>A.some(S=>S.includes(w)))||nd.female.some(w=>A.some(S=>S.includes(w))))?!1:m.some(w=>A.some(S=>S.includes(w)))})??null;return{type:"radio",field:null,radioButtons:{male:c(nd.male),female:c(nd.female),other:c(nd.other)}}}return{type:"text",field:this.findInputField(e,la.gender,["text"],n)}}filterOutNestedDuplicates(e,n=[]){if(e.length===0)return e;const r=[];for(const s of e){let l=!0;for(const c of n){if(s===c){l=!1;break}if(c.contains(s)){l=!1;break}if(s.contains(c)){l=!1;break}const m=s,p=c;if(p.shadowRoot&&p.shadowRoot.contains(s)){l=!1;break}if(m.shadowRoot&&m.shadowRoot.contains(c)){l=!1;break}const g=this.getActualInputElement(s),A=this.getActualInputElement(c);if(g===A){l=!1;break}}if(l){for(const c of e)if(s!==c){if(s.contains(c)){l=!1;break}const m=s;if(m.shadowRoot&&m.shadowRoot.contains(c)){l=!1;break}}if(l){const c=this.getActualInputElement(s);if(c!==s&&e.includes(c))continue;r.push(s)}}}return r}findPasswordField(e,n=!0){const r=this.findAllInputFields(e,la.password,["password"],[],n),s=this.filterOutNestedDuplicates(r);return{primary:s[0]??null,confirm:s[1]??null}}containsPasswordField(e){const n=this.findPasswordField(e);return!!(n.primary&&this.isElementVisible(n.primary))}containsTotpField(e){const n=this.findTotpField(e);return n!==null&&this.isElementVisible(n)}isEmailVerificationForm(){if(!this.clickedElement)return!1;let e=this.clickedElement,n=0;for(;e.parentElement&&n<15&&(e=e.parentElement,n++,!(e.tagName==="FORM"||e.getAttribute("role")==="dialog"||e.tagName==="MAIN"||e.id||e.className.includes("container"))););const r=e.textContent||"",c=Array.from(e.querySelectorAll("a, button")).map(A=>{var f;return((f=A.textContent)==null?void 0:f.toLowerCase())||""}).join(" "),m=/[a-z0-9*.\-_]+@[a-z0-9*.-]+\.[a-z*]{2,}/i.test(r);if(!m)return!1;const p=Av.resendCode.some(A=>A.test(c)),g=Av.changeEmail.some(A=>A.test(c));return m&&(p||g)}findTotpField(e,n=[]){var c,m;if(this.isEmailVerificationForm())return null;const r=this.findAllInputFields(e,la.totp,["text","number","password"],n),s=this.filterOutNestedDuplicates(r);if(s.length>0)return s[0];const l=e?Array.from(e.querySelectorAll("input")):Array.from(this.document.querySelectorAll("input"));for(const p of l){if(!this.isElementVisible(p)||this.matchesEntryExclude(p,la.totp))continue;if((((c=p.getAttribute("autocomplete"))==null?void 0:c.toLowerCase())??"")==="one-time-code")return p;const A=p.maxLength,f=p.getAttribute("inputmode");if(A===6&&f==="numeric"||((m=p.type)==null?void 0:m.toLowerCase())==="tel"&&A===6)return p;const w=p.getAttribute("pattern");if(w&&(/^\[0-9\]/.test(w)||/^\\d/.test(w))&&(A===6||A===1)||A===1&&f==="numeric")return p}return null}containsLikelyUsernameOrEmailField(e){const n=this.clickedElement!==null;return!!(this.findEmailField(e,!n).primary||this.findInputField(e,la.username,["text"],[],!n)||this.findInputField(e,la.firstName,["text"],[],!n)||this.findInputField(e,la.lastName,["text"],[],!n))}isAutofillTriggerableField(){return this.getDetectedFieldType()!==null}getDetectedFieldType(){if(!this.clickedElement)return null;const e=this.clickedElement.getAttribute("data-av-field-type");if(e&&Object.values(Ds).includes(e))return e;const n=this.getActualInputElement(this.clickedElement);if(n!==this.clickedElement){const A=n.getAttribute("data-av-field-type");if(A&&Object.values(Ds).includes(A))return A}const r=this.getFormWrapper(),s=[this.clickedElement,n].filter((A,f,v)=>A&&v.indexOf(A)===f),l=!1;if(this.findAllInputFields(r,la.username,["text"],[],l).some(A=>s.includes(A)))return Ds.Username;const m=this.findPasswordField(r);if(m.primary&&s.includes(m.primary)||m.confirm&&s.includes(m.confirm))return Ds.Password;if(this.findAllInputFields(r,la.email,["text","email"],[],l).some(A=>s.includes(A)))return Ds.Email;const g=this.findTotpField(r);return g&&s.includes(g)?Ds.Totp:null}detectFormFields(e){const n=[],r=this.clickedElement===null,s=this.findEmailField(e,r);s.primary&&n.push(s.primary),s.confirm&&n.push(s.confirm);const l=this.findPasswordField(e,r);l.primary&&n.push(l.primary),l.confirm&&n.push(l.confirm);const c=this.findTotpField(e,n);c&&n.push(c);const m=this.findInputField(e,la.username,["text"],n,r);m&&n.push(m);const p=this.findInputField(e,la.fullName,["text"],n,r);p&&n.push(p);const g=this.findInputField(e,la.lastName,["text"],n,r);g&&n.push(g);const f=m&&l.primary&&!s.primary&&!s.confirm&&!l.confirm?null:this.findInputField(e,la.firstName,["text"],n,r);f&&n.push(f);const v=this.findBirthdateFields(e,n);v.single&&n.push(v.single),v.day&&n.push(v.day),v.month&&n.push(v.month),v.year&&n.push(v.year);const w=this.findGenderField(e,n);return w.field&&n.push(w.field),{form:e,emailField:s.primary,emailConfirmField:s.confirm,usernameField:m,passwordField:l.primary,passwordConfirmField:l.confirm,fullNameField:p,firstNameField:f,lastNameField:g,birthdateField:v,genderField:w,totpField:c}}}class Ev{static getServiceInfo(e,n){const r=yv.getSuggestedServiceName(e,n),s=n.href;let l="";try{const c=new URL(s);(c.protocol==="http:"||c.protocol==="https:")&&(l=c.origin+c.pathname,l.endsWith("/")&&(l=l.slice(0,-1)))}catch(c){console.error("Error parsing current URL:",c)}return{suggestedNames:r,currentUrl:s,serviceUrl:l,domain:n.hostname.replace(/^www\./,"")}}static getServiceInfoFromTab(e,n){try{const r=new URL(e),s={href:e,hostname:r.hostname,protocol:r.protocol,pathname:r.pathname,origin:r.origin},l={title:n||r.hostname},c=yv.getSuggestedServiceName(l,s);let m="";return(r.protocol==="http:"||r.protocol==="https:")&&(m=r.origin+r.pathname,m.endsWith("/")&&(m=m.slice(0,-1))),{suggestedNames:c,currentUrl:e,serviceUrl:m,domain:r.hostname.replace(/^www\./,"")}}catch(r){console.error("Error parsing tab URL:",r);const s=e.replace(/^https?:\/\/(www\.)?/,"").split("/")[0];return{suggestedNames:[s],currentUrl:e,serviceUrl:e,domain:s}}}static getEncodedServiceInfo(e,n){const r=this.getServiceInfo(e,n);return{serviceName:r.suggestedNames.length>0?encodeURIComponent(r.suggestedNames[0]):"",serviceUrl:r.serviceUrl?encodeURIComponent(r.serviceUrl):"",currentUrl:encodeURIComponent(r.currentUrl),domain:encodeURIComponent(r.domain)}}static getEncodedServiceInfoFromTab(e,n){const r=this.getServiceInfoFromTab(e,n);return{serviceName:r.suggestedNames.length>0?encodeURIComponent(r.suggestedNames[0]):"",serviceUrl:r.serviceUrl?encodeURIComponent(r.serviceUrl):"",currentUrl:encodeURIComponent(r.currentUrl),domain:encodeURIComponent(r.domain)}}}const p3=()=>{const[t]=Xu();return{detectService:b.useCallback(async n=>{let r=n||"",s="";try{const l=t.get("serviceName"),c=t.get("serviceUrl"),m=t.get("currentUrl");if(l||c||m){if(l&&(r=decodeURIComponent(l)),c&&(s=decodeURIComponent(c)),m&&(!l||!c)){const p=decodeURIComponent(m),g=Ev.getServiceInfoFromTab(p);!l&&g.suggestedNames.length>0&&(r=g.suggestedNames[0]),!c&&g.serviceUrl&&(s=g.serviceUrl)}}else{const[p]=await Qo.tabs.query({active:!0,currentWindow:!0});if(p!=null&&p.url){const g=Ev.getServiceInfoFromTab(p.url,p.title);g.suggestedNames.length>0&&!r&&(r=g.suggestedNames[0]),g.serviceUrl&&(s=g.serviceUrl)}}}catch(l){console.error("Error detecting service information:",l)}return{serviceName:r,serviceUrl:s}},[t])}},h3=5e3;class rs{static extractSourceFromUrl(e){if(!e)return"unknown";try{return new URL(e.startsWith("http")?e:`https://${e}`).hostname.toLowerCase().replace(/^www\./,"")}catch{return"unknown"}}static normalizeUrl(e){if(!e)return;const n=e.trim();if(n&&!(!n.startsWith("http://")&&!n.startsWith("https://")&&!n.startsWith("www.")))return n.startsWith("www.")?`https://${n}`:n}static extractFirstValidUrl(e){if(!e)return;const r=(Array.isArray(e)?e:[e]).find(s=>{const l=s==null?void 0:s.trim();return l&&(l.startsWith("http://")||l.startsWith("https://")||l.startsWith("www."))});return rs.normalizeUrl(r)}static hasLogoForUrl(e,n){if(!e)return!1;const r=rs.extractSourceFromUrl(e);return r==="unknown"?!1:n.logos.hasLogoForSource(r)}static async fetchFavicon(e,n,r,s=h3){const l=rs.normalizeUrl(e);if(!l)return{success:!1,error:"Invalid URL"};const c=rs.extractSourceFromUrl(l);if(c==="unknown")return{success:!1,error:"Could not extract domain from URL"};if(n.logos.hasLogoForSource(c))return{success:!1,skipped:!0};try{const m=new Promise((A,f)=>setTimeout(()=>f(new Error("Favicon extraction timed out")),s)),p=r.get(`Favicon/Extract?url=${encodeURIComponent(l)}`),g=await Promise.race([p,m]);return g!=null&&g.image?{success:!0,imageData:Uint8Array.from(Mo.Buffer.from(g.image,"base64"))}:{success:!1,error:"No favicon returned from server"}}catch(m){const p=m instanceof Error?m.message:"Unknown error";return console.error("[Favicon] Error extracting favicon:",p),{success:!1,error:p}}}static async fetchAndAttachFavicon(e,n,r,s){const l=rs.extractFirstValidUrl(n);if(!l)return{...e,Logo:void 0};const c=await rs.fetchFavicon(l,r,s);return c.success&&c.imageData?{...e,Logo:c.imageData}:e}}const f3=[Ea.Login,Ea.Alias,Ea.CreditCard,Ea.Note],A3=Ea.Login,bv=()=>{const{t}=it(),{id:e}=qu(),[n]=Xu(),r=Ba(),s=Pa(),l=qt(),c=e!==void 0&&e.length>0,m=n.get("type"),p=n.get("name"),g=n.get("folderId"),{executeVaultMutationAsync:A}=Hs(),{setHeaderButtons:f,setBackButtonTitle:v}=Ei(),{setIsInitialLoading:w}=va(),{generateAlias:S,generateRandomEmailPrefix:T,lastGeneratedValues:k}=_9(),{detectService:L}=p3(),R=Gi(),[x,O]=b.useState(!0),[_,j]=b.useState(!1),[G,P]=b.useState(!1),[B,z]=b.useState(null),[Q,ae]=b.useState({}),[Y,ne]=b.useState([]),[fe,X]=b.useState([]),[te,ce]=b.useState(!1),[oe,F]=b.useState(!1),[J,W]=b.useState(!1),ie=b.useRef(!1),we=b.useRef(null),[le,ve]=b.useState(!1),[Pe,_e]=b.useState(new Set),[Ke,Ye]=b.useState(new Set),[Ot,Ve]=b.useState([]),[Me,Qe]=b.useState([]),[ht,Ie]=b.useState({isAddFormVisible:!1,formData:{name:"",secretKey:""}}),[Be,Ge]=b.useState([]),[qe,nt]=b.useState([]),[We,Ee]=b.useState([]),[je,Je]=b.useState(!0),[ut,Dt]=b.useState(void 0),[M]=b.useState(!1),C=b.useCallback(de=>{de.item&&z(de.item),de.fieldValues&&ae(de.fieldValues),de.customFields&&ne(de.customFields),de.totpEditorState&&Ie(de.totpEditorState),de.show2FA!==void 0&&F(de.show2FA),de.showAttachments!==void 0&&W(de.showAttachments),de.manuallyAddedFields&&_e(new Set(de.manuallyAddedFields)),de.isLoginEmailInEmailMode!==void 0&&Je(de.isLoginEmailInEmailMode),de.passwordSettings!==void 0&&Dt(de.passwordSettings)},[]),{loadPersistedValues:N,clearPersistedValues:K}=F9({formId:e||null,isLoading:x,formData:{item:B,fieldValues:Q,customFields:Y,totpEditorState:ht,show2FA:oe,showAttachments:J,manuallyAddedFields:Array.from(Pe),isLoginEmailInEmailMode:je,passwordSettings:ut},onRestore:C,skipRestore:M}),ee=b.useMemo(()=>B?QM(B.ItemType):[],[B]),pe=b.useMemo(()=>ee.find(de=>de.FieldKey==="notes.content"),[ee]),Se=b.useMemo(()=>B?KM(B.ItemType):[],[B]),Oe=b.useMemo(()=>{const de=new Set;return ee.forEach(He=>{B&&od(He,B.ItemType)&&de.add(He.FieldKey)}),Pe.forEach(He=>de.add(He)),Ke.forEach(He=>de.add(He)),Object.keys(Q).forEach(He=>{const ze=Q[He];ze&&(Array.isArray(ze)?ze.length>0:ze.toString().trim()!=="")&&de.add(He)}),de},[B,ee,Pe,Ke,Q]),lt=b.useCallback(de=>{if(!B)return!1;if(Pe.has(de.FieldKey)||Ke.has(de.FieldKey))return!0;const He=ee.find(ze=>ze.FieldKey===de.FieldKey);return He?od(He,B.ItemType):!0},[B,ee,Pe,Ke]),wt=b.useMemo(()=>ee.filter(de=>de.Category===pt.Primary),[ee]),kt=b.useMemo(()=>{const de={};return ee.forEach(He=>{if(He.Category===pt.Notes||He.Category===pt.Metadata||He.Category===pt.Primary)return;const ze=He.Category;de[ze]||(de[ze]=[]),de[ze].push(He)}),de},[ee]);b.useEffect(()=>{if(!(l!=null&&l.sqliteClient)||!e||!c){const de=m&&f3.includes(m)?m:A3;(async()=>{const{serviceName:ze,serviceUrl:yt}=await L(p),Re={Id:crypto.randomUUID().toUpperCase(),Name:ze,ItemType:de,FolderId:g||null,Fields:[],CreatedAt:new Date().toISOString(),UpdatedAt:new Date().toISOString()};if(z(Re),Je(de===Ea.Login),yt&&ae(Ae=>({...Ae,"login.url":yt})),l!=null&&l.sqliteClient){const Ae=l.sqliteClient.folders.getAll();X(Ae)}await rt.getSkipFormRestore()?await rt.setSkipFormRestore(!1):(await N(),z(Ae=>Ae&&{...Ae,FolderId:g||null})),O(!1),w(!1)})();return}try{const de=l.sqliteClient.items.getById(e);if(de){z(de);const He=l.sqliteClient.folders.getAll();X(He);const ze={},yt=[],Re=new Set;de.Fields.forEach(Fe=>{ze[Fe.FieldKey]=Fe.Value,Re.add(Fe.FieldKey),Fe.IsCustomField&&yt.push({tempId:Fe.FieldKey,label:Fe.Label,fieldType:Fe.FieldType,isHidden:Fe.IsHidden,displayOrder:Fe.DisplayOrder})}),ae(ze),yt.sort((Fe,Tt)=>Fe.displayOrder-Tt.displayOrder),ne(yt),Ye(Re);const q=l.sqliteClient.settings.getTotpCodesForItem(e);Ve(q),Qe(q.map(Fe=>Fe.Id)),q.length>0&&F(!0);const Ae=l.sqliteClient.settings.getAttachmentsForItem(e);Ge(Ae),nt(Ae.map(Fe=>Fe.Id)),Ae.length>0&&W(!0),O(!1),w(!1)}else console.error("Item not found"),s("/items")}catch(de){console.error("Error loading item:",de),O(!1),w(!1)}},[l==null?void 0:l.sqliteClient,e,c,m,p,g,s,w,L,N]);const ft=b.useCallback(async()=>{const de=await S();de&&(ae(He=>{const ze=He["login.username"]||"",yt=He["login.password"]||"",Re=He["login.email"]||"",q={...He,"alias.first_name":de.firstName,"alias.last_name":de.lastName,"alias.gender":de.gender,"alias.birthdate":de.birthdate};return(!Re||Re===k.email)&&(q["login.email"]=de.email),(!ze||ze===k.username)&&(q["login.username"]=de.username),(!yt||yt===k.password)&&(q["login.password"]=de.password),q}),ve(!0))},[S,k]),bi=b.useCallback(()=>{if(!(l!=null&&l.sqliteClient))return;const de=Q["alias.first_name"]||"",He=Q["alias.last_name"]||"";let ze;if(!de.trim()&&!He.trim())ze=T();else{const q=Q["alias.gender"]||ex.Other,Ae=Q["alias.birthdate"]||"";ze=new Zf().generateEmailPrefix({firstName:de,lastName:He,gender:q,birthDate:Ae?new Date(Ae):new Date,emailPrefix:"",nickName:""})}const yt=l.sqliteClient.settings.getDefaultEmailDomain(),Re=yt?`${ze}@${yt}`:ze;ae(q=>({...q,"login.email":Re}))},[l==null?void 0:l.sqliteClient,Q,T]),La=b.useCallback(()=>{if(!(l!=null&&l.sqliteClient))return;const de=T(),He=l.sqliteClient.settings.getDefaultEmailDomain(),ze=He?`${de}@${He}`:de;ae(yt=>({...yt,"login.email":ze}))},[l==null?void 0:l.sqliteClient,T]),gn=b.useCallback(async()=>{const de=await S();de&&ae(He=>({...He,"login.username":de.username}))},[S]),jt=b.useMemo(()=>{if(!B)return!1;const de=ee.find(He=>He.FieldKey==="alias.first_name");return de?od(de,B.ItemType):!1},[B,ee]),na=b.useMemo(()=>ee.some(de=>de.FieldKey==="login.username"||de.FieldKey==="login.password"),[ee]);b.useEffect(()=>{!c&&jt&&!x&&(l!=null&&l.sqliteClient)&&!ie.current&&(ie.current=!0,ft())},[c,jt,x,l==null?void 0:l.sqliteClient,ft]),b.useEffect(()=>{!c&&!x&&we.current&&we.current.focus()},[c,x]);const De=b.useCallback((de,He)=>{ae(ze=>({...ze,[de]:He}))},[]),Oa=b.useCallback(async()=>{var de;if(!(!B||_)){xo.flushSync(()=>{j(!0)}),await new Promise(He=>setTimeout(He,10));try{const He=[];ee.forEach(Re=>{const q=Q[Re.FieldKey];q&&(Array.isArray(q)?q.length>0:q.trim()!=="")&&He.push({FieldKey:Re.FieldKey,Label:Re.FieldKey,FieldType:Re.FieldType,Value:q,IsHidden:Re.IsHidden,DisplayOrder:Re.DefaultDisplayOrder,IsCustomField:!1,EnableHistory:Re.EnableHistory})}),Y.forEach(Re=>{const q=Q[Re.tempId]||"";He.push({FieldKey:Re.tempId,Label:Re.label,FieldType:Re.fieldType,Value:q,IsHidden:Re.isHidden,DisplayOrder:Re.displayOrder,IsCustomField:!0,EnableHistory:!1})});let ze={...B,Id:c?B.Id:crypto.randomUUID().toUpperCase(),Fields:He,UpdatedAt:new Date().toISOString()};const yt=Q["login.url"];if(l!=null&&l.sqliteClient&&yt?ze=await rs.fetchAndAttachFavicon(ze,yt,l.sqliteClient,R):yt||(ze.Logo=void 0),!(l!=null&&l.sqliteClient))throw new Error("Database not initialized");await A(async()=>{if(c){if(await l.sqliteClient.items.update(ze,qe,Be,Me,Ot),We.length>0)for(const Re of We)await l.sqliteClient.passkeys.deleteById(Re)}else await l.sqliteClient.items.create(ze,Be,Ot)}),K(),c&&((de=r.state)!=null&&de.fromDetails)?s(-1):s(`/items/${ze.Id}`,{replace:!0})}catch(He){console.error("Error saving item:",He),j(!1)}}},[B,_,Q,ee,Y,l,c,A,s,r.state,qe,Be,Me,Ot,We,R,K]),xt=b.useCallback(async()=>{if(!(!B||!c||!(l!=null&&l.sqliteClient)))try{await A(async()=>{await l.sqliteClient.items.trash(B.Id)}),s("/items")}catch(de){console.error("Error deleting item:",de)}finally{P(!1)}},[B,c,l,A,s]),Rt=b.useCallback((de,He)=>{const yt={tempId:crypto.randomUUID(),label:de,fieldType:He,isHidden:!1,displayOrder:ee.length+Y.length+1};ne(Re=>[...Re,yt])},[ee.length,Y.length]),Da=b.useCallback(de=>{ne(He=>He.filter(ze=>ze.tempId!==de)),ae(He=>{const ze={...He};return delete ze[de],ze})},[]),sn=b.useCallback((de,He)=>{ne(ze=>ze.map(yt=>yt.tempId===de?{...yt,label:He}:yt))},[]),Ht=b.useCallback(de=>{ne(de)},[]),Mt=b.useCallback(de=>{if(!B)return;const He=B.ItemType;!c&&He!==de&&(ae(ze=>{const yt={};return Object.entries(ze).forEach(([Re,q])=>{const Ae=Ro(Re);Ae?ud(Ae,de)&&(yt[Re]=q):yt[Re]=q}),yt}),_e(ze=>{const yt=new Set;return ze.forEach(Re=>{const q=Ro(Re);(!q||ud(q,de))&&yt.add(Re)}),yt}),Ye(ze=>{const yt=new Set;return ze.forEach(Re=>{const q=Ro(Re);(!q||ud(q,de))&&yt.add(Re)}),yt})),ie.current=!1,Je(de===Ea.Login),z({...B,ItemType:de,Fields:c?B.Fields:[]}),ce(!1)},[B,c]),Kt=b.useCallback(()=>{ae(de=>({...de,"notes.content":""})),_e(de=>{const He=new Set(de);return He.delete("notes.content"),He})},[]),Vt=b.useCallback(()=>{F(!0),Ie({isAddFormVisible:!0,formData:{name:"",secretKey:""}})},[]),da=b.useCallback(()=>{W(!0)},[]),pa=b.useCallback(de=>{_e(He=>new Set(He).add(de))},[]),Xa=b.useMemo(()=>{const de=[];return na&&de.push({key:"2fa",isVisible:oe,onAdd:Vt}),de.push({key:"attachments",isVisible:J,onAdd:da}),de},[na,oe,J,Vt,da]),pn=b.useCallback(de=>{_e(He=>{const ze=new Set(He);return ze.delete(de),ze}),ae(He=>{const ze={...He};return delete ze[de],ze})},[]);b.useEffect(()=>{const de=d.jsxs("div",{className:"flex items-center gap-2",children:[c&&d.jsx(Pn,{onClick:()=>P(!0),title:t("items.deleteItemTitle"),iconType:Ya.DELETE,variant:"danger",disabled:_}),d.jsx(Pn,{id:"save-credential",onClick:Oa,title:t(_?"common.saving":"items.saveItem"),iconType:Ya.SAVE,isLoading:_,disabled:_})]});return f(de),()=>f(null)},[f,c,t,Oa,_]),b.useEffect(()=>{if(c)v(t("items.itemDetails"));else if(g&&(l!=null&&l.sqliteClient)){const He=l.sqliteClient.folders.getAll().find(ze=>ze.Id===g);v(He?He.Name:t("items.title"))}else v(t("items.title"));return()=>v(null)},[v,c,g,l==null?void 0:l.sqliteClient,t]);const Ta=b.useCallback((de,He,ze,yt,Re,q)=>{const Ae=Q[de]||"";if(Re){const It=Array.isArray(Ae)&&Ae.length>0?Ae:Ae?[Ae]:[""];return d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:He}),It.map((Yt,Zt)=>d.jsxs("div",{className:"relative",children:[d.jsx("input",{id:`${de}-${Zt}`,type:"text",value:Yt,onChange:wa=>{const ma=[...It];ma[Zt]=wa.target.value,De(de,ma.filter(ii=>ii.trim()!==""))},className:"w-full px-3 py-2 pr-10 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:text-white"}),Zt===It.length-1&&d.jsx("button",{type:"button",onClick:()=>De(de,[...It,""]),className:"absolute right-2 top-1/2 -translate-y-1/2 w-6 h-6 flex items-center justify-center text-gray-400 hover:text-primary-500 dark:hover:text-primary-400 transition-colors",children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 6v6m0 0v6m0-6h6m-6 0H6"})})})]},`${de}-${Zt}`))]})}const Fe=Array.isArray(Ae)?Ae[0]||"":Ae,Tt=(It,Yt=!0)=>q?d.jsxs("div",{className:"relative",children:[It,d.jsx("button",{type:"button",onClick:q,className:`absolute right-2 ${Yt?"top-[38px]":"top-1/2"} -translate-y-1/2 w-6 h-6 flex items-center justify-center text-gray-300 hover:text-red-400 dark:text-gray-500 dark:hover:text-red-400 transition-colors`,title:t("common.delete"),children:d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}):It;switch(ze){case ea.Password:return Tt(d.jsx(HO,{id:de,label:He,value:Fe,onChange:It=>De(de,It),showPassword:le,onShowPasswordChange:ve,initialSettings:ut,onSettingsChange:Dt}));case ea.Hidden:return Tt(d.jsx(Bk,{id:de,label:He,value:Fe,onChange:It=>De(de,It)}));case ea.TextArea:return Tt(d.jsxs("div",{children:[He&&d.jsx("label",{htmlFor:de,className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:He}),d.jsx("textarea",{id:de,value:Fe,onChange:It=>De(de,It.target.value),rows:4,className:`w-full px-3 py-2 ${q?"pr-10":""} border border-gray-300 dark:border-gray-600 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:text-white`})]}));case ea.Email:return d.jsx(_O,{id:de,value:Fe,onChange:It=>De(de,It),onRemove:q,onGenerateAlias:jt?bi:La,isEmailMode:je,onEmailModeChange:Je});case ea.URL:case ea.Phone:case ea.Number:case ea.Date:case ea.Text:default:return de==="login.username"&&jt?d.jsx(VO,{id:de,label:He,value:Fe,onChange:It=>De(de,It),onRegenerate:gn}):Tt(d.jsx(Od,{id:de,label:He,value:Fe,onChange:It=>De(de,It),type:"text"}))}},[Q,De,le,t,bi,La,jt,gn,je,ut]),ha=b.useCallback(de=>{de.preventDefault(),Oa()},[Oa]),Ra=b.useCallback(de=>{switch(de){case pt.Login:return t("items.loginCredentials");case pt.Alias:return t("common.alias");case pt.Card:return t("items.cardInformation");default:return de}},[t]),jn=b.useCallback(de=>de===pt.Alias&&jt?d.jsx(d.Fragment,{children:d.jsx("button",{type:"button",onClick:ft,className:"p-1.5 text-gray-400 hover:text-primary-500 focus:outline-none",title:t("common.generate"),children:d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("path",{d:"M23 4v6h-6"}),d.jsx("path",{d:"M20.49 15a9 9 0 1 1-2.12-9.36L23 10"})]})})}):null,[jt,ft,t]);return x||!B?d.jsx("div",{className:"flex justify-center items-center p-8",children:d.jsx(Ai,{})}):d.jsxs("form",{onSubmit:ha,className:"space-y-4",children:[d.jsx(a4,{selectedType:B.ItemType,isEditMode:c,showDropdown:te,onDropdownToggle:ce,onTypeChange:Mt,onRegenerateAlias:jt&&!c?ft:void 0}),d.jsxs(cu,{children:[d.jsx(t4,{inputRef:we,value:B.Name||"",onChange:de=>z({...B,Name:de}),folders:fe,selectedFolderId:B.FolderId,onFolderChange:de=>z({...B,FolderId:de})}),wt.map(de=>d.jsx("div",{children:Ta(de.FieldKey,t(`fieldLabels.${de.FieldKey}`,{defaultValue:de.FieldKey}),de.FieldType,de.IsHidden,de.IsMultiValue)},de.FieldKey))]}),c&&B.HasPasskey&&d.jsx(KO,{itemId:B.Id,passkeyIdsMarkedForDeletion:We,onPasskeyMarkedForDeletion:Ee}),Object.keys(kt).map(de=>{const He=kt[de],ze=He.filter(Ae=>lt(Ae)),yt=de===pt.Login?He.find(Ae=>Ae.FieldKey==="login.email"):null,Re=yt&&!lt(yt),q=de===pt.Login?[...ze].sort((Ae,Fe)=>{const Tt={"login.email":0,"login.username":1,"login.password":2},It=Tt[Ae.FieldKey]??99,Yt=Tt[Fe.FieldKey]??99;return It-Yt}):ze;return q.length===0&&!Re?null:d.jsx(cu,{title:d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("span",{children:Ra(de)}),Re&&d.jsxs("button",{type:"button",onClick:()=>pa("login.email"),className:"inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded-full transition-colors focus:outline-none text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400 border border-dashed border-gray-300 dark:border-gray-600 hover:border-primary-400 dark:hover:border-primary-500",children:[d.jsxs("svg",{className:"w-2.5 h-2.5 -ml-0.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[d.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),d.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),d.jsx("span",{children:t("common.email")})]})]}),actions:jn(de),children:q.map(Ae=>{const Fe=B&&Pe.has(Ae.FieldKey)&&!od(Ae,B.ItemType);return d.jsx(qa.Fragment,{children:Ta(Ae.FieldKey,t(`fieldLabels.${Ae.FieldKey}`,{defaultValue:Ae.FieldKey}),Ae.FieldType,Ae.IsHidden,Ae.IsMultiValue,Fe?()=>pn(Ae.FieldKey):void 0)},Ae.FieldKey)})},de)}),pe&&Oe.has("notes.content")&&d.jsx(cu,{title:t("common.notes"),actions:lt(pe)?void 0:d.jsx("button",{type:"button",onClick:Kt,className:"p-1.5 text-gray-400 hover:text-red-500 focus:outline-none",title:t("common.delete"),children:d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}),children:Ta(pe.FieldKey,"",pe.FieldType,pe.IsHidden,pe.IsMultiValue)}),Y.length>0&&d.jsx(cu,{title:t("common.customFields"),children:d.jsx(MO,{customFields:Y,fieldValues:Q,onFieldsReorder:Ht,onFieldValueChange:(de,He)=>De(de,He),onFieldLabelChange:sn,onFieldDelete:Da})}),oe&&na&&d.jsx(e4,{totpCodes:Ot,onTotpCodesChange:Ve,originalTotpCodeIds:Me,isAddFormVisible:ht.isAddFormVisible,formData:ht.formData,onStateChange:Ie,itemDisplayName:(B==null?void 0:B.Name)||void 0,itemUsername:Q["login.username"]||Q["login.email"]}),J&&d.jsx(zO,{attachments:Be,onAttachmentsChange:Ge,itemId:c?e:void 0}),d.jsx(zB,{optionalSystemFields:Se,visibleFieldKeys:Oe,optionalSections:Xa,callbacks:{onAddSystemField:pa,onAddCustomField:Rt}}),c&&d.jsx(Id,{isOpen:G,onClose:()=>P(!1),title:t("items.deleteItemTitle"),message:t("items.deleteItemConfirm"),confirmText:t("common.delete"),cancelText:t("common.cancel"),onConfirm:xt,variant:"danger"})]})},y3=()=>{const t=Ba(),e=j2(),n=b.useRef([]);return b.useEffect(()=>{if(e==="REPLACE"){n.current.length===0?n.current.push(t.pathname+t.search):n.current[n.current.length-1]=t.pathname+t.search;return}const s=t.pathname+t.search,l=n.current.indexOf(s);l!==-1?n.current=n.current.slice(0,l+1):n.current.push(s)},[t,e]),{findStepsBack:s=>{const l=n.current.length-1,c=n.current.lastIndexOf(s);return c===-1||c===l?null:l-c}}},Z1=({folderId:t,rootPath:e="/items",rootLabel:n})=>{const{t:r}=it(),s=Pa(),l=Ba(),c=qt(),{findStepsBack:m}=y3(),p=b.useMemo(()=>{if(!t||!(c!=null&&c.sqliteClient))return[];const v=c.sqliteClient.folders.getAll(),w=wf(t,v),S=LN(t,v),T=w.map((L,R)=>({name:L,id:S[R]})),k=`/items/folder/${t}`;return l.pathname===k&&T.length>0?T.slice(0,-1):T},[t,c==null?void 0:c.sqliteClient,l.pathname]),g=b.useCallback(v=>{const w=m(v);w!==null&&w>0?s(-w):s(v)},[s,m]),A=l.pathname==="/items"||l.pathname==="/items/";if(!t||p.length===0&&A)return null;const f=n??r("items.title");return d.jsxs("div",{className:"mb-3 flex items-center gap-1 text-sm text-gray-600 dark:text-gray-400 overflow-x-auto",children:[A?d.jsxs("span",{className:"text-gray-900 dark:text-white font-medium flex-shrink-0 flex items-center gap-1",children:[d.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"})}),f]}):d.jsxs("button",{onClick:()=>g(e),className:"hover:text-orange-600 dark:hover:text-orange-400 transition-colors flex-shrink-0 flex items-center gap-1",children:[d.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"})}),f]}),p.map(v=>{const w=`/items/folder/${v.id}`;return d.jsxs(qa.Fragment,{children:[d.jsx("svg",{className:"w-4 h-4 flex-shrink-0",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:d.jsx("polyline",{points:"9 6 15 12 9 18"})}),d.jsx("button",{onClick:()=>g(w),className:"hover:text-orange-600 dark:hover:text-orange-400 transition-colors truncate",title:v.name,children:v.name})]},v.id)})]})},E3=({itemId:t})=>{const{t:e}=it(),[n,r]=b.useState([]),[s,l]=b.useState(!0),c=qt(),m=p=>{try{const g=p.Blob instanceof Uint8Array?p.Blob:new Uint8Array(p.Blob),A=new Blob([g]),f=URL.createObjectURL(A),v=document.createElement("a");v.href=f,v.download=p.Filename,document.body.appendChild(v),v.click(),document.body.removeChild(v),URL.revokeObjectURL(f)}catch(g){console.error("Error downloading attachment:",g)}};return b.useEffect(()=>{(async()=>{if(!(!(c!=null&&c.sqliteClient)||!t))try{const g=c.sqliteClient.settings.getAttachmentsForItem(t);r(g)}catch(g){console.error("Error loading attachments:",g)}finally{l(!1)}})()},[t,c==null?void 0:c.sqliteClient]),s?d.jsxs("div",{className:"text-gray-500 dark:text-gray-400 mb-4",children:[d.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white mb-2",children:e("common.attachments")}),e("common.loadingAttachments")]}):n.length===0?null:d.jsx("div",{className:"mb-4",children:d.jsxs("div",{className:"space-y-2",children:[d.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:e("common.attachments")}),d.jsx("div",{className:"grid grid-cols-1 gap-2",children:n.map(p=>d.jsx("button",{className:"w-full text-left p-2 ps-3 pe-3 rounded bg-white dark:bg-gray-800 shadow hover:shadow-md transition-all border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700",onClick:()=>m(p),"aria-label":`Download ${p.Filename}`,children:d.jsxs("div",{className:"flex justify-between items-center gap-2",children:[d.jsx("div",{className:"flex items-center flex-1",children:d.jsxs("div",{className:"flex flex-col",children:[d.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white",children:p.Filename}),d.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400",children:new Date(p.CreatedAt).toLocaleDateString()})]})}),d.jsx("div",{className:"flex items-center",children:d.jsx("svg",{className:"w-4 h-4 text-gray-500 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 16v2a2 2 0 002 2h12a2 2 0 002-2v-2M7 10l5 5m0 0l5-5m-5 5V4"})})})]})},p.Id))})]})})};class b3{constructor(){Ue(this,"currentCopiedId","");Ue(this,"onCopyCallbacks",[])}setCopied(e){this.currentCopiedId=e,this.notifySubscribers()}getCopiedId(){return this.currentCopiedId}subscribe(e){return this.onCopyCallbacks.push(e),()=>{this.onCopyCallbacks=this.onCopyCallbacks.filter(n=>n!==e)}}notifySubscribers(){this.onCopyCallbacks.forEach(e=>e(this.currentCopiedId))}}const mu=new b3,Th=({name:t})=>{switch(t){case"visibility":return d.jsxs(d.Fragment,{children:[d.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),d.jsx("circle",{cx:"12",cy:"12",r:"3"})]});case"visibility-off":return d.jsxs(d.Fragment,{children:[d.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"}),d.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]});case"copy":return d.jsxs(d.Fragment,{children:[d.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),d.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]});case"check":return d.jsx(d.Fragment,{children:d.jsx("polyline",{points:"20 6 9 17 4 12"})});default:return null}},Su=({id:t,label:e,value:n,type:r="text",labelSuffix:s})=>{const{t:l}=it(),[c,m]=b.useState(!1),[p,g]=b.useState(!1);b.useEffect(()=>{const f=mu.subscribe(v=>{g(v===t)});return()=>{f()}},[t]);const A=async()=>{try{await navigator.clipboard.writeText(n),mu.setCopied(t),await St("CLIPBOARD_COPIED",{value:n},"background"),setTimeout(()=>{mu.getCopiedId()===t&&mu.setCopied("")},2e3)}catch(f){console.error("Failed to copy text:",f)}};return d.jsxs("div",{children:[d.jsxs("label",{htmlFor:t,className:"block mb-2 text-sm font-medium text-gray-700 dark:text-gray-300",children:[e,s]}),d.jsxs("div",{className:"relative",children:[d.jsx("input",{type:r==="password"&&!c?"password":"text",id:t,readOnly:!0,value:n,onClick:A,className:`w-full pl-3 py-2.5 bg-white border ${p?"border-green-500 border-2":"border-gray-300"} text-gray-900 text-sm rounded-lg shadow-sm focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:border-gray-600 dark:text-white dark:placeholder-gray-400 truncate ${r==="password"?"pr-16":"pr-10"}`}),d.jsxs("div",{className:"absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-2",children:[p?d.jsx("button",{type:"button",className:"p-1 text-green-500 dark:text-green-400 transition-colors duration-200",title:l("common.copied"),children:d.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:d.jsx(Th,{name:"check"})})}):d.jsx("button",{type:"button",onClick:A,className:"p-1 text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white transition-colors duration-200",title:l("common.copyToClipboard"),children:d.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:d.jsx(Th,{name:"copy"})})}),r==="password"&&d.jsx("button",{type:"button",onClick:()=>m(!c),className:"p-1 text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white transition-colors duration-200",title:l(c?"common.hidePassword":"common.showPassword"),children:d.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:d.jsx(Th,{name:c?"visibility-off":"visibility"})})})]})]})]})},v3=({isOpen:t,onClose:e,itemId:n,fieldKey:r,fieldLabel:s,fieldType:l,isHidden:c})=>{const{t:m}=it(),p=qt(),{executeVaultMutationAsync:g}=Hs(),[A,f]=b.useState([]),[v,w]=b.useState(!0),[S,T]=b.useState(null),k=c||l===ea.Password||l===ea.Hidden,L=b.useCallback(async()=>{if(p!=null&&p.sqliteClient)try{w(!0);const _=p.sqliteClient.items.getFieldHistory(n,r);f(_)}catch(_){console.error("Error loading field history:",_)}finally{w(!1)}},[p==null?void 0:p.sqliteClient,n,r]);b.useEffect(()=>{t&&L()},[t,p==null?void 0:p.sqliteClient,n,r,L]);const R=_=>{try{return new Date(_).toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return _}},x=_=>{try{return JSON.parse(_)}catch{return[_]}},O=async _=>{if(p!=null&&p.sqliteClient)try{await g(async()=>{await p.sqliteClient.items.deleteFieldHistory(_)}),L(),T(null)}catch(j){console.error("Error deleting field history:",j)}};return d.jsx(ai,{isOpen:t,onClose:e,title:`${s} ${m("items.history")}`,maxWidth:"max-w-2xl",bodyClassName:"px-4 pb-4 pt-4 overflow-y-auto max-h-[60vh]",children:v?d.jsx("div",{className:"flex items-center justify-center py-8",children:d.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600"})}):A.length===0?d.jsx("div",{className:"text-center py-8 text-gray-500 dark:text-gray-400",children:m("items.noHistoryAvailable")}):d.jsx("div",{className:"space-y-3",children:A.map(_=>{const j=x(_.ValueSnapshot),G=S===_.Id;return d.jsxs("div",{className:"rounded-lg p-4 border border-gray-200 dark:border-gray-700",children:[d.jsxs("div",{className:"flex items-center justify-between mb-2",children:[d.jsx("div",{className:"text-sm text-gray-600 dark:text-gray-400",children:R(_.ChangedAt)}),G?d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("button",{type:"button",onClick:()=>O(_.Id),className:"text-xs px-2 py-1 text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 font-medium",children:m("common.confirm")}),d.jsx("button",{type:"button",onClick:()=>T(null),className:"text-xs px-2 py-1 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200",children:m("common.cancel")})]}):d.jsx("button",{type:"button",onClick:()=>T(_.Id),className:"text-xs px-2 py-1 text-gray-500 hover:text-red-600 dark:text-gray-400 dark:hover:text-red-400 transition-colors",title:m("common.delete"),children:d.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"})})})]}),j.map((P,B)=>d.jsx("div",{className:"mt-2",children:d.jsx(Su,{id:`history-${_.Id}-${B}`,label:"",value:P,type:k?"password":"text"})},B))]},_.Id)})})})},vv=/(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/g,w3=t=>{const e=[];let n=0,r;for(vv.lastIndex=0;(r=vv.exec(t))!==null;){r.index>n&&e.push({type:"text",content:t.slice(n,r.index)});const s=r[0],l=s.startsWith("http")?s:`http://${s}`;e.push({type:"url",content:s,href:l}),n=r.index+s.length}return n<t.length&&e.push({type:"text",content:t.slice(n)}),e},I3=({text:t})=>{const e=w3(t);return d.jsx(d.Fragment,{children:e.map((n,r)=>n.type==="url"?d.jsx("a",{href:n.href,target:"_blank",rel:"noopener noreferrer",className:"text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300",children:n.content},r):d.jsx(qa.Fragment,{children:n.content},r))})},To=({field:t,itemId:e,hideLabel:n=!1})=>{const{t:r}=it(),s=qt(),[l,c]=b.useState(!1),[m,p]=b.useState(0),g=t.IsCustomField?t.Label||t.FieldKey:r(`fieldLabels.${t.FieldKey}`,{defaultValue:t.FieldKey}),A=t.EnableHistory===!0;if(b.useEffect(()=>{if(A&&e&&(s!=null&&s.sqliteClient))try{const T=s.sqliteClient.items.getFieldHistory(e,t.FieldKey);if(T.length>1)p(T.length);else if(T.length===1){const k=Array.isArray(t.Value)?t.Value:[t.Value],L=JSON.stringify(k.filter(x=>x&&x.trim()!=="")),R=T[0].ValueSnapshot;p(L!==R?1:0)}else p(0)}catch(T){console.error("[FieldBlock] Error checking history:",T)}},[A,e,t.FieldKey,t.Value,s==null?void 0:s.sqliteClient]),!t.Value||typeof t.Value=="string"&&t.Value.trim()==="")return null;const f=Array.isArray(t.Value)?t.Value:[t.Value];if(f.length>1)return d.jsx("div",{className:"space-y-2",children:f.map((T,k)=>d.jsx(Su,{id:`${t.FieldKey}-${k}`,label:k===0?g:`${g} ${k+1}`,value:T,type:t.FieldType===ea.Password?"password":"text"},`${t.FieldKey}-${k}`))});const v=f[0],w=m>0&&e?d.jsx("button",{type:"button",onClick:()=>c(!0),className:"ml-2 inline-flex items-center text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 focus:outline-none",title:r("items.viewHistory"),children:d.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})})}):null,S=l&&e?d.jsx(v3,{isOpen:l,onClose:()=>c(!1),itemId:e,fieldKey:t.FieldKey,fieldLabel:g,fieldType:t.FieldType,isHidden:t.IsHidden}):null;switch(t.FieldType){case ea.Password:case ea.Hidden:return d.jsxs(d.Fragment,{children:[d.jsx(Su,{id:t.FieldKey,label:g,value:v,type:"password",labelSuffix:w}),S]});case ea.TextArea:return d.jsxs("div",{children:[!n&&d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:g}),d.jsx("div",{className:"p-4 bg-gray-50 rounded-lg dark:bg-gray-700",children:d.jsx("p",{className:"text-gray-900 dark:text-gray-100 whitespace-pre-wrap",children:d.jsx(I3,{text:v})})})]});case ea.Email:case ea.URL:case ea.Phone:case ea.Date:case ea.Number:case ea.Text:default:return d.jsxs(d.Fragment,{children:[d.jsx(Su,{id:t.FieldKey,label:g,value:v,type:"text",labelSuffix:w}),S]})}},C3=t=>t?t.length===6?`${t.slice(0,3)} ${t.slice(3)}`:t:"",S3=({itemId:t})=>{const{t:e}=it(),[n,r]=b.useState([]),[s,l]=b.useState(!0),[c,m]=b.useState({}),[p,g]=b.useState(null),A=qt(),f=(T=30)=>{const k=new xa({secret:"dummy",algorithm:"SHA1",digits:6,period:T});return k.period-Math.floor(Date.now()/1e3)%k.period},v=()=>{const T=f();return Math.floor((30-T)/30*100)},w=T=>{try{return new xa({secret:T,algorithm:"SHA1",digits:6,period:30}).generate()}catch(k){return console.error("Error generating TOTP code:",k),"Error"}},S=async(T,k)=>{try{await navigator.clipboard.writeText(T),g(k),await St("CLIPBOARD_COPIED",{value:T},"background"),setTimeout(()=>{g(null)},2e3)}catch(L){console.error("Failed to copy:",L)}};return b.useEffect(()=>{(async()=>{if(!(!(A!=null&&A.sqliteClient)||!t))try{const k=A.sqliteClient.settings.getTotpCodesForItem(t);r(k)}catch(k){console.error("Error loading TOTP codes:",k)}finally{l(!1)}})()},[t,A==null?void 0:A.sqliteClient]),b.useEffect(()=>{const T=R=>{const x={};return n.forEach(O=>{const _=w(O.SecretKey);_!=="Error"?x[O.Id]=_:x[O.Id]=R[O.Id]??"Error"}),x},k={};n.forEach(R=>{k[R.Id]=w(R.SecretKey)}),m(k);const L=setInterval(()=>{m(T)},1e3);return()=>{clearInterval(L)}},[n]),s?d.jsxs("div",{className:"text-gray-500 dark:text-gray-400 mb-4",children:[d.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white mb-2",children:e("common.twoFactorAuthentication")}),e("common.loadingTotpCodes")]}):n.length===0?null:d.jsx("div",{className:"mb-4",children:d.jsxs("div",{className:"space-y-2",children:[d.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-white",children:e("common.twoFactorAuthentication")}),d.jsx("div",{className:"grid grid-cols-1 gap-2",children:n.map(T=>d.jsx("button",{className:"w-full text-left p-2 ps-3 pe-3 rounded bg-white dark:bg-gray-800 shadow hover:shadow-md transition-all border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700",onClick:()=>S(c[T.Id],T.Id),"aria-label":`Copy ${T.Name} code`,children:d.jsxs("div",{className:"flex justify-between items-center gap-2",children:[d.jsx("div",{className:"flex items-center flex-1",children:d.jsx("h4",{className:"text-sm font-medium text-gray-900 dark:text-white",children:T.Name})}),d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsxs("div",{className:"flex flex-col items-end",children:[d.jsx("span",{className:"text-lg font-bold text-gray-900 dark:text-white",children:C3(c[T.Id])}),d.jsx("div",{className:"text-xs",children:p===T.Id?d.jsx("span",{className:"text-green-600 dark:text-green-400",children:e("common.copied")}):d.jsxs("span",{className:"text-gray-500 dark:text-gray-400",children:[f(),"s"]})})]}),d.jsx("div",{className:"w-1 h-6 bg-gray-200 rounded-full dark:bg-gray-600",children:d.jsx("div",{className:"bg-blue-600 rounded-full transition-all",style:{height:`${v()}%`,width:"100%"}})})]})]})},T.Id))})]})})};var Tu={Placeholder:`<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  <circle cx="10" cy="10" r="6.5" fill="none" stroke="#f49541" stroke-width="2.5"/>
  <circle cx="10" cy="10" r="2.5" fill="none" stroke="#f49541" stroke-width="2"/>
  <path d="M15 15L27 27" stroke="#f49541" stroke-width="2.5" stroke-linecap="round"/>
  <path d="M19 19L23 15" stroke="#f49541" stroke-width="2.5" stroke-linecap="round"/>
  <path d="M24 24L28 20" stroke="#f49541" stroke-width="2.5" stroke-linecap="round"/>
</svg>`,Note:`<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path d="M8 4C6.9 4 6 4.9 6 6V26C6 27.1 6.9 28 8 28H24C25.1 28 26 27.1 26 26V11L19 4H8Z" fill="#f49541"/>
  <path d="M19 4V11H26L19 4Z" fill="#d68338"/>
  <rect x="10" y="14" width="12" height="1.5" rx="0.75" fill="#ffe096"/>
  <rect x="10" y="18" width="10" height="1.5" rx="0.75" fill="#ffe096"/>
  <rect x="10" y="22" width="8" height="1.5" rx="0.75" fill="#ffe096"/>
</svg>`,CreditCard:`<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  <rect x="2" y="6" width="28" height="20" rx="3" fill="#f49541"/>
  <rect x="2" y="11" width="28" height="4" fill="#d68338"/>
  <rect x="5" y="18" width="8" height="2" rx="1" fill="#ffe096"/>
  <rect x="5" y="22" width="5" height="1.5" rx="0.75" fill="#fbcb74"/>
</svg>`,Visa:`<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  <rect x="2" y="6" width="28" height="20" rx="3" fill="#f49541"/>
  <path d="M13.5 13L11.5 19H10L8.5 14.5C8.5 14.5 8.35 14 8 14C7.65 14 7 13.8 7 13.8L7.05 13.5H9.5C9.85 13.5 10.15 13.75 10.2 14.1L10.8 17L12.5 13.5H13.5V13ZM15 19H14L15 13H16L15 19ZM20 13.5C20 13.5 19.4 13.3 18.7 13.3C17.35 13.3 16.4 14 16.4 15C16.4 15.8 17.1 16.2 17.65 16.5C18.2 16.8 18.4 17 18.4 17.2C18.4 17.5 18.05 17.7 17.6 17.7C17 17.7 16.5 17.5 16.5 17.5L16.3 18.7C16.3 18.7 16.9 19 17.7 19C19.2 19 20.1 18.2 20.1 17.1C20.1 15.7 18.4 15.6 18.4 15C18.4 14.7 18.7 14.5 19.15 14.5C19.6 14.5 20.1 14.7 20.1 14.7L20.3 13.5H20V13.5ZM24 19L23.1 13.5H22C21.7 13.5 21.45 13.7 21.35 13.95L19 19H20.5L20.8 18H22.7L22.9 19H24ZM21.2 17L22 14.5L22.45 17H21.2Z" fill="#ffe096"/>
</svg>`,Mastercard:`<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  <rect x="2" y="6" width="28" height="20" rx="3" fill="#f49541"/>
  <circle cx="13" cy="16" r="5" fill="#d68338"/>
  <circle cx="19" cy="16" r="5" fill="#ffe096"/>
  <path d="M16 12.5C17.1 13.4 17.8 14.6 17.8 16C17.8 17.4 17.1 18.6 16 19.5C14.9 18.6 14.2 17.4 14.2 16C14.2 14.6 14.9 13.4 16 12.5Z" fill="#fbcb74"/>
</svg>`,Amex:`<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  <rect x="2" y="6" width="28" height="20" rx="3" fill="#f49541"/>
  <text x="16" y="18" text-anchor="middle" fill="#ffe096" font-size="8" font-weight="bold" font-family="Arial, sans-serif">AMEX</text>
</svg>`,Discover:`<svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  <rect x="2" y="6" width="28" height="20" rx="3" fill="#f49541"/>
  <circle cx="20" cy="16" r="4" fill="#ffe096"/>
  <path d="M7 14H8.5C9.3 14 10 14.7 10 15.5C10 16.3 9.3 17 8.5 17H7V14Z" fill="#ffe096"/>
  <rect x="11" y="14" width="1.5" height="3" fill="#ffe096"/>
  <path d="M14 15C14 14.4 14.4 14 15 14C15.3 14 15.5 14.1 15.7 14.3L16.5 13.5C16.1 13.2 15.6 13 15 13C13.9 13 13 13.9 13 15C13 16.1 13.9 17 15 17C15.6 17 16.1 16.8 16.5 16.5L15.7 15.7C15.5 15.9 15.3 16 15 16C14.4 16 14 15.6 14 15Z" fill="#ffe096"/>
</svg>`};const Nh=({svg:t,className:e="w-8 h-8"})=>d.jsx("div",{className:`${e} flex-shrink-0`,dangerouslySetInnerHTML:{__html:t}}),T3=t=>{if(!t)return"CreditCard";const e=t.replace(/[\s-]/g,"");return/^\d{4,}/.test(e)?/^4/.test(e)?"Visa":/^5[1-5]/.test(e)||/^2[2-7]/.test(e)?"Mastercard":/^3[47]/.test(e)?"Amex":/^6(?:011|22|4[4-9]|5)/.test(e)?"Discover":"CreditCard":"CreditCard"},N3=t=>Tu[T3(t)],tA=({item:t,className:e="w-8 h-8"})=>{var r;if(t.ItemType===Ea.Note)return d.jsx(Nh,{svg:Tu.Note,className:e});if(t.ItemType===Ea.CreditCard){const s=(r=t.Fields)==null?void 0:r.find(c=>c.FieldKey===nn.CardNumber),l=s!=null&&s.Value?Array.isArray(s.Value)?s.Value[0]:s.Value:void 0;return d.jsx(Nh,{svg:N3(l),className:e})}const n=t.Logo&&t.Logo.length>0?jh.imgSrcFromBytes(t.Logo):null;return n?d.jsx("img",{src:n,alt:t.Name||"Item",className:`${e} flex-shrink-0`,onError:s=>{const l=s.target;l.style.display="none";const c=l.parentElement;if(c){const m=document.createElement("div");m.className=e,m.innerHTML=Tu.Placeholder,c.insertBefore(m,l)}}}):d.jsx(Nh,{svg:Tu.Placeholder,className:e})},k3=({email:t})=>{const{t:e}=it(),[n,r]=b.useState([]),[s,l]=b.useState([]),[c,m]=b.useState(!0),[p,g]=b.useState(0),[A,f]=b.useState(!1),[v,w]=b.useState(null),[S,T]=b.useState(!1),[k,L]=b.useState(2),R=Gi(),x=qt(),O=3,_=k<n.length,j=(z,Q)=>{const ae=z.slice(0,Q);l(ae)},G=()=>{const z=Math.min(k+O,n.length);L(z),j(n,z)},P=async z=>(await md("local:publicEmailDomains")??[]).some(ae=>z.toLowerCase().endsWith(`@${ae.toLowerCase()}`)),B=async z=>(await md("local:privateEmailDomains")??[]).some(ae=>z.toLowerCase().endsWith(`@${ae.toLowerCase()}`));return b.useEffect(()=>{const z=async()=>{var ae;try{if(x.isOffline){m(!1);return}w(null);const Y=await P(t),ne=await B(t),fe=Y||ne;if(f(Y),T(fe),!fe)return;if(Y){const X=t.split("@")[0],te=await fetch(`https://api.spamok.com/v2/EmailBox/${X}`,{headers:{"X-Asdasd-Platform-Id":"av-chrome","X-Asdasd-Platform-Version":mn.VERSION}});if(!te.ok){w(e("common.errors.unknownError"));return}const ce=await te.json(),oe=((ae=ce==null?void 0:ce.mails)==null?void 0:ae.toSorted((F,J)=>new Date(J.dateSystem).getTime()-new Date(F.dateSystem).getTime()))??[];c&&oe.length>0&&g(oe[0].id),r(F=>JSON.stringify(F.map(W=>W.id))!==JSON.stringify(oe.map(W=>W.id))?(j(oe,k),oe):F)}else if(ne)try{const X=await R.authFetch(`EmailBox/${t}`,{method:"GET"},!0,!1);try{const ce=X.mails.toSorted((oe,F)=>new Date(F.dateSystem).getTime()-new Date(oe.dateSystem).getTime());if(ce){const oe=await $t.decryptEmailList(ce,x.sqliteClient.settings.getAllEncryptionKeys());c&&oe.length>0&&g(oe[0].id),r(F=>JSON.stringify(F.map(W=>W.id))!==JSON.stringify(oe.map(W=>W.id))?(j(oe,k),oe):F),w(null)}}catch{const te=X;if(x.shouldSuppressEmailErrors())return;w(e("emails.apiErrors."+(te==null?void 0:te.code)));return}}catch{if(x.shouldSuppressEmailErrors())return;w(e("common.errors.unknownError"));return}}catch(Y){console.error("Error loading emails:",Y),w(e("common.errors.unknownError"))}m(!1)};z();const Q=setInterval(z,2e3);return()=>clearInterval(Q)},[t,c,R,x,e,k]),S?x.isOffline?d.jsxs("div",{className:"text-gray-500 dark:text-gray-400 mb-4",children:[d.jsx("div",{className:"flex items-center gap-2 mb-2",children:d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:e("common.recentEmails")})}),d.jsx("p",{className:"text-sm",children:e("emails.offlineMessage")})]}):v?d.jsxs("div",{className:"text-gray-500 dark:text-gray-400 mb-4",children:[d.jsx("div",{className:"flex items-center gap-2 mb-2",children:d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:e("common.recentEmails")})}),d.jsx("div",{className:"p-3 bg-red-50 dark:bg-red-900/30 border border-red-200 dark:border-red-800 rounded",children:d.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:v})})]}):c?d.jsxs("div",{className:"text-gray-500 dark:text-gray-400 mb-4",children:[d.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:e("common.recentEmails")}),d.jsx("div",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"})]}),e("common.loadingEmails")]}):n.length===0?d.jsxs("div",{className:"text-gray-500 dark:text-gray-400 mb-4 text-sm",children:[d.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:e("common.recentEmails")}),d.jsx("div",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"})]}),e("emails.noEmails")]}):d.jsxs("div",{className:"space-y-2 mb-4",children:[d.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:e("common.recentEmails")}),d.jsx("div",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"})]}),s.map(z=>A?d.jsxs("a",{href:`https://spamok.com/${t.split("@")[0]}/${z.id}`,target:"_blank",rel:"noopener noreferrer",className:`flex justify-between items-center p-2 ps-3 pe-3 rounded cursor-pointer bg-white dark:bg-gray-800 shadow hover:shadow-md transition-all border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700 ${z.id>p?"bg-yellow-50 dark:bg-yellow-900/30":""}`,children:[d.jsx("div",{className:"truncate flex-1",children:d.jsxs("span",{className:"text-sm text-gray-900 dark:text-white",children:[z.subject.substring(0,30),z.subject.length>30?"...":""]})}),d.jsx("div",{className:"text-xs text-gray-500 dark:text-gray-400 ml-2",children:new Date(z.dateSystem).toLocaleDateString()})]},z.id):d.jsxs(Ju,{to:`/emails/${z.id}`,className:`flex justify-between items-center p-2 ps-3 pe-3 rounded cursor-pointer bg-white dark:bg-gray-800 shadow hover:shadow-md transition-all border border-gray-200 dark:border-gray-700 hover:bg-gray-50 dark:hover:bg-gray-700 ${z.id>p?"bg-yellow-50 dark:bg-yellow-900/30":""}`,children:[d.jsx("span",{className:"truncate flex-1",children:d.jsxs("span",{className:"text-sm text-gray-900 dark:text-white",children:[z.subject.substring(0,30),z.subject.length>30?"...":""]})}),d.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400 ml-2",children:new Date(z.dateSystem).toLocaleDateString()})]},z.id)),_&&d.jsxs("button",{onClick:G,className:"w-full mt-2 py-1 px-3 bg-gray-50 dark:bg-gray-800 hover:bg-gray-100 dark:hover:bg-gray-700 border border-gray-200 dark:border-gray-600 rounded-md transition-colors duration-200 text-sm text-gray-600 dark:text-gray-300 hover:text-gray-800 dark:hover:text-gray-100 flex items-center justify-center gap-1",children:[d.jsx("span",{children:e("common.loadMore")}),d.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]})]}):null},x3=()=>{const{t}=it(),{id:e}=qu(),n=Pa(),r=qt(),[s,l]=b.useState(null),{setIsInitialLoading:c}=va(),{setHeaderButtons:m,setBackButtonTitle:p}=Ei(),g=b.useCallback(()=>{Fa.openInNewPopup(`/items/${e}`)},[e]),A=b.useCallback(()=>{n(`/items/${e}/edit`,{state:{fromDetails:!0}})},[e,n]);if(b.useEffect(()=>{if(Fa.isPopup()&&(window.history.replaceState({},"","popup.html#/items"),window.history.pushState({},"",`popup.html#/items/${e}`)),!(!(r!=null&&r.sqliteClient)||!e))try{const S=r.sqliteClient.items.getById(e);S?(l(S),c(!1)):(console.error("Item not found"),n("/items"))}catch(S){console.error("Error loading item:",S)}},[r.sqliteClient,e,n,c]),b.useEffect(()=>{const S=d.jsxs("div",{className:"flex items-center gap-2",children:[!Fa.isPopup()&&d.jsx(Pn,{onClick:g,title:t("common.openInNewWindow"),iconType:Ya.EXPAND}),d.jsx(Pn,{onClick:A,title:t("items.editItem"),iconType:Ya.EDIT})]});return m(S),()=>{}},[m,A,g,t]),b.useEffect(()=>()=>m(null),[m]),b.useEffect(()=>{if(s&&(r!=null&&r.sqliteClient))if(s.FolderId){const T=r.sqliteClient.folders.getAll().find(k=>k.Id===s.FolderId);p(T?T.Name:t("items.title"))}else p(t("items.title"));return()=>p(null)},[s,r==null?void 0:r.sqliteClient,p,t]),!s)return d.jsx("div",{children:t("common.loading")});const f=s.Fields.filter(S=>S.FieldType===ea.URL&&S.Value),v={...s,Fields:s.Fields.filter(S=>S.FieldType!==ea.URL)},w=WM(v);return d.jsxs("div",{className:"space-y-4",children:[d.jsx(Z1,{folderId:s.FolderId}),d.jsx("div",{className:"flex justify-between items-start",children:d.jsxs("div",{className:"flex items-start gap-3",children:[d.jsx(tA,{item:s,className:"w-12 h-12 rounded-lg"}),d.jsxs("div",{children:[d.jsx("h1",{className:"text-lg font-bold text-gray-900 dark:text-white",children:s.Name||t("items.untitled")}),f.length>0&&d.jsx("div",{className:"mt-1 space-y-1",children:f.flatMap(S=>(Array.isArray(S.Value)?S.Value:[S.Value]).map((k,L)=>/^https?:\/\//i.test(k)?d.jsx("a",{href:k,target:"_blank",rel:"noopener noreferrer",className:"block text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 break-all text-sm",children:k},`${S.FieldKey}-${L}`):d.jsx("span",{className:"block text-gray-500 dark:text-gray-300 break-all text-sm",children:k},`${S.FieldKey}-${L}`)))})]})]})}),(s.ItemType===Ea.Login||s.ItemType===Ea.Alias)&&(()=>{const S=s.Fields.find(L=>L.FieldKey==="login.email"),T=S==null?void 0:S.Value,k=Array.isArray(T)?T[0]:T;return k?d.jsx(k3,{email:k}):null})(),(s.ItemType===Ea.Login||s.ItemType===Ea.Alias)&&d.jsx(S3,{itemId:s.Id}),(s.ItemType===Ea.Login||s.ItemType===Ea.Alias)&&s.HasPasskey&&d.jsx(QO,{itemId:s.Id}),s.ItemType===Ea.Note&&w[pt.Notes]&&w[pt.Notes].length>0&&w[pt.Notes].map(S=>d.jsxs("div",{className:"space-y-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:t(`fieldLabels.${S.FieldKey}`,{defaultValue:S.Label||S.FieldKey})}),d.jsx(To,{field:S,itemId:s.Id,hideLabel:!0})]},S.FieldKey)),Object.keys(w).length>0&&d.jsxs(d.Fragment,{children:[w[pt.Login]&&w[pt.Login].length>0&&d.jsxs("div",{className:"space-y-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:t("common.credentials")}),w[pt.Login].map(S=>d.jsx(To,{field:S,itemId:s.Id},S.FieldKey))]}),w[pt.Alias]&&w[pt.Alias].length>0&&d.jsxs("div",{className:"space-y-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:t("common.alias")}),w[pt.Alias].map(S=>d.jsx(To,{field:S,itemId:s.Id},S.FieldKey))]}),w[pt.Card]&&w[pt.Card].length>0&&d.jsxs("div",{className:"space-y-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:t("items.cardInformation")}),w[pt.Card].map(S=>d.jsx(To,{field:S,itemId:s.Id},S.FieldKey))]}),s.ItemType!==Ea.Note&&w[pt.Notes]&&w[pt.Notes].length>0&&w[pt.Notes].map(S=>d.jsxs("div",{className:"space-y-2",children:[d.jsx("h2",{className:"text-xl font-semibold text-gray-900 dark:text-white",children:t(`fieldLabels.${S.FieldKey}`,{defaultValue:S.Label||S.FieldKey})}),d.jsx(To,{field:S,itemId:s.Id,hideLabel:!0})]},S.FieldKey)),w[pt.Custom]&&w[pt.Custom].length>0&&d.jsx("div",{className:"space-y-2",children:w[pt.Custom].map(S=>d.jsx(To,{field:S,itemId:s.Id},S.FieldKey))})]}),d.jsx(E3,{itemId:s.Id}),s.Tags&&s.Tags.length>0&&d.jsxs("div",{className:"bg-gray-50 dark:bg-gray-800 rounded-lg p-4",children:[d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:t("items.tags")}),d.jsx("div",{className:"flex flex-wrap gap-2",children:s.Tags.map(S=>d.jsx("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200",children:S.Name},S.Id))})]})]})},L3=({isOpen:t,onClose:e,onDeleteFolderOnly:n,onDeleteFolderAndContents:r,itemCount:s})=>{const{t:l}=it(),[c,m]=b.useState(!1),p=async()=>{m(!0);try{await n(),e()}catch(f){console.error("Error deleting folder:",f)}finally{m(!1)}},g=async()=>{m(!0);try{await r(),e()}catch(f){console.error("Error deleting folder with contents:",f)}finally{m(!1)}},A=()=>{c||e()};return d.jsx(ai,{isOpen:t,onClose:A,title:l("items.deleteFolder"),footer:d.jsx("div",{className:"flex justify-end",children:d.jsx("button",{type:"button",onClick:A,disabled:c,className:"px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50",children:l("common.cancel")})}),children:d.jsx("div",{className:"space-y-4",children:d.jsxs("div",{className:"space-y-3 pt-2",children:[d.jsx("button",{type:"button",onClick:p,disabled:c,className:"w-full p-3 text-left border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors disabled:opacity-50",children:d.jsxs("div",{className:"flex items-start gap-3",children:[d.jsx("div",{className:"mt-0.5 text-orange-500",children:d.jsxs("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:[d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"}),d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 14l2 2 4-4"})]})}),d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:l("items.deleteFolderKeepItems")}),d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:l("items.deleteFolderKeepItemsDescription")})]})]})}),s>0&&d.jsx("button",{type:"button",onClick:g,disabled:c,className:"w-full p-3 text-left border border-red-300 dark:border-red-700 rounded-lg hover:bg-red-50 dark:hover:bg-red-900/20 transition-colors disabled:opacity-50",children:d.jsxs("div",{className:"flex items-start gap-3",children:[d.jsx("div",{className:"mt-0.5 text-red-500",children:d.jsxs("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:[d.jsx("polyline",{points:"3 6 5 6 21 6"}),d.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})}),d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-red-600 dark:text-red-400",children:l("items.deleteFolderAndItems")}),d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:l("items.deleteFolderAndItemsDescription",{count:s})})]})]})})]})})})},wv=({isOpen:t,onClose:e,onSave:n,initialName:r="",mode:s})=>{const{t:l}=it(),[c,m]=b.useState(r),[p,g]=b.useState(!1),[A,f]=b.useState(null);b.useEffect(()=>{t&&(m(r),f(null))},[t,r]);const v=async w=>{w.preventDefault();const S=c.trim();if(!S){f(l("items.folderNameRequired"));return}g(!0),f(null);try{await n(S),e()}catch(T){Uo(T)?f(ss(T,l("common.errors.unknownErrorTryAgain"))):f(l("common.errors.unknownErrorTryAgain")),console.error("Error saving folder:",T)}finally{g(!1)}};return d.jsx(ai,{isOpen:t,onClose:e,title:l(s==="create"?"items.createFolder":"items.editFolder"),footer:d.jsxs("div",{className:"flex justify-end gap-3",children:[d.jsx("button",{type:"button",onClick:e,disabled:p,className:"px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50",children:l("common.cancel")}),d.jsx("button",{type:"submit",form:"folder-form",disabled:p,className:"px-4 py-2 text-sm font-medium text-white bg-orange-600 hover:bg-orange-700 rounded focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-orange-500 disabled:opacity-50",children:l(p?"common.saving":s==="create"?"common.create":"common.save")})]}),children:d.jsxs("form",{id:"folder-form",onSubmit:v,children:[d.jsx("label",{htmlFor:"folderName",className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:l("items.folderName")}),d.jsx("input",{id:"folderName",type:"text",value:c,onChange:w=>m(w.target.value),autoFocus:!0,className:"w-full p-2 border dark:border-gray-600 rounded bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 dark:placeholder-gray-500 focus:ring-blue-500 focus:border-blue-500"}),A&&d.jsx("p",{className:"mt-2 text-sm text-red-600 dark:text-red-400",children:A})]})})},Iv=({folder:t,onClick:e})=>d.jsxs("button",{onClick:e,className:"inline-flex items-center gap-1.5 px-3 py-1.5 bg-white dark:bg-gray-700/50 hover:bg-gray-50 dark:hover:bg-gray-600/50 border border-gray-200 dark:border-gray-600 rounded-full text-sm transition-colors focus:outline-none focus:ring-2 focus:ring-orange-500/50",children:[d.jsx("svg",{className:"w-3.5 h-3.5 text-orange-500 dark:text-orange-400 flex-shrink-0",viewBox:"0 0 24 24",fill:"currentColor",children:d.jsx("path",{d:"M10 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-8l-2-2z"})}),d.jsx("span",{className:"text-gray-700 dark:text-gray-200 font-medium truncate max-w-[120px]",children:t.name}),t.itemCount>0&&d.jsx("span",{className:"text-gray-400 dark:text-gray-500 text-xs",children:t.itemCount})]}),D3=({item:t,showFolderPath:e=!1,searchTerm:n="",currentFolderPath:r=null})=>{const{t:s}=it(),l=Pa(),c=g=>{var v,w;let A="";const f=(v=g.Fields)==null?void 0:v.find(S=>S.FieldKey===nn.LoginUsername);if(f&&f.Value&&(A=Array.isArray(f.Value)?f.Value[0]:f.Value),!A){const S=(w=g.Fields)==null?void 0:w.find(T=>T.FieldKey===nn.LoginEmail);S&&S.Value&&(A=Array.isArray(S.Value)?S.Value[0]:S.Value)}return A.length>33?A.slice(0,30)+"...":A},m=g=>{let A=s("items.untitled");return g.Name&&(A=g.Name),A.length>33?A.slice(0,30)+"...":A},p=(g,A)=>{if(!g||g.length===0)return"";let f=g;if(A&&A.length>0&&A.every((S,T)=>g[T]===S)){if(g.length===A.length)return"";f=g.slice(A.length)}return JM(f,3).join(" > ")};return d.jsx("li",{children:d.jsxs("button",{onClick:()=>{const g=n?`/items/${t.Id}?returnSearch=${encodeURIComponent(n)}`:`/items/${t.Id}`;l(g)},className:"w-full p-2 border dark:border-gray-600 rounded flex items-center bg-white dark:bg-gray-800 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500",children:[d.jsx("div",{className:"w-8 h-8 mr-2 flex-shrink-0",children:d.jsx(tA,{item:t,className:"w-8 h-8"})}),d.jsxs("div",{className:"text-left flex-1",children:[d.jsxs("div",{className:"flex items-center gap-1.5",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:e&&t.FolderPath&&t.FolderPath.length>0?d.jsxs(d.Fragment,{children:[(()=>{const g=p(t.FolderPath,r||void 0);return g?d.jsxs("span",{className:"text-gray-500 dark:text-gray-400 text-sm",title:t.FolderPath.join(" > "),children:[g," >"," "]}):null})(),m(t)]}):m(t)}),t.HasPasskey&&d.jsx("svg",{className:"w-3.5 h-3.5 text-gray-500 dark:text-gray-400",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-label":"Has passkey",children:d.jsx("path",{d:"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"})}),t.HasAttachment&&d.jsx("svg",{className:"w-3.5 h-3.5 text-gray-500 dark:text-gray-400",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-label":"Has attachments",children:d.jsx("path",{d:"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"})}),t.HasTotp&&d.jsx("svg",{className:"w-3.5 h-3.5 text-gray-500 dark:text-gray-400",viewBox:"0 -960 960 960",fill:"currentColor","aria-label":"Has 2FA",children:d.jsx("path",{d:"M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h640q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H160Zm100-200h46v-240h-36l-70 50 24 36 36-26v180Zm124 0h156v-40h-94l-2-2q21-20 34.5-34t21.5-22q18-18 27-36t9-38q0-29-22-48.5T458-600q-26 0-47 15t-29 39l40 16q5-13 14.5-20.5T458-558q15 0 24.5 8t9.5 20q0 11-4 20.5T470-486l-32 32-54 54v40Zm296 0q36 0 58-20t22-52q0-18-10-32t-28-22v-2q14-8 22-20.5t8-29.5q0-27-21-44.5T678-600q-25 0-46.5 14.5T604-550l40 16q4-12 13-19t21-7q13 0 21.5 7.5T708-534q0 14-10 22t-26 8h-18v40h20q20 0 31 8t11 22q0 13-11 22.5t-25 9.5q-17 0-26-7.5T638-436l-40 16q7 29 28.5 44.5T680-360ZM160-240h640v-480H160v480Zm0 0v-480 480Z"})})]}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:c(t)})]})]})})};function Vu(t){return Object.values(Ea).includes(t)}function R3(t){return t&&(t==="all"||t==="passkeys"||t==="attachments"||t==="totp"||Vu(t))?t:"all"}function Cv(t,e){return e==="all"?t:t.filter(n=>e==="passkeys"?n.HasPasskey===!0:e==="attachments"?n.HasAttachment===!0:e==="totp"?n.HasTotp===!0:Vu(e)?n.ItemType===e:!0)}const Fo="items-filter",U3=5*60*1e3,M3=[{value:"OldestFirst",labelKey:"items.sort.oldestFirst"},{value:"NewestFirst",labelKey:"items.sort.newestFirst"},{value:"Alphabetical",labelKey:"items.sort.alphabetical"}],_3=()=>{try{const t=localStorage.getItem(Fo);if(!t)return"all";const{filter:e,timestamp:n}=JSON.parse(t);return Date.now()-n>U3?(localStorage.removeItem(Fo),"all"):e}catch{return"all"}},id=t=>{try{localStorage.setItem(Fo,JSON.stringify({filter:t,timestamp:Date.now()}))}catch{}},Sv=()=>{const{t}=it(),{folderId:e}=qu(),n=Ba(),[r]=Xu(),s=qt(),l=xi(),c=Pa(),{syncVault:m}=Ff(),{executeVaultMutationAsync:p}=Hs(),{setHeaderButtons:g,setBackButtonTitle:A}=Ei(),[f,v]=b.useState([]),[w,S]=b.useState(()=>r.get("search")||""),[T,k]=b.useState(()=>{const Ee=r.get("filter");return Ee?R3(Ee):_3()}),[L,R]=b.useState(!1),[x,O]=b.useState(!1),[_,j]=b.useState(!1),[G,P]=b.useState(!1),[B,z]=b.useState(0),[Q,ae]=b.useState(0),[Y,ne]=b.useState("OldestFirst"),[fe,X]=b.useState(!1),[te,ce]=b.useState(!0),{setIsInitialLoading:oe}=va();b.useEffect(()=>{rt.getShowFolders().then(ce)},[]);const F=e??null,J=b.useMemo(()=>{if(!F||!(s!=null&&s.sqliteClient))return null;const je=s.sqliteClient.folders.getAll().find(Je=>Je.Id===F);return(je==null?void 0:je.Name)??null},[F,s==null?void 0:s.sqliteClient,Q]),W=b.useMemo(()=>{if(!F||!(s!=null&&s.sqliteClient))return null;const Ee=s.sqliteClient.folders.getAll(),je=wf(F,Ee);return je.length>0?je:null},[F,s==null?void 0:s.sqliteClient]),[ie,we]=_d(!0,100);b.useEffect(()=>{const Ee=new URLSearchParams(n.search);w?Ee.set("search",w):Ee.delete("search");const je=Ee.toString(),Je=je?`${n.pathname}?${je}`:n.pathname,ut=n.pathname+n.search;Je!==ut&&c(Je,{replace:!0})},[w,n.pathname,n.search,c]),b.useEffect(()=>{const Ee=n.state;Ee!=null&&Ee.resetFilters&&(S(""),k("all"),localStorage.removeItem(Fo),c(n.pathname,{replace:!0,state:{}}))},[n.state,n.pathname,c]);const le=b.useCallback(()=>{const Ee=new URLSearchParams;Vu(T)&&Ee.set("type",T),F&&Ee.set("folderId",F);const je=Ee.toString();c(je?`/items/add?${je}`:"/items/add")},[c,T,F]),ve=b.useCallback(()=>{O(!0)},[]),Pe=b.useCallback(async Ee=>{if(!(s!=null&&s.sqliteClient)){console.error("[FOLDER DEBUG] No sqliteClient available");return}await p(async()=>{await s.sqliteClient.folders.create(Ee,F)});const je=s.sqliteClient.items.getAll();v(je)},[s,F,p]),_e=b.useCallback(async()=>{if(!(s!=null&&s.sqliteClient)||!F)return;const je=s.sqliteClient.folders.getAll().find(M=>M.Id===F),Je=(je==null?void 0:je.ParentFolderId)??null;await p(async()=>{await s.sqliteClient.folders.delete(F)});const ut=s.sqliteClient.items.getAll();v(ut);const Dt=s.sqliteClient.items.getRecentlyDeletedCount();z(Dt),c(Je?`/items/folder/${Je}`:"/items")},[s,F,p,c]),Ke=b.useCallback(async()=>{if(!(s!=null&&s.sqliteClient)||!F)return;const je=s.sqliteClient.folders.getAll().find(M=>M.Id===F),Je=(je==null?void 0:je.ParentFolderId)??null;await p(async()=>{await s.sqliteClient.folders.deleteWithContents(F)});const ut=s.sqliteClient.items.getAll();v(ut);const Dt=s.sqliteClient.items.getRecentlyDeletedCount();z(Dt),c(Je?`/items/folder/${Je}`:"/items")},[s,F,p,c]),Ye=b.useCallback(async Ee=>{!(s!=null&&s.sqliteClient)||!F||(await p(async()=>{await s.sqliteClient.folders.update(F,Ee)}),ae(je=>je+1),P(!1))},[s,F,p]),Ot=b.useCallback(async()=>{if(s!=null&&s.sqliteClient)try{await m({onSuccess:async Ee=>{},onOffline:()=>{},onError:async Ee=>{console.error("Error syncing vault:",Ee)}})}catch(Ee){console.error("Error refreshing items:",Ee),await l.logout("Error while syncing vault, please re-authenticate.")}},[s,l,m]),Ve=b.useCallback(async()=>{we(!0),await Ot(),we(!1)},[Ot,we]);b.useEffect(()=>{const Ee=d.jsxs("div",{className:"flex items-center gap-2",children:[!Fa.isPopup()&&d.jsx(Pn,{onClick:()=>Fa.openInNewPopup(),title:t("common.openInNewWindow"),iconType:Ya.EXPAND}),d.jsx(Pn,{onClick:le,title:t("items.addNewItem"),iconType:Ya.PLUS})]});return g(Ee),()=>g(null)},[g,le,t]),b.useEffect(()=>{if(e&&(s!=null&&s.sqliteClient)){const Ee=s.sqliteClient.folders.getAll(),je=Ee.find(Je=>Je.Id===e);if(je&&je.ParentFolderId){const Je=Ee.find(ut=>ut.Id===je.ParentFolderId);A(Je?Je.Name:t("items.title"))}else A(t("items.title"))}return()=>A(null)},[e,s==null?void 0:s.sqliteClient,A,t]),b.useEffect(()=>{(async()=>{var je,Je,ut;if(s!=null&&s.sqliteClient){we(!0);const Dt=((je=s.sqliteClient)==null?void 0:je.items.getAll())??[];v(Dt);const M=((Je=s.sqliteClient)==null?void 0:Je.items.getRecentlyDeletedCount())??0;z(M);const C=((ut=s.sqliteClient)==null?void 0:ut.settings.getCredentialsSortOrder())??"OldestFirst";ne(C),we(!1),oe(!1)}})()},[s==null?void 0:s.sqliteClient,we,oe]);const Me=()=>{switch(T){case"passkeys":return t("items.filters.passkeys");case"attachments":return t("common.attachments");case"totp":return t("items.filters.totp");case"all":return F&&J?J:t("items.title");default:if(Vu(T)){const Ee=Hu.find(je=>je.type===T);if(Ee)return t(Ee.titleKey)}return F&&J?J:t("items.title")}},Qe=b.useCallback((Ee,je)=>{S(""),c(`/items/folder/${Ee}?filter=${encodeURIComponent(T)}`)},[c,T]),ht=()=>{if(w)return[];if(!(s!=null&&s.sqliteClient))return[];const Ee=s.sqliteClient.folders.getAll(),je=Ee.filter(C=>F?C.ParentFolderId===F:C.ParentFolderId===null||C.ParentFolderId===void 0),Je=Cv(f,T),ut=new Map;Je.forEach(C=>{C.FolderId&&ut.set(C.FolderId,(ut.get(C.FolderId)||0)+1)});const Dt=C=>{let N=ut.get(C)||0;const K=Oh(C,Ee);for(const ee of K)N+=ut.get(ee)||0;return N};return je.map(C=>({id:C.Id,name:C.Name,itemCount:Dt(C.Id)})).sort((C,N)=>C.name.localeCompare(N.name))},Ie=(()=>{var Dt;let Ee;if(F!==null)if(w){const M=((Dt=s==null?void 0:s.sqliteClient)==null?void 0:Dt.folders.getAll())||[],C=Oh(F,M),N=[F,...C];Ee=f.filter(K=>K.FolderId!==null&&K.FolderId!==void 0&&N.includes(K.FolderId))}else Ee=f.filter(M=>M.FolderId===F);else!w&&te?Ee=f.filter(M=>!M.FolderId):Ee=f;const je=Cv(Ee,T),Je=w.toLowerCase().trim();if(!Je)return je;const ut=Je.split(/\s+/).filter(M=>M.length>0);return je.filter(M=>{var N,K;const C=[((N=M.Name)==null?void 0:N.toLowerCase())||""];return(K=M.Fields)==null||K.forEach(ee=>{const pe=Array.isArray(ee.Value)?ee.Value.join(" ").toLowerCase():(ee.Value||"").toLowerCase();C.push(pe),C.push(ee.Label.toLowerCase())}),ut.every(ee=>C.some(pe=>pe.includes(ee)))})})(),Be=b.useMemo(()=>{const Ee=[...Ie];switch(Y){case"NewestFirst":return Ee.sort((je,Je)=>new Date(Je.CreatedAt||0).getTime()-new Date(je.CreatedAt||0).getTime());case"Alphabetical":return Ee.sort((je,Je)=>(je.Name||"").localeCompare(Je.Name||""));case"OldestFirst":default:return Ee.sort((je,Je)=>new Date(je.CreatedAt||0).getTime()-new Date(Je.CreatedAt||0).getTime())}},[Ie,Y]),Ge=ht(),qe=b.useMemo(()=>{if(!F||!(s!=null&&s.sqliteClient))return Ie.length;const Ee=s.sqliteClient.folders.getAll();return $M(F,f,Ee)},[F,f,s==null?void 0:s.sqliteClient,Ie.length]),nt=b.useMemo(()=>{if(!F)return!0;if(!(s!=null&&s.sqliteClient))return!1;const Ee=s.sqliteClient.folders.getAll();return XM(F,Ee)},[F,s==null?void 0:s.sqliteClient]),We=f.length>0&&f.every(Ee=>Ee.FolderId!==null);return ie?d.jsx("div",{className:"flex justify-center items-center p-8",children:d.jsx(Ai,{})}):d.jsxs("div",{children:[d.jsx(Z1,{folderId:F}),d.jsxs("div",{className:"flex justify-between items-center gap-2 mb-4",children:[d.jsxs("div",{className:"relative min-w-0 flex-1 flex items-center gap-2",children:[d.jsxs("button",{onClick:()=>R(!L),className:"flex items-center gap-1 text-gray-900 dark:text-white text-xl hover:text-gray-700 dark:hover:text-gray-300 focus:outline-none min-w-0",children:[d.jsxs("h2",{className:"flex items-baseline gap-1.5 min-w-0 overflow-hidden",children:[d.jsx("span",{className:"truncate",children:Me()}),d.jsxs("span",{className:"text-sm text-gray-500 dark:text-gray-400 shrink-0",children:["(",Ie.length,")"]})]}),d.jsx("svg",{className:"w-4 h-4 mt-1 shrink-0",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:d.jsx("polyline",{points:"6 9 12 15 18 9"})})]}),F&&d.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[d.jsx("button",{onClick:()=>P(!0),title:t("items.editFolder"),className:"p-1.5 text-gray-400 hover:text-orange-500 dark:text-gray-500 dark:hover:text-orange-400 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",children:d.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"})})}),d.jsx("button",{onClick:()=>j(!0),title:t("items.deleteFolder"),className:"p-1.5 text-gray-400 hover:text-red-500 dark:text-gray-500 dark:hover:text-red-400 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",children:d.jsxs("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:[d.jsx("polyline",{points:"3 6 5 6 21 6"}),d.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]}),L&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"fixed inset-0 z-10",onClick:()=>{R(!1)}}),d.jsx("div",{className:"absolute left-0 top-full mt-1 w-72 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-xl ring-1 ring-black/5 dark:ring-white/10 z-20",children:d.jsxs("div",{className:"py-1",children:[d.jsxs("div",{className:"relative",children:[d.jsx("button",{onClick:()=>{const Ee="all";k(Ee),id(Ee),R(!1)},className:`w-full text-left px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700 ${T==="all"?"bg-orange-50 dark:bg-orange-900/20 text-orange-600 dark:text-orange-400":"text-gray-700 dark:text-gray-300"}`,children:t("items.title")}),!F&&d.jsxs("button",{onClick:Ee=>{Ee.stopPropagation();const je=!te;ce(je),rt.setShowFolders(je),R(!1)},className:"absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-1.5 px-2 py-1 text-xs text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 rounded hover:bg-gray-200 dark:hover:bg-gray-600",children:[d.jsx("span",{children:t("items.filters.folders")}),d.jsxs("svg",{className:`w-5 h-5 ${te?"text-orange-500 dark:text-orange-400":"text-gray-400 dark:text-gray-500"}`,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[d.jsx("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2"}),te&&d.jsx("polyline",{points:"7 12 10 15 17 8"})]})]})]}),d.jsx("div",{className:"border-t border-gray-200 dark:border-gray-700 my-1"}),Hu.map(Ee=>d.jsxs("button",{onClick:()=>{const je=Ee.type;k(je),id(je),R(!1)},className:`w-full text-left px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 ${T===Ee.type?"bg-orange-50 dark:bg-orange-900/20 text-orange-600 dark:text-orange-400":"text-gray-700 dark:text-gray-300"}`,children:[d.jsx("span",{className:T===Ee.type?"text-orange-500 dark:text-orange-400":"text-gray-400 dark:text-gray-500",children:Ee.iconSvg}),t(Ee.titleKey)]},Ee.type)),d.jsx("div",{className:"border-t border-gray-200 dark:border-gray-700 my-1"}),d.jsx("button",{onClick:()=>{const Ee="passkeys";k(Ee),id(Ee),R(!1)},className:`w-full text-left px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700 ${T==="passkeys"?"bg-orange-50 dark:bg-orange-900/20 text-orange-600 dark:text-orange-400":"text-gray-700 dark:text-gray-300"}`,children:t("items.filters.passkeys")}),d.jsx("button",{onClick:()=>{const Ee="attachments";k(Ee),id(Ee),R(!1)},className:`w-full text-left px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700 ${T==="attachments"?"bg-orange-50 dark:bg-orange-900/20 text-orange-600 dark:text-orange-400":"text-gray-700 dark:text-gray-300"}`,children:t("common.attachments")}),d.jsx("button",{onClick:()=>{const Ee="totp";k(Ee),id(Ee),R(!1)},className:`w-full text-left px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700 ${T==="totp"?"bg-orange-50 dark:bg-orange-900/20 text-orange-600 dark:text-orange-400":"text-gray-700 dark:text-gray-300"}`,children:t("items.filters.totp")}),d.jsx("div",{className:"border-t border-gray-200 dark:border-gray-700 my-1"}),d.jsxs("button",{onClick:()=>{R(!1),c("/items/deleted")},className:"w-full text-left px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700 text-gray-700 dark:text-gray-300 flex items-center justify-between",children:[d.jsx("span",{children:t("recentlyDeleted.title")}),B>0&&d.jsx("span",{className:"text-gray-400 dark:text-gray-500",children:B})]})]})})]})]}),d.jsxs("div",{className:"flex items-center gap-1",children:[d.jsxs("div",{className:"relative",children:[d.jsx("button",{onClick:()=>X(!fe),className:"p-1.5 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors",title:t("items.sort.title"),children:d.jsxs("svg",{className:"w-5 h-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[d.jsx("line",{x1:"4",y1:"6",x2:"16",y2:"6"}),d.jsx("line",{x1:"4",y1:"12",x2:"12",y2:"12"}),d.jsx("line",{x1:"4",y1:"18",x2:"8",y2:"18"}),d.jsx("polyline",{points:"15 15 18 18 21 15"}),d.jsx("line",{x1:"18",y1:"12",x2:"18",y2:"18"})]})}),fe&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"fixed inset-0 z-10",onClick:()=>X(!1)}),d.jsx("div",{className:"absolute right-0 top-full mt-1 w-48 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-xl ring-1 ring-black/5 dark:ring-white/10 z-20",children:d.jsx("div",{className:"py-1",children:M3.map(Ee=>d.jsxs("button",{onClick:async()=>{ne(Ee.value),X(!1),await p(async()=>{var je;(je=s.sqliteClient)==null||je.settings.setCredentialsSortOrder(Ee.value)})},className:`w-full text-left px-4 py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-700 flex items-center gap-2 ${Y===Ee.value?"text-orange-600 dark:text-orange-400":"text-gray-700 dark:text-gray-300"}`,children:[Y===Ee.value?d.jsx("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:d.jsx("polyline",{points:"20 6 9 17 4 12"})}):d.jsx("span",{className:"w-4"}),d.jsx("span",{children:t(Ee.labelKey)})]},Ee.value))})})]})]}),d.jsx(Jh,{onClick:Ve})]})]}),f.length>0?d.jsx("div",{className:"mb-4",children:d.jsx("input",{type:"text",value:w,onChange:Ee=>S(Ee.target.value),placeholder:`${t("content.searchVault")}`,autoFocus:!0,className:"w-full p-2 border dark:border-gray-600 rounded bg-white dark:bg-gray-800 text-gray-900 dark:text-white placeholder-gray-400 dark:placeholder-gray-500 focus:ring-blue-500 focus:border-blue-500"})}):d.jsx(d.Fragment,{}),f.length===0?d.jsx(d.Fragment,{children:d.jsxs("div",{className:"text-gray-500 dark:text-gray-400 space-y-2 mb-10",children:[d.jsx("p",{children:t("items.welcomeTitle")}),d.jsx("p",{children:t("items.welcomeDescription")})]})}):Ie.length===0&&Ge.length===0&&!We&&!F?d.jsx("div",{className:"text-gray-500 dark:text-gray-400 space-y-3 mb-10",children:(T!=="all"||w)&&d.jsxs(d.Fragment,{children:[d.jsx("p",{children:w&&T!=="all"?t("items.noMatchingItemsWithFilter",{filter:Me(),search:w}):w?t("items.noMatchingItemsSearch",{search:w}):t("items.noMatchingItems")}),d.jsxs("div",{className:"flex flex-wrap gap-2",children:[w&&d.jsxs("button",{onClick:()=>S(""),className:"inline-flex items-center gap-1 px-3 py-1.5 text-sm bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 rounded-lg transition-colors",children:[d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),t("items.clearSearch")]}),T!=="all"&&d.jsxs("button",{onClick:()=>{k("all"),localStorage.removeItem(Fo)},className:"inline-flex items-center gap-1 px-3 py-1.5 text-sm bg-orange-100 dark:bg-orange-900/30 hover:bg-orange-200 dark:hover:bg-orange-900/50 text-orange-700 dark:text-orange-300 rounded-lg transition-colors",children:[d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),t("items.clearFilter")]})]})]})}):We&&Ie.length===0&&!F&&!w?d.jsxs(d.Fragment,{children:[(Ge.length>0||nt)&&d.jsxs("div",{className:"flex flex-wrap items-center gap-2 mb-4",children:[Ge.map(Ee=>d.jsx(Iv,{folder:Ee,onClick:()=>Qe(Ee.id,Ee.name)},Ee.id)),nt&&d.jsxs("button",{onClick:ve,className:"inline-flex items-center gap-1 px-2.5 py-1.5 text-xs rounded-full transition-colors focus:outline-none text-gray-500 dark:text-gray-400 hover:text-orange-600 dark:hover:text-orange-400 hover:bg-gray-100 dark:hover:bg-gray-700/50",children:[d.jsx("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})}),d.jsxs("svg",{className:"w-3 h-3 -ml-0.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[d.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),d.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})]})]}),d.jsx("div",{className:"text-gray-500 dark:text-gray-400 text-sm",children:d.jsx("p",{children:t("items.allItemsInFolders")})})]}):d.jsxs(d.Fragment,{children:[!w&&(F||te)&&(Ge.length>0||nt)&&d.jsxs("div",{className:"flex flex-wrap items-center gap-2 mb-4",children:[Ge.map(Ee=>d.jsx(Iv,{folder:Ee,onClick:()=>Qe(Ee.id,Ee.name)},Ee.id)),nt&&d.jsxs("button",{onClick:ve,className:`inline-flex items-center gap-1 px-2.5 py-1.5 text-xs rounded-full transition-colors focus:outline-none ${Ge.length>0?"text-gray-500 dark:text-gray-400 hover:text-orange-600 dark:hover:text-orange-400 hover:bg-gray-100 dark:hover:bg-gray-700/50":"text-gray-400 dark:text-gray-500 border border-dashed border-gray-300 dark:border-gray-600 hover:border-orange-400 dark:hover:border-orange-500 hover:text-orange-600 dark:hover:text-orange-400"}`,children:[d.jsx("svg",{className:"w-3.5 h-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"})}),d.jsxs("svg",{className:"w-3 h-3 -ml-0.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",children:[d.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),d.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),Ge.length===0&&d.jsx("span",{children:t("items.newFolder")})]})]}),Be.length>0&&d.jsx("ul",{id:"items-list",className:"space-y-2",children:Be.map(Ee=>d.jsx(D3,{item:Ee,showFolderPath:!!w&&!!Ee.FolderPath,searchTerm:w,currentFolderPath:W},Ee.Id))}),F&&Be.length===0&&!w&&d.jsx("div",{className:"text-gray-500 dark:text-gray-400 text-sm mb-4",children:d.jsx("p",{children:t("items.emptyFolderHint")})}),(T!=="all"||w)&&d.jsxs("div",{className:"flex flex-wrap justify-center gap-2 mt-4 pt-4",children:[w&&d.jsxs("button",{onClick:()=>S(""),className:"inline-flex items-center gap-1 px-3 py-1.5 text-sm bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 rounded-lg transition-colors",children:[d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),t("items.clearSearch")]}),T!=="all"&&d.jsxs("button",{onClick:()=>{k("all"),localStorage.removeItem(Fo)},className:"inline-flex items-center gap-1 px-3 py-1.5 text-sm bg-orange-100 dark:bg-orange-900/30 hover:bg-orange-200 dark:hover:bg-orange-900/50 text-orange-700 dark:text-orange-300 rounded-lg transition-colors",children:[d.jsxs("svg",{className:"w-4 h-4",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[d.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),t("items.clearFilter")]})]})]}),d.jsx(wv,{isOpen:x,onClose:()=>O(!1),onSave:Pe,mode:"create"}),d.jsx(wv,{isOpen:G,onClose:()=>P(!1),onSave:Ye,initialName:J||"",mode:"edit"}),d.jsx(L3,{isOpen:_,onClose:()=>j(!1),onDeleteFolderOnly:_e,onDeleteFolderAndContents:Ke,itemCount:qe})]})},Tv=[{type:"Login",titleKey:"itemTypes.login.title",iconSvg:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"})})},{type:"Alias",titleKey:"itemTypes.alias.title",iconSvg:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})})},{type:"CreditCard",titleKey:"itemTypes.creditCard.title",iconSvg:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 10h18M7 15h1m4 0h1m-7 4h12a3 3 0 003-3V8a3 3 0 00-3-3H6a3 3 0 00-3 3v8a3 3 0 003 3z"})})},{type:"Note",titleKey:"itemTypes.note.title",iconSvg:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})})}],F3=()=>{const{t}=it(),e=Pa(),{setIsInitialLoading:n}=va(),[r,s]=b.useState(""),[l,c]=b.useState("Login"),[m,p]=b.useState(!1);b.useEffect(()=>{n(!1)},[n]);const g=b.useCallback(()=>{const v=new URLSearchParams;v.set("type",l),r.trim()&&v.set("name",r.trim()),e(`/items/add?${v.toString()}`)},[l,r,e]),A=b.useCallback(v=>{c(v),p(!1)},[]),f=Tv.find(v=>v.type===l);return d.jsxs("div",{className:"p-4 space-y-6",children:[d.jsx("div",{children:d.jsx(Od,{id:"itemName",label:t("common.serviceName"),value:r,onChange:s,type:"text",placeholder:t("common.serviceName")})}),d.jsxs("div",{children:[d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2",children:t("itemTypes.typeLabel")}),d.jsxs("div",{className:"relative",children:[d.jsxs("button",{type:"button",onClick:()=>p(!m),className:"w-full px-4 py-3 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-white focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500 flex items-center justify-between",children:[d.jsxs("div",{className:"flex items-center gap-3",children:[d.jsx("span",{className:"text-primary-600 dark:text-primary-400",children:f==null?void 0:f.iconSvg}),d.jsx("span",{className:"font-medium",children:f?t(f.titleKey):""})]}),d.jsx("svg",{className:`w-5 h-5 text-gray-400 transition-transform ${m?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),m&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"fixed inset-0 z-10",onClick:()=>p(!1)}),d.jsx("div",{className:"absolute z-20 mt-1 w-full bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-md shadow-lg",children:Tv.map(v=>d.jsxs("button",{type:"button",onClick:()=>A(v.type),className:`w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 flex items-center gap-3 border-b border-gray-100 dark:border-gray-700 last:border-b-0 ${l===v.type?"bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300":"text-gray-900 dark:text-white"}`,children:[d.jsx("span",{className:l===v.type?"text-primary-600 dark:text-primary-400":"text-gray-500 dark:text-gray-400",children:v.iconSvg}),d.jsx("span",{className:"font-medium",children:t(v.titleKey)}),l===v.type&&d.jsx("svg",{className:"w-5 h-5 ml-auto text-primary-600 dark:text-primary-400",fill:"currentColor",viewBox:"0 0 20 20",children:d.jsx("path",{fillRule:"evenodd",d:"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",clipRule:"evenodd"})})]},v.type))})]})]})]}),d.jsx("button",{type:"button",onClick:g,className:"w-full px-4 py-3 bg-primary-600 text-white rounded-md hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 font-medium",children:t("common.next")})]})},Nu=30,B3=(t,e=Nu)=>{const n=new Date(t),r=new Date(n.getTime()+e*24*60*60*1e3),s=new Date,l=Math.ceil((r.getTime()-s.getTime())/(24*60*60*1e3));return Math.max(0,l)},P3=()=>{const{t}=it(),e=qt(),{executeVaultMutationAsync:n}=Hs(),{setHeaderButtons:r}=Ei(),[s,l]=b.useState([]),[c,m]=b.useState(null),[p,g]=b.useState(!1),[A,f]=b.useState(!1),[v,w]=_d(!0,100),S=b.useCallback(()=>{if(e!=null&&e.sqliteClient){const x=e.sqliteClient.items.getRecentlyDeleted();l(x)}},[e==null?void 0:e.sqliteClient]),T=b.useCallback(async x=>{e!=null&&e.sqliteClient&&(await n(async()=>{await e.sqliteClient.items.restore(x)}),S())},[e==null?void 0:e.sqliteClient,n,S]),k=b.useCallback(async()=>{!(e!=null&&e.sqliteClient)||!c||(await n(async()=>{await e.sqliteClient.items.permanentlyDelete(c)}),S(),g(!1),m(null))},[e==null?void 0:e.sqliteClient,n,S,c]),L=b.useCallback(async()=>{e!=null&&e.sqliteClient&&(await n(async()=>{for(const x of s)await e.sqliteClient.items.permanentlyDelete(x.Id)}),S(),f(!1))},[e==null?void 0:e.sqliteClient,n,s,S]);b.useEffect(()=>(r(null),()=>r(null)),[r]),b.useEffect(()=>{(async()=>{e!=null&&e.sqliteClient&&(w(!0),S(),w(!1))})()},[e==null?void 0:e.sqliteClient,w,S]);const R=b.useCallback(()=>{g(!1),m(null)},[]);return v?d.jsx("div",{className:"flex justify-center items-center p-8",children:d.jsx(Ai,{})}):d.jsxs("div",{children:[d.jsxs("div",{className:"flex justify-between items-center mb-4",children:[d.jsxs(ti,{className:"flex items-baseline gap-1.5",children:[t("recentlyDeleted.title"),d.jsxs("span",{className:"text-sm text-gray-500 dark:text-gray-400",children:["(",s.length,")"]})]}),s.length>0&&d.jsx("button",{onClick:()=>f(!0),className:"text-sm text-red-600 dark:text-red-400 hover:text-red-700 dark:hover:text-red-300",children:t("recentlyDeleted.emptyAll")})]}),s.length===0?d.jsxs("div",{className:"text-gray-500 dark:text-gray-400 space-y-2 mb-10",children:[d.jsx("p",{children:t("recentlyDeleted.noItems")}),d.jsx("p",{className:"text-sm",children:t("recentlyDeleted.noItemsDescription",{days:Nu})})]}):d.jsxs(d.Fragment,{children:[d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400 mb-4",children:t("recentlyDeleted.description",{days:Nu})}),d.jsx("ul",{className:"space-y-2",children:s.map(x=>{const O=x.DeletedAt,_=O?B3(O):Nu;return d.jsx("li",{className:"relative",children:d.jsx("div",{className:"bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg p-3",children:d.jsxs("div",{className:"flex items-start gap-3",children:[d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx(tA,{item:x,className:"w-6 h-6 rounded"}),d.jsx("span",{className:"font-medium text-gray-900 dark:text-white truncate",children:x.Name||t("items.untitled")})]}),d.jsx("div",{className:"text-xs text-gray-500 dark:text-gray-400 mt-1",children:_>0?t("recentlyDeleted.daysRemaining",{count:_}):d.jsx("span",{className:"text-red-500",children:t("recentlyDeleted.expiringSoon")})})]}),d.jsxs("div",{className:"flex items-center gap-2",children:[d.jsx("button",{onClick:()=>T(x.Id),className:"px-3 py-1 text-sm bg-green-100 dark:bg-green-900/30 text-green-700 dark:text-green-400 rounded hover:bg-green-200 dark:hover:bg-green-900/50",children:t("recentlyDeleted.restore")}),d.jsx("button",{onClick:()=>{m(x.Id),g(!0)},className:"px-3 py-1 text-sm bg-red-100 dark:bg-red-900/30 text-red-700 dark:text-red-400 rounded hover:bg-red-200 dark:hover:bg-red-900/50",children:t("common.delete")})]})]})})},x.Id)})})]}),d.jsx(lf,{isOpen:p&&!!c,onClose:R,onConfirm:k,title:t("recentlyDeleted.confirmDeleteTitle"),message:t("recentlyDeleted.confirmDeleteMessage"),confirmText:t("recentlyDeleted.deletePermanently")}),d.jsx(lf,{isOpen:A,onClose:()=>f(!1),onConfirm:L,title:t("recentlyDeleted.confirmEmptyAllTitle"),message:t("recentlyDeleted.confirmEmptyAllMessage",{count:s.length}),confirmText:t("recentlyDeleted.emptyAll")})]})},eD=({isOpen:t,origin:e,onChoice:n,onCancel:r})=>{const{t:s}=it();return d.jsxs(ai,{isOpen:t,onClose:r,title:s("passkeys.useBrowserPasskey"),showCloseButton:!0,children:[d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-6",children:s("passkeys.bypass.description",{origin:e})}),d.jsxs("div",{className:"space-y-3",children:[d.jsx(Sa,{variant:"primary",onClick:()=>n("once"),children:s("passkeys.bypass.thisTimeOnly")}),d.jsx(Sa,{variant:"secondary",onClick:()=>n("always"),children:s("passkeys.bypass.alwaysForSite")}),d.jsx(Sa,{variant:"secondary",onClick:r,children:s("common.cancel")})]})]})};function tD(t={}){const{enabled:e=!0}=t,n=Ba(),r=Pa(),{dbInitialized:s,dbAvailable:l}=qt();return b.useEffect(()=>{if(!(!e||!s)&&!l){const c=`${n.pathname}${n.search}`;rt.setPendingRedirectUrl(c),r("/unlock")}},[e,s,l,n,r]),{isLocked:s&&!l}}async function O3(){const t=await rt.getPendingRedirectUrl();return t&&await rt.setPendingRedirectUrl(null),t}async function j3(){await rt.setPendingRedirectUrl(null)}const et=class et{constructor(){}static async createPasskey(e,n,r){var ne,fe,X,te,ce;et.pickSupportedAlgorithm(n.publicKey.pubKeyCredParams);const s=((ne=n.publicKey.rp)==null?void 0:ne.id)||new URL(n.origin).hostname,l=new Uint8Array(await crypto.subtle.digest("SHA-256",et.te(s))),c=await crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!0,["sign","verify"]),m=await crypto.subtle.exportKey("jwk",c.publicKey),p=await crypto.subtle.exportKey("jwk",c.privateKey),g=et.toB64u(e),A=et.buildCoseEc2Es256(m);let f=65;const v=(fe=n.publicKey.authenticatorSelection)==null?void 0:fe.userVerification,w=!!(r!=null&&r.uvPerformed);(v==="required"||v==="preferred"&&w)&&(f|=4),f|=8,f|=16;const S=new Uint8Array([0,0,0,0]),T=new Uint8Array([e.length>>8&255,e.length&255]),k=et.concat(et.AAGUID,T,e,A),L=et.concat(l,new Uint8Array([f]),S,k),x={type:"webauthn.create",challenge:et.challengeToB64u(n.publicKey.challenge),origin:n.origin,crossOrigin:!1},O=JSON.stringify(x),_=et.te(O),j=n.publicKey.attestation||"none",G=j==="none"||j==="indirect"?et.buildAttObjNone(L):await et.buildAttObjPackedSelf(L,_,c.privateKey);let P=null;(X=n.publicKey.user)!=null&&X.id&&(P=typeof n.publicKey.user.id=="string"?n.publicKey.user.id:et.toB64(n.publicKey.user.id instanceof Uint8Array?n.publicKey.user.id:new Uint8Array(n.publicKey.user.id)));let B,z=!1,Q;if(r!=null&&r.enablePrf){const oe=new Uint8Array(32);if(crypto.getRandomValues(oe),B=et.toB64u(oe),z=!0,r!=null&&r.prfInputs){const F=et.fromB64u(r.prfInputs.first);if(Q={first:await et.evaluatePrf(oe,F)},r.prfInputs.second){const J=et.fromB64u(r.prfInputs.second);Q.second=await et.evaluatePrf(oe,J)}}}const ae={rpId:s,credentialId:g,publicKey:m,privateKey:p,userId:P,userName:(te=n.publicKey.user)==null?void 0:te.name,userDisplayName:(ce=n.publicKey.user)==null?void 0:ce.displayName,prfSecret:B};return{credential:{id:g,rawId:g,response:{clientDataJSON:et.toB64u(_),attestationObject:et.toB64u(G)},type:"public-key"},stored:ae,prfEnabled:z,prfResults:Q}}static async getAssertion(e,n,r){const s=n,l=e.publicKey.rpId||new URL(e.origin).hostname,c=new Uint8Array(await crypto.subtle.digest("SHA-256",et.te(l)));let m=1;const p=e.publicKey.userVerification,g=!!(r!=null&&r.uvPerformed);(p==="required"||p==="preferred"&&g)&&(m|=4),((r==null?void 0:r.includeBEBS)??!0)&&(m|=8,m|=16);const A=new Uint8Array([0,0,0,0]),f=et.concat(c,new Uint8Array([m]),A),w={type:"webauthn.get",challenge:et.challengeToB64u(e.publicKey.challenge),origin:e.origin,crossOrigin:!1},S=JSON.stringify(w),T=et.te(S),k=new Uint8Array(await crypto.subtle.digest("SHA-256",T)),L=et.concat(f,k),R=await crypto.subtle.importKey("jwk",s.privateKey,{name:"ECDSA",namedCurve:"P-256"},!1,["sign"]),x=new Uint8Array(await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},R,L)),O=et.ecdsaRawToDer(x);let _=null;s.userId&&(_=s.userId.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""));let j;if(r!=null&&r.prfInputs&&s.prfSecret){const G=et.fromB64u(s.prfSecret);if(j={first:await et.evaluatePrf(G,r.prfInputs.first)},r.prfInputs.second){const B=await et.evaluatePrf(G,r.prfInputs.second);j.second=B}}return{id:s.credentialId,rawId:s.credentialId,clientDataJSON:et.toB64u(T),authenticatorData:et.toB64u(f),signature:et.toB64u(O),userHandle:_,prfResults:j}}static async evaluatePrf(e,n){const r=n instanceof Uint8Array?n:new Uint8Array(n),s=et.te("WebAuthn PRF\0"),l=et.concat(s,r),c=await crypto.subtle.digest("SHA-256",l),m=await crypto.subtle.importKey("raw",e,{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return await crypto.subtle.sign("HMAC",m,c)}static pickSupportedAlgorithm(e){if(!e||e.length===0)return-7;if(!e.some(r=>r.type==="public-key"&&r.alg===-7))throw new Error("No supported algorithm (ES256) in pubKeyCredParams");return-7}static buildCoseEc2Es256(e){const n=et.pad32(et.fromB64u(e.x)),r=et.pad32(et.fromB64u(e.y));return new Uint8Array([165,1,2,3,38,32,1,33,88,32,...n,34,88,32,...r])}static buildAttObjNone(e){const n=et.cborText("fmt"),r=et.cborText("none"),s=et.cborText("attStmt"),l=new Uint8Array([160]),c=et.cborText("authData"),m=et.cborBstr(e);return et.concat(new Uint8Array([163]),n,r,s,l,c,m)}static async buildAttObjPackedSelf(e,n,r){const s=new Uint8Array(await crypto.subtle.digest("SHA-256",n)),l=et.concat(e,s),c=new Uint8Array(await crypto.subtle.sign({name:"ECDSA",hash:"SHA-256"},r,l)),m=et.ecdsaRawToDer(c),p=et.concat(et.cborText("alg"),new Uint8Array([38]),et.cborText("sig"),et.cborBstr(m)),g=et.concat(new Uint8Array([162]),p),A=et.cborText("fmt"),f=et.cborText("packed"),v=et.cborText("attStmt"),w=et.cborText("authData"),S=et.cborBstr(e);return et.concat(new Uint8Array([163]),A,f,v,g,w,S)}static cborText(e){const n=et.te(e);return n.length<=23?new Uint8Array([96|n.length,...n]):n.length<=255?new Uint8Array([120,n.length,...n]):new Uint8Array([121,n.length>>8&255,n.length&255,...n])}static cborBstr(e){return e.length<=23?new Uint8Array([64|e.length,...e]):e.length<=255?new Uint8Array([88,e.length,...e]):new Uint8Array([89,e.length>>8&255,e.length&255,...e])}static ecdsaRawToDer(e){if(e.length!==64)throw new Error("Unexpected ECDSA signature length");const n=e.slice(0,32),r=e.slice(32,64),s=et.derInt(n),l=et.derInt(r);return new Uint8Array([48,s.length+l.length,...s,...l])}static derInt(e){let n=0;for(;n<e.length-1&&e[n]===0;)n++;let r=e.slice(n);if((r[0]&128)!==0){const s=new Uint8Array(r.length+1);s[0]=0,s.set(r,1),r=s}return new Uint8Array([2,r.length,...r])}static te(e){return new TextEncoder().encode(e)}static toB64(e){let n="";for(let r=0;r<e.length;r++)n+=String.fromCharCode(e[r]);return btoa(n)}static toB64u(e){return et.toB64(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}static fromB64u(e){const n=e.replace(/-/g,"+").replace(/_/g,"/"),r=n.length%4===2?"==":n.length%4===3?"=":"",s=atob(n+r),l=new Uint8Array(s.length);for(let c=0;c<s.length;c++)l[c]=s.charCodeAt(c);return l}static challengeToB64u(e){if(typeof e=="string")return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");const n=e instanceof Uint8Array?e:new Uint8Array(e);return et.toB64u(n)}static pad32(e){if(e.length===32)return e;const n=new Uint8Array(32);return n.set(e,32-e.length),n}static concat(...e){const n=e.reduce((l,c)=>l+c.length,0),r=new Uint8Array(n);let s=0;for(const l of e)r.set(l,s),s+=l.length;return r}};Ue(et,"AAGUID",new Uint8Array([161,26,95,170,159,50,75,140,140,93,47,125,19,232,201,66]));let zu=et;class un{constructor(){}static guidToBytes(e){const n=e.replace(/-/g,"");if(n.length!==32)throw new Error("Invalid GUID format");const r=new Uint8Array(16);for(let s=0;s<16;s++)r[s]=parseInt(n.substr(s*2,2),16);return r}static bytesToGuid(e){if(e.length!==16)throw new Error("Invalid byte length for GUID");const n=Array.from(e).map(r=>r.toString(16).padStart(2,"0")).join("");return[n.substr(0,8),n.substr(8,4),n.substr(12,4),n.substr(16,4),n.substr(20)].join("-").toUpperCase()}static bytesToBase64Url(e){let n="";return e.forEach(s=>n+=String.fromCharCode(s)),btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}static base64UrlToBytes(e){let r=e.replace(/=+$/,"").replace(/-/g,"+").replace(/_/g,"/");for(;r.length%4;)r+="=";const s=atob(r),l=new Uint8Array(s.length);for(let c=0;c<s.length;c++)l[c]=s.charCodeAt(c);return l}static guidToBase64url(e){return this.bytesToBase64Url(this.guidToBytes(e))}static base64urlToGuid(e){return this.bytesToGuid(this.base64UrlToBytes(e))}static arrayBufferToBase64(e){const n=new Uint8Array(e);let r="";for(let s=0;s<n.length;s++)r+=String.fromCharCode(n[s]);return btoa(r)}static bytesToBase64url(e){const n=e instanceof Uint8Array?e:new Uint8Array(e);return this.bytesToBase64Url(n)}static base64urlToBytes(e){return this.base64UrlToBytes(e)}}const H3=()=>{const{t}=it(),e=Ba(),{setIsInitialLoading:n}=va(),r=qt(),[s,l]=b.useState(null),[c,m]=b.useState(!1),[p,g]=b.useState(null),[A,f]=b.useState([]),[v,w]=b.useState(!1),{isLocked:S}=tD(),T=b.useRef(null);b.useEffect(()=>{(async()=>{if(!r.dbInitialized||S)return;const j=new URLSearchParams(e.search).get("requestId");if(j)try{const G=await St("GET_REQUEST_DATA",{requestId:j},"background");if(G&&G.type==="get"){l(G);const P=G.publicKey.rpId||new URL(G.origin).hostname,B=r.sqliteClient.passkeys.getByRpId(P);let z=B;if(G.publicKey.allowCredentials&&G.publicKey.allowCredentials.length>0){const Q=new Set(G.publicKey.allowCredentials.map(ae=>{try{return un.base64urlToGuid(ae.id)}catch(Y){return console.warn("Failed to convert credential ID to GUID:",ae.id,Y),null}}).filter(ae=>ae!==null));z=B.filter(ae=>Q.has(ae.Id))}f(z.map(Q=>({id:Q.Id,displayName:Q.DisplayName,serviceName:Q.ServiceName,rpId:Q.RpId,username:Q.Username})))}}catch(G){console.error("Failed to fetch request data:",G),g(t("common.errors.unknownError"))}n(!1)})()},[e,n,r.dbInitialized,S,r.sqliteClient,t]),b.useEffect(()=>{A.length>0&&T.current&&T.current.focus()},[A.length]),b.useEffect(()=>{const O=_=>{_.key==="Enter"&&!c&&A.length>0&&k(A[0].id)};return window.addEventListener("keydown",O),()=>window.removeEventListener("keydown",O)},[c,A]);const k=async O=>{var _,j;if(!(!s||!r.sqliteClient)){m(!0),g(null);try{const G=r.sqliteClient.passkeys.getById(O);if(!G)throw new Error(t("common.errors.unknownError"));const P=JSON.parse(G.PublicKey),B=JSON.parse(G.PrivateKey);let z;if(G.PrfKey)try{z=un.bytesToBase64url(G.PrfKey)}catch(ce){console.warn("Failed to convert PrfKey to base64url",ce)}let Q=null;if(G.UserHandle)try{const ce=G.UserHandle instanceof Uint8Array?G.UserHandle:new Uint8Array(G.UserHandle);Q=un.bytesToBase64url(ce)}catch(ce){console.warn("Failed to convert UserHandle to base64",ce)}const ae={rpId:G.RpId,credentialId:un.guidToBase64url(G.Id),publicKey:P,privateKey:B,userId:Q,userName:G.Username??void 0,userDisplayName:G.ServiceName??void 0,prfSecret:z},Y={origin:s.origin,requestId:s.requestId,publicKey:{rpId:s.publicKey.rpId,challenge:s.publicKey.challenge,userVerification:s.publicKey.userVerification}};let ne;if((j=(_=s.publicKey.extensions)==null?void 0:_.prf)!=null&&j.eval){const ce=s.publicKey.extensions.prf.eval.first;let oe;if(typeof ce=="object"&&ce!==null&&!Array.isArray(ce)){const F=Object.keys(ce).map(Number).sort((J,W)=>J-W);oe=new Uint8Array(F.length);for(let J=0;J<F.length;J++)oe[J]=ce[J]}else if(typeof ce=="string"){const F=atob(ce);oe=new Uint8Array(F.length);for(let J=0;J<F.length;J++)oe[J]=F.charCodeAt(J)}else throw new Error("Unknown PRF input format");if(ne={first:oe},s.publicKey.extensions.prf.eval.second){const F=s.publicKey.extensions.prf.eval.second;let J;if(typeof F=="object"&&F!==null&&!Array.isArray(F)){const W=Object.keys(F).map(Number).sort((ie,we)=>ie-we);J=new Uint8Array(W.length);for(let ie=0;ie<W.length;ie++)J[ie]=F[ie]}else if(typeof F=="string"){const W=atob(F);J=new Uint8Array(W.length);for(let ie=0;ie<W.length;ie++)J[ie]=W.charCodeAt(ie)}else throw console.error("[PasskeyAuth] Unknown PRF second input type:",typeof F),new Error("Unknown PRF second input format");ne.second=J}}const fe=await zu.getAssertion(Y,ae,{uvPerformed:!0,includeBEBS:!0,prfInputs:ne});let X;fe.prfResults&&(X={first:un.arrayBufferToBase64(fe.prfResults.first)},fe.prfResults.second&&(X.second=un.arrayBufferToBase64(fe.prfResults.second)));const te={id:fe.id,rawId:fe.rawId,clientDataJSON:fe.clientDataJSON,authenticatorData:fe.authenticatorData,signature:fe.signature,userHandle:fe.userHandle,prfResults:X};await St("PASSKEY_POPUP_RESPONSE",{requestId:s.requestId,credential:te},"background")}catch(G){console.error("PasskeyAuthenticate: Error during authentication",G),m(!1),g(t("common.errors.unknownError"))}}},L=async()=>{w(!0)},R=async O=>{if(s){if(O==="always"){const _=await Cf(s.origin),j=await rt.getPasskeyDisabledSites();j.includes(_)||(j.push(_),await rt.setPasskeyDisabledSites(j))}await St("PASSKEY_POPUP_RESPONSE",{requestId:s.requestId,fallback:!0},"background")}},x=async()=>{s&&await St("PASSKEY_POPUP_RESPONSE",{requestId:s.requestId,cancelled:!0},"background")};return s?d.jsxs(d.Fragment,{children:[d.jsx(eD,{isOpen:v&&!!s,origin:s?new URL(s.origin).hostname:"",onChoice:R,onCancel:()=>w(!1)}),d.jsxs("div",{className:"space-y-6",children:[d.jsxs("div",{className:"text-center",children:[d.jsx("h1",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:t("passkeys.authenticate.title")}),d.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:[t("passkeys.authenticate.signInFor")," ",d.jsx("strong",{children:s.origin})]})]}),p&&d.jsx("div",{className:"p-3 bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 rounded-lg",children:d.jsx("p",{className:"text-sm text-red-800 dark:text-red-200",children:p})}),d.jsx("div",{className:"space-y-4",children:A&&A.length>0?d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:t("passkeys.authenticate.selectPasskey")}),d.jsx("div",{className:"space-y-2 max-h-48 overflow-y-auto border rounded-lg p-2 bg-gray-50 dark:bg-gray-800",children:A.map((O,_)=>d.jsxs("div",{ref:_===0?T:null,tabIndex:0,className:"p-3 rounded-lg border cursor-pointer transition-colors bg-white border-gray-200 hover:bg-gray-100 hover:border-gray-300 dark:bg-gray-700 dark:border-gray-600 dark:hover:bg-gray-600 dark:hover:border-gray-500 focus:outline-none focus:ring-1 focus:ring-primary-500 focus:border-primary-500",onClick:()=>!c&&k(O.id),onKeyDown:j=>{j.key==="Enter"&&!c&&k(O.id)},children:[d.jsx("div",{className:"font-medium text-gray-900 dark:text-white text-sm truncate",children:O.serviceName}),d.jsx("div",{className:"flex items-center justify-between text-xs text-gray-600 dark:text-gray-400",children:d.jsx("span",{className:"truncate",children:O.displayName})})]},O.id))})]}):d.jsx("div",{className:"text-center py-8 bg-gray-50 dark:bg-gray-800 rounded-lg",children:d.jsx("p",{className:"text-gray-600 dark:text-gray-400",children:t("passkeys.authenticate.noPasskeysFound")})})}),d.jsxs("div",{className:"space-y-3",children:[d.jsx(Sa,{variant:"secondary",onClick:L,children:t("passkeys.useBrowserPasskey")}),d.jsx(Sa,{variant:"secondary",onClick:x,children:t("common.cancel")})]})]})]}):d.jsx("div",{className:"flex justify-center py-8",children:d.jsx(Ai,{})})},kh=({variant:t,children:e,className:n=""})=>{const r={info:"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-800 dark:text-blue-200",warning:"bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800 text-yellow-800 dark:text-yellow-200",error:"bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800 text-red-800 dark:text-red-200",success:"bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800 text-green-800 dark:text-green-200"};return d.jsx("div",{className:`p-3 border rounded-lg ${r[t]} ${n}`,children:d.jsx("p",{className:"text-sm",children:e})})},V3=()=>{var F,J;const{t}=it(),e=Ba(),{setIsInitialLoading:n}=va(),r=qt(),s=Gi(),{executeVaultMutationAsync:l}=Hs(),[c,m]=b.useState(null),[p,g]=b.useState(""),[A,f]=b.useState(null),{isLocked:v}=tD(),[w,S]=b.useState([]),[T,k]=b.useState([]),[L,R]=b.useState(null),[x,O]=b.useState(null),[_,j]=b.useState(!1),[G,P]=b.useState(!1),[B,z]=b.useState(!1),Q=b.useRef(null),ae=b.useRef(null);b.useEffect(()=>{(async()=>{var le,ve,Pe,_e,Ke,Ye,Ot,Ve;if(!r.dbInitialized||v)return;const we=new URLSearchParams(e.search).get("requestId");if(we)try{const Me=await St("GET_REQUEST_DATA",{requestId:we},"background");if(Me&&Me.type==="create"){m(Me);const Qe=((ve=(le=Me.publicKey)==null?void 0:le.rp)==null?void 0:ve.name)||((_e=(Pe=Me.publicKey)==null?void 0:Pe.rp)==null?void 0:_e.id)||"Passkey";g(Qe);const ht=((Ye=(Ke=Me.publicKey)==null?void 0:Ke.rp)==null?void 0:Ye.id)||new URL(Me.origin).hostname;if(r.sqliteClient){const Ie=r.sqliteClient.passkeys.getByRpId(ht);let Be=Ie;if(((Ot=Me.publicKey.user)!=null&&Ot.id||(Ve=Me.publicKey.user)!=null&&Ve.name)&&(Be=Ie.filter(Ge=>{var qe;if((qe=Me.publicKey.user)!=null&&qe.id&&Ge.UserHandle)try{const nt=un.base64urlToBytes(Me.publicKey.user.id),We=Ge.UserHandle instanceof Uint8Array?Ge.UserHandle:new Uint8Array(Ge.UserHandle);if(nt.length===We.length&&nt.every((Ee,je)=>Ee===We[je]))return!0}catch{}return!1})),S(Be),Be.length===0){const qe=r.sqliteClient.items.getAll().filter(We=>{const Ee=Zc(We,nn.LoginUsername),je=Zc(We,nn.LoginPassword);return!Ee&&!je?!1:!We.HasPasskey});let nt=[];qe.length>0&&(nt=await C_(qe,Me.origin,Me.publicKey.rp.name||"",Us.URL_SUBDOMAIN),k(nt)),nt.length===0&&j(!0)}}else j(!0)}}catch(Me){console.error("Failed to fetch request data:",Me),f(t("common.errors.unknownError"))}n(!1)})()},[e,n,r.dbInitialized,r.sqliteClient,v,t]),b.useEffect(()=>{_&&ae.current?ae.current.focus():!_&&w.length>0&&Q.current&&Q.current.focus()},[_,w.length]),b.useEffect(()=>{const W=ie=>{ie.key==="Enter"&&!G&&_&&X()};return window.addEventListener("keydown",W),()=>window.removeEventListener("keydown",W)},[_,G]);const Y=()=>{R(null),O(null),j(!0)},ne=W=>{R(W),O(null),j(!0)},fe=W=>{O(W),R(null),j(!0)},X=async()=>{var W,ie;if(!(!c||!r.sqliteClient)){f(null);try{let we;if(c.origin){P(!0);try{const qe=new Promise((Ee,je)=>setTimeout(()=>je(new Error("Favicon extraction timed out")),5e3)),nt=s.get("Favicon/Extract?url="+c.origin),We=await Promise.race([nt,qe]);if(We!=null&&We.image){const Ee=atob(We.image),je=new Uint8Array(Ee.length);for(let Je=0;Je<Ee.length;Je++)je[Je]=Ee.charCodeAt(Je);we=je}}catch{}}const le={origin:c.origin,requestId:c.requestId,publicKey:{rp:c.publicKey.rp,user:c.publicKey.user,challenge:c.publicKey.challenge,pubKeyCredParams:c.publicKey.pubKeyCredParams,attestation:c.publicKey.attestation,authenticatorSelection:c.publicKey.authenticatorSelection}},ve=crypto.randomUUID().toUpperCase(),Pe=un.guidToBytes(ve),_e=un.guidToBase64url(ve),Ke=(ie=(W=c.publicKey)==null?void 0:W.extensions)==null?void 0:ie.prf,Ye=!!Ke,Ot=Ke==null?void 0:Ke.eval,Ve=await zu.createPasskey(Pe,le,{uvPerformed:!0,credentialIdBytes:16,enablePrf:Ye,prfInputs:Ot}),{credential:Me,stored:Qe,prfEnabled:ht,prfResults:Ie}=Ve;await l(async()=>{if(L){const qe=r.sqliteClient.passkeys.getById(L);if(qe){const nt=r.sqliteClient.items.getById(qe.ItemId);nt&&await r.sqliteClient.items.update({...nt,Name:p,Logo:we??nt.Logo,Fields:[...(nt.Fields||[]).filter(Ee=>Ee.FieldKey!==nn.LoginUrl&&Ee.FieldKey!==nn.LoginUsername),eu(nn.LoginUrl,{value:c.origin}),eu(nn.LoginUsername,{value:c.publicKey.user.name})]},[],[]),await r.sqliteClient.passkeys.deleteById(L);let We=null;if(Qe.userId)try{We=un.base64urlToBytes(Qe.userId)}catch{We=null}await r.sqliteClient.passkeys.create({Id:ve,ItemId:qe.ItemId,RpId:Qe.rpId,UserHandle:We,PublicKey:JSON.stringify(Qe.publicKey),PrivateKey:JSON.stringify(Qe.privateKey),DisplayName:c.publicKey.user.displayName||c.publicKey.user.name||"",PrfKey:Qe.prfSecret?un.base64urlToBytes(Qe.prfSecret):void 0,AdditionalData:null})}}else if(x){let qe=null;if(Qe.userId)try{qe=un.base64urlToBytes(Qe.userId)}catch{qe=null}await r.sqliteClient.passkeys.create({Id:ve,ItemId:x,RpId:Qe.rpId,UserHandle:qe,PublicKey:JSON.stringify(Qe.publicKey),PrivateKey:JSON.stringify(Qe.privateKey),DisplayName:c.publicKey.user.displayName||c.publicKey.user.name||"",PrfKey:Qe.prfSecret?un.base64urlToBytes(Qe.prfSecret):void 0,AdditionalData:null})}else{const qe={Id:"",Name:p,ItemType:Ea.Login,Logo:we,Fields:[eu(nn.LoginUrl,{value:c.origin}),eu(nn.LoginUsername,{value:c.publicKey.user.name})],CreatedAt:new Date().toISOString(),UpdatedAt:new Date().toISOString()},nt=await r.sqliteClient.items.create(qe,[]);let We=null;if(Qe.userId)try{We=un.base64urlToBytes(Qe.userId)}catch{We=null}await r.sqliteClient.passkeys.create({Id:ve,ItemId:nt,RpId:Qe.rpId,UserHandle:We,PublicKey:JSON.stringify(Qe.publicKey),PrivateKey:JSON.stringify(Qe.privateKey),DisplayName:c.publicKey.user.displayName||c.publicKey.user.name||"",PrfKey:Qe.prfSecret?un.base64urlToBytes(Qe.prfSecret):void 0,AdditionalData:null})}});let Be;ht&&(Be={prf:{enabled:!0,results:Ie?{first:un.bytesToBase64url(new Uint8Array(Ie.first)),second:Ie.second?un.bytesToBase64url(new Uint8Array(Ie.second)):void 0}:void 0}});const Ge={id:_e,rawId:_e,clientDataJSON:Me.response.clientDataJSON,attestationObject:Me.response.attestationObject,extensions:Be};await St("PASSKEY_POPUP_RESPONSE",{requestId:c.requestId,credential:Ge},"background"),P(!1)}catch(we){console.error("PasskeyCreate: Error creating passkey",we),f(t("common.errors.unknownError"))}}},te=async()=>{z(!0)},ce=async W=>{if(c){if(W==="always"){const ie=await Cf(c.origin),we=await rt.getPasskeyDisabledSites();we.includes(ie)||(we.push(ie),await rt.setPasskeyDisabledSites(we))}await St("PASSKEY_POPUP_RESPONSE",{requestId:c.requestId,fallback:!0},"background")}},oe=async()=>{c&&await St("PASSKEY_POPUP_RESPONSE",{requestId:c.requestId,cancelled:!0},"background")};return c?d.jsxs(d.Fragment,{children:[d.jsx(eD,{isOpen:B&&!!c,origin:c?new URL(c.origin).hostname:"",onChoice:ce,onCancel:()=>z(!1)}),G&&d.jsx("div",{className:"fixed inset-0 flex flex-col justify-center items-center bg-white dark:bg-gray-900 bg-opacity-90 dark:bg-opacity-90 z-50",children:d.jsx(Ai,{})}),d.jsxs("div",{className:"space-y-6",children:[d.jsxs("div",{className:"text-center",children:[d.jsx("h1",{className:"text-xl font-semibold text-gray-900 dark:text-white mb-2",children:t("passkeys.create.title")}),d.jsxs("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:[t("passkeys.create.createFor")," ",d.jsx("strong",{children:c.origin})]})]}),A&&d.jsx(kh,{variant:"error",children:A}),!_&&w.length>0&&d.jsxs("div",{className:"space-y-4",children:[d.jsx(Sa,{variant:"primary",onClick:Y,ref:Q,children:t("passkeys.create.createNewPasskey")}),d.jsx(Sa,{variant:"secondary",onClick:te,children:t("passkeys.useBrowserPasskey")}),d.jsxs("div",{className:"relative",children:[d.jsx("div",{className:"absolute inset-0 flex items-center",children:d.jsx("div",{className:"w-full border-t border-gray-300 dark:border-gray-600"})}),d.jsx("div",{className:"relative flex justify-center text-sm",children:d.jsx("span",{className:"px-2 bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400",children:t("common.or")})})]}),d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:t("passkeys.create.selectPasskeyToReplace")}),d.jsx("div",{className:"space-y-2 max-h-48 overflow-y-auto border rounded-lg p-2 bg-gray-50 dark:bg-gray-800",children:w.map(W=>d.jsx("button",{onClick:()=>ne(W.Id),className:"w-full p-3 text-left rounded-lg border cursor-pointer transition-colors bg-white border-gray-200 hover:bg-gray-100 hover:border-gray-300 dark:bg-gray-700 dark:border-gray-600 dark:hover:bg-gray-600 dark:hover:border-gray-500 focus:outline-none focus:ring-1 focus:ring-primary-500 focus:border-primary-500",children:d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{className:"flex-1",children:[d.jsx("div",{className:"font-medium text-gray-900 dark:text-white text-sm truncate",children:W.ServiceName}),d.jsx("div",{className:"flex items-center justify-between text-xs text-gray-600 dark:text-gray-400",children:d.jsx("span",{className:"truncate",children:W.DisplayName})})]}),d.jsx("svg",{className:"w-5 h-5 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]})},W.Id))})]}),d.jsx(Sa,{variant:"secondary",onClick:oe,children:t("common.cancel")})]}),!_&&w.length===0&&T.length>0&&d.jsxs("div",{className:"space-y-4",children:[d.jsx(Sa,{variant:"primary",onClick:Y,ref:Q,children:t("passkeys.create.createNewPasskey")}),d.jsx(Sa,{variant:"secondary",onClick:te,children:t("passkeys.useBrowserPasskey")}),d.jsxs("div",{className:"relative",children:[d.jsx("div",{className:"absolute inset-0 flex items-center",children:d.jsx("div",{className:"w-full border-t border-gray-300 dark:border-gray-600"})}),d.jsx("div",{className:"relative flex justify-center text-sm",children:d.jsx("span",{className:"px-2 bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400",children:t("common.or")})})]}),d.jsxs("div",{className:"space-y-2",children:[d.jsx("label",{className:"block text-sm font-medium text-gray-700 dark:text-gray-300",children:t("passkeys.create.selectExistingLogin")}),d.jsx("p",{className:"text-xs text-gray-500 dark:text-gray-400",children:t("passkeys.create.selectExistingLoginDescription")}),d.jsx("div",{className:"space-y-2 max-h-48 overflow-y-auto border rounded-lg p-2 bg-gray-50 dark:bg-gray-800",children:T.map(W=>d.jsx("button",{onClick:()=>fe(W.Id),className:"w-full p-3 text-left rounded-lg border cursor-pointer transition-colors bg-white border-gray-200 hover:bg-gray-100 hover:border-gray-300 dark:bg-gray-700 dark:border-gray-600 dark:hover:bg-gray-600 dark:hover:border-gray-500 focus:outline-none focus:ring-1 focus:ring-primary-500 focus:border-primary-500",children:d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsx("div",{className:"flex items-center flex-1 min-w-0",children:d.jsxs("div",{className:"flex-1 min-w-0",children:[d.jsx("div",{className:"font-medium text-gray-900 dark:text-white text-sm truncate",children:W.Name}),Zc(W,nn.LoginUsername)&&d.jsx("div",{className:"text-xs text-gray-600 dark:text-gray-400 truncate",children:Zc(W,nn.LoginUsername)})]})}),d.jsx("svg",{className:"w-5 h-5 text-gray-400 flex-shrink-0 ml-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]})},W.Id))})]}),d.jsx(Sa,{variant:"secondary",onClick:oe,children:t("common.cancel")})]}),_&&d.jsxs("div",{className:"space-y-4",children:[L&&d.jsx(kh,{variant:"warning",children:t("passkeys.create.replacingPasskey",{displayName:((F=w.find(W=>W.Id===L))==null?void 0:F.DisplayName)||""})}),x&&d.jsx(kh,{variant:"info",children:t("passkeys.create.attachingToCredential",{serviceName:((J=T.find(W=>W.Id===x))==null?void 0:J.Name)||""})}),!x&&d.jsx(Od,{id:"displayName",label:t("passkeys.create.titleLabel"),value:p,onChange:g,placeholder:t("passkeys.create.titlePlaceholder"),ref:ae}),d.jsxs("div",{className:"space-y-3",children:[d.jsx(Sa,{variant:"primary",onClick:X,children:t(L?"passkeys.create.confirmReplace":x?"passkeys.create.attachPasskey":"passkeys.create.createButton")}),w.length>0||T.length>0?d.jsx(Sa,{variant:"secondary",onClick:()=>{j(!1),R(null),O(null)},children:t("common.back")}):d.jsxs(d.Fragment,{children:[d.jsx(Sa,{variant:"secondary",onClick:te,children:t("passkeys.useBrowserPasskey")}),d.jsx(Sa,{variant:"secondary",onClick:oe,children:t("common.cancel")})]})]})]})]})]}):d.jsx("div",{className:"flex justify-center py-8",children:d.jsx(Ai,{})})},z3=()=>({matchCurrentTab:b.useCallback(async()=>{try{const[e]=await Qo.tabs.query({active:!0,currentWindow:!0});if(!(e!=null&&e.url)||!e.url.startsWith("http://")&&!e.url.startsWith("https://"))return null;let n="";try{n=new URL(e.url).hostname.replace(/^www\./,"")}catch{return null}const r=await rt.getAutofillMatchingMode(),s=await St("GET_FILTERED_ITEMS",{currentUrl:e.url,pageTitle:e.title||"",matchingMode:r},"background");return!s.success||!s.items?null:{items:s.items,currentUrl:e.url,domain:n}}catch(e){return console.error("Error matching current tab:",e),null}},[])}),Nv="session:lastVisitedPage",kv="session:lastVisitedTime",xv="session:navigationHistory",Lv="session:lastTabUrl",Q3=120*1e3,K3=()=>{const t=Pa(),{setIsInitialLoading:e}=va(),{syncVault:n}=Ff(),{matchCurrentTab:r}=z3(),s=b.useRef(!1),{isInitialized:l,isLoggedIn:c}=xi(),{dbInitialized:m,dbAvailable:p,refreshSyncState:g,hasPendingMigrations:A}=qt(),f=l&&m,v=f&&(!c||!p),w=b.useCallback(k=>k&&k.items.length===1?`/items/${k.items[0].Id}`:(k&&k.items.length>1,"/items"),[]),S=b.useCallback(async k=>{k&&k.items.length===1?(t("/items",{replace:!0}),t(`/items/${k.items[0].Id}`,{replace:!1})):k&&k.items.length>1?t(`/items?search=${encodeURIComponent(k.domain)}`,{replace:!0}):t("/items",{replace:!0})},[t]),T=b.useCallback(async()=>{const k=await r(),L=w(k),[R,x,O,_]=await Promise.all([Te.getItem(Nv),Te.getItem(kv),Te.getItem(xv),Te.getItem(Lv)]),j=k==null?void 0:k.currentUrl,G=j&&_&&j!==_;if(R&&x&&Date.now()-x<=Q3){const B=O==null?void 0:O[O.length-1],z=(B==null?void 0:B.search)&&B.search.length>0;if(!(G||R===L&&!z||R==="/items"&&!z)){if((O==null?void 0:O.length)>1){const ne=O[0],fe=ne.pathname+(ne.search||"");t(fe,{replace:!0});const X=R+((B==null?void 0:B.search)||"");t(X,{replace:!1})}else{const ne=R+((B==null?void 0:B.search)||"");t(ne,{replace:!0})}return}}await Promise.all([Te.removeItem(Nv),Te.removeItem(kv),Te.removeItem(xv),St("CLEAR_PERSISTED_FORM_VALUES",null,"background")]),j&&await Te.setItem(Lv,j),await S(k)},[t,r,w,S]);return b.useEffect(()=>{(async()=>{const R=new URLSearchParams(window.location.search).get("mode")==="inline_unlock",x=await O3();if(!f)return;const O=!s.current;if(v)e(!1),c?p||t("/unlock",{replace:!0}):t("/login",{replace:!0});else if(O){if(s.current=!0,await A()){e(!1),t("/upgrade",{replace:!0});return}e(!1),R?t("/unlock-success",{replace:!0}):x?t(x,{replace:!0}):await T(),n({onSuccess:async _=>{await g()},onUpgradeRequired:()=>{t("/upgrade",{replace:!0})},onError:_=>{console.error("Background vault sync error:",_)}})}else e(!1),T()})()},[f,v,c,p,t,e,n,T,g,A]),null},G3=()=>{const{t}=it(),{setIsInitialLoading:e}=va(),[n,r]=b.useState(!1),[s,l]=b.useState({disabledUrls:[],temporaryDisabledUrls:{},isGloballyEnabled:!0,totpAutofillEnabled:!0,autoCopyTotpOnAutofill:!0}),[c,m]=b.useState(Us.DEFAULT),[p,g]=b.useState({isEnabled:!1,blockedDomains:[]}),[A,f]=b.useState(!1),[v,w]=b.useState(!1),S=b.useCallback(async()=>{const B=await rt.getDisabledSites(),z=await rt.getTemporaryDisabledSites(),Q=await rt.getGlobalAutofillPopupEnabled(),ae=await rt.getTotpAutofillEnabled(),Y=await rt.getAutoCopyTotpOnAutofill(),ne=Date.now(),fe=Object.fromEntries(Object.entries(z).filter(([oe,F])=>F>ne));Object.keys(fe).length!==Object.keys(z).length&&await rt.setTemporaryDisabledSites(fe);const X=await rt.getAutofillMatchingMode();m(X);const te=await rt.getLoginSaveEnabled(),ce=await rt.getLoginSaveBlockedDomains();g({isEnabled:te,blockedDomains:ce}),l({disabledUrls:B,temporaryDisabledUrls:fe,isGloballyEnabled:Q,totpAutofillEnabled:ae,autoCopyTotpOnAutofill:Y}),r(!0),e(!1)},[e]);b.useEffect(()=>{S()},[S]);const T=async()=>{await rt.setDisabledSites([]),await rt.setTemporaryDisabledSites({}),l(B=>({...B,disabledUrls:[],temporaryDisabledUrls:{}}))},k=async()=>{const B=!s.isGloballyEnabled;await rt.setGlobalAutofillPopupEnabled(B),l(z=>({...z,isGloballyEnabled:B}))},L=async()=>{const B=!s.totpAutofillEnabled;await rt.setTotpAutofillEnabled(B),l(z=>({...z,totpAutofillEnabled:B}))},R=async()=>{const B=!s.autoCopyTotpOnAutofill;await rt.setAutoCopyTotpOnAutofill(B),l(z=>({...z,autoCopyTotpOnAutofill:B}))},x=async B=>{await rt.setAutofillMatchingMode(B),m(B)},O=async()=>{const B=!p.isEnabled;await rt.setLoginSaveEnabled(B),g(z=>({...z,isEnabled:B}))},_=async B=>{const z=p.blockedDomains.filter(Q=>Q!==B);await rt.setLoginSaveBlockedDomains(z),g(Q=>({...Q,blockedDomains:z}))},j=async()=>{await rt.setLoginSaveBlockedDomains([]),g(B=>({...B,blockedDomains:[]}))},G=async B=>{const z=s.disabledUrls.filter(ae=>ae!==B);await rt.setDisabledSites(z);const Q={...s.temporaryDisabledUrls};delete Q[B],await rt.setTemporaryDisabledSites(Q),l(ae=>({...ae,disabledUrls:z,temporaryDisabledUrls:Q}))},P=()=>{const B=s.disabledUrls.length,z=Object.keys(s.temporaryDisabledUrls).length;return B+z};return n?d.jsxs("div",{className:"space-y-6",children:[d.jsx(ti,{children:t("settings.autofillSettings")}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"p-4 space-y-4",children:[d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{className:"flex-1 me-4",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("settings.credentialAutofill")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-0.5",children:t("settings.credentialAutofillDescription")})]}),d.jsx("button",{onClick:k,className:`flex-shrink-0 px-3 py-1.5 text-sm rounded-md transition-colors ${s.isGloballyEnabled?"bg-green-500 hover:bg-green-600 text-white":"bg-red-500 hover:bg-red-600 text-white"}`,children:s.isGloballyEnabled?t("common.enabled"):t("common.disabled")})]}),d.jsx("div",{className:"border-t border-gray-200 dark:border-gray-700"}),d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{className:"flex-1 me-4",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("settings.totpAutofill")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-0.5",children:t("settings.totpAutofillDescription")})]}),d.jsx("button",{onClick:L,className:`flex-shrink-0 px-3 py-1.5 text-sm rounded-md transition-colors ${s.totpAutofillEnabled?"bg-green-500 hover:bg-green-600 text-white":"bg-red-500 hover:bg-red-600 text-white"}`,children:s.totpAutofillEnabled?t("common.enabled"):t("common.disabled")})]}),d.jsx("div",{className:"border-t border-gray-200 dark:border-gray-700"}),d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{className:"flex-1 me-4",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("settings.autoCopyTotpOnAutofill")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-0.5",children:t("settings.autoCopyTotpOnAutofillDescription")})]}),d.jsx("button",{onClick:R,className:`flex-shrink-0 px-3 py-1.5 text-sm rounded-md transition-colors ${s.autoCopyTotpOnAutofill?"bg-green-500 hover:bg-green-600 text-white":"bg-red-500 hover:bg-red-600 text-white"}`,children:s.autoCopyTotpOnAutofill?t("common.enabled"):t("common.disabled")})]}),P()>0&&d.jsxs(d.Fragment,{children:[d.jsx("div",{className:"border-t border-gray-200 dark:border-gray-700"}),d.jsxs("div",{children:[d.jsxs("button",{onClick:()=>f(!A),className:"flex items-center justify-between w-full text-left",children:[d.jsxs("span",{className:"font-medium text-gray-900 dark:text-white",children:[t("settings.disabledSites")," (",P(),")"]}),d.jsx("svg",{className:`w-5 h-5 text-gray-500 transition-transform ${A?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-1",children:t("settings.disabledSitesDescription")}),A&&d.jsxs("div",{className:"mt-3",children:[d.jsxs("ul",{className:"space-y-2",children:[s.disabledUrls.map(B=>d.jsxs("li",{className:"flex items-center justify-between bg-gray-50 dark:bg-gray-700 rounded-md px-3 py-2",children:[d.jsx("span",{className:"text-sm text-gray-900 dark:text-white truncate",children:B}),d.jsx("button",{onClick:()=>G(B),className:"text-sm text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 ml-2",children:t("common.remove")})]},B)),Object.entries(s.temporaryDisabledUrls).map(([B,z])=>d.jsxs("li",{className:"flex items-center justify-between bg-gray-50 dark:bg-gray-700 rounded-md px-3 py-2",children:[d.jsxs("div",{className:"truncate",children:[d.jsx("span",{className:"text-sm text-gray-900 dark:text-white",children:B}),d.jsxs("span",{className:"text-xs text-gray-500 dark:text-gray-400 ml-2",children:["(",t("settings.temporaryUntil")," ",new Date(z).toLocaleTimeString(),")"]})]}),d.jsx("button",{onClick:()=>G(B),className:"text-sm text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 ml-2",children:t("common.remove")})]},B))]}),d.jsx("button",{onClick:T,className:"w-full mt-3 px-4 py-2 bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 rounded-md text-gray-700 dark:text-gray-300 transition-colors text-sm",children:t("settings.clearAllDisabledSites")})]})]})]})]})})}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"p-4",children:[d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("settings.loginSave.title")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-1 me-2",children:t("settings.loginSave.description")})]}),d.jsx("button",{onClick:O,className:`px-4 py-2 rounded-md transition-colors ${p.isEnabled?"bg-green-500 hover:bg-green-600 text-white":"bg-red-500 hover:bg-red-600 text-white"}`,children:p.isEnabled?t("common.enabled"):t("common.disabled")})]}),p.blockedDomains.length>0&&d.jsxs("div",{className:"mt-4 pt-4 border-t border-gray-200 dark:border-gray-700",children:[d.jsxs("button",{onClick:()=>w(!v),className:"flex items-center justify-between w-full text-left",children:[d.jsxs("span",{className:"font-medium text-gray-900 dark:text-white",children:[t("settings.loginSave.blockedSites")," (",p.blockedDomains.length,")"]}),d.jsx("svg",{className:`w-5 h-5 text-gray-500 transition-transform ${v?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mt-1",children:t("settings.loginSave.blockedSitesDescription")}),v&&d.jsxs("div",{className:"mt-3",children:[d.jsx("ul",{className:"space-y-2",children:p.blockedDomains.map(B=>d.jsxs("li",{className:"flex items-center justify-between bg-gray-50 dark:bg-gray-700 rounded-md px-3 py-2",children:[d.jsx("span",{className:"text-sm text-gray-900 dark:text-white truncate",children:B}),d.jsx("button",{onClick:()=>_(B),className:"text-sm text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 ml-2",children:t("common.remove")})]},B))}),d.jsx("button",{onClick:j,className:"w-full mt-3 px-4 py-2 bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 rounded-md text-gray-700 dark:text-gray-300 transition-colors text-sm",children:t("settings.loginSave.clearAllBlockedSites")})]})]})]})})}),d.jsxs("section",{children:[d.jsx("h3",{className:"text-md font-semibold text-gray-900 dark:text-white mb-3",children:t("settings.autofillMatching")}),d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white mb-2",children:t("settings.autofillMatchingMode")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-3",children:t("settings.autofillMatchingModeDescription")}),d.jsxs("select",{value:c,onChange:B=>x(B.target.value),className:"w-full px-3 py-2 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md text-gray-900 dark:text-white focus:ring-primary-500 focus:border-primary-500",children:[d.jsx("option",{value:Us.DEFAULT,children:t("settings.autofillMatchingDefault")}),d.jsx("option",{value:Us.URL_SUBDOMAIN,children:t("settings.autofillMatchingUrlSubdomain")}),d.jsx("option",{value:Us.URL_EXACT,children:t("settings.autofillMatchingUrlExact")})]})]})})})]})]}):null},aD=({title:t,content:e,className:n=""})=>{const[r,s]=b.useState(!1);return d.jsxs(d.Fragment,{children:[d.jsx("button",{onClick:()=>s(!0),className:`${n}`,type:"button","aria-label":"Help",children:d.jsx("svg",{className:"w-4 h-4 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 cursor-help",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),d.jsx(ai,{isOpen:r,onClose:()=>s(!1),title:t,children:d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-300",children:e})})]})},W3=()=>{const{t}=it(),{setIsInitialLoading:e}=va(),[n,r]=b.useState(0);b.useEffect(()=>{(async()=>{const c=await rt.getAutoLockTimeout();r(c),e(!1)})()},[e]);const s=async l=>{await rt.setAutoLockTimeout(l),await St("SET_AUTO_LOCK_TIMEOUT",l,"background"),r(l)};return d.jsxs("div",{className:"space-y-6",children:[d.jsx(ti,{children:t("settings.autoLockTimeout")}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{children:[d.jsxs("div",{className:"flex items-center mb-2",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("settings.autoLockTimeout")}),d.jsx(aD,{title:t("settings.autoLockTimeout"),content:t("settings.autoLockTimeoutHelp"),className:"ml-2"})]}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-3",children:t("settings.autoLockTimeoutDescription")}),d.jsxs("select",{value:n,onChange:l=>s(Number(l.target.value)),className:"w-full px-3 py-2 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md text-gray-900 dark:text-white focus:ring-primary-500 focus:border-primary-500",children:[d.jsx("option",{value:"0",children:t("settings.autoLockNever")}),d.jsx("option",{value:"15",children:t("settings.autoLock15Seconds")}),d.jsx("option",{value:"30",children:t("settings.autoLock30Seconds")}),d.jsx("option",{value:"60",children:t("settings.autoLock1Minute")}),d.jsx("option",{value:"300",children:t("settings.autoLock5Minutes")}),d.jsx("option",{value:"900",children:t("settings.autoLock15Minutes")}),d.jsx("option",{value:"1800",children:t("settings.autoLock30Minutes")}),d.jsx("option",{value:"3600",children:t("settings.autoLock1Hour")}),d.jsx("option",{value:"14400",children:t("settings.autoLock4Hours")}),d.jsx("option",{value:"28800",children:t("settings.autoLock8Hours")}),d.jsx("option",{value:"86400",children:t("settings.autoLock24Hours")})]})]})})})})]})},q3=()=>{const{t}=it(),{setIsInitialLoading:e}=va(),[n,r]=b.useState(10);b.useEffect(()=>{(async()=>{const c=await rt.getClipboardClearTimeout();r(c),e(!1)})()},[e]);const s=async l=>{await rt.setClipboardClearTimeout(l),await St("SET_CLIPBOARD_CLEAR_TIMEOUT",l,"background"),r(l)};return d.jsxs("div",{className:"space-y-6",children:[d.jsx(ti,{children:t("settings.clipboardSettings")}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white mb-2",children:t("settings.clipboardClearTimeout")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-3",children:t("settings.clipboardClearTimeoutDescription")}),d.jsxs("select",{value:n,onChange:l=>s(Number(l.target.value)),className:"w-full px-3 py-2 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md text-gray-900 dark:text-white focus:ring-primary-500 focus:border-primary-500",children:[d.jsx("option",{value:"0",children:t("settings.clipboardClearDisabled")}),d.jsx("option",{value:"5",children:t("settings.clipboardClear5Seconds")}),d.jsx("option",{value:"10",children:t("settings.clipboardClear10Seconds")}),d.jsx("option",{value:"15",children:t("settings.clipboardClear15Seconds")})]})]})})})})]})},Y3=()=>{const{t}=it(),{setIsInitialLoading:e}=va(),[n,r]=b.useState(!0),s=b.useCallback(async()=>{const c=await rt.getGlobalContextMenuEnabled();r(c),e(!1)},[e]);b.useEffect(()=>{s()},[s]);const l=async()=>{const c=!n;await rt.setGlobalContextMenuEnabled(c),await St("TOGGLE_CONTEXT_MENU",{enabled:c},"background"),r(c)};return d.jsxs("div",{className:"space-y-6",children:[d.jsx(ti,{children:t("settings.contextMenuSettings")}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("settings.rightClickContextMenu")}),d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400 mt-2 pe-2",children:t("settings.contextMenuDescription")})]}),d.jsx("button",{onClick:l,className:`px-4 py-2 rounded-md transition-colors ${n?"bg-green-500 hover:bg-green-600 text-white":"bg-red-500 hover:bg-red-600 text-white"}`,children:t(n?"common.enabled":"common.disabled")})]})})})})]})},J3=()=>{const{t}=it(),{setIsInitialLoading:e}=va(),n=qt(),{executeVaultMutationAsync:r}=Hs(),[s,l]=b.useState("en"),[c,m]=b.useState("random"),[p,g]=b.useState("random"),[A,f]=b.useState([]),[v,w]=b.useState([]),S=[{label:t("settings.identityGeneratorSettings.genderOptions.random"),value:"random"},{label:t("settings.identityGeneratorSettings.genderOptions.male"),value:"male"},{label:t("settings.identityGeneratorSettings.genderOptions.female"),value:"female"}];b.useEffect(()=>{const R=U9(),x=D9();if(f(R),w(x),n!=null&&n.sqliteClient){const O=n.sqliteClient.settings.getEffectiveIdentityLanguage(),_=n.sqliteClient.settings.getDefaultIdentityGender(),j=n.sqliteClient.settings.getDefaultIdentityAgeRange();l(O),m(_),g(j)}e(!1)},[n==null?void 0:n.sqliteClient,e]);const T=b.useCallback(async R=>{l(R),n!=null&&n.sqliteClient&&await r(async()=>{n.sqliteClient.settings.updateSetting("DefaultIdentityLanguage",R)})},[n==null?void 0:n.sqliteClient,r]),k=b.useCallback(async R=>{m(R),n!=null&&n.sqliteClient&&await r(async()=>{n.sqliteClient.settings.updateSetting("DefaultIdentityGender",R)})},[n==null?void 0:n.sqliteClient,r]),L=b.useCallback(async R=>{g(R),n!=null&&n.sqliteClient&&await r(async()=>{n.sqliteClient.settings.updateSetting("DefaultIdentityAgeRange",R)})},[n==null?void 0:n.sqliteClient,r]);return d.jsxs("div",{className:"space-y-6",children:[d.jsx(ti,{children:t("settings.identityGenerator")}),d.jsxs("section",{children:[d.jsx("h3",{className:"text-md font-semibold text-gray-900 dark:text-white mb-3",children:t("settings.identityGeneratorSettings.languageSection")}),d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"p-4",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white mb-2",children:t("settings.identityGeneratorSettings.languageSection")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-3",children:t("settings.identityGeneratorSettings.languageDescription")}),d.jsx("select",{value:s,onChange:R=>T(R.target.value),className:"w-full px-3 py-2 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md text-gray-900 dark:text-white focus:ring-primary-500 focus:border-primary-500",children:A.map(R=>d.jsxs("option",{value:R.value,children:[R.flag," ",R.label]},R.value))})]})})]}),d.jsxs("section",{children:[d.jsx("h3",{className:"text-md font-semibold text-gray-900 dark:text-white mb-3",children:t("settings.identityGeneratorSettings.genderSection")}),d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"p-4",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white mb-2",children:t("settings.identityGeneratorSettings.genderSection")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-3",children:t("settings.identityGeneratorSettings.genderDescription")}),d.jsx("select",{value:c,onChange:R=>k(R.target.value),className:"w-full px-3 py-2 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md text-gray-900 dark:text-white focus:ring-primary-500 focus:border-primary-500",children:S.map(R=>d.jsx("option",{value:R.value,children:R.label},R.value))})]})})]}),d.jsxs("section",{children:[d.jsx("h3",{className:"text-md font-semibold text-gray-900 dark:text-white mb-3",children:t("settings.identityGeneratorSettings.ageRangeSection")}),d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"p-4",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white mb-2",children:t("settings.identityGeneratorSettings.ageRangeSection")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-3",children:t("settings.identityGeneratorSettings.ageRangeDescription")}),d.jsx("select",{value:p,onChange:R=>L(R.target.value),className:"w-full px-3 py-2 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md text-gray-900 dark:text-white focus:ring-primary-500 focus:border-primary-500",children:v.map(R=>d.jsx("option",{value:R.value,children:R.value==="random"?t("settings.identityGeneratorSettings.genderOptions.random"):R.label},R.value))})]})})]})]})},X3=()=>{const{t}=it(),{setIsInitialLoading:e}=va();return b.useEffect(()=>{e(!1)},[e]),d.jsxs("div",{className:"space-y-6",children:[d.jsx(ti,{children:t("settings.language")}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white mb-3",children:t("settings.selectLanguage")}),d.jsx(tk,{variant:"dropdown",size:"sm"})]})})})})]})},$3=()=>{const{t}=it(),{setIsInitialLoading:e}=va(),[n,r]=b.useState({disabledUrls:[],currentUrl:"",isEnabled:!0,isGloballyEnabled:!0}),s=async()=>{const g={active:!0,currentWindow:!0},[A]=await Qo.tabs.query(g);return A},l=b.useCallback(async()=>{const A=(await s()).url??"",f=await Cf(A),v=await rt.getPasskeyDisabledSites(),w=await rt.getPasskeyProviderEnabled(),S=!v.includes(f);r({disabledUrls:v,currentUrl:f,isEnabled:S,isGloballyEnabled:w}),e(!1)},[e]);b.useEffect(()=>{l()},[l]);const c=async()=>{const{currentUrl:g,disabledUrls:A,isEnabled:f}=n;let v=[...A];f?v.includes(g)||v.push(g):v=v.filter(w=>w!==g),await rt.setPasskeyDisabledSites(v),r(w=>({...w,disabledUrls:v,isEnabled:!f}))},m=async()=>{await rt.setPasskeyDisabledSites([]),r(g=>({...g,disabledUrls:[],isEnabled:!0}))},p=async()=>{const g=!n.isGloballyEnabled;await rt.setPasskeyProviderEnabled(g),r(A=>({...A,isGloballyEnabled:g}))};return d.jsxs("div",{className:"space-y-6",children:[d.jsx(ti,{children:t("settings.passkeySettings")}),d.jsxs("section",{children:[d.jsx("h3",{className:"text-md font-semibold text-gray-900 dark:text-white mb-3",children:t("settings.globalSettings")}),d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("passkeys.settings.passkeyProvider")}),d.jsx("p",{className:`text-sm mt-1 ${n.isGloballyEnabled?"text-gray-600 dark:text-gray-400":"text-red-600 dark:text-red-400"}`,children:n.isGloballyEnabled?t("settings.activeOnAllSites"):t("settings.disabledOnAllSites")})]}),d.jsx("button",{onClick:p,className:`px-4 py-2 rounded-md transition-colors ${n.isGloballyEnabled?"bg-green-500 hover:bg-green-600 text-white":"bg-red-500 hover:bg-red-600 text-white"}`,children:n.isGloballyEnabled?t("common.enabled"):t("common.disabled")})]})})})]}),n.isGloballyEnabled&&d.jsxs("section",{children:[d.jsx("h3",{className:"text-md font-semibold text-gray-900 dark:text-white mb-3",children:t("settings.siteSpecificSettings")}),d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"p-4",children:[d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{children:[d.jsxs("p",{className:"font-medium text-gray-900 dark:text-white",children:[t("passkeys.settings.passkeyProviderOn"),n.currentUrl]}),d.jsx("p",{className:`text-sm mt-1 ${n.isEnabled?"text-gray-600 dark:text-gray-400":"text-red-600 dark:text-red-400"}`,children:n.isEnabled?t("settings.enabledForThisSite"):t("settings.disabledForThisSite")})]}),n.isGloballyEnabled&&d.jsx("button",{onClick:c,className:`px-4 py-2 ml-1 rounded-md transition-colors ${n.isEnabled?"bg-green-500 hover:bg-green-600 text-white":"bg-red-500 hover:bg-red-600 text-white"}`,children:n.isEnabled?t("common.enabled"):t("common.disabled")})]}),d.jsx("div",{className:"mt-4",children:d.jsx("button",{onClick:m,className:"w-full px-4 py-2 bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 rounded-md text-gray-700 dark:text-gray-300 transition-colors text-sm",children:t("settings.resetAllSiteSettings")})})]})})]})]})},Dv="local:theme",nD=b.createContext(void 0),Z3=({children:t})=>{const[e,n]=b.useState("system"),[r,s]=b.useState(!1);b.useEffect(()=>{(async()=>{const A=await c();n(A)})()},[]);const l=b.useCallback(g=>{n(g),m(g)},[]),c=async()=>await Te.getItem(Dv)||"system",m=async g=>{await Te.setItem(Dv,g)};b.useEffect(()=>{const g=()=>{if(e==="system"){const A=window.matchMedia("(prefers-color-scheme: dark)").matches;s(A),document.documentElement.classList.toggle("dark",A)}else{const A=e==="dark";s(A),document.documentElement.classList.toggle("dark",A)}};if(g(),e==="system"){const A=window.matchMedia("(prefers-color-scheme: dark)"),f=()=>g();return A.addEventListener("change",f),()=>A.removeEventListener("change",f)}},[e]);const p=b.useMemo(()=>({theme:e,setTheme:l,isDarkMode:r}),[e,r,l]);return d.jsx(nD.Provider,{value:p,children:t})},eH=()=>{const t=b.useContext(nD);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},tH=()=>{var Q,ae;const{t}=it(),{theme:e,setTheme:n}=eH(),r=xi(),s=Md(),l=Gi(),{setHeaderButtons:c}=Ei(),{setIsInitialLoading:m}=va(),{loadApiUrl:p,getDisplayUrl:g}=lk(),A=Pa(),[f,v]=b.useState(!1),w=async()=>{const Y=await Te.getItem("local:clientUrl");let ne=mn.DEFAULT_CLIENT_URL;Y&&Y.length>0&&(ne=Y),window.open(ne,"_blank")};b.useEffect(()=>{const Y=d.jsxs("div",{className:"flex items-center gap-2",children:[!Fa.isPopup()&&d.jsx(d.Fragment,{children:d.jsx(Pn,{onClick:()=>Fa.openInNewPopup(),title:t("common.openInNewWindow"),iconType:Ya.EXPAND})}),d.jsx(Pn,{onClick:w,title:t("settings.openWebApp"),iconType:Ya.EXTERNAL_LINK})]});return c(Y),()=>c(null)},[c,t]);const S=b.useCallback(async()=>{await p(),m(!1)},[m,p]);b.useEffect(()=>{S()},[S]);const T=async Y=>{n(Y)},k=()=>{v(!0)},L=async()=>{v(!1);try{await l.revokeTokens(),await s.clearAuthUserInitiated()}catch(Y){console.error("Error during logout:",Y)}},R=async()=>{await St("LOCK_VAULT",{},"background"),A("/unlock")},x=()=>{A("/settings/autofill")},O=()=>{A("/settings/clipboard")},_=()=>{A("/settings/language")},j=()=>{A("/settings/auto-lock")},G=()=>{A("/settings/unlock-method")},P=()=>{A("/settings/context-menu")},B=()=>{A("/settings/passkeys")},z=()=>{A("/settings/identity-generator")};return d.jsxs(d.Fragment,{children:[d.jsx(_f,{isOpen:f,onClose:()=>v(!1),onConfirm:L}),d.jsxs("div",{className:"space-y-6",children:[d.jsx("div",{className:"flex justify-between items-center mb-4",children:d.jsx(ti,{children:t("common.settings")})}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{className:"flex items-center space-x-3",children:[d.jsx("div",{className:"flex-shrink-0",children:d.jsx("div",{className:"w-10 h-10 rounded-full bg-primary-100 dark:bg-primary-900 flex items-center justify-center",children:d.jsx("span",{className:"text-primary-600 dark:text-primary-400 text-lg font-medium",children:((ae=(Q=r.username)==null?void 0:Q[0])==null?void 0:ae.toUpperCase())||"?"})})}),d.jsxs("div",{children:[d.jsx("p",{className:"text font-medium text-gray-900 dark:text-white",children:r.username}),d.jsx("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:t("common.loggedIn")})]})]}),d.jsxs("div",{className:"flex gap-2",children:[d.jsx("button",{onClick:R,title:t("settings.lock"),className:"p-2 bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-600 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300 rounded-md transition-colors",children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24","aria-label":t("settings.lock"),children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})})}),d.jsx("button",{onClick:k,title:t("common.logout"),className:"p-2 bg-red-100 hover:bg-red-200 dark:bg-red-900/30 dark:hover:bg-red-900/50 text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 rounded-md transition-colors",children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24","aria-label":t("common.logout"),children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"})})})]})]})})})}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"divide-y divide-gray-200 dark:divide-gray-700",children:[d.jsxs("button",{onClick:x,className:"w-full px-4 py-3 flex items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-3 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})}),d.jsx("span",{className:"text-gray-900 dark:text-white text-left",children:t("settings.autofillSettings")})]}),d.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}),d.jsxs("button",{onClick:B,className:"w-full px-4 py-3 flex items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-3 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"})}),d.jsx("span",{className:"text-gray-900 dark:text-white text-left",children:t("settings.passkeySettings")})]}),d.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}),d.jsxs("button",{onClick:G,className:"w-full px-4 py-3 flex items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-3 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7 20l4-16m2 16l4-16M6 9h14M4 15h14"})}),d.jsx("span",{className:"text-gray-900 dark:text-white text-left",children:t("settings.unlockMethod.title")})]}),d.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}),d.jsxs("button",{onClick:j,className:"w-full px-4 py-3 flex items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-3 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})}),d.jsx("span",{className:"text-gray-900 dark:text-white text-left",children:t("settings.autoLockTimeout")})]}),d.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}),d.jsxs("button",{onClick:O,className:"w-full px-4 py-3 flex items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-3 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2"})}),d.jsx("span",{className:"text-gray-900 dark:text-white text-left",children:t("settings.clipboardSettings")})]}),d.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}),d.jsxs("button",{onClick:_,className:"w-full px-4 py-3 flex items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-3 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129"})}),d.jsx("span",{className:"text-gray-900 dark:text-white text-left",children:t("settings.language")})]}),d.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]})]})})}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsxs("div",{className:"divide-y divide-gray-200 dark:divide-gray-700",children:[d.jsxs("button",{onClick:z,className:"w-full px-4 py-3 flex items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-3 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"})}),d.jsx("span",{className:"text-gray-900 dark:text-white text-left",children:t("settings.identityGenerator")})]}),d.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]}),d.jsxs("button",{onClick:P,className:"w-full px-4 py-3 flex items-center justify-between hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-3 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 6h16M4 12h16m-7 6h7"})}),d.jsx("span",{className:"text-gray-900 dark:text-white text-left",children:t("settings.contextMenuSettings")})]}),d.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",strokeWidth:2,viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})})]})]})})}),d.jsxs("section",{children:[d.jsx("h3",{className:"text-md font-semibold text-gray-900 dark:text-white mb-3",children:t("settings.appearance")}),d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white mb-2",children:t("settings.theme")}),d.jsxs("div",{className:"flex flex-col space-y-2",children:[d.jsxs("label",{className:"flex items-center",children:[d.jsx("input",{type:"radio",name:"theme",value:"system",checked:e==="system",onChange:()=>T("system"),className:"mr-2"}),d.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:t("settings.useDefault")})]}),d.jsxs("label",{className:"flex items-center",children:[d.jsx("input",{type:"radio",name:"theme",value:"light",checked:e==="light",onChange:()=>T("light"),className:"mr-2"}),d.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:t("settings.light")})]}),d.jsxs("label",{className:"flex items-center",children:[d.jsx("input",{type:"radio",name:"theme",value:"dark",checked:e==="dark",onChange:()=>T("dark"),className:"mr-2"}),d.jsx("span",{className:"text-sm text-gray-700 dark:text-gray-300",children:t("settings.dark")})]})]})]})})})]}),!1,d.jsxs("div",{className:"text-center text-gray-400 dark:text-gray-600",children:[t("settings.versionPrefix"),mn.VERSION," (",g(),")"]})]})]})},aH=()=>{const{t}=it(),e=qt(),{setIsInitialLoading:n,showLoading:r,hideLoading:s}=va(),[l,c]=b.useState(void 0),[m,p]=b.useState(null),[g,A]=b.useState(null),[f,v]=b.useState(!1),[w,S]=b.useState(1),[T,k]=b.useState(""),[L,R]=b.useState(""),[x,O]=b.useState(!1),_=b.useCallback(async()=>{try{const[z,Q]=await Promise.all([MN(),FN()]);c(z),O(Q),n(!1)}catch(z){console.error("Failed to load PIN settings:",z),p(t("common.errors.unknownErrorTryAgain")),n(!1)}},[n,t]);b.useEffect(()=>{_()},[_]);const j=()=>{if(p(null),A(null),!e.dbAvailable){p(t("common.errors.unknownErrorTryAgain"));return}S(1),k(""),R(""),v(!0)},G=z=>{if(z.preventDefault(),p(null),!xf(T)){p(t("settings.unlockMethod.invalidPinFormat"));return}S(2)},P=async z=>{if(z.preventDefault(),p(null),A(null),T!==L){p(t("settings.unlockMethod.pinMismatch"));return}try{r();const ae=await Te.getItem("session:encryptionKey");if(!ae){p(t("common.errors.unknownErrorTryAgain")),s();return}await L_(T,ae),c(!0),v(!1),S(1),k(""),R(""),A(t("settings.unlockMethod.enableSuccess")),s()}catch(Q){console.error("Failed to enable PIN:",Q),Q instanceof Sd?p(t("settings.unlockMethod.invalidPinFormat")):p(t("common.errors.unknownErrorTryAgain")),s()}},B=async()=>{p(null),A(null);try{r(),await Lf(),c(!1),O(!1),s()}catch(z){console.error("Failed to disable PIN:",z),p(t("common.errors.unknownErrorTryAgain")),s()}};return d.jsxs(d.Fragment,{children:[d.jsx(ti,{children:t("settings.unlockMethod.title")}),d.jsx("div",{className:"flex items-start gap-2",children:d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400",children:t("settings.unlockMethod.introText")})}),d.jsxs("div",{className:"mt-6",children:[m&&d.jsx(Rs,{type:"error",message:m,className:"mb-4"}),g&&d.jsx(Rs,{type:"success",message:g,className:"mb-4"}),x&&d.jsx(Rs,{type:"warning",message:t("settings.unlockMethod.pinLocked"),className:"mb-4"}),d.jsx("section",{children:d.jsx("div",{className:"bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-2 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 20l4-16m2 16l4-16M6 9h14M4 15h14"})}),d.jsxs("div",{children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("settings.unlockMethod.pin")}),d.jsx(aD,{title:t("common.notice"),content:t("settings.unlockMethod.pinSecurityWarning"),className:"ml-2"})]}),d.jsx("p",{className:"text-sm mt-1 text-gray-600 dark:text-gray-400",children:t("settings.unlockMethod.pinDescription")})]})]}),l!==void 0&&d.jsx("button",{onClick:l&&!x?B:j,className:`px-4 py-2 rounded-md transition-colors ${l&&!x?"bg-green-500 hover:bg-green-600 text-white":"bg-red-500 hover:bg-red-600 text-white"}`,children:t(l&&!x?"common.enabled":"common.disabled")})]})})})}),d.jsx("section",{className:"mt-4",children:d.jsx("div",{className:"bg-gray-50 dark:bg-gray-700/30 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700",children:d.jsx("div",{className:"p-4",children:d.jsxs("div",{className:"flex items-center justify-between",children:[d.jsxs("div",{className:"flex items-center",children:[d.jsx("svg",{className:"w-5 h-5 mr-2 text-gray-600 dark:text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})}),d.jsx("div",{children:d.jsx("p",{className:"font-medium text-gray-900 dark:text-white",children:t("settings.unlockMethod.password")})})]}),d.jsx("div",{className:"px-4 py-2 rounded-md bg-green-500 text-white hover:bg-green-600 cursor-not-allowed",children:t("common.enabled")})]})})})}),f&&d.jsx("div",{className:"fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",children:d.jsxs("div",{className:"bg-white dark:bg-gray-800 rounded-lg p-6 max-w-md w-full mx-4 relative",children:[d.jsx("button",{type:"button",onClick:()=>{v(!1),S(1),k(""),R(""),p(null)},className:"absolute top-4 right-4 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300 transition-colors","aria-label":"Cancel",children:d.jsx("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:d.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),w===1&&d.jsxs(d.Fragment,{children:[d.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white mb-4 pr-8",children:t("settings.unlockMethod.setupPin")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-4",children:t("settings.unlockMethod.enterNewPinDescription")}),d.jsxs("form",{onSubmit:G,children:[d.jsx("div",{className:"mb-4",children:d.jsx("input",{type:"password",inputMode:"numeric",pattern:"[0-9]*",maxLength:8,value:T,onChange:z=>k(z.target.value.replace(/\D/g,"")),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white text-center text-2xl tracking-widest",autoFocus:!0})}),m&&d.jsx(Rs,{type:"error",message:m,className:"mb-4"}),d.jsx(Sa,{type:"submit",children:t("common.next")})]})]}),w===2&&d.jsxs(d.Fragment,{children:[d.jsx("h3",{className:"text-lg font-semibold text-gray-900 dark:text-white mb-4 pr-8",children:t("settings.unlockMethod.confirmPin")}),d.jsx("p",{className:"text-sm text-gray-600 dark:text-gray-400 mb-4",children:t("settings.unlockMethod.confirmPinDescription")}),d.jsxs("form",{onSubmit:P,children:[d.jsx("div",{className:"mb-4",children:d.jsx("input",{type:"password",inputMode:"numeric",pattern:"[0-9]*",maxLength:8,value:L,onChange:z=>R(z.target.value.replace(/\D/g,"")),className:"w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-700 text-gray-900 dark:text-white text-center text-2xl tracking-widest",autoFocus:!0})}),m&&d.jsx(Rs,{type:"error",message:m,className:"mb-4"}),d.jsx(Sa,{type:"submit",children:t("common.confirm")})]})]})]})})]})]})},nH=({routes:t,isLoading:e,message:n,headerButtons:r})=>{const s=Ba(),l=t.find(g=>{const A=g.path.replace(/:\w+/g,"[^/]+");return new RegExp(`^${A}$`).test(s.pathname)}),c=(l==null?void 0:l.layout)??"default",m=e&&d.jsx("div",{className:"fixed inset-0 bg-white dark:bg-gray-900 z-50 flex items-center justify-center",children:d.jsx(Ai,{})}),p=d.jsx(hw,{children:t.map(g=>d.jsx(ff,{path:g.path,element:g.element},g.path))});switch(c){case"passkey":return d.jsxs(z_,{children:[m,n&&d.jsx("p",{className:"mb-4 text-red-500 dark:text-red-400 text-sm",children:n}),p]});case"auth":return d.jsxs("div",{className:"min-h-screen min-w-[350px] bg-white dark:bg-gray-900 flex flex-col max-h-[600px]",children:[m,d.jsx(QN,{routes:t,rightButtons:r}),d.jsxs("main",{className:"flex-1 overflow-y-auto bg-gray-100 dark:bg-gray-900",style:{paddingTop:"64px",height:"100%"},children:[n&&d.jsx("div",{className:"px-4 pt-0",children:d.jsx("p",{className:"text-red-500 dark:text-red-400 text-sm",children:n})}),p]})]});case"default":default:return d.jsxs(d.Fragment,{children:[m,d.jsx(V_,{routes:t,headerButtons:r,message:n,children:p})]})}},iH=()=>{const{t}=it(),e=xi(),{isInitialLoading:n}=va(),[r,s]=_d(!0,150),[l,c]=b.useState(null),{headerButtons:m}=Ei(),p=qa.useMemo(()=>[{path:"/",element:d.jsx(BB,{}),showBackButton:!1},{path:"/reinitialize",element:d.jsx(K3,{}),showBackButton:!1},{path:"/login",element:d.jsx(sB,{}),showBackButton:!1,layout:"auth"},{path:"/unlock",element:d.jsx(oB,{}),showBackButton:!1,layout:"auth"},{path:"/unlock-success",element:d.jsx(lB,{}),showBackButton:!1},{path:"/upgrade",element:d.jsx(dB,{}),showBackButton:!1},{path:"/auth-settings",element:d.jsx(RF,{}),showBackButton:!0,title:t("common.settings")},{path:"/items",element:d.jsx(Sv,{}),showBackButton:!1},{path:"/items/folder/:folderId",element:d.jsx(Sv,{}),showBackButton:!0},{path:"/items/select-type",element:d.jsx(F3,{}),showBackButton:!0,title:t("itemTypes.selectType")},{path:"/items/add",element:d.jsx(bv,{}),showBackButton:!0},{path:"/items/deleted",element:d.jsx(P3,{}),showBackButton:!0,title:t("recentlyDeleted.title")},{path:"/items/:id/edit",element:d.jsx(bv,{}),showBackButton:!0},{path:"/items/:id",element:d.jsx(x3,{}),showBackButton:!0},{path:"/passkeys/create",element:d.jsx(V3,{}),layout:"passkey"},{path:"/passkeys/authenticate",element:d.jsx(H3,{}),layout:"passkey"},{path:"/emails",element:d.jsx(FB,{}),showBackButton:!1},{path:"/emails/:id",element:d.jsx(_B,{}),showBackButton:!0,title:t("emails.title")},{path:"/settings",element:d.jsx(tH,{}),showBackButton:!1},{path:"/settings/unlock-method",element:d.jsx(aH,{}),showBackButton:!0,title:t("common.settings")},{path:"/settings/autofill",element:d.jsx(G3,{}),showBackButton:!0,title:t("common.settings")},{path:"/settings/context-menu",element:d.jsx(Y3,{}),showBackButton:!0,title:t("common.settings")},{path:"/settings/clipboard",element:d.jsx(q3,{}),showBackButton:!0,title:t("common.settings")},{path:"/settings/language",element:d.jsx(X3,{}),showBackButton:!0,title:t("common.settings")},{path:"/settings/auto-lock",element:d.jsx(W3,{}),showBackButton:!0,title:t("common.settings")},{path:"/settings/passkeys",element:d.jsx($3,{}),showBackButton:!0,title:t("common.settings")},{path:"/settings/identity-generator",element:d.jsx(J3,{}),showBackButton:!0,title:t("common.settings")}],[t]);return b.useEffect(()=>{n||s(!1)},[n,s]),b.useEffect(()=>{St("POPUP_HEARTBEAT",{},"background").catch(()=>{});const g=setInterval(()=>{St("POPUP_HEARTBEAT",{},"background").catch(()=>{})},5e3);return()=>{clearInterval(g)}},[]),b.useEffect(()=>{window.location.hash&&window.location.hash!=="#/"&&window.location.hash!=="#"||j3()},[]),b.useEffect(()=>{e.globalMessage?c(e.globalMessage):c(null)},[e,e.globalMessage]),d.jsx(NU,{children:d.jsx(Y_,{children:d.jsx(nH,{routes:p,isLoading:r,message:l,headerButtons:m})})})},vt=t=>typeof t=="string",rd=()=>{let t,e;const n=new Promise((r,s)=>{t=r,e=s});return n.resolve=t,n.reject=e,n},Rv=t=>t==null?"":""+t,rH=(t,e,n)=>{t.forEach(r=>{e[r]&&(n[r]=e[r])})},sH=/###/g,Uv=t=>t&&t.indexOf("###")>-1?t.replace(sH,"."):t,Mv=t=>!t||vt(t),vd=(t,e,n)=>{const r=vt(e)?e.split("."):e;let s=0;for(;s<r.length-1;){if(Mv(t))return{};const l=Uv(r[s]);!t[l]&&n&&(t[l]=new n),Object.prototype.hasOwnProperty.call(t,l)?t=t[l]:t={},++s}return Mv(t)?{}:{obj:t,k:Uv(r[s])}},_v=(t,e,n)=>{const{obj:r,k:s}=vd(t,e,Object);if(r!==void 0||e.length===1){r[s]=n;return}let l=e[e.length-1],c=e.slice(0,e.length-1),m=vd(t,c,Object);for(;m.obj===void 0&&c.length;)l=`${c[c.length-1]}.${l}`,c=c.slice(0,c.length-1),m=vd(t,c,Object),m!=null&&m.obj&&typeof m.obj[`${m.k}.${l}`]<"u"&&(m.obj=void 0);m.obj[`${m.k}.${l}`]=n},oH=(t,e,n,r)=>{const{obj:s,k:l}=vd(t,e,Object);s[l]=s[l]||[],s[l].push(n)},Qu=(t,e)=>{const{obj:n,k:r}=vd(t,e);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},lH=(t,e,n)=>{const r=Qu(t,n);return r!==void 0?r:Qu(e,n)},iD=(t,e,n)=>{for(const r in e)r!=="__proto__"&&r!=="constructor"&&(r in t?vt(t[r])||t[r]instanceof String||vt(e[r])||e[r]instanceof String?n&&(t[r]=e[r]):iD(t[r],e[r],n):t[r]=e[r]);return t},No=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var dH={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};const cH=t=>vt(t)?t.replace(/[&<>"'\/]/g,e=>dH[e]):t;class uH{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const n=this.regExpMap.get(e);if(n!==void 0)return n;const r=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,r),this.regExpQueue.push(e),r}}const mH=[" ",",","?","!",";"],gH=new uH(20),pH=(t,e,n)=>{e=e||"",n=n||"";const r=mH.filter(c=>e.indexOf(c)<0&&n.indexOf(c)<0);if(r.length===0)return!0;const s=gH.getRegExp(`(${r.map(c=>c==="?"?"\\?":c).join("|")})`);let l=!s.test(t);if(!l){const c=t.indexOf(n);c>0&&!s.test(t.substring(0,c))&&(l=!0)}return l},df=(t,e,n=".")=>{if(!t)return;if(t[e])return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;const r=e.split(n);let s=t;for(let l=0;l<r.length;){if(!s||typeof s!="object")return;let c,m="";for(let p=l;p<r.length;++p)if(p!==l&&(m+=n),m+=r[p],c=s[m],c!==void 0){if(["string","number","boolean"].indexOf(typeof c)>-1&&p<r.length-1)continue;l+=p-l+1;break}s=c}return s},Ld=t=>t==null?void 0:t.replace("_","-"),hH={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,e){var n,r;(r=(n=console==null?void 0:console[t])==null?void 0:n.apply)==null||r.call(n,console,e)}};class Ku{constructor(e,n={}){this.init(e,n)}init(e,n={}){this.prefix=n.prefix||"i18next:",this.logger=e||hH,this.options=n,this.debug=n.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,n,r,s){return s&&!this.debug?null:(vt(e[0])&&(e[0]=`${r}${this.prefix} ${e[0]}`),this.logger[n](e))}create(e){return new Ku(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new Ku(this.logger,e)}}var zi=new Ku;class sm{constructor(){this.observers={}}on(e,n){return e.split(" ").forEach(r=>{this.observers[r]||(this.observers[r]=new Map);const s=this.observers[r].get(n)||0;this.observers[r].set(n,s+1)}),this}off(e,n){if(this.observers[e]){if(!n){delete this.observers[e];return}this.observers[e].delete(n)}}emit(e,...n){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([s,l])=>{for(let c=0;c<l;c++)s(...n)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([s,l])=>{for(let c=0;c<l;c++)s.apply(s,[e,...n])})}}class Fv extends sm{constructor(e,n={ns:["translation"],defaultNS:"translation"}){super(),this.data=e||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}removeNamespaces(e){const n=this.options.ns.indexOf(e);n>-1&&this.options.ns.splice(n,1)}getResource(e,n,r,s={}){var g,A;const l=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,c=s.ignoreJSONStructure!==void 0?s.ignoreJSONStructure:this.options.ignoreJSONStructure;let m;e.indexOf(".")>-1?m=e.split("."):(m=[e,n],r&&(Array.isArray(r)?m.push(...r):vt(r)&&l?m.push(...r.split(l)):m.push(r)));const p=Qu(this.data,m);return!p&&!n&&!r&&e.indexOf(".")>-1&&(e=m[0],n=m[1],r=m.slice(2).join(".")),p||!c||!vt(r)?p:df((A=(g=this.data)==null?void 0:g[e])==null?void 0:A[n],r,l)}addResource(e,n,r,s,l={silent:!1}){const c=l.keySeparator!==void 0?l.keySeparator:this.options.keySeparator;let m=[e,n];r&&(m=m.concat(c?r.split(c):r)),e.indexOf(".")>-1&&(m=e.split("."),s=n,n=m[1]),this.addNamespaces(n),_v(this.data,m,s),l.silent||this.emit("added",e,n,r,s)}addResources(e,n,r,s={silent:!1}){for(const l in r)(vt(r[l])||Array.isArray(r[l]))&&this.addResource(e,n,l,r[l],{silent:!0});s.silent||this.emit("added",e,n,r)}addResourceBundle(e,n,r,s,l,c={silent:!1,skipCopy:!1}){let m=[e,n];e.indexOf(".")>-1&&(m=e.split("."),s=r,r=n,n=m[1]),this.addNamespaces(n);let p=Qu(this.data,m)||{};c.skipCopy||(r=JSON.parse(JSON.stringify(r))),s?iD(p,r,l):p={...p,...r},_v(this.data,m,p),c.silent||this.emit("added",e,n,r)}removeResourceBundle(e,n){this.hasResourceBundle(e,n)&&delete this.data[e][n],this.removeNamespaces(n),this.emit("removed",e,n)}hasResourceBundle(e,n){return this.getResource(e,n)!==void 0}getResourceBundle(e,n){return n||(n=this.options.defaultNS),this.getResource(e,n)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const n=this.getDataByLanguage(e);return!!(n&&Object.keys(n)||[]).find(s=>n[s]&&Object.keys(n[s]).length>0)}toJSON(){return this.data}}var rD={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,e,n,r,s){return t.forEach(l=>{var c;e=((c=this.processors[l])==null?void 0:c.process(e,n,r,s))??e}),e}};const Bv={},Pv=t=>!vt(t)&&typeof t!="boolean"&&typeof t!="number";class Gu extends sm{constructor(e,n={}){super(),rH(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=zi.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,n={interpolation:{}}){const r={...n};if(e==null)return!1;const s=this.resolve(e,r);return(s==null?void 0:s.res)!==void 0}extractFromKey(e,n){let r=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");const s=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let l=n.ns||this.options.defaultNS||[];const c=r&&e.indexOf(r)>-1,m=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!pH(e,r,s);if(c&&!m){const p=e.match(this.interpolator.nestingRegexp);if(p&&p.length>0)return{key:e,namespaces:vt(l)?[l]:l};const g=e.split(r);(r!==s||r===s&&this.options.ns.indexOf(g[0])>-1)&&(l=g.shift()),e=g.join(s)}return{key:e,namespaces:vt(l)?[l]:l}}translate(e,n,r){let s=typeof n=="object"?{...n}:n;if(typeof s!="object"&&this.options.overloadTranslationOptionHandler&&(s=this.options.overloadTranslationOptionHandler(arguments)),typeof options=="object"&&(s={...s}),s||(s={}),e==null)return"";Array.isArray(e)||(e=[String(e)]);const l=s.returnDetails!==void 0?s.returnDetails:this.options.returnDetails,c=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,{key:m,namespaces:p}=this.extractFromKey(e[e.length-1],s),g=p[p.length-1];let A=s.nsSeparator!==void 0?s.nsSeparator:this.options.nsSeparator;A===void 0&&(A=":");const f=s.lng||this.language,v=s.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((f==null?void 0:f.toLowerCase())==="cimode")return v?l?{res:`${g}${A}${m}`,usedKey:m,exactUsedKey:m,usedLng:f,usedNS:g,usedParams:this.getUsedParamsDetails(s)}:`${g}${A}${m}`:l?{res:m,usedKey:m,exactUsedKey:m,usedLng:f,usedNS:g,usedParams:this.getUsedParamsDetails(s)}:m;const w=this.resolve(e,s);let S=w==null?void 0:w.res;const T=(w==null?void 0:w.usedKey)||m,k=(w==null?void 0:w.exactUsedKey)||m,L=["[object Number]","[object Function]","[object RegExp]"],R=s.joinArrays!==void 0?s.joinArrays:this.options.joinArrays,x=!this.i18nFormat||this.i18nFormat.handleAsObject,O=s.count!==void 0&&!vt(s.count),_=Gu.hasDefaultValue(s),j=O?this.pluralResolver.getSuffix(f,s.count,s):"",G=s.ordinal&&O?this.pluralResolver.getSuffix(f,s.count,{ordinal:!1}):"",P=O&&!s.ordinal&&s.count===0,B=P&&s[`defaultValue${this.options.pluralSeparator}zero`]||s[`defaultValue${j}`]||s[`defaultValue${G}`]||s.defaultValue;let z=S;x&&!S&&_&&(z=B);const Q=Pv(z),ae=Object.prototype.toString.apply(z);if(x&&z&&Q&&L.indexOf(ae)<0&&!(vt(R)&&Array.isArray(z))){if(!s.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const Y=this.options.returnedObjectHandler?this.options.returnedObjectHandler(T,z,{...s,ns:p}):`key '${m} (${this.language})' returned an object instead of string.`;return l?(w.res=Y,w.usedParams=this.getUsedParamsDetails(s),w):Y}if(c){const Y=Array.isArray(z),ne=Y?[]:{},fe=Y?k:T;for(const X in z)if(Object.prototype.hasOwnProperty.call(z,X)){const te=`${fe}${c}${X}`;_&&!S?ne[X]=this.translate(te,{...s,defaultValue:Pv(B)?B[X]:void 0,joinArrays:!1,ns:p}):ne[X]=this.translate(te,{...s,joinArrays:!1,ns:p}),ne[X]===te&&(ne[X]=z[X])}S=ne}}else if(x&&vt(R)&&Array.isArray(S))S=S.join(R),S&&(S=this.extendTranslation(S,e,s,r));else{let Y=!1,ne=!1;!this.isValidLookup(S)&&_&&(Y=!0,S=B),this.isValidLookup(S)||(ne=!0,S=m);const X=(s.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&ne?void 0:S,te=_&&B!==S&&this.options.updateMissing;if(ne||Y||te){if(this.logger.log(te?"updateKey":"missingKey",f,g,m,te?B:S),c){const J=this.resolve(m,{...s,keySeparator:!1});J&&J.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let ce=[];const oe=this.languageUtils.getFallbackCodes(this.options.fallbackLng,s.lng||this.language);if(this.options.saveMissingTo==="fallback"&&oe&&oe[0])for(let J=0;J<oe.length;J++)ce.push(oe[J]);else this.options.saveMissingTo==="all"?ce=this.languageUtils.toResolveHierarchy(s.lng||this.language):ce.push(s.lng||this.language);const F=(J,W,ie)=>{var le;const we=_&&ie!==S?ie:X;this.options.missingKeyHandler?this.options.missingKeyHandler(J,g,W,we,te,s):(le=this.backendConnector)!=null&&le.saveMissing&&this.backendConnector.saveMissing(J,g,W,we,te,s),this.emit("missingKey",J,g,W,S)};this.options.saveMissing&&(this.options.saveMissingPlurals&&O?ce.forEach(J=>{const W=this.pluralResolver.getSuffixes(J,s);P&&s[`defaultValue${this.options.pluralSeparator}zero`]&&W.indexOf(`${this.options.pluralSeparator}zero`)<0&&W.push(`${this.options.pluralSeparator}zero`),W.forEach(ie=>{F([J],m+ie,s[`defaultValue${ie}`]||B)})}):F(ce,m,B))}S=this.extendTranslation(S,e,s,w,r),ne&&S===m&&this.options.appendNamespaceToMissingKey&&(S=`${g}${A}${m}`),(ne||Y)&&this.options.parseMissingKeyHandler&&(S=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${g}${A}${m}`:m,Y?S:void 0,s))}return l?(w.res=S,w.usedParams=this.getUsedParamsDetails(s),w):S}extendTranslation(e,n,r,s,l){var p,g;if((p=this.i18nFormat)!=null&&p.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||s.usedLng,s.usedNS,s.usedKey,{resolved:s});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});const A=vt(e)&&(((g=r==null?void 0:r.interpolation)==null?void 0:g.skipOnVariables)!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let f;if(A){const w=e.match(this.interpolator.nestingRegexp);f=w&&w.length}let v=r.replace&&!vt(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(v={...this.options.interpolation.defaultVariables,...v}),e=this.interpolator.interpolate(e,v,r.lng||this.language||s.usedLng,r),A){const w=e.match(this.interpolator.nestingRegexp),S=w&&w.length;f<S&&(r.nest=!1)}!r.lng&&s&&s.res&&(r.lng=this.language||s.usedLng),r.nest!==!1&&(e=this.interpolator.nest(e,(...w)=>(l==null?void 0:l[0])===w[0]&&!r.context?(this.logger.warn(`It seems you are nesting recursively key: ${w[0]} in key: ${n[0]}`),null):this.translate(...w,n),r)),r.interpolation&&this.interpolator.reset()}const c=r.postProcess||this.options.postProcess,m=vt(c)?[c]:c;return e!=null&&(m!=null&&m.length)&&r.applyPostProcessor!==!1&&(e=rD.handle(m,e,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...s,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),e}resolve(e,n={}){let r,s,l,c,m;return vt(e)&&(e=[e]),e.forEach(p=>{if(this.isValidLookup(r))return;const g=this.extractFromKey(p,n),A=g.key;s=A;let f=g.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const v=n.count!==void 0&&!vt(n.count),w=v&&!n.ordinal&&n.count===0,S=n.context!==void 0&&(vt(n.context)||typeof n.context=="number")&&n.context!=="",T=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(k=>{var L,R;this.isValidLookup(r)||(m=k,!Bv[`${T[0]}-${k}`]&&((L=this.utils)!=null&&L.hasLoadedNamespace)&&!((R=this.utils)!=null&&R.hasLoadedNamespace(m))&&(Bv[`${T[0]}-${k}`]=!0,this.logger.warn(`key "${s}" for languages "${T.join(", ")}" won't get resolved as namespace "${m}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),T.forEach(x=>{var j;if(this.isValidLookup(r))return;c=x;const O=[A];if((j=this.i18nFormat)!=null&&j.addLookupKeys)this.i18nFormat.addLookupKeys(O,A,x,k,n);else{let G;v&&(G=this.pluralResolver.getSuffix(x,n.count,n));const P=`${this.options.pluralSeparator}zero`,B=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(v&&(O.push(A+G),n.ordinal&&G.indexOf(B)===0&&O.push(A+G.replace(B,this.options.pluralSeparator)),w&&O.push(A+P)),S){const z=`${A}${this.options.contextSeparator}${n.context}`;O.push(z),v&&(O.push(z+G),n.ordinal&&G.indexOf(B)===0&&O.push(z+G.replace(B,this.options.pluralSeparator)),w&&O.push(z+P))}}let _;for(;_=O.pop();)this.isValidLookup(r)||(l=_,r=this.getResource(x,k,_,n))}))})}),{res:r,usedKey:s,exactUsedKey:l,usedLng:c,usedNS:m}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,n,r,s={}){var l;return(l=this.i18nFormat)!=null&&l.getResource?this.i18nFormat.getResource(e,n,r,s):this.resourceStore.getResource(e,n,r,s)}getUsedParamsDetails(e={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=e.replace&&!vt(e.replace);let s=r?e.replace:e;if(r&&typeof e.count<"u"&&(s.count=e.count),this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),!r){s={...s};for(const l of n)delete s[l]}return s}static hasDefaultValue(e){const n="defaultValue";for(const r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&n===r.substring(0,n.length)&&e[r]!==void 0)return!0;return!1}}class Ov{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=zi.create("languageUtils")}getScriptPartFromCode(e){if(e=Ld(e),!e||e.indexOf("-")<0)return null;const n=e.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(e){if(e=Ld(e),!e||e.indexOf("-")<0)return e;const n=e.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(e){if(vt(e)&&e.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(e)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let n;return e.forEach(r=>{if(n)return;const s=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(s))&&(n=s)}),!n&&this.options.supportedLngs&&e.forEach(r=>{if(n)return;const s=this.getScriptPartFromCode(r);if(this.isSupportedCode(s))return n=s;const l=this.getLanguagePartFromCode(r);if(this.isSupportedCode(l))return n=l;n=this.options.supportedLngs.find(c=>{if(c===l)return c;if(!(c.indexOf("-")<0&&l.indexOf("-")<0)&&(c.indexOf("-")>0&&l.indexOf("-")<0&&c.substring(0,c.indexOf("-"))===l||c.indexOf(l)===0&&l.length>1))return c})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(e,n){if(!e)return[];if(typeof e=="function"&&(e=e(n)),vt(e)&&(e=[e]),Array.isArray(e))return e;if(!n)return e.default||[];let r=e[n];return r||(r=e[this.getScriptPartFromCode(n)]),r||(r=e[this.formatLanguageCode(n)]),r||(r=e[this.getLanguagePartFromCode(n)]),r||(r=e.default),r||[]}toResolveHierarchy(e,n){const r=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],e),s=[],l=c=>{c&&(this.isSupportedCode(c)?s.push(c):this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`))};return vt(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&l(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&l(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&l(this.getLanguagePartFromCode(e))):vt(e)&&l(this.formatLanguageCode(e)),r.forEach(c=>{s.indexOf(c)<0&&l(this.formatLanguageCode(c))}),s}}const jv={zero:0,one:1,two:2,few:3,many:4,other:5},Hv={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class fH{constructor(e,n={}){this.languageUtils=e,this.options=n,this.logger=zi.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,n){this.rules[e]=n}clearCache(){this.pluralRulesCache={}}getRule(e,n={}){const r=Ld(e==="dev"?"en":e),s=n.ordinal?"ordinal":"cardinal",l=JSON.stringify({cleanedCode:r,type:s});if(l in this.pluralRulesCache)return this.pluralRulesCache[l];let c;try{c=new Intl.PluralRules(r,{type:s})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),Hv;if(!e.match(/-|_/))return Hv;const p=this.languageUtils.getLanguagePartFromCode(e);c=this.getRule(p,n)}return this.pluralRulesCache[l]=c,c}needsPlural(e,n={}){let r=this.getRule(e,n);return r||(r=this.getRule("dev",n)),(r==null?void 0:r.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(e,n,r={}){return this.getSuffixes(e,r).map(s=>`${n}${s}`)}getSuffixes(e,n={}){let r=this.getRule(e,n);return r||(r=this.getRule("dev",n)),r?r.resolvedOptions().pluralCategories.sort((s,l)=>jv[s]-jv[l]).map(s=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${s}`):[]}getSuffix(e,n,r={}){const s=this.getRule(e,r);return s?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${s.select(n)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",n,r))}}const Vv=(t,e,n,r=".",s=!0)=>{let l=lH(t,e,n);return!l&&s&&vt(n)&&(l=df(t,n,r),l===void 0&&(l=df(e,n,r))),l},xh=t=>t.replace(/\$/g,"$$$$");class AH{constructor(e={}){var n;this.logger=zi.create("interpolator"),this.options=e,this.format=((n=e==null?void 0:e.interpolation)==null?void 0:n.format)||(r=>r),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:n,escapeValue:r,useRawValueToEscape:s,prefix:l,prefixEscaped:c,suffix:m,suffixEscaped:p,formatSeparator:g,unescapeSuffix:A,unescapePrefix:f,nestingPrefix:v,nestingPrefixEscaped:w,nestingSuffix:S,nestingSuffixEscaped:T,nestingOptionsSeparator:k,maxReplaces:L,alwaysFormat:R}=e.interpolation;this.escape=n!==void 0?n:cH,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=s!==void 0?s:!1,this.prefix=l?No(l):c||"{{",this.suffix=m?No(m):p||"}}",this.formatSeparator=g||",",this.unescapePrefix=A?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":A||"",this.nestingPrefix=v?No(v):w||No("$t("),this.nestingSuffix=S?No(S):T||No(")"),this.nestingOptionsSeparator=k||",",this.maxReplaces=L||1e3,this.alwaysFormat=R!==void 0?R:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(n,r)=>(n==null?void 0:n.source)===r?(n.lastIndex=0,n):new RegExp(r,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(e,n,r,s){var w;let l,c,m;const p=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},g=S=>{if(S.indexOf(this.formatSeparator)<0){const R=Vv(n,p,S,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(R,void 0,r,{...s,...n,interpolationkey:S}):R}const T=S.split(this.formatSeparator),k=T.shift().trim(),L=T.join(this.formatSeparator).trim();return this.format(Vv(n,p,k,this.options.keySeparator,this.options.ignoreJSONStructure),L,r,{...s,...n,interpolationkey:k})};this.resetRegExp();const A=(s==null?void 0:s.missingInterpolationHandler)||this.options.missingInterpolationHandler,f=((w=s==null?void 0:s.interpolation)==null?void 0:w.skipOnVariables)!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:S=>xh(S)},{regex:this.regexp,safeValue:S=>this.escapeValue?xh(this.escape(S)):xh(S)}].forEach(S=>{for(m=0;l=S.regex.exec(e);){const T=l[1].trim();if(c=g(T),c===void 0)if(typeof A=="function"){const L=A(e,l,s);c=vt(L)?L:""}else if(s&&Object.prototype.hasOwnProperty.call(s,T))c="";else if(f){c=l[0];continue}else this.logger.warn(`missed to pass in variable ${T} for interpolating ${e}`),c="";else!vt(c)&&!this.useRawValueToEscape&&(c=Rv(c));const k=S.safeValue(c);if(e=e.replace(l[0],k),f?(S.regex.lastIndex+=c.length,S.regex.lastIndex-=l[0].length):S.regex.lastIndex=0,m++,m>=this.maxReplaces)break}}),e}nest(e,n,r={}){let s,l,c;const m=(p,g)=>{const A=this.nestingOptionsSeparator;if(p.indexOf(A)<0)return p;const f=p.split(new RegExp(`${A}[ ]*{`));let v=`{${f[1]}`;p=f[0],v=this.interpolate(v,c);const w=v.match(/'/g),S=v.match(/"/g);(((w==null?void 0:w.length)??0)%2===0&&!S||S.length%2!==0)&&(v=v.replace(/'/g,'"'));try{c=JSON.parse(v),g&&(c={...g,...c})}catch(T){return this.logger.warn(`failed parsing options string in nesting for key ${p}`,T),`${p}${A}${v}`}return c.defaultValue&&c.defaultValue.indexOf(this.prefix)>-1&&delete c.defaultValue,p};for(;s=this.nestingRegexp.exec(e);){let p=[];c={...r},c=c.replace&&!vt(c.replace)?c.replace:c,c.applyPostProcessor=!1,delete c.defaultValue;const g=/{.*}/.test(s[1])?s[1].lastIndexOf("}")+1:s[1].indexOf(this.formatSeparator);if(g!==-1&&(p=s[1].slice(g).split(this.formatSeparator).map(A=>A.trim()).filter(Boolean),s[1]=s[1].slice(0,g)),l=n(m.call(this,s[1].trim(),c),c),l&&s[0]===e&&!vt(l))return l;vt(l)||(l=Rv(l)),l||(this.logger.warn(`missed to resolve ${s[1]} for nesting ${e}`),l=""),p.length&&(l=p.reduce((A,f)=>this.format(A,f,r.lng,{...r,interpolationkey:s[1].trim()}),l.trim())),e=e.replace(s[0],l),this.regexp.lastIndex=0}return e}}const yH=t=>{let e=t.toLowerCase().trim();const n={};if(t.indexOf("(")>-1){const r=t.split("(");e=r[0].toLowerCase().trim();const s=r[1].substring(0,r[1].length-1);e==="currency"&&s.indexOf(":")<0?n.currency||(n.currency=s.trim()):e==="relativetime"&&s.indexOf(":")<0?n.range||(n.range=s.trim()):s.split(";").forEach(c=>{if(c){const[m,...p]=c.split(":"),g=p.join(":").trim().replace(/^'+|'+$/g,""),A=m.trim();n[A]||(n[A]=g),g==="false"&&(n[A]=!1),g==="true"&&(n[A]=!0),isNaN(g)||(n[A]=parseInt(g,10))}})}return{formatName:e,formatOptions:n}},zv=t=>{const e={};return(n,r,s)=>{let l=s;s&&s.interpolationkey&&s.formatParams&&s.formatParams[s.interpolationkey]&&s[s.interpolationkey]&&(l={...l,[s.interpolationkey]:void 0});const c=r+JSON.stringify(l);let m=e[c];return m||(m=t(Ld(r),s),e[c]=m),m(n)}},EH=t=>(e,n,r)=>t(Ld(n),r)(e);class bH{constructor(e={}){this.logger=zi.create("formatter"),this.options=e,this.init(e)}init(e,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const r=n.cacheInBuiltFormats?zv:EH;this.formats={number:r((s,l)=>{const c=new Intl.NumberFormat(s,{...l});return m=>c.format(m)}),currency:r((s,l)=>{const c=new Intl.NumberFormat(s,{...l,style:"currency"});return m=>c.format(m)}),datetime:r((s,l)=>{const c=new Intl.DateTimeFormat(s,{...l});return m=>c.format(m)}),relativetime:r((s,l)=>{const c=new Intl.RelativeTimeFormat(s,{...l});return m=>c.format(m,l.range||"day")}),list:r((s,l)=>{const c=new Intl.ListFormat(s,{...l});return m=>c.format(m)})}}add(e,n){this.formats[e.toLowerCase().trim()]=n}addCached(e,n){this.formats[e.toLowerCase().trim()]=zv(n)}format(e,n,r,s={}){const l=n.split(this.formatSeparator);if(l.length>1&&l[0].indexOf("(")>1&&l[0].indexOf(")")<0&&l.find(m=>m.indexOf(")")>-1)){const m=l.findIndex(p=>p.indexOf(")")>-1);l[0]=[l[0],...l.splice(1,m)].join(this.formatSeparator)}return l.reduce((m,p)=>{var f;const{formatName:g,formatOptions:A}=yH(p);if(this.formats[g]){let v=m;try{const w=((f=s==null?void 0:s.formatParams)==null?void 0:f[s.interpolationkey])||{},S=w.locale||w.lng||s.locale||s.lng||r;v=this.formats[g](m,S,{...A,...s,...w})}catch(w){this.logger.warn(w)}return v}else this.logger.warn(`there was no format function for ${g}`);return m},e)}}const vH=(t,e)=>{t.pending[e]!==void 0&&(delete t.pending[e],t.pendingCount--)};class wH extends sm{constructor(e,n,r,s={}){var l,c;super(),this.backend=e,this.store=n,this.services=r,this.languageUtils=r.languageUtils,this.options=s,this.logger=zi.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=s.maxParallelReads||10,this.readingCalls=0,this.maxRetries=s.maxRetries>=0?s.maxRetries:5,this.retryTimeout=s.retryTimeout>=1?s.retryTimeout:350,this.state={},this.queue=[],(c=(l=this.backend)==null?void 0:l.init)==null||c.call(l,r,s.backend,s)}queueLoad(e,n,r,s){const l={},c={},m={},p={};return e.forEach(g=>{let A=!0;n.forEach(f=>{const v=`${g}|${f}`;!r.reload&&this.store.hasResourceBundle(g,f)?this.state[v]=2:this.state[v]<0||(this.state[v]===1?c[v]===void 0&&(c[v]=!0):(this.state[v]=1,A=!1,c[v]===void 0&&(c[v]=!0),l[v]===void 0&&(l[v]=!0),p[f]===void 0&&(p[f]=!0)))}),A||(m[g]=!0)}),(Object.keys(l).length||Object.keys(c).length)&&this.queue.push({pending:c,pendingCount:Object.keys(c).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(l),pending:Object.keys(c),toLoadLanguages:Object.keys(m),toLoadNamespaces:Object.keys(p)}}loaded(e,n,r){const s=e.split("|"),l=s[0],c=s[1];n&&this.emit("failedLoading",l,c,n),!n&&r&&this.store.addResourceBundle(l,c,r,void 0,void 0,{skipCopy:!0}),this.state[e]=n?-1:2,n&&r&&(this.state[e]=0);const m={};this.queue.forEach(p=>{oH(p.loaded,[l],c),vH(p,e),n&&p.errors.push(n),p.pendingCount===0&&!p.done&&(Object.keys(p.loaded).forEach(g=>{m[g]||(m[g]={});const A=p.loaded[g];A.length&&A.forEach(f=>{m[g][f]===void 0&&(m[g][f]=!0)})}),p.done=!0,p.errors.length?p.callback(p.errors):p.callback())}),this.emit("loaded",m),this.queue=this.queue.filter(p=>!p.done)}read(e,n,r,s=0,l=this.retryTimeout,c){if(!e.length)return c(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:n,fcName:r,tried:s,wait:l,callback:c});return}this.readingCalls++;const m=(g,A)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(g&&A&&s<this.maxRetries){setTimeout(()=>{this.read.call(this,e,n,r,s+1,l*2,c)},l);return}c(g,A)},p=this.backend[r].bind(this.backend);if(p.length===2){try{const g=p(e,n);g&&typeof g.then=="function"?g.then(A=>m(null,A)).catch(m):m(null,g)}catch(g){m(g)}return}return p(e,n,m)}prepareLoading(e,n,r={},s){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();vt(e)&&(e=this.languageUtils.toResolveHierarchy(e)),vt(n)&&(n=[n]);const l=this.queueLoad(e,n,r,s);if(!l.toLoad.length)return l.pending.length||s(),null;l.toLoad.forEach(c=>{this.loadOne(c)})}load(e,n,r){this.prepareLoading(e,n,{},r)}reload(e,n,r){this.prepareLoading(e,n,{reload:!0},r)}loadOne(e,n=""){const r=e.split("|"),s=r[0],l=r[1];this.read(s,l,"read",void 0,void 0,(c,m)=>{c&&this.logger.warn(`${n}loading namespace ${l} for language ${s} failed`,c),!c&&m&&this.logger.log(`${n}loaded namespace ${l} for language ${s}`,m),this.loaded(e,c,m)})}saveMissing(e,n,r,s,l,c={},m=()=>{}){var p,g,A,f,v;if((g=(p=this.services)==null?void 0:p.utils)!=null&&g.hasLoadedNamespace&&!((f=(A=this.services)==null?void 0:A.utils)!=null&&f.hasLoadedNamespace(n))){this.logger.warn(`did not save key "${r}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if((v=this.backend)!=null&&v.create){const w={...c,isUpdate:l},S=this.backend.create.bind(this.backend);if(S.length<6)try{let T;S.length===5?T=S(e,n,r,s,w):T=S(e,n,r,s),T&&typeof T.then=="function"?T.then(k=>m(null,k)).catch(m):m(null,T)}catch(T){m(T)}else S(e,n,r,s,m,w)}!e||!e[0]||this.store.addResource(e[0],n,r,s)}}}const Qv=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:t=>{let e={};if(typeof t[1]=="object"&&(e=t[1]),vt(t[1])&&(e.defaultValue=t[1]),vt(t[2])&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const n=t[3]||t[2];Object.keys(n).forEach(r=>{e[r]=n[r]})}return e},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),Kv=t=>{var e,n;return vt(t.ns)&&(t.ns=[t.ns]),vt(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),vt(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),((n=(e=t.supportedLngs)==null?void 0:e.indexOf)==null?void 0:n.call(e,"cimode"))<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t},gu=()=>{},IH=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(n=>{typeof t[n]=="function"&&(t[n]=t[n].bind(t))})};class Dd extends sm{constructor(e={},n){if(super(),this.options=Kv(e),this.services={},this.logger=zi,this.modules={external:[]},IH(this),n&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,n),this;setTimeout(()=>{this.init(e,n)},0)}}init(e={},n){this.isInitializing=!0,typeof e=="function"&&(n=e,e={}),e.defaultNS==null&&e.ns&&(vt(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const r=Qv();this.options={...r,...this.options,...Kv(e)},this.options.interpolation={...r.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator);const s=g=>g?typeof g=="function"?new g:g:null;if(!this.options.isClone){this.modules.logger?zi.init(s(this.modules.logger),this.options):zi.init(null,this.options);let g;this.modules.formatter?g=this.modules.formatter:g=bH;const A=new Ov(this.options);this.store=new Fv(this.options.resources,this.options);const f=this.services;f.logger=zi,f.resourceStore=this.store,f.languageUtils=A,f.pluralResolver=new fH(A,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.warn("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),g&&(!this.options.interpolation.format||this.options.interpolation.format===r.interpolation.format)&&(f.formatter=s(g),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new AH(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new wH(s(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(w,...S)=>{this.emit(w,...S)}),this.modules.languageDetector&&(f.languageDetector=s(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=s(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new Gu(this.services,this.options),this.translator.on("*",(w,...S)=>{this.emit(w,...S)}),this.modules.external.forEach(w=>{w.init&&w.init(this)})}if(this.format=this.options.interpolation.format,n||(n=gu),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const g=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);g.length>0&&g[0]!=="dev"&&(this.options.lng=g[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(g=>{this[g]=(...A)=>this.store[g](...A)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(g=>{this[g]=(...A)=>(this.store[g](...A),this)});const m=rd(),p=()=>{const g=(A,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),m.resolve(f),n(A,f)};if(this.languages&&!this.isInitialized)return g(null,this.t.bind(this));this.changeLanguage(this.options.lng,g)};return this.options.resources||!this.options.initAsync?p():setTimeout(p,0),m}loadResources(e,n=gu){var l,c;let r=n;const s=vt(e)?e:this.language;if(typeof e=="function"&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if((s==null?void 0:s.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();const m=[],p=g=>{if(!g||g==="cimode")return;this.services.languageUtils.toResolveHierarchy(g).forEach(f=>{f!=="cimode"&&m.indexOf(f)<0&&m.push(f)})};s?p(s):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(A=>p(A)),(c=(l=this.options.preload)==null?void 0:l.forEach)==null||c.call(l,g=>p(g)),this.services.backendConnector.load(m,this.options.ns,g=>{!g&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(g)})}else r(null)}reloadResources(e,n,r){const s=rd();return typeof e=="function"&&(r=e,e=void 0),typeof n=="function"&&(r=n,n=void 0),e||(e=this.languages),n||(n=this.options.ns),r||(r=gu),this.services.backendConnector.reload(e,n,l=>{s.resolve(),r(l)}),s}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&rD.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1)){for(let n=0;n<this.languages.length;n++){const r=this.languages[n];if(!(["cimode","dev"].indexOf(r)>-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,n){this.isLanguageChangingTo=e;const r=rd();this.emit("languageChanging",e);const s=m=>{this.language=m,this.languages=this.services.languageUtils.toResolveHierarchy(m),this.resolvedLanguage=void 0,this.setResolvedLanguage(m)},l=(m,p)=>{p?this.isLanguageChangingTo===e&&(s(p),this.translator.changeLanguage(p),this.isLanguageChangingTo=void 0,this.emit("languageChanged",p),this.logger.log("languageChanged",p)):this.isLanguageChangingTo=void 0,r.resolve((...g)=>this.t(...g)),n&&n(m,(...g)=>this.t(...g))},c=m=>{var A,f;!e&&!m&&this.services.languageDetector&&(m=[]);const p=vt(m)?m:m&&m[0],g=this.store.hasLanguageSomeTranslations(p)?p:this.services.languageUtils.getBestMatchFromCodes(vt(m)?[m]:m);g&&(this.language||s(g),this.translator.language||this.translator.changeLanguage(g),(f=(A=this.services.languageDetector)==null?void 0:A.cacheUserLanguage)==null||f.call(A,g)),this.loadResources(g,v=>{l(v,g)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?c(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(c):this.services.languageDetector.detect(c):c(e),r}getFixedT(e,n,r){const s=(l,c,...m)=>{let p;typeof c!="object"?p=this.options.overloadTranslationOptionHandler([l,c].concat(m)):p={...c},p.lng=p.lng||s.lng,p.lngs=p.lngs||s.lngs,p.ns=p.ns||s.ns,p.keyPrefix!==""&&(p.keyPrefix=p.keyPrefix||r||s.keyPrefix);const g=this.options.keySeparator||".";let A;return p.keyPrefix&&Array.isArray(l)?A=l.map(f=>`${p.keyPrefix}${g}${f}`):A=p.keyPrefix?`${p.keyPrefix}${g}${l}`:l,this.t(A,p)};return vt(e)?s.lng=e:s.lngs=e,s.ns=n,s.keyPrefix=r,s}t(...e){var n;return(n=this.translator)==null?void 0:n.translate(...e)}exists(...e){var n;return(n=this.translator)==null?void 0:n.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const r=n.lng||this.resolvedLanguage||this.languages[0],s=this.options?this.options.fallbackLng:!1,l=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;const c=(m,p)=>{const g=this.services.backendConnector.state[`${m}|${p}`];return g===-1||g===0||g===2};if(n.precheck){const m=n.precheck(this,c);if(m!==void 0)return m}return!!(this.hasResourceBundle(r,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||c(r,e)&&(!s||c(l,e)))}loadNamespaces(e,n){const r=rd();return this.options.ns?(vt(e)&&(e=[e]),e.forEach(s=>{this.options.ns.indexOf(s)<0&&this.options.ns.push(s)}),this.loadResources(s=>{r.resolve(),n&&n(s)}),r):(n&&n(),Promise.resolve())}loadLanguages(e,n){const r=rd();vt(e)&&(e=[e]);const s=this.options.preload||[],l=e.filter(c=>s.indexOf(c)<0&&this.services.languageUtils.isSupportedCode(c));return l.length?(this.options.preload=s.concat(l),this.loadResources(c=>{r.resolve(),n&&n(c)}),r):(n&&n(),Promise.resolve())}dir(e){var s,l;if(e||(e=this.resolvedLanguage||(((s=this.languages)==null?void 0:s.length)>0?this.languages[0]:this.language)),!e)return"rtl";if(Intl.Locale){const c=new Intl.Locale(e);if(c&&c.getTextInfo){const m=c.getTextInfo();if(m&&m.direction)return m.direction}}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=((l=this.services)==null?void 0:l.languageUtils)||new Ov(Qv());return e.toLowerCase().indexOf("-latn")>1?"ltr":n.indexOf(r.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},n){return new Dd(e,n)}cloneInstance(e={},n=gu){const r=e.forkResourceStore;r&&delete e.forkResourceStore;const s={...this.options,...e,isClone:!0},l=new Dd(s);if((e.debug!==void 0||e.prefix!==void 0)&&(l.logger=l.logger.clone(e)),["store","services","language"].forEach(m=>{l[m]=this[m]}),l.services={...this.services},l.services.utils={hasLoadedNamespace:l.hasLoadedNamespace.bind(l)},r){const m=Object.keys(this.store.data).reduce((p,g)=>(p[g]={...this.store.data[g]},p[g]=Object.keys(p[g]).reduce((A,f)=>(A[f]={...p[g][f]},A),p[g]),p),{});l.store=new Fv(m,s),l.services.resourceStore=l.store}return l.translator=new Gu(l.services,s),l.translator.on("*",(m,...p)=>{l.emit(m,...p)}),l.init(s,n),l.translator.options=s,l.translator.backendConnector.services.utils={hasLoadedNamespace:l.hasLoadedNamespace.bind(l)},l}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const Ja=Dd.createInstance();Ja.createInstance=Dd.createInstance;Ja.createInstance;Ja.dir;Ja.init;Ja.loadResources;Ja.reloadResources;Ja.use;Ja.changeLanguage;Ja.getFixedT;Ja.t;Ja.exists;Ja.setDefaultNamespace;Ja.hasLoadedNamespace;Ja.loadNamespaces;Ja.loadLanguages;const CH=async()=>{const t=await Te.getItem("local:language");if(t&&Du.includes(t))return t;const e=navigator.language.split("-")[0];return Du.includes(e)?e:Vi},SH=async()=>{const t=await CH();await Ja.use(e2).init({resources:sd,lng:t,fallbackLng:Vi,debug:!1,interpolation:{escapeValue:!1},react:{useSuspense:!1,bindI18n:"languageChanged loaded",bindI18nStore:""}})};SH().catch(t=>{console.error("Failed to initialize i18n:",t),Ja.emit("initialized")});const Gv=()=>{VR.createRoot(document.getElementById("root")).render(d.jsx(l_,{children:d.jsx(B_,{children:d.jsx(U_,{children:d.jsx(P_,{children:d.jsx(K_,{children:d.jsx(O_,{children:d.jsx(Z3,{children:d.jsx(iH,{})})})})})})})}))};Ja.isInitialized?Gv():Ja.on("initialized",Gv);
