var Dz=Object.defineProperty,Rz=Object.defineProperties;var Fz=Object.getOwnPropertyDescriptors;var km=Object.getOwnPropertySymbols;var iC=Object.prototype.hasOwnProperty,oC=Object.prototype.propertyIsEnumerable;var fc=Math.pow,ub=(e,t,r)=>t in e?Dz(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ee=(e,t)=>{for(var r in t||(t={}))iC.call(t,r)&&ub(e,r,t[r]);if(km)for(var r of km(t))oC.call(t,r)&&ub(e,r,t[r]);return e},Se=(e,t)=>Rz(e,Fz(t));var ti=(e,t)=>{var r={};for(var a in e)iC.call(e,a)&&t.indexOf(a)<0&&(r[a]=e[a]);if(e!=null&&km)for(var a of km(e))t.indexOf(a)<0&&oC.call(e,a)&&(r[a]=e[a]);return r};var Mz=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var xn=(e,t,r)=>ub(e,typeof t!="symbol"?t+"":t,r);var fe=(e,t,r)=>new Promise((a,s)=>{var i=d=>{try{u(r.next(d))}catch(f){s(f)}},l=d=>{try{u(r.throw(d))}catch(f){s(f)}},u=d=>d.done?a(d.value):Promise.resolve(d.value).then(i,l);u((r=r.apply(e,t)).next())});var nbe=Mz(Ge=>{function Lz(e,t){for(var r=0;ra[s]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&a(l)}).observe(document,{childList:!0,subtree:!0});function r(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(s){if(s.ep)return;s.ep=!0;const i=r(s);fetch(s.href,i)}})();var lC=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function zl(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var db={exports:{}},pf={};var cC;function Iz(){if(cC)return pf;cC=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(a,s,i){var l=null;if(i!==void 0&&(l=""+i),s.key!==void 0&&(l=""+s.key),"key"in s){i={};for(var u in s)u!=="key"&&(i[u]=s[u])}else i=s;return s=i.ref,{$$typeof:e,type:a,key:l,ref:s!==void 0?s:null,props:i}}return pf.Fragment=t,pf.jsx=r,pf.jsxs=r,pf}var uC;function zz(){return uC||(uC=1,db.exports=Iz()),db.exports}var n=zz(),fb={exports:{}},Nt={};var dC;function Bz(){if(dC)return Nt;dC=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),m=Symbol.for("react.activity"),x=Symbol.iterator;function v(oe){return oe===null||typeof oe!="object"?null:(oe=x&&oe[x]||oe["@@iterator"],typeof oe=="function"?oe:null)}var b={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,j={};function k(oe,L,H){this.props=oe,this.context=L,this.refs=j,this.updater=H||b}k.prototype.isReactComponent={},k.prototype.setState=function(oe,L){if(typeof oe!="object"&&typeof oe!="function"&&oe!=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,oe,L,"setState")},k.prototype.forceUpdate=function(oe){this.updater.enqueueForceUpdate(this,oe,"forceUpdate")};function C(){}C.prototype=k.prototype;function N(oe,L,H){this.props=oe,this.context=L,this.refs=j,this.updater=H||b}var O=N.prototype=new C;O.constructor=N,w(O,k.prototype),O.isPureReactComponent=!0;var E=Array.isArray;function A(){}var T={H:null,A:null,T:null,S:null},P=Object.prototype.hasOwnProperty;function D(oe,L,H){var K=H.ref;return{$$typeof:e,type:oe,key:L,ref:K!==void 0?K:null,props:H}}function z(oe,L){return D(oe.type,L,oe.props)}function G(oe){return typeof oe=="object"&&oe!==null&&oe.$$typeof===e}function V(oe){var L={"=":"=0",":":"=2"};return"$"+oe.replace(/[=:]/g,function(H){return L[H]})}var ne=/\/+/g;function ge(oe,L){return typeof oe=="object"&&oe!==null&&oe.key!=null?V(""+oe.key):L.toString(36)}function Z(oe){switch(oe.status){case"fulfilled":return oe.value;case"rejected":throw oe.reason;default:switch(typeof oe.status=="string"?oe.then(A,A):(oe.status="pending",oe.then(function(L){oe.status==="pending"&&(oe.status="fulfilled",oe.value=L)},function(L){oe.status==="pending"&&(oe.status="rejected",oe.reason=L)})),oe.status){case"fulfilled":return oe.value;case"rejected":throw oe.reason}}throw oe}function U(oe,L,H,K,Y){var re=typeof oe;(re==="undefined"||re==="boolean")&&(oe=null);var de=!1;if(oe===null)de=!0;else switch(re){case"bigint":case"string":case"number":de=!0;break;case"object":switch(oe.$$typeof){case e:case t:de=!0;break;case p:return de=oe._init,U(de(oe._payload),L,H,K,Y)}}if(de)return Y=Y(oe),de=K===""?"."+ge(oe,0):K,E(Y)?(H="",de!=null&&(H=de.replace(ne,"$&/")+"/"),U(Y,L,H,"",function(he){return he})):Y!=null&&(G(Y)&&(Y=z(Y,H+(Y.key==null||oe&&oe.key===Y.key?"":(""+Y.key).replace(ne,"$&/")+"/")+de)),L.push(Y)),1;de=0;var ie=K===""?".":K+":";if(E(oe))for(var se=0;se>>1,me=U[be];if(0>>1;bes(H,xe))Ks(Y,H)?(U[be]=Y,U[K]=xe,be=K):(U[be]=H,U[L]=xe,be=L);else if(Ks(Y,xe))U[be]=Y,U[K]=xe,be=K;else break e}}return ce}function s(U,ce){var xe=U.sortIndex-ce.sortIndex;return xe!==0?xe:U.id-ce.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var l=Date,u=l.now();e.unstable_now=function(){return l.now()-u}}var d=[],f=[],p=1,m=null,x=3,v=!1,b=!1,w=!1,j=!1,k=typeof setTimeout=="function"?setTimeout:null,C=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate!="undefined"?setImmediate:null;function O(U){for(var ce=r(f);ce!==null;){if(ce.callback===null)a(f);else if(ce.startTime<=U)a(f),ce.sortIndex=ce.expirationTime,t(d,ce);else break;ce=r(f)}}function E(U){if(w=!1,O(U),!b)if(r(d)!==null)b=!0,A||(A=!0,V());else{var ce=r(f);ce!==null&&Z(E,ce.startTime-U)}}var A=!1,T=-1,P=5,D=-1;function z(){return j?!0:!(e.unstable_now()-DU&&z());){var be=m.callback;if(typeof be=="function"){m.callback=null,x=m.priorityLevel;var me=be(m.expirationTime<=U);if(U=e.unstable_now(),typeof me=="function"){m.callback=me,O(U),ce=!0;break t}m===r(d)&&a(d),O(U)}else a(d);m=r(d)}if(m!==null)ce=!0;else{var oe=r(f);oe!==null&&Z(E,oe.startTime-U),ce=!1}}break e}finally{m=null,x=xe,v=!1}ce=void 0}}finally{ce?V():A=!1}}}var V;if(typeof N=="function")V=function(){N(G)};else if(typeof MessageChannel!="undefined"){var ne=new MessageChannel,ge=ne.port2;ne.port1.onmessage=G,V=function(){ge.postMessage(null)}}else V=function(){k(G,0)};function Z(U,ce){T=k(function(){U(e.unstable_now())},ce)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(U){U.callback=null},e.unstable_forceFrameRate=function(U){0>U||125be?(U.sortIndex=xe,t(f,U),r(d)===null&&U===r(f)&&(w?(C(T),T=-1):w=!0,Z(E,xe-be))):(U.sortIndex=me,t(d,U),b||v||(b=!0,A||(A=!0,V()))),U},e.unstable_shouldYield=z,e.unstable_wrapCallback=function(U){var ce=x;return function(){var xe=x;x=ce;try{return U.apply(this,arguments)}finally{x=xe}}}})(mb)),mb}var pC;function Hz(){return pC||(pC=1,pb.exports=Uz()),pb.exports}var gb={exports:{}},rn={};var mC;function qz(){if(mC)return rn;mC=1;var e=o0();function t(d){var f="https://react.dev/errors/"+d;if(1me||(o.current=be[me],be[me]=null,me--)}function H(o,c){me++,be[me]=o.current,o.current=c}var K=oe(null),Y=oe(null),re=oe(null),de=oe(null);function ie(o,c){switch(H(re,c),H(Y,o),H(K,null),c.nodeType){case 9:case 11:o=(o=c.documentElement)&&(o=o.namespaceURI)?E3(o):0;break;default:if(o=c.tagName,c=c.namespaceURI)c=E3(c),o=A3(c,o);else switch(o){case"svg":o=1;break;case"math":o=2;break;default:o=0}}L(K),H(K,o)}function se(){L(K),L(Y),L(re)}function he(o){o.memoizedState!==null&&H(de,o);var c=K.current,h=A3(c,o.type);c!==h&&(H(Y,o),H(K,h))}function _e(o){Y.current===o&&(L(K),L(Y)),de.current===o&&(L(de),uf._currentValue=xe)}var F,X;function R(o){if(F===void 0)try{throw Error()}catch(h){var c=h.stack.trim().match(/\n( *(at )?)/);F=c&&c[1]||"",X=-1)":-1_||we[g]!==Re[_]){var qe=` `+we[g].replace(" at new "," at ");return o.displayName&&qe.includes("")&&(qe=qe.replace("",o.displayName)),qe}while(1<=g&&0<=_);break}}}finally{I=!1,Error.prepareStackTrace=h}return(h=o?o.displayName||o.name:"")?R(h):""}function q(o,c){switch(o.tag){case 26:case 27:case 5:return R(o.type);case 16:return R("Lazy");case 13:return o.child!==c&&c!==null?R("Suspense Fallback"):R("Suspense");case 19:return R("SuspenseList");case 0:case 15:return te(o.type,!1);case 11:return te(o.type.render,!1);case 1:return te(o.type,!0);case 31:return R("Activity");default:return""}}function B(o){try{var c="",h=null;do c+=q(o,h),h=o,o=o.return;while(o);return c}catch(g){return` Error generating stack: `+g.message+` `+g.stack}}var je=Object.prototype.hasOwnProperty,Ce=e.unstable_scheduleCallback,ye=e.unstable_cancelCallback,Ee=e.unstable_shouldYield,Xe=e.unstable_requestPaint,tt=e.unstable_now,ve=e.unstable_getCurrentPriorityLevel,Oe=e.unstable_ImmediatePriority,st=e.unstable_UserBlockingPriority,ct=e.unstable_NormalPriority,ot=e.unstable_LowPriority,Ze=e.unstable_IdlePriority,St=e.log,Ir=e.unstable_setDisableYieldValue,Xr=null,jr=null;function ea(o){if(typeof St=="function"&&Ir(o),jr&&typeof jr.setStrictMode=="function")try{jr.setStrictMode(Xr,o)}catch(c){}}var ma=Math.clz32?Math.clz32:Vl,wu=Math.log,Wl=Math.LN2;function Vl(o){return o>>>=0,o===0?32:31-(wu(o)/Wl|0)|0}var ki=256,Js=262144,Ji=4194304;function mn(o){var c=o&42;if(c!==0)return c;switch(o&-o){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:return o&261888;case 262144:case 524288:case 1048576:case 2097152:return o&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return o&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return o}}function ws(o,c,h){var g=o.pendingLanes;if(g===0)return 0;var _=0,S=o.suspendedLanes,M=o.pingedLanes;o=o.warmLanes;var J=g&134217727;return J!==0?(g=J&~S,g!==0?_=mn(g):(M&=J,M!==0?_=mn(M):h||(h=J&~o,h!==0&&(_=mn(h))))):(J=g&~S,J!==0?_=mn(J):M!==0?_=mn(M):h||(h=g&~o,h!==0&&(_=mn(h)))),_===0?0:c!==0&&c!==_&&(c&S)===0&&(S=_&-_,h=c&-c,S>=h||S===32&&(h&4194048)!==0)?c:_}function Si(o,c){return(o.pendingLanes&~(o.suspendedLanes&~o.pingedLanes)&c)===0}function ju(o,c){switch(o){case 1:case 2:case 4:case 8:case 64:return c+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 c+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 Gl(){var o=Ji;return Ji<<=1,(Ji&62914560)===0&&(Ji=4194304),o}function Yo(o){for(var c=[],h=0;31>h;h++)c.push(o);return c}function Ni(o,c){o.pendingLanes|=c,c!==268435456&&(o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0)}function _u(o,c,h,g,_,S){var M=o.pendingLanes;o.pendingLanes=h,o.suspendedLanes=0,o.pingedLanes=0,o.warmLanes=0,o.expiredLanes&=h,o.entangledLanes&=h,o.errorRecoveryDisabledLanes&=h,o.shellSuspendCounter=0;var J=o.entanglements,we=o.expirationTimes,Re=o.hiddenUpdates;for(h=M&~h;0=A0),MS=" ",LS=!1;function IS(o,c){switch(o){case"keyup":return tI.indexOf(c.keyCode)!==-1;case"keydown":return c.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zS(o){return o=o.detail,typeof o=="object"&&"data"in o?o.data:null}var Tu=!1;function aI(o,c){switch(o){case"compositionend":return zS(c);case"keypress":return c.which!==32?null:(LS=!0,MS);case"textInput":return o=c.data,o===MS&&LS?null:o;default:return null}}function nI(o,c){if(Tu)return o==="compositionend"||!gv&&IS(o,c)?(o=AS(),gp=dv=Jo=null,Tu=!1,o):null;switch(o){case"paste":return null;case"keypress":if(!(c.ctrlKey||c.altKey||c.metaKey)||c.ctrlKey&&c.altKey){if(c.char&&1=c)return{node:h,offset:c-o};o=g}e:{for(;h;){if(h.nextSibling){h=h.nextSibling;break e}h=h.parentNode}h=void 0}h=GS(h)}}function YS(o,c){return o&&c?o===c?!0:o&&o.nodeType===3?!1:c&&c.nodeType===3?YS(o,c.parentNode):"contains"in o?o.contains(c):o.compareDocumentPosition?!!(o.compareDocumentPosition(c)&16):!1:!1}function XS(o){o=o!=null&&o.ownerDocument!=null&&o.ownerDocument.defaultView!=null?o.ownerDocument.defaultView:window;for(var c=pp(o.document);c instanceof o.HTMLIFrameElement;){try{var h=typeof c.contentWindow.location.href=="string"}catch(g){h=!1}if(h)o=c.contentWindow;else break;c=pp(o.document)}return c}function vv(o){var c=o&&o.nodeName&&o.nodeName.toLowerCase();return c&&(c==="input"&&(o.type==="text"||o.type==="search"||o.type==="tel"||o.type==="url"||o.type==="password")||c==="textarea"||o.contentEditable==="true")}var fI=to&&"documentMode"in document&&11>=document.documentMode,Eu=null,bv=null,R0=null,wv=!1;function JS(o,c,h){var g=h.window===h?h.document:h.nodeType===9?h:h.ownerDocument;wv||Eu==null||Eu!==pp(g)||(g=Eu,"selectionStart"in g&&vv(g)?g={start:g.selectionStart,end:g.selectionEnd}:(g=(g.ownerDocument&&g.ownerDocument.defaultView||window).getSelection(),g={anchorNode:g.anchorNode,anchorOffset:g.anchorOffset,focusNode:g.focusNode,focusOffset:g.focusOffset}),R0&&D0(R0,g)||(R0=g,g=cm(bv,"onSelect"),0>=M,_-=M,Ti=1<<32-ma(c)+_|h<<_|g,Ei=S+o}else Ti=1<Et?(qt=gt,gt=null):qt=gt.sibling;var Jt=Ie(Te,gt,De[Et],We);if(Jt===null){gt===null&&(gt=qt);break}o&>&&Jt.alternate===null&&c(Te,gt),ke=S(Jt,ke,Et),Xt===null?bt=Jt:Xt.sibling=Jt,Xt=Jt,gt=qt}if(Et===De.length)return h(Te,gt),Vt&&ao(Te,Et),bt;if(gt===null){for(;EtEt?(qt=gt,gt=null):qt=gt.sibling;var vl=Ie(Te,gt,Jt.value,We);if(vl===null){gt===null&&(gt=qt);break}o&>&&vl.alternate===null&&c(Te,gt),ke=S(vl,ke,Et),Xt===null?bt=vl:Xt.sibling=vl,Xt=vl,gt=qt}if(Jt.done)return h(Te,gt),Vt&&ao(Te,Et),bt;if(gt===null){for(;!Jt.done;Et++,Jt=De.next())Jt=Ve(Te,Jt.value,We),Jt!==null&&(ke=S(Jt,ke,Et),Xt===null?bt=Jt:Xt.sibling=Jt,Xt=Jt);return Vt&&ao(Te,Et),bt}for(gt=g(gt);!Jt.done;Et++,Jt=De.next())Jt=ze(gt,Te,Et,Jt.value,We),Jt!==null&&(o&&Jt.alternate!==null&>.delete(Jt.key===null?Et:Jt.key),ke=S(Jt,ke,Et),Xt===null?bt=Jt:Xt.sibling=Jt,Xt=Jt);return o&>.forEach(function(Pz){return c(Te,Pz)}),Vt&&ao(Te,Et),bt}function xr(Te,ke,De,We){if(typeof De=="object"&&De!==null&&De.type===w&&De.key===null&&(De=De.props.children),typeof De=="object"&&De!==null){switch(De.$$typeof){case v:e:{for(var bt=De.key;ke!==null;){if(ke.key===bt){if(bt=De.type,bt===w){if(ke.tag===7){h(Te,ke.sibling),We=_(ke,De.props.children),We.return=Te,Te=We;break e}}else if(ke.elementType===bt||typeof bt=="object"&&bt!==null&&bt.$$typeof===P&&sc(bt)===ke.type){h(Te,ke.sibling),We=_(ke,De.props),B0(We,De),We.return=Te,Te=We;break e}h(Te,ke);break}else c(Te,ke);ke=ke.sibling}De.type===w?(We=ec(De.props.children,Te.mode,We,De.key),We.return=Te,Te=We):(We=Np(De.type,De.key,De.props,null,Te.mode,We),B0(We,De),We.return=Te,Te=We)}return M(Te);case b:e:{for(bt=De.key;ke!==null;){if(ke.key===bt)if(ke.tag===4&&ke.stateNode.containerInfo===De.containerInfo&&ke.stateNode.implementation===De.implementation){h(Te,ke.sibling),We=_(ke,De.children||[]),We.return=Te,Te=We;break e}else{h(Te,ke);break}else c(Te,ke);ke=ke.sibling}We=Tv(De,Te.mode,We),We.return=Te,Te=We}return M(Te);case P:return De=sc(De),xr(Te,ke,De,We)}if(Z(De))return ft(Te,ke,De,We);if(V(De)){if(bt=V(De),typeof bt!="function")throw Error(a(150));return De=bt.call(De),jt(Te,ke,De,We)}if(typeof De.then=="function")return xr(Te,ke,Dp(De),We);if(De.$$typeof===N)return xr(Te,ke,Ep(Te,De),We);Rp(Te,De)}return typeof De=="string"&&De!==""||typeof De=="number"||typeof De=="bigint"?(De=""+De,ke!==null&&ke.tag===6?(h(Te,ke.sibling),We=_(ke,De),We.return=Te,Te=We):(h(Te,ke),We=Cv(De,Te.mode,We),We.return=Te,Te=We),M(Te)):h(Te,ke)}return function(Te,ke,De,We){try{z0=0;var bt=xr(Te,ke,De,We);return Bu=null,bt}catch(gt){if(gt===zu||gt===Op)throw gt;var Xt=Jn(29,gt,null,Te.mode);return Xt.lanes=We,Xt.return=Te,Xt}}}var oc=b4(!0),w4=b4(!1),rl=!1;function Bv(o){o.updateQueue={baseState:o.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function $v(o,c){o=o.updateQueue,c.updateQueue===o&&(c.updateQueue={baseState:o.baseState,firstBaseUpdate:o.firstBaseUpdate,lastBaseUpdate:o.lastBaseUpdate,shared:o.shared,callbacks:null})}function al(o){return{lane:o,tag:0,payload:null,callback:null,next:null}}function nl(o,c,h){var g=o.updateQueue;if(g===null)return null;if(g=g.shared,(er&2)!==0){var _=g.pending;return _===null?c.next=c:(c.next=_.next,_.next=c),g.pending=c,c=Sp(o),n4(o,null,h),c}return kp(o,g,c,h),Sp(o)}function $0(o,c,h){if(c=c.updateQueue,c!==null&&(c=c.shared,(h&4194048)!==0)){var g=c.lanes;g&=o.pendingLanes,h|=g,c.lanes=h,Qi(o,h)}}function Uv(o,c){var h=o.updateQueue,g=o.alternate;if(g!==null&&(g=g.updateQueue,h===g)){var _=null,S=null;if(h=h.firstBaseUpdate,h!==null){do{var M={lane:h.lane,tag:h.tag,payload:h.payload,callback:null,next:null};S===null?_=S=M:S=S.next=M,h=h.next}while(h!==null);S===null?_=S=c:S=S.next=c}else _=S=c;h={baseState:g.baseState,firstBaseUpdate:_,lastBaseUpdate:S,shared:g.shared,callbacks:g.callbacks},o.updateQueue=h;return}o=h.lastBaseUpdate,o===null?h.firstBaseUpdate=c:o.next=c,h.lastBaseUpdate=c}var Hv=!1;function U0(){if(Hv){var o=Iu;if(o!==null)throw o}}function H0(o,c,h,g){Hv=!1;var _=o.updateQueue;rl=!1;var S=_.firstBaseUpdate,M=_.lastBaseUpdate,J=_.shared.pending;if(J!==null){_.shared.pending=null;var we=J,Re=we.next;we.next=null,M===null?S=Re:M.next=Re,M=we;var qe=o.alternate;qe!==null&&(qe=qe.updateQueue,J=qe.lastBaseUpdate,J!==M&&(J===null?qe.firstBaseUpdate=Re:J.next=Re,qe.lastBaseUpdate=we))}if(S!==null){var Ve=_.baseState;M=0,qe=Re=we=null,J=S;do{var Ie=J.lane&-536870913,ze=Ie!==J.lane;if(ze?(Ht&Ie)===Ie:(g&Ie)===Ie){Ie!==0&&Ie===Lu&&(Hv=!0),qe!==null&&(qe=qe.next={lane:0,tag:J.tag,payload:J.payload,callback:null,next:null});e:{var ft=o,jt=J;Ie=c;var xr=h;switch(jt.tag){case 1:if(ft=jt.payload,typeof ft=="function"){Ve=ft.call(xr,Ve,Ie);break e}Ve=ft;break e;case 3:ft.flags=ft.flags&-65537|128;case 0:if(ft=jt.payload,Ie=typeof ft=="function"?ft.call(xr,Ve,Ie):ft,Ie==null)break e;Ve=m({},Ve,Ie);break e;case 2:rl=!0}}Ie=J.callback,Ie!==null&&(o.flags|=64,ze&&(o.flags|=8192),ze=_.callbacks,ze===null?_.callbacks=[Ie]:ze.push(Ie))}else ze={lane:Ie,tag:J.tag,payload:J.payload,callback:J.callback,next:null},qe===null?(Re=qe=ze,we=Ve):qe=qe.next=ze,M|=Ie;if(J=J.next,J===null){if(J=_.shared.pending,J===null)break;ze=J,J=ze.next,ze.next=null,_.lastBaseUpdate=ze,_.shared.pending=null}}while(!0);qe===null&&(we=Ve),_.baseState=we,_.firstBaseUpdate=Re,_.lastBaseUpdate=qe,S===null&&(_.shared.lanes=0),cl|=M,o.lanes=M,o.memoizedState=Ve}}function j4(o,c){if(typeof o!="function")throw Error(a(191,o));o.call(c)}function _4(o,c){var h=o.callbacks;if(h!==null)for(o.callbacks=null,o=0;oS?S:8;var M=U.T,J={};U.T=J,l1(o,!1,c,h);try{var we=_(),Re=U.S;if(Re!==null&&Re(J,we),we!==null&&typeof we=="object"&&typeof we.then=="function"){var qe=wI(we,g);V0(o,c,qe,rs(o))}else V0(o,c,g,rs(o))}catch(Ve){V0(o,c,{then:function(){},status:"rejected",reason:Ve},rs())}finally{ce.p=S,M!==null&&J.types!==null&&(M.types=J.types),U.T=M}}function CI(){}function i1(o,c,h,g){if(o.tag!==5)throw Error(a(476));var _=tN(o).queue;eN(o,_,c,xe,h===null?CI:function(){return rN(o),h(g)})}function tN(o){var c=o.memoizedState;if(c!==null)return c;c={memoizedState:xe,baseState:xe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:oo,lastRenderedState:xe},next:null};var h={};return c.next={memoizedState:h,baseState:h,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:oo,lastRenderedState:h},next:null},o.memoizedState=c,o=o.alternate,o!==null&&(o.memoizedState=c),c}function rN(o){var c=tN(o);c.next===null&&(c=o.alternate.memoizedState),V0(o,c.next.queue,{},rs())}function o1(){return za(uf)}function aN(){return Qr().memoizedState}function nN(){return Qr().memoizedState}function TI(o){for(var c=o.return;c!==null;){switch(c.tag){case 24:case 3:var h=rs();o=al(h);var g=nl(c,o,h);g!==null&&(Rn(g,c,h),$0(g,c,h)),c={cache:Mv()},o.payload=c;return}c=c.return}}function EI(o,c,h){var g=rs();h={lane:g,revertLane:0,gesture:null,action:h,hasEagerState:!1,eagerState:null,next:null},qp(o)?iN(c,h):(h=Sv(o,c,h,g),h!==null&&(Rn(h,o,g),oN(h,c,g)))}function sN(o,c,h){var g=rs();V0(o,c,h,g)}function V0(o,c,h,g){var _={lane:g,revertLane:0,gesture:null,action:h,hasEagerState:!1,eagerState:null,next:null};if(qp(o))iN(c,_);else{var S=o.alternate;if(o.lanes===0&&(S===null||S.lanes===0)&&(S=c.lastRenderedReducer,S!==null))try{var M=c.lastRenderedState,J=S(M,h);if(_.hasEagerState=!0,_.eagerState=J,Xn(J,M))return kp(o,c,_,0),_r===null&&_p(),!1}catch(we){}if(h=Sv(o,c,_,g),h!==null)return Rn(h,o,g),oN(h,c,g),!0}return!1}function l1(o,c,h,g){if(g={lane:2,revertLane:B1(),gesture:null,action:g,hasEagerState:!1,eagerState:null,next:null},qp(o)){if(c)throw Error(a(479))}else c=Sv(o,h,g,2),c!==null&&Rn(c,o,2)}function qp(o){var c=o.alternate;return o===Ct||c!==null&&c===Ct}function iN(o,c){Uu=Lp=!0;var h=o.pending;h===null?c.next=c:(c.next=h.next,h.next=c),o.pending=c}function oN(o,c,h){if((h&4194048)!==0){var g=c.lanes;g&=o.pendingLanes,h|=g,c.lanes=h,Qi(o,h)}}var G0={readContext:za,use:Bp,useCallback:Ur,useContext:Ur,useEffect:Ur,useImperativeHandle:Ur,useLayoutEffect:Ur,useInsertionEffect:Ur,useMemo:Ur,useReducer:Ur,useRef:Ur,useState:Ur,useDebugValue:Ur,useDeferredValue:Ur,useTransition:Ur,useSyncExternalStore:Ur,useId:Ur,useHostTransitionStatus:Ur,useFormState:Ur,useActionState:Ur,useOptimistic:Ur,useMemoCache:Ur,useCacheRefresh:Ur};G0.useEffectEvent=Ur;var lN={readContext:za,use:Bp,useCallback:function(o,c){return gn().memoizedState=[o,c===void 0?null:c],o},useContext:za,useEffect:W4,useImperativeHandle:function(o,c,h){h=h!=null?h.concat([o]):null,Up(4194308,4,Y4.bind(null,c,o),h)},useLayoutEffect:function(o,c){return Up(4194308,4,o,c)},useInsertionEffect:function(o,c){Up(4,2,o,c)},useMemo:function(o,c){var h=gn();c=c===void 0?null:c;var g=o();if(lc){ea(!0);try{o()}finally{ea(!1)}}return h.memoizedState=[g,c],g},useReducer:function(o,c,h){var g=gn();if(h!==void 0){var _=h(c);if(lc){ea(!0);try{h(c)}finally{ea(!1)}}}else _=c;return g.memoizedState=g.baseState=_,o={pending:null,lanes:0,dispatch:null,lastRenderedReducer:o,lastRenderedState:_},g.queue=o,o=o.dispatch=EI.bind(null,Ct,o),[g.memoizedState,o]},useRef:function(o){var c=gn();return o={current:o},c.memoizedState=o},useState:function(o){o=t1(o);var c=o.queue,h=sN.bind(null,Ct,c);return c.dispatch=h,[o.memoizedState,h]},useDebugValue:n1,useDeferredValue:function(o,c){var h=gn();return s1(h,o,c)},useTransition:function(){var o=t1(!1);return o=eN.bind(null,Ct,o.queue,!0,!1),gn().memoizedState=o,[!1,o]},useSyncExternalStore:function(o,c,h){var g=Ct,_=gn();if(Vt){if(h===void 0)throw Error(a(407));h=h()}else{if(h=c(),_r===null)throw Error(a(349));(Ht&127)!==0||E4(g,c,h)}_.memoizedState=h;var S={value:h,getSnapshot:c};return _.queue=S,W4(O4.bind(null,g,S,o),[o]),g.flags|=2048,qu(9,{destroy:void 0},A4.bind(null,g,S,h,c),null),h},useId:function(){var o=gn(),c=_r.identifierPrefix;if(Vt){var h=Ei,g=Ti;h=(g&~(1<<32-ma(g)-1)).toString(32)+h,c="_"+c+"R_"+h,h=Ip++,0<\/script>",S=S.removeChild(S.firstChild);break;case"select":S=typeof g.is=="string"?M.createElement("select",{is:g.is}):M.createElement("select"),g.multiple?S.multiple=!0:g.size&&(S.size=g.size);break;default:S=typeof g.is=="string"?M.createElement(_,{is:g.is}):M.createElement(_)}}S[ae]=c,S[ue]=g;e:for(M=c.child;M!==null;){if(M.tag===5||M.tag===6)S.appendChild(M.stateNode);else if(M.tag!==4&&M.tag!==27&&M.child!==null){M.child.return=M,M=M.child;continue}if(M===c)break e;for(;M.sibling===null;){if(M.return===null||M.return===c)break e;M=M.return}M.sibling.return=M.return,M=M.sibling}c.stateNode=S;e:switch($a(S,_,g),_){case"button":case"input":case"select":case"textarea":g=!!g.autoFocus;break e;case"img":g=!0;break e;default:g=!1}g&&co(c)}}return Tr(c),j1(c,c.type,o===null?null:o.memoizedProps,c.pendingProps,h),null;case 6:if(o&&c.stateNode!=null)o.memoizedProps!==g&&co(c);else{if(typeof g!="string"&&c.stateNode===null)throw Error(a(166));if(o=re.current,Fu(c)){if(o=c.stateNode,h=c.memoizedProps,g=null,_=Ia,_!==null)switch(_.tag){case 27:case 5:g=_.memoizedProps}o[ae]=c,o=!!(o.nodeValue===h||g!==null&&g.suppressHydrationWarning===!0||C3(o.nodeValue,h)),o||el(c,!0)}else o=um(o).createTextNode(g),o[ae]=c,c.stateNode=o}return Tr(c),null;case 31:if(h=c.memoizedState,o===null||o.memoizedState!==null){if(g=Fu(c),h!==null){if(o===null){if(!g)throw Error(a(318));if(o=c.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(a(557));o[ae]=c}else tc(),(c.flags&128)===0&&(c.memoizedState=null),c.flags|=4;Tr(c),o=!1}else h=Pv(),o!==null&&o.memoizedState!==null&&(o.memoizedState.hydrationErrors=h),o=!0;if(!o)return c.flags&256?(Zn(c),c):(Zn(c),null);if((c.flags&128)!==0)throw Error(a(558))}return Tr(c),null;case 13:if(g=c.memoizedState,o===null||o.memoizedState!==null&&o.memoizedState.dehydrated!==null){if(_=Fu(c),g!==null&&g.dehydrated!==null){if(o===null){if(!_)throw Error(a(318));if(_=c.memoizedState,_=_!==null?_.dehydrated:null,!_)throw Error(a(317));_[ae]=c}else tc(),(c.flags&128)===0&&(c.memoizedState=null),c.flags|=4;Tr(c),_=!1}else _=Pv(),o!==null&&o.memoizedState!==null&&(o.memoizedState.hydrationErrors=_),_=!0;if(!_)return c.flags&256?(Zn(c),c):(Zn(c),null)}return Zn(c),(c.flags&128)!==0?(c.lanes=h,c):(h=g!==null,o=o!==null&&o.memoizedState!==null,h&&(g=c.child,_=null,g.alternate!==null&&g.alternate.memoizedState!==null&&g.alternate.memoizedState.cachePool!==null&&(_=g.alternate.memoizedState.cachePool.pool),S=null,g.memoizedState!==null&&g.memoizedState.cachePool!==null&&(S=g.memoizedState.cachePool.pool),S!==_&&(g.flags|=2048)),h!==o&&h&&(c.child.flags|=8192),Yp(c,c.updateQueue),Tr(c),null);case 4:return se(),o===null&&q1(c.stateNode.containerInfo),Tr(c),null;case 10:return so(c.type),Tr(c),null;case 19:if(L(Jr),g=c.memoizedState,g===null)return Tr(c),null;if(_=(c.flags&128)!==0,S=g.rendering,S===null)if(_)Y0(g,!1);else{if(Hr!==0||o!==null&&(o.flags&128)!==0)for(o=c.child;o!==null;){if(S=Mp(o),S!==null){for(c.flags|=128,Y0(g,!1),o=S.updateQueue,c.updateQueue=o,Yp(c,o),c.subtreeFlags=0,o=h,h=c.child;h!==null;)s4(h,o),h=h.sibling;return H(Jr,Jr.current&1|2),Vt&&ao(c,g.treeForkCount),c.child}o=o.sibling}g.tail!==null&&tt()>em&&(c.flags|=128,_=!0,Y0(g,!1),c.lanes=4194304)}else{if(!_)if(o=Mp(S),o!==null){if(c.flags|=128,_=!0,o=o.updateQueue,c.updateQueue=o,Yp(c,o),Y0(g,!0),g.tail===null&&g.tailMode==="hidden"&&!S.alternate&&!Vt)return Tr(c),null}else 2*tt()-g.renderingStartTime>em&&h!==536870912&&(c.flags|=128,_=!0,Y0(g,!1),c.lanes=4194304);g.isBackwards?(S.sibling=c.child,c.child=S):(o=g.last,o!==null?o.sibling=S:c.child=S,g.last=S)}return g.tail!==null?(o=g.tail,g.rendering=o,g.tail=o.sibling,g.renderingStartTime=tt(),o.sibling=null,h=Jr.current,H(Jr,_?h&1|2:h&1),Vt&&ao(c,g.treeForkCount),o):(Tr(c),null);case 22:case 23:return Zn(c),Wv(),g=c.memoizedState!==null,o!==null?o.memoizedState!==null!==g&&(c.flags|=8192):g&&(c.flags|=8192),g?(h&536870912)!==0&&(c.flags&128)===0&&(Tr(c),c.subtreeFlags&6&&(c.flags|=8192)):Tr(c),h=c.updateQueue,h!==null&&Yp(c,h.retryQueue),h=null,o!==null&&o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(h=o.memoizedState.cachePool.pool),g=null,c.memoizedState!==null&&c.memoizedState.cachePool!==null&&(g=c.memoizedState.cachePool.pool),g!==h&&(c.flags|=2048),o!==null&&L(nc),null;case 24:return h=null,o!==null&&(h=o.memoizedState.cache),c.memoizedState.cache!==h&&(c.flags|=2048),so(ta),Tr(c),null;case 25:return null;case 30:return null}throw Error(a(156,c.tag))}function RI(o,c){switch(Av(c),c.tag){case 1:return o=c.flags,o&65536?(c.flags=o&-65537|128,c):null;case 3:return so(ta),se(),o=c.flags,(o&65536)!==0&&(o&128)===0?(c.flags=o&-65537|128,c):null;case 26:case 27:case 5:return _e(c),null;case 31:if(c.memoizedState!==null){if(Zn(c),c.alternate===null)throw Error(a(340));tc()}return o=c.flags,o&65536?(c.flags=o&-65537|128,c):null;case 13:if(Zn(c),o=c.memoizedState,o!==null&&o.dehydrated!==null){if(c.alternate===null)throw Error(a(340));tc()}return o=c.flags,o&65536?(c.flags=o&-65537|128,c):null;case 19:return L(Jr),null;case 4:return se(),null;case 10:return so(c.type),null;case 22:case 23:return Zn(c),Wv(),o!==null&&L(nc),o=c.flags,o&65536?(c.flags=o&-65537|128,c):null;case 24:return so(ta),null;case 25:return null;default:return null}}function PN(o,c){switch(Av(c),c.tag){case 3:so(ta),se();break;case 26:case 27:case 5:_e(c);break;case 4:se();break;case 31:c.memoizedState!==null&&Zn(c);break;case 13:Zn(c);break;case 19:L(Jr);break;case 10:so(c.type);break;case 22:case 23:Zn(c),Wv(),o!==null&&L(nc);break;case 24:so(ta)}}function X0(o,c){try{var h=c.updateQueue,g=h!==null?h.lastEffect:null;if(g!==null){var _=g.next;h=_;do{if((h.tag&o)===o){g=void 0;var S=h.create,M=h.inst;g=S(),M.destroy=g}h=h.next}while(h!==_)}}catch(J){cr(c,c.return,J)}}function ol(o,c,h){try{var g=c.updateQueue,_=g!==null?g.lastEffect:null;if(_!==null){var S=_.next;g=S;do{if((g.tag&o)===o){var M=g.inst,J=M.destroy;if(J!==void 0){M.destroy=void 0,_=c;var we=h,Re=J;try{Re()}catch(qe){cr(_,we,qe)}}}g=g.next}while(g!==S)}}catch(qe){cr(c,c.return,qe)}}function DN(o){var c=o.updateQueue;if(c!==null){var h=o.stateNode;try{_4(c,h)}catch(g){cr(o,o.return,g)}}}function RN(o,c,h){h.props=cc(o.type,o.memoizedProps),h.state=o.memoizedState;try{h.componentWillUnmount()}catch(g){cr(o,c,g)}}function J0(o,c){try{var h=o.ref;if(h!==null){switch(o.tag){case 26:case 27:case 5:var g=o.stateNode;break;case 30:g=o.stateNode;break;default:g=o.stateNode}typeof h=="function"?o.refCleanup=h(g):h.current=g}}catch(_){cr(o,c,_)}}function Ai(o,c){var h=o.ref,g=o.refCleanup;if(h!==null)if(typeof g=="function")try{g()}catch(_){cr(o,c,_)}finally{o.refCleanup=null,o=o.alternate,o!=null&&(o.refCleanup=null)}else if(typeof h=="function")try{h(null)}catch(_){cr(o,c,_)}else h.current=null}function FN(o){var c=o.type,h=o.memoizedProps,g=o.stateNode;try{e:switch(c){case"button":case"input":case"select":case"textarea":h.autoFocus&&g.focus();break e;case"img":h.src?g.src=h.src:h.srcSet&&(g.srcset=h.srcSet)}}catch(_){cr(o,o.return,_)}}function _1(o,c,h){try{var g=o.stateNode;rz(g,o.type,h,c),g[ue]=c}catch(_){cr(o,o.return,_)}}function MN(o){return o.tag===5||o.tag===3||o.tag===26||o.tag===27&&pl(o.type)||o.tag===4}function k1(o){e:for(;;){for(;o.sibling===null;){if(o.return===null||MN(o.return))return null;o=o.return}for(o.sibling.return=o.return,o=o.sibling;o.tag!==5&&o.tag!==6&&o.tag!==18;){if(o.tag===27&&pl(o.type)||o.flags&2||o.child===null||o.tag===4)continue e;o.child.return=o,o=o.child}if(!(o.flags&2))return o.stateNode}}function S1(o,c,h){var g=o.tag;if(g===5||g===6)o=o.stateNode,c?(h.nodeType===9?h.body:h.nodeName==="HTML"?h.ownerDocument.body:h).insertBefore(o,c):(c=h.nodeType===9?h.body:h.nodeName==="HTML"?h.ownerDocument.body:h,c.appendChild(o),h=h._reactRootContainer,h!=null||c.onclick!==null||(c.onclick=eo));else if(g!==4&&(g===27&&pl(o.type)&&(h=o.stateNode,c=null),o=o.child,o!==null))for(S1(o,c,h),o=o.sibling;o!==null;)S1(o,c,h),o=o.sibling}function Xp(o,c,h){var g=o.tag;if(g===5||g===6)o=o.stateNode,c?h.insertBefore(o,c):h.appendChild(o);else if(g!==4&&(g===27&&pl(o.type)&&(h=o.stateNode),o=o.child,o!==null))for(Xp(o,c,h),o=o.sibling;o!==null;)Xp(o,c,h),o=o.sibling}function LN(o){var c=o.stateNode,h=o.memoizedProps;try{for(var g=o.type,_=c.attributes;_.length;)c.removeAttributeNode(_[0]);$a(c,g,h),c[ae]=o,c[ue]=h}catch(S){cr(o,o.return,S)}}var uo=!1,na=!1,N1=!1,IN=typeof WeakSet=="function"?WeakSet:Set,Na=null;function FI(o,c){if(o=o.containerInfo,G1=xm,o=XS(o),vv(o)){if("selectionStart"in o)var h={start:o.selectionStart,end:o.selectionEnd};else e:{h=(h=o.ownerDocument)&&h.defaultView||window;var g=h.getSelection&&h.getSelection();if(g&&g.rangeCount!==0){h=g.anchorNode;var _=g.anchorOffset,S=g.focusNode;g=g.focusOffset;try{h.nodeType,S.nodeType}catch(jt){h=null;break e}var M=0,J=-1,we=-1,Re=0,qe=0,Ve=o,Ie=null;t:for(;;){for(var ze;Ve!==h||_!==0&&Ve.nodeType!==3||(J=M+_),Ve!==S||g!==0&&Ve.nodeType!==3||(we=M+g),Ve.nodeType===3&&(M+=Ve.nodeValue.length),(ze=Ve.firstChild)!==null;)Ie=Ve,Ve=ze;for(;;){if(Ve===o)break t;if(Ie===h&&++Re===_&&(J=M),Ie===S&&++qe===g&&(we=M),(ze=Ve.nextSibling)!==null)break;Ve=Ie,Ie=Ve.parentNode}Ve=ze}h=J===-1||we===-1?null:{start:J,end:we}}else h=null}h=h||{start:0,end:0}}else h=null;for(K1={focusedElem:o,selectionRange:h},xm=!1,Na=c;Na!==null;)if(c=Na,o=c.child,(c.subtreeFlags&1028)!==0&&o!==null)o.return=c,Na=o;else for(;Na!==null;){switch(c=Na,S=c.alternate,o=c.flags,c.tag){case 0:if((o&4)!==0&&(o=c.updateQueue,o=o!==null?o.events:null,o!==null))for(h=0;h title"))),$a(S,g,h),S[ae]=o,lt(S),g=S;break e;case"link":var M=q3("link","href",_).get(g+(h.href||""));if(M){for(var J=0;Jxr&&(M=xr,xr=jt,jt=M);var Te=KS(J,jt),ke=KS(J,xr);if(Te&&ke&&(ze.rangeCount!==1||ze.anchorNode!==Te.node||ze.anchorOffset!==Te.offset||ze.focusNode!==ke.node||ze.focusOffset!==ke.offset)){var De=Ve.createRange();De.setStart(Te.node,Te.offset),ze.removeAllRanges(),jt>xr?(ze.addRange(De),ze.extend(ke.node,ke.offset)):(De.setEnd(ke.node,ke.offset),ze.addRange(De))}}}}for(Ve=[],ze=J;ze=ze.parentNode;)ze.nodeType===1&&Ve.push({element:ze,left:ze.scrollLeft,top:ze.scrollTop});for(typeof J.focus=="function"&&J.focus(),J=0;Jh?32:h,U.T=null,h=D1,D1=null;var S=dl,M=go;if(ga=0,Yu=dl=null,go=0,(er&6)!==0)throw Error(a(331));var J=er;if(er|=4,YN(S.current),VN(S,S.current,M,h),er=J,af(0,!1),jr&&typeof jr.onPostCommitFiberRoot=="function")try{jr.onPostCommitFiberRoot(Xr,S)}catch(we){}return!0}finally{ce.p=_,U.T=g,h3(o,c)}}function m3(o,c,h){c=Ns(h,c),c=f1(o.stateNode,c,2),o=nl(o,c,2),o!==null&&(Ni(o,2),Oi(o))}function cr(o,c,h){if(o.tag===3)m3(o,o,h);else for(;c!==null;){if(c.tag===3){m3(c,o,h);break}else if(c.tag===1){var g=c.stateNode;if(typeof c.type.getDerivedStateFromError=="function"||typeof g.componentDidCatch=="function"&&(ul===null||!ul.has(g))){o=Ns(h,o),h=gN(2),g=nl(c,h,2),g!==null&&(xN(h,g,c,o),Ni(g,2),Oi(g));break}}c=c.return}}function L1(o,c,h){var g=o.pingCache;if(g===null){g=o.pingCache=new II;var _=new Set;g.set(c,_)}else _=g.get(c),_===void 0&&(_=new Set,g.set(c,_));_.has(h)||(E1=!0,_.add(h),o=HI.bind(null,o,c,h),c.then(o,o))}function HI(o,c,h){var g=o.pingCache;g!==null&&g.delete(c),o.pingedLanes|=o.suspendedLanes&h,o.warmLanes&=~h,_r===o&&(Ht&h)===h&&(Hr===4||Hr===3&&(Ht&62914560)===Ht&&300>tt()-Zp?(er&2)===0&&Xu(o,0):A1|=h,Ku===Ht&&(Ku=0)),Oi(o)}function g3(o,c){c===0&&(c=Gl()),o=Zl(o,c),o!==null&&(Ni(o,c),Oi(o))}function qI(o){var c=o.memoizedState,h=0;c!==null&&(h=c.retryLane),g3(o,h)}function WI(o,c){var h=0;switch(o.tag){case 31:case 13:var g=o.stateNode,_=o.memoizedState;_!==null&&(h=_.retryLane);break;case 19:g=o.stateNode;break;case 22:g=o.stateNode._retryCache;break;default:throw Error(a(314))}g!==null&&g.delete(c),g3(o,h)}function VI(o,c){return Ce(o,c)}var im=null,Qu=null,I1=!1,om=!1,z1=!1,hl=0;function Oi(o){o!==Qu&&o.next===null&&(Qu===null?im=Qu=o:Qu=Qu.next=o),om=!0,I1||(I1=!0,KI())}function af(o,c){if(!z1&&om){z1=!0;do for(var h=!1,g=im;g!==null;){if(o!==0){var _=g.pendingLanes;if(_===0)var S=0;else{var M=g.suspendedLanes,J=g.pingedLanes;S=(1<<31-ma(42|o)+1)-1,S&=_&~(M&~J),S=S&201326741?S&201326741|1:S?S|2:0}S!==0&&(h=!0,b3(g,S))}else S=Ht,S=ws(g,g===_r?S:0,g.cancelPendingCommit!==null||g.timeoutHandle!==-1),(S&3)===0||Si(g,S)||(h=!0,b3(g,S));g=g.next}while(h);z1=!1}}function GI(){x3()}function x3(){om=I1=!1;var o=0;hl!==0&&nz()&&(o=hl);for(var c=tt(),h=null,g=im;g!==null;){var _=g.next,S=y3(g,c);S===0?(g.next=null,h===null?im=_:h.next=_,_===null&&(Qu=h)):(h=g,(o!==0||(S&3)!==0)&&(om=!0)),g=_}ga!==0&&ga!==5||af(o),hl!==0&&(hl=0)}function y3(o,c){for(var h=o.suspendedLanes,g=o.pingedLanes,_=o.expirationTimes,S=o.pendingLanes&-62914561;0J)break;var qe=we.transferSize,Ve=we.initiatorType;qe&&T3(Ve)&&(we=we.responseEnd,M+=qe*(we title"):null)}function wz(o,c,h){if(h===1||c.itemProp!=null)return!1;switch(o){case"meta":case"title":return!0;case"style":if(typeof c.precedence!="string"||typeof c.href!="string"||c.href==="")break;return!0;case"link":if(typeof c.rel!="string"||typeof c.href!="string"||c.href===""||c.onLoad||c.onError)break;return c.rel==="stylesheet"?(o=c.disabled,typeof c.precedence=="string"&&o==null):!0;case"script":if(c.async&&typeof c.async!="function"&&typeof c.async!="symbol"&&!c.onLoad&&!c.onError&&c.src&&typeof c.src=="string")return!0}return!1}function V3(o){return!(o.type==="stylesheet"&&(o.state.loading&3)===0)}function jz(o,c,h,g){if(h.type==="stylesheet"&&(typeof g.media!="string"||matchMedia(g.media).matches!==!1)&&(h.state.loading&4)===0){if(h.instance===null){var _=ed(g.href),S=c.querySelector(lf(_));if(S){c=S._p,c!==null&&typeof c=="object"&&typeof c.then=="function"&&(o.count++,o=pm.bind(o),c.then(o,o)),h.state.loading|=4,h.instance=S,lt(S);return}S=c.ownerDocument||c,g=U3(g),(_=Ps.get(_))&&tb(g,_),S=S.createElement("link"),lt(S);var M=S;M._p=new Promise(function(J,we){M.onload=J,M.onerror=we}),$a(S,"link",g),h.instance=S}o.stylesheets===null&&(o.stylesheets=new Map),o.stylesheets.set(h,c),(c=h.state.preload)&&(h.state.loading&3)===0&&(o.count++,h=pm.bind(o),c.addEventListener("load",h),c.addEventListener("error",h))}}var ab=0;function _z(o,c){return o.stylesheets&&o.count===0&&gm(o,o.stylesheets),0ab?50:800)+c);return o.unsuspend=h,function(){o.unsuspend=null,clearTimeout(g),clearTimeout(_)}}:null}function pm(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)gm(this,this.stylesheets);else if(this.unsuspend){var o=this.unsuspend;this.unsuspend=null,o()}}}var mm=null;function gm(o,c){o.stylesheets=null,o.unsuspend!==null&&(o.count++,mm=new Map,c.forEach(kz,o),mm=null,pm.call(o))}function kz(o,c){if(!(c.state.loading&4)){var h=mm.get(o);if(h)var g=h.get(null);else{h=new Map,mm.set(o,h);for(var _=o.querySelectorAll("link[data-precedence],style[data-precedence]"),S=0;S<_.length;S++){var M=_[S];(M.nodeName==="LINK"||M.getAttribute("media")!=="not all")&&(h.set(M.dataset.precedence,M),g=M)}g&&h.set(null,g)}_=c.instance,M=_.getAttribute("data-precedence"),S=h.get(M)||g,S===g&&h.set(null,_),h.set(M,_),this.count++,g=pm.bind(this),_.addEventListener("load",g),_.addEventListener("error",g),S?S.parentNode.insertBefore(_,S.nextSibling):(o=o.nodeType===9?o.head:o,o.insertBefore(_,o.firstChild)),c.state.loading|=4}}var uf={$$typeof:N,Provider:null,Consumer:null,_currentValue:xe,_currentValue2:xe,_threadCount:0};function Sz(o,c,h,g,_,S,M,J,we){this.tag=1,this.containerInfo=o,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=Yo(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Yo(0),this.hiddenUpdates=Yo(null),this.identifierPrefix=g,this.onUncaughtError=_,this.onCaughtError=S,this.onRecoverableError=M,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=we,this.incompleteTransitions=new Map}function G3(o,c,h,g,_,S,M,J,we,Re,qe,Ve){return o=new Sz(o,c,h,M,we,Re,qe,Ve,J),c=1,S===!0&&(c|=24),S=Jn(3,null,null,c),o.current=S,S.stateNode=o,c=Mv(),c.refCount++,o.pooledCache=c,c.refCount++,S.memoizedState={element:g,isDehydrated:h,cache:c},Bv(S),o}function K3(o){return o?(o=Pu,o):Pu}function Y3(o,c,h,g,_,S){_=K3(_),g.context===null?g.context=_:g.pendingContext=_,g=al(c),g.payload={element:h},S=S===void 0?null:S,S!==null&&(g.callback=S),h=nl(o,g,c),h!==null&&(Rn(h,o,c),$0(h,o,c))}function X3(o,c){if(o=o.memoizedState,o!==null&&o.dehydrated!==null){var h=o.retryLane;o.retryLane=h!==0&&htypeof e=="string",gf=()=>{let e,t;const r=new Promise((a,s)=>{e=a,t=s});return r.resolve=e,r.reject=t,r},vC=e=>e==null?"":""+e,Kz=(e,t,r)=>{e.forEach(a=>{t[a]&&(r[a]=t[a])})},Yz=/###/g,bC=e=>e&&e.indexOf("###")>-1?e.replace(Yz,"."):e,wC=e=>!e||kt(e),Wf=(e,t,r)=>{const a=kt(t)?t.split("."):t;let s=0;for(;s{const{obj:a,k:s}=Wf(e,t,Object);if(a!==void 0||t.length===1){a[s]=r;return}let i=t[t.length-1],l=t.slice(0,t.length-1),u=Wf(e,l,Object);for(;u.obj===void 0&&l.length;)i=`${l[l.length-1]}.${i}`,l=l.slice(0,l.length-1),u=Wf(e,l,Object),u!=null&&u.obj&&typeof u.obj[`${u.k}.${i}`]!="undefined"&&(u.obj=void 0);u.obj[`${u.k}.${i}`]=r},Xz=(e,t,r,a)=>{const{obj:s,k:i}=Wf(e,t,Object);s[i]=s[i]||[],s[i].push(r)},Ng=(e,t)=>{const{obj:r,k:a}=Wf(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,a))return r[a]},Jz=(e,t,r)=>{const a=Ng(e,r);return a!==void 0?a:Ng(t,r)},bO=(e,t,r)=>{for(const a in t)a!=="__proto__"&&a!=="constructor"&&(a in e?kt(e[a])||e[a]instanceof String||kt(t[a])||t[a]instanceof String?r&&(e[a]=t[a]):bO(e[a],t[a],r):e[a]=t[a]);return e},hc=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var Qz={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const Zz=e=>kt(e)?e.replace(/[&<>"'\/]/g,t=>Qz[t]):e;class eB{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){const r=this.regExpMap.get(t);if(r!==void 0)return r;const a=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,a),this.regExpQueue.push(t),a}}const tB=[" ",",","?","!",";"],rB=new eB(20),aB=(e,t,r)=>{t=t||"",r=r||"";const a=tB.filter(l=>t.indexOf(l)<0&&r.indexOf(l)<0);if(a.length===0)return!0;const s=rB.getRegExp(`(${a.map(l=>l==="?"?"\\?":l).join("|")})`);let i=!s.test(e);if(!i){const l=e.indexOf(r);l>0&&!s.test(e.substring(0,l))&&(i=!0)}return i},Ew=(e,t,r=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;const a=t.split(r);let s=e;for(let i=0;i-1&&de==null?void 0:e.replace(/_/g,"-"),nB={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var r,a;(a=(r=console==null?void 0:console[e])==null?void 0:r.apply)==null||a.call(r,console,t)}};class Cg{constructor(t,r={}){this.init(t,r)}init(t,r={}){this.prefix=r.prefix||"i18next:",this.logger=t||nB,this.options=r,this.debug=r.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,r,a,s){return s&&!this.debug?null:(kt(t[0])&&(t[0]=`${a}${this.prefix} ${t[0]}`),this.logger[r](t))}create(t){return new Cg(this.logger,ee({prefix:`${this.prefix}:${t}:`},this.options))}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new Cg(this.logger,t)}}var zi=new Cg;let qx=class{constructor(){this.observers={}}on(t,r){return t.split(" ").forEach(a=>{this.observers[a]||(this.observers[a]=new Map);const s=this.observers[a].get(r)||0;this.observers[a].set(r,s+1)}),this}off(t,r){if(this.observers[t]){if(!r){delete this.observers[t];return}this.observers[t].delete(r)}}emit(t,...r){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([s,i])=>{for(let l=0;l{for(let l=0;l-1&&this.options.ns.splice(r,1)}getResource(t,r,a,s={}){var f,p;const i=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,l=s.ignoreJSONStructure!==void 0?s.ignoreJSONStructure:this.options.ignoreJSONStructure;let u;t.indexOf(".")>-1?u=t.split("."):(u=[t,r],a&&(Array.isArray(a)?u.push(...a):kt(a)&&i?u.push(...a.split(i)):u.push(a)));const d=Ng(this.data,u);return!d&&!r&&!a&&t.indexOf(".")>-1&&(t=u[0],r=u[1],a=u.slice(2).join(".")),d||!l||!kt(a)?d:Ew((p=(f=this.data)==null?void 0:f[t])==null?void 0:p[r],a,i)}addResource(t,r,a,s,i={silent:!1}){const l=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator;let u=[t,r];a&&(u=u.concat(l?a.split(l):a)),t.indexOf(".")>-1&&(u=t.split("."),s=r,r=u[1]),this.addNamespaces(r),jC(this.data,u,s),i.silent||this.emit("added",t,r,a,s)}addResources(t,r,a,s={silent:!1}){for(const i in a)(kt(a[i])||Array.isArray(a[i]))&&this.addResource(t,r,i,a[i],{silent:!0});s.silent||this.emit("added",t,r,a)}addResourceBundle(t,r,a,s,i,l={silent:!1,skipCopy:!1}){let u=[t,r];t.indexOf(".")>-1&&(u=t.split("."),s=a,a=r,r=u[1]),this.addNamespaces(r);let d=Ng(this.data,u)||{};l.skipCopy||(a=JSON.parse(JSON.stringify(a))),s?bO(d,a,i):d=ee(ee({},d),a),jC(this.data,u,d),l.silent||this.emit("added",t,r,a)}removeResourceBundle(t,r){this.hasResourceBundle(t,r)&&delete this.data[t][r],this.removeNamespaces(r),this.emit("removed",t,r)}hasResourceBundle(t,r){return this.getResource(t,r)!==void 0}getResourceBundle(t,r){return r||(r=this.options.defaultNS),this.getResource(t,r)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){const r=this.getDataByLanguage(t);return!!(r&&Object.keys(r)||[]).find(s=>r[s]&&Object.keys(r[s]).length>0)}toJSON(){return this.data}}var wO={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,a,s){return e.forEach(i=>{var l,u;t=(u=(l=this.processors[i])==null?void 0:l.process(t,r,a,s))!=null?u:t}),t}};const jO=Symbol("i18next/PATH_KEY");function sB(){const e=[],t=Object.create(null);let r;return t.get=(a,s)=>{var i;return(i=r==null?void 0:r.revoke)==null||i.call(r),s===jO?e:(e.push(s),r=Proxy.revocable(a,t),r.proxy)},Proxy.revocable(Object.create(null),t).proxy}function Md(e,t){var i,l;const{[jO]:r}=e(sB()),a=(i=t==null?void 0:t.keySeparator)!=null?i:".",s=(l=t==null?void 0:t.nsSeparator)!=null?l:":";if(r.length>1&&s){const u=t==null?void 0:t.ns,d=Array.isArray(u)?u:null;if(d&&d.length>1&&d.slice(1).includes(r[0]))return`${r[0]}${s}${r.slice(1).join(a)}`}return r.join(a)}const kC={},yb=e=>!kt(e)&&typeof e!="boolean"&&typeof e!="number";class Tg extends qx{constructor(t,r={}){super(),Kz(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=zi.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t,r={interpolation:{}}){const a=ee({},r);if(t==null)return!1;const s=this.resolve(t,a);if((s==null?void 0:s.res)===void 0)return!1;const i=yb(s.res);return!(a.returnObjects===!1&&i)}extractFromKey(t,r){let a=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;a===void 0&&(a=":");const s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator;let i=r.ns||this.options.defaultNS||[];const l=a&&t.indexOf(a)>-1,u=!this.options.userDefinedKeySeparator&&!r.keySeparator&&!this.options.userDefinedNsSeparator&&!r.nsSeparator&&!aB(t,a,s);if(l&&!u){const d=t.match(this.interpolator.nestingRegexp);if(d&&d.length>0)return{key:t,namespaces:kt(i)?[i]:i};const f=t.split(a);(a!==s||a===s&&this.options.ns.indexOf(f[0])>-1)&&(i=f.shift()),t=f.join(s)}return{key:t,namespaces:kt(i)?[i]:i}}translate(t,r,a){let s=typeof r=="object"?ee({},r):r;if(typeof s!="object"&&this.options.overloadTranslationOptionHandler&&(s=this.options.overloadTranslationOptionHandler(arguments)),typeof s=="object"&&(s=ee({},s)),s||(s={}),t==null)return"";typeof t=="function"&&(t=Md(t,ee(ee({},this.options),s))),Array.isArray(t)||(t=[String(t)]),t=t.map(ne=>typeof ne=="function"?Md(ne,ee(ee({},this.options),s)):String(ne));const i=s.returnDetails!==void 0?s.returnDetails:this.options.returnDetails,l=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,{key:u,namespaces:d}=this.extractFromKey(t[t.length-1],s),f=d[d.length-1];let p=s.nsSeparator!==void 0?s.nsSeparator:this.options.nsSeparator;p===void 0&&(p=":");const m=s.lng||this.language,x=s.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if((m==null?void 0:m.toLowerCase())==="cimode")return x?i?{res:`${f}${p}${u}`,usedKey:u,exactUsedKey:u,usedLng:m,usedNS:f,usedParams:this.getUsedParamsDetails(s)}:`${f}${p}${u}`:i?{res:u,usedKey:u,exactUsedKey:u,usedLng:m,usedNS:f,usedParams:this.getUsedParamsDetails(s)}:u;const v=this.resolve(t,s);let b=v==null?void 0:v.res;const w=(v==null?void 0:v.usedKey)||u,j=(v==null?void 0:v.exactUsedKey)||u,k=["[object Number]","[object Function]","[object RegExp]"],C=s.joinArrays!==void 0?s.joinArrays:this.options.joinArrays,N=!this.i18nFormat||this.i18nFormat.handleAsObject,O=s.count!==void 0&&!kt(s.count),E=Tg.hasDefaultValue(s),A=O?this.pluralResolver.getSuffix(m,s.count,s):"",T=s.ordinal&&O?this.pluralResolver.getSuffix(m,s.count,{ordinal:!1}):"",P=O&&!s.ordinal&&s.count===0,D=P&&s[`defaultValue${this.options.pluralSeparator}zero`]||s[`defaultValue${A}`]||s[`defaultValue${T}`]||s.defaultValue;let z=b;N&&!b&&E&&(z=D);const G=yb(z),V=Object.prototype.toString.apply(z);if(N&&z&&G&&k.indexOf(V)<0&&!(kt(C)&&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 ne=this.options.returnedObjectHandler?this.options.returnedObjectHandler(w,z,Se(ee({},s),{ns:d})):`key '${u} (${this.language})' returned an object instead of string.`;return i?(v.res=ne,v.usedParams=this.getUsedParamsDetails(s),v):ne}if(l){const ne=Array.isArray(z),ge=ne?[]:{},Z=ne?j:w;for(const U in z)if(Object.prototype.hasOwnProperty.call(z,U)){const ce=`${Z}${l}${U}`;E&&!b?ge[U]=this.translate(ce,Se(ee({},s),{defaultValue:yb(D)?D[U]:void 0,joinArrays:!1,ns:d})):ge[U]=this.translate(ce,Se(ee({},s),{joinArrays:!1,ns:d})),ge[U]===ce&&(ge[U]=z[U])}b=ge}}else if(N&&kt(C)&&Array.isArray(b))b=b.join(C),b&&(b=this.extendTranslation(b,t,s,a));else{let ne=!1,ge=!1;!this.isValidLookup(b)&&E&&(ne=!0,b=D),this.isValidLookup(b)||(ge=!0,b=u);const U=(s.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&ge?void 0:b,ce=E&&D!==b&&this.options.updateMissing;if(ge||ne||ce){if(this.logger.log(ce?"updateKey":"missingKey",m,f,u,ce?D:b),l){const oe=this.resolve(u,Se(ee({},s),{keySeparator:!1}));oe&&oe.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 xe=[];const be=this.languageUtils.getFallbackCodes(this.options.fallbackLng,s.lng||this.language);if(this.options.saveMissingTo==="fallback"&&be&&be[0])for(let oe=0;oe{var Y;const K=E&&H!==b?H:U;this.options.missingKeyHandler?this.options.missingKeyHandler(oe,f,L,K,ce,s):(Y=this.backendConnector)!=null&&Y.saveMissing&&this.backendConnector.saveMissing(oe,f,L,K,ce,s),this.emit("missingKey",oe,f,L,b)};this.options.saveMissing&&(this.options.saveMissingPlurals&&O?xe.forEach(oe=>{const L=this.pluralResolver.getSuffixes(oe,s);P&&s[`defaultValue${this.options.pluralSeparator}zero`]&&L.indexOf(`${this.options.pluralSeparator}zero`)<0&&L.push(`${this.options.pluralSeparator}zero`),L.forEach(H=>{me([oe],u+H,s[`defaultValue${H}`]||D)})}):me(xe,u,D))}b=this.extendTranslation(b,t,s,v,a),ge&&b===u&&this.options.appendNamespaceToMissingKey&&(b=`${f}${p}${u}`),(ge||ne)&&this.options.parseMissingKeyHandler&&(b=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${f}${p}${u}`:u,ne?b:void 0,s))}return i?(v.res=b,v.usedParams=this.getUsedParamsDetails(s),v):b}extendTranslation(t,r,a,s,i){var d,f;if((d=this.i18nFormat)!=null&&d.parse)t=this.i18nFormat.parse(t,ee(ee({},this.options.interpolation.defaultVariables),a),a.lng||this.language||s.usedLng,s.usedNS,s.usedKey,{resolved:s});else if(!a.skipInterpolation){a.interpolation&&this.interpolator.init(Se(ee({},a),{interpolation:ee(ee({},this.options.interpolation),a.interpolation)}));const p=kt(t)&&(((f=a==null?void 0:a.interpolation)==null?void 0:f.skipOnVariables)!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let m;if(p){const v=t.match(this.interpolator.nestingRegexp);m=v&&v.length}let x=a.replace&&!kt(a.replace)?a.replace:a;if(this.options.interpolation.defaultVariables&&(x=ee(ee({},this.options.interpolation.defaultVariables),x)),t=this.interpolator.interpolate(t,x,a.lng||this.language||s.usedLng,a),p){const v=t.match(this.interpolator.nestingRegexp),b=v&&v.length;m(i==null?void 0:i[0])===v[0]&&!a.context?(this.logger.warn(`It seems you are nesting recursively key: ${v[0]} in key: ${r[0]}`),null):this.translate(...v,r),a)),a.interpolation&&this.interpolator.reset()}const l=a.postProcess||this.options.postProcess,u=kt(l)?[l]:l;return t!=null&&(u!=null&&u.length)&&a.applyPostProcessor!==!1&&(t=wO.handle(u,t,r,this.options&&this.options.postProcessPassResolved?ee({i18nResolved:Se(ee({},s),{usedParams:this.getUsedParamsDetails(a)})},a):a,this)),t}resolve(t,r={}){let a,s,i,l,u;return kt(t)&&(t=[t]),Array.isArray(t)&&(t=t.map(d=>typeof d=="function"?Md(d,ee(ee({},this.options),r)):d)),t.forEach(d=>{if(this.isValidLookup(a))return;const f=this.extractFromKey(d,r),p=f.key;s=p;let m=f.namespaces;this.options.fallbackNS&&(m=m.concat(this.options.fallbackNS));const x=r.count!==void 0&&!kt(r.count),v=x&&!r.ordinal&&r.count===0,b=r.context!==void 0&&(kt(r.context)||typeof r.context=="number")&&r.context!=="",w=r.lngs?r.lngs:this.languageUtils.toResolveHierarchy(r.lng||this.language,r.fallbackLng);m.forEach(j=>{var k,C;this.isValidLookup(a)||(u=j,!kC[`${w[0]}-${j}`]&&((k=this.utils)!=null&&k.hasLoadedNamespace)&&!((C=this.utils)!=null&&C.hasLoadedNamespace(u))&&(kC[`${w[0]}-${j}`]=!0,this.logger.warn(`key "${s}" for languages "${w.join(", ")}" won't get resolved as namespace "${u}" 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!!!")),w.forEach(N=>{var A;if(this.isValidLookup(a))return;l=N;const O=[p];if((A=this.i18nFormat)!=null&&A.addLookupKeys)this.i18nFormat.addLookupKeys(O,p,N,j,r);else{let T;x&&(T=this.pluralResolver.getSuffix(N,r.count,r));const P=`${this.options.pluralSeparator}zero`,D=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(x&&(r.ordinal&&T.indexOf(D)===0&&O.push(p+T.replace(D,this.options.pluralSeparator)),O.push(p+T),v&&O.push(p+P)),b){const z=`${p}${this.options.contextSeparator||"_"}${r.context}`;O.push(z),x&&(r.ordinal&&T.indexOf(D)===0&&O.push(z+T.replace(D,this.options.pluralSeparator)),O.push(z+T),v&&O.push(z+P))}}let E;for(;E=O.pop();)this.isValidLookup(a)||(i=E,a=this.getResource(N,j,E,r))}))})}),{res:a,usedKey:s,exactUsedKey:i,usedLng:l,usedNS:u}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,r,a,s={}){var i;return(i=this.i18nFormat)!=null&&i.getResource?this.i18nFormat.getResource(t,r,a,s):this.resourceStore.getResource(t,r,a,s)}getUsedParamsDetails(t={}){const r=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],a=t.replace&&!kt(t.replace);let s=a?t.replace:t;if(a&&typeof t.count!="undefined"&&(s.count=t.count),this.options.interpolation.defaultVariables&&(s=ee(ee({},this.options.interpolation.defaultVariables),s)),!a){s=ee({},s);for(const i of r)delete s[i]}return s}static hasDefaultValue(t){const r="defaultValue";for(const a in t)if(Object.prototype.hasOwnProperty.call(t,a)&&r===a.substring(0,r.length)&&t[a]!==void 0)return!0;return!1}}class SC{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=zi.create("languageUtils")}getScriptPartFromCode(t){if(t=ah(t),!t||t.indexOf("-")<0)return null;const r=t.split("-");return r.length===2||(r.pop(),r[r.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(r.join("-"))}getLanguagePartFromCode(t){if(t=ah(t),!t||t.indexOf("-")<0)return t;const r=t.split("-");return this.formatLanguageCode(r[0])}formatLanguageCode(t){if(kt(t)&&t.indexOf("-")>-1){let r;try{r=Intl.getCanonicalLocales(t)[0]}catch(a){}return r&&this.options.lowerCaseLng&&(r=r.toLowerCase()),r||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let r;return t.forEach(a=>{if(r)return;const s=this.formatLanguageCode(a);(!this.options.supportedLngs||this.isSupportedCode(s))&&(r=s)}),!r&&this.options.supportedLngs&&t.forEach(a=>{if(r)return;const s=this.getScriptPartFromCode(a);if(this.isSupportedCode(s))return r=s;const i=this.getLanguagePartFromCode(a);if(this.isSupportedCode(i))return r=i;r=this.options.supportedLngs.find(l=>{if(l===i)return l;if(!(l.indexOf("-")<0&&i.indexOf("-")<0)&&(l.indexOf("-")>0&&i.indexOf("-")<0&&l.substring(0,l.indexOf("-"))===i||l.indexOf(i)===0&&i.length>1))return l})}),r||(r=this.getFallbackCodes(this.options.fallbackLng)[0]),r}getFallbackCodes(t,r){if(!t)return[];if(typeof t=="function"&&(t=t(r)),kt(t)&&(t=[t]),Array.isArray(t))return t;if(!r)return t.default||[];let a=t[r];return a||(a=t[this.getScriptPartFromCode(r)]),a||(a=t[this.formatLanguageCode(r)]),a||(a=t[this.getLanguagePartFromCode(r)]),a||(a=t.default),a||[]}toResolveHierarchy(t,r){const a=this.getFallbackCodes((r===!1?[]:r)||this.options.fallbackLng||[],t),s=[],i=l=>{l&&(this.isSupportedCode(l)?s.push(l):this.logger.warn(`rejecting language code not found in supportedLngs: ${l}`))};return kt(t)&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&i(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&i(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&i(this.getLanguagePartFromCode(t))):kt(t)&&i(this.formatLanguageCode(t)),a.forEach(l=>{s.indexOf(l)<0&&i(this.formatLanguageCode(l))}),s}}const NC={zero:0,one:1,two:2,few:3,many:4,other:5},CC={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class iB{constructor(t,r={}){this.languageUtils=t,this.options=r,this.logger=zi.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,r={}){const a=ah(t==="dev"?"en":t),s=r.ordinal?"ordinal":"cardinal",i=JSON.stringify({cleanedCode:a,type:s});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let l;try{l=new Intl.PluralRules(a,{type:s})}catch(u){if(typeof Intl=="undefined")return this.logger.error("No Intl support, please use an Intl polyfill!"),CC;if(!t.match(/-|_/))return CC;const d=this.languageUtils.getLanguagePartFromCode(t);l=this.getRule(d,r)}return this.pluralRulesCache[i]=l,l}needsPlural(t,r={}){let a=this.getRule(t,r);return a||(a=this.getRule("dev",r)),(a==null?void 0:a.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(t,r,a={}){return this.getSuffixes(t,a).map(s=>`${r}${s}`)}getSuffixes(t,r={}){let a=this.getRule(t,r);return a||(a=this.getRule("dev",r)),a?a.resolvedOptions().pluralCategories.sort((s,i)=>NC[s]-NC[i]).map(s=>`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${s}`):[]}getSuffix(t,r,a={}){const s=this.getRule(t,a);return s?`${this.options.prepend}${a.ordinal?`ordinal${this.options.prepend}`:""}${s.select(r)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",r,a))}}const TC=(e,t,r,a=".",s=!0)=>{let i=Jz(e,t,r);return!i&&s&&kt(r)&&(i=Ew(e,r,a),i===void 0&&(i=Ew(t,r,a))),i},vb=e=>e.replace(/\$/g,"$$$$");class EC{constructor(t={}){var r;this.logger=zi.create("interpolator"),this.options=t,this.format=((r=t==null?void 0:t.interpolation)==null?void 0:r.format)||(a=>a),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});const{escape:r,escapeValue:a,useRawValueToEscape:s,prefix:i,prefixEscaped:l,suffix:u,suffixEscaped:d,formatSeparator:f,unescapeSuffix:p,unescapePrefix:m,nestingPrefix:x,nestingPrefixEscaped:v,nestingSuffix:b,nestingSuffixEscaped:w,nestingOptionsSeparator:j,maxReplaces:k,alwaysFormat:C}=t.interpolation;this.escape=r!==void 0?r:Zz,this.escapeValue=a!==void 0?a:!0,this.useRawValueToEscape=s!==void 0?s:!1,this.prefix=i?hc(i):l||"{{",this.suffix=u?hc(u):d||"}}",this.formatSeparator=f||",",this.unescapePrefix=p?"":m||"-",this.unescapeSuffix=this.unescapePrefix?"":p||"",this.nestingPrefix=x?hc(x):v||hc("$t("),this.nestingSuffix=b?hc(b):w||hc(")"),this.nestingOptionsSeparator=j||",",this.maxReplaces=k||1e3,this.alwaysFormat=C!==void 0?C:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const t=(r,a)=>(r==null?void 0:r.source)===a?(r.lastIndex=0,r):new RegExp(a,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(t,r,a,s){var v;let i,l,u;const d=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},f=b=>{if(b.indexOf(this.formatSeparator)<0){const C=TC(r,d,b,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(C,void 0,a,Se(ee(ee({},s),r),{interpolationkey:b})):C}const w=b.split(this.formatSeparator),j=w.shift().trim(),k=w.join(this.formatSeparator).trim();return this.format(TC(r,d,j,this.options.keySeparator,this.options.ignoreJSONStructure),k,a,Se(ee(ee({},s),r),{interpolationkey:j}))};this.resetRegExp();const p=(s==null?void 0:s.missingInterpolationHandler)||this.options.missingInterpolationHandler,m=((v=s==null?void 0:s.interpolation)==null?void 0:v.skipOnVariables)!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:b=>vb(b)},{regex:this.regexp,safeValue:b=>this.escapeValue?vb(this.escape(b)):vb(b)}].forEach(b=>{for(u=0;i=b.regex.exec(t);){const w=i[1].trim();if(l=f(w),l===void 0)if(typeof p=="function"){const k=p(t,i,s);l=kt(k)?k:""}else if(s&&Object.prototype.hasOwnProperty.call(s,w))l="";else if(m){l=i[0];continue}else this.logger.warn(`missed to pass in variable ${w} for interpolating ${t}`),l="";else!kt(l)&&!this.useRawValueToEscape&&(l=vC(l));const j=b.safeValue(l);if(t=t.replace(i[0],j),m?(b.regex.lastIndex+=l.length,b.regex.lastIndex-=i[0].length):b.regex.lastIndex=0,u++,u>=this.maxReplaces)break}}),t}nest(t,r,a={}){let s,i,l;const u=(d,f)=>{var w,j;const p=this.nestingOptionsSeparator;if(d.indexOf(p)<0)return d;const m=d.split(new RegExp(`${hc(p)}[ ]*{`));let x=`{${m[1]}`;d=m[0],x=this.interpolate(x,l);const v=x.match(/'/g),b=x.match(/"/g);(((w=v==null?void 0:v.length)!=null?w:0)%2===0&&!b||((j=b==null?void 0:b.length)!=null?j:0)%2!==0)&&(x=x.replace(/'/g,'"'));try{l=JSON.parse(x),f&&(l=ee(ee({},f),l))}catch(k){return this.logger.warn(`failed parsing options string in nesting for key ${d}`,k),`${d}${p}${x}`}return l.defaultValue&&l.defaultValue.indexOf(this.prefix)>-1&&delete l.defaultValue,d};for(;s=this.nestingRegexp.exec(t);){let d=[];l=ee({},a),l=l.replace&&!kt(l.replace)?l.replace:l,l.applyPostProcessor=!1,delete l.defaultValue;const f=/{.*}/.test(s[1])?s[1].lastIndexOf("}")+1:s[1].indexOf(this.formatSeparator);if(f!==-1&&(d=s[1].slice(f).split(this.formatSeparator).map(p=>p.trim()).filter(Boolean),s[1]=s[1].slice(0,f)),i=r(u.call(this,s[1].trim(),l),l),i&&s[0]===t&&!kt(i))return i;kt(i)||(i=vC(i)),i||(this.logger.warn(`missed to resolve ${s[1]} for nesting ${t}`),i=""),d.length&&(i=d.reduce((p,m)=>this.format(p,m,a.lng,Se(ee({},a),{interpolationkey:s[1].trim()})),i.trim())),t=t.replace(s[0],i),this.regexp.lastIndex=0}return t}}const oB=e=>{let t=e.toLowerCase().trim();const r={};if(e.indexOf("(")>-1){const a=e.split("(");t=a[0].toLowerCase().trim();const s=a[1].substring(0,a[1].length-1);t==="currency"&&s.indexOf(":")<0?r.currency||(r.currency=s.trim()):t==="relativetime"&&s.indexOf(":")<0?r.range||(r.range=s.trim()):s.split(";").forEach(l=>{if(l){const[u,...d]=l.split(":"),f=d.join(":").trim().replace(/^'+|'+$/g,""),p=u.trim();r[p]||(r[p]=f),f==="false"&&(r[p]=!1),f==="true"&&(r[p]=!0),isNaN(f)||(r[p]=parseInt(f,10))}})}return{formatName:t,formatOptions:r}},AC=e=>{const t={};return(r,a,s)=>{let i=s;s&&s.interpolationkey&&s.formatParams&&s.formatParams[s.interpolationkey]&&s[s.interpolationkey]&&(i=Se(ee({},i),{[s.interpolationkey]:void 0}));const l=a+JSON.stringify(i);let u=t[l];return u||(u=e(ah(a),s),t[l]=u),u(r)}},lB=e=>(t,r,a)=>e(ah(r),a)(t);class cB{constructor(t={}){this.logger=zi.create("formatter"),this.options=t,this.init(t)}init(t,r={interpolation:{}}){this.formatSeparator=r.interpolation.formatSeparator||",";const a=r.cacheInBuiltFormats?AC:lB;this.formats={number:a((s,i)=>{const l=new Intl.NumberFormat(s,ee({},i));return u=>l.format(u)}),currency:a((s,i)=>{const l=new Intl.NumberFormat(s,Se(ee({},i),{style:"currency"}));return u=>l.format(u)}),datetime:a((s,i)=>{const l=new Intl.DateTimeFormat(s,ee({},i));return u=>l.format(u)}),relativetime:a((s,i)=>{const l=new Intl.RelativeTimeFormat(s,ee({},i));return u=>l.format(u,i.range||"day")}),list:a((s,i)=>{const l=new Intl.ListFormat(s,ee({},i));return u=>l.format(u)})}}add(t,r){this.formats[t.toLowerCase().trim()]=r}addCached(t,r){this.formats[t.toLowerCase().trim()]=AC(r)}format(t,r,a,s={}){const i=r.split(this.formatSeparator);if(i.length>1&&i[0].indexOf("(")>1&&i[0].indexOf(")")<0&&i.find(u=>u.indexOf(")")>-1)){const u=i.findIndex(d=>d.indexOf(")")>-1);i[0]=[i[0],...i.splice(1,u)].join(this.formatSeparator)}return i.reduce((u,d)=>{var m;const{formatName:f,formatOptions:p}=oB(d);if(this.formats[f]){let x=u;try{const v=((m=s==null?void 0:s.formatParams)==null?void 0:m[s.interpolationkey])||{},b=v.locale||v.lng||s.locale||s.lng||a;x=this.formats[f](u,b,ee(ee(ee({},p),s),v))}catch(v){this.logger.warn(v)}return x}else this.logger.warn(`there was no format function for ${f}`);return u},t)}}const uB=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)};class dB extends qx{constructor(t,r,a,s={}){var i,l;super(),this.backend=t,this.store=r,this.services=a,this.languageUtils=a.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=[],(l=(i=this.backend)==null?void 0:i.init)==null||l.call(i,a,s.backend,s)}queueLoad(t,r,a,s){const i={},l={},u={},d={};return t.forEach(f=>{let p=!0;r.forEach(m=>{const x=`${f}|${m}`;!a.reload&&this.store.hasResourceBundle(f,m)?this.state[x]=2:this.state[x]<0||(this.state[x]===1?l[x]===void 0&&(l[x]=!0):(this.state[x]=1,p=!1,l[x]===void 0&&(l[x]=!0),i[x]===void 0&&(i[x]=!0),d[m]===void 0&&(d[m]=!0)))}),p||(u[f]=!0)}),(Object.keys(i).length||Object.keys(l).length)&&this.queue.push({pending:l,pendingCount:Object.keys(l).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(i),pending:Object.keys(l),toLoadLanguages:Object.keys(u),toLoadNamespaces:Object.keys(d)}}loaded(t,r,a){const s=t.split("|"),i=s[0],l=s[1];r&&this.emit("failedLoading",i,l,r),!r&&a&&this.store.addResourceBundle(i,l,a,void 0,void 0,{skipCopy:!0}),this.state[t]=r?-1:2,r&&a&&(this.state[t]=0);const u={};this.queue.forEach(d=>{Xz(d.loaded,[i],l),uB(d,t),r&&d.errors.push(r),d.pendingCount===0&&!d.done&&(Object.keys(d.loaded).forEach(f=>{u[f]||(u[f]={});const p=d.loaded[f];p.length&&p.forEach(m=>{u[f][m]===void 0&&(u[f][m]=!0)})}),d.done=!0,d.errors.length?d.callback(d.errors):d.callback())}),this.emit("loaded",u),this.queue=this.queue.filter(d=>!d.done)}read(t,r,a,s=0,i=this.retryTimeout,l){if(!t.length)return l(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:r,fcName:a,tried:s,wait:i,callback:l});return}this.readingCalls++;const u=(f,p)=>{if(this.readingCalls--,this.waitingReads.length>0){const m=this.waitingReads.shift();this.read(m.lng,m.ns,m.fcName,m.tried,m.wait,m.callback)}if(f&&p&&s{this.read.call(this,t,r,a,s+1,i*2,l)},i);return}l(f,p)},d=this.backend[a].bind(this.backend);if(d.length===2){try{const f=d(t,r);f&&typeof f.then=="function"?f.then(p=>u(null,p)).catch(u):u(null,f)}catch(f){u(f)}return}return d(t,r,u)}prepareLoading(t,r,a={},s){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();kt(t)&&(t=this.languageUtils.toResolveHierarchy(t)),kt(r)&&(r=[r]);const i=this.queueLoad(t,r,a,s);if(!i.toLoad.length)return i.pending.length||s(),null;i.toLoad.forEach(l=>{this.loadOne(l)})}load(t,r,a){this.prepareLoading(t,r,{},a)}reload(t,r,a){this.prepareLoading(t,r,{reload:!0},a)}loadOne(t,r=""){const a=t.split("|"),s=a[0],i=a[1];this.read(s,i,"read",void 0,void 0,(l,u)=>{l&&this.logger.warn(`${r}loading namespace ${i} for language ${s} failed`,l),!l&&u&&this.logger.log(`${r}loaded namespace ${i} for language ${s}`,u),this.loaded(t,l,u)})}saveMissing(t,r,a,s,i,l={},u=()=>{}){var d,f,p,m,x;if((f=(d=this.services)==null?void 0:d.utils)!=null&&f.hasLoadedNamespace&&!((m=(p=this.services)==null?void 0:p.utils)!=null&&m.hasLoadedNamespace(r))){this.logger.warn(`did not save key "${a}" as the namespace "${r}" 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(!(a==null||a==="")){if((x=this.backend)!=null&&x.create){const v=Se(ee({},l),{isUpdate:i}),b=this.backend.create.bind(this.backend);if(b.length<6)try{let w;b.length===5?w=b(t,r,a,s,v):w=b(t,r,a,s),w&&typeof w.then=="function"?w.then(j=>u(null,j)).catch(u):u(null,w)}catch(w){u(w)}else b(t,r,a,s,u,v)}!t||!t[0]||this.store.addResource(t[0],r,a,s)}}}const bb=()=>({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:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),kt(e[1])&&(t.defaultValue=e[1]),kt(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const r=e[3]||e[2];Object.keys(r).forEach(a=>{t[a]=r[a]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),OC=e=>{var t,r;return kt(e.ns)&&(e.ns=[e.ns]),kt(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),kt(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),((r=(t=e.supportedLngs)==null?void 0:t.indexOf)==null?void 0:r.call(t,"cimode"))<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),typeof e.initImmediate=="boolean"&&(e.initAsync=e.initImmediate),e},Sm=()=>{},fB=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(r=>{typeof e[r]=="function"&&(e[r]=e[r].bind(e))})},_O="__i18next_supportNoticeShown",hB=()=>!!(typeof globalThis!="undefined"&&globalThis[_O]||typeof process!="undefined"&&xb&&xb.I18NEXT_NO_SUPPORT_NOTICE||typeof process!="undefined"&&xb),pB=()=>{typeof globalThis!="undefined"&&(globalThis[_O]=!0)},mB=e=>{var t,r,a,s,i,l,u,d,f,p,m,x,v;return!!(((a=(r=(t=e==null?void 0:e.modules)==null?void 0:t.backend)==null?void 0:r.name)==null?void 0:a.indexOf("Locize"))>0||((u=(l=(i=(s=e==null?void 0:e.modules)==null?void 0:s.backend)==null?void 0:i.constructor)==null?void 0:l.name)==null?void 0:u.indexOf("Locize"))>0||(f=(d=e==null?void 0:e.options)==null?void 0:d.backend)!=null&&f.backends&&e.options.backend.backends.some(b=>{var w,j,k;return((w=b==null?void 0:b.name)==null?void 0:w.indexOf("Locize"))>0||((k=(j=b==null?void 0:b.constructor)==null?void 0:j.name)==null?void 0:k.indexOf("Locize"))>0})||(m=(p=e==null?void 0:e.options)==null?void 0:p.backend)!=null&&m.projectId||(v=(x=e==null?void 0:e.options)==null?void 0:x.backend)!=null&&v.backendOptions&&e.options.backend.backendOptions.some(b=>b==null?void 0:b.projectId))};class Vf extends qx{constructor(t={},r){if(super(),this.options=OC(t),this.services={},this.logger=zi,this.modules={external:[]},fB(this),r&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,r),this;setTimeout(()=>{this.init(t,r)},0)}}init(t={},r){this.isInitializing=!0,typeof t=="function"&&(r=t,t={}),t.defaultNS==null&&t.ns&&(kt(t.ns)?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));const a=bb();this.options=ee(ee(ee({},a),this.options),OC(t)),this.options.interpolation=ee(ee({},a.interpolation),this.options.interpolation),t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=a.overloadTranslationOptionHandler),this.options.showSupportNotice!==!1&&!mB(this)&&!hB()&&(typeof console!="undefined"&&typeof console.info!="undefined"&&console.info("🌐 i18next is made possible by our own product, Locize — consider powering your project with managed localization (AI, CDN, integrations): https://locize.com 💙"),pB());const s=f=>f?typeof f=="function"?new f:f:null;if(!this.options.isClone){this.modules.logger?zi.init(s(this.modules.logger),this.options):zi.init(null,this.options);let f;this.modules.formatter?f=this.modules.formatter:f=cB;const p=new SC(this.options);this.store=new _C(this.options.resources,this.options);const m=this.services;m.logger=zi,m.resourceStore=this.store,m.languageUtils=p,m.pluralResolver=new iB(p,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==a.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),f&&(!this.options.interpolation.format||this.options.interpolation.format===a.interpolation.format)&&(m.formatter=s(f),m.formatter.init&&m.formatter.init(m,this.options),this.options.interpolation.format=m.formatter.format.bind(m.formatter)),m.interpolator=new EC(this.options),m.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},m.backendConnector=new dB(s(this.modules.backend),m.resourceStore,m,this.options),m.backendConnector.on("*",(v,...b)=>{this.emit(v,...b)}),this.modules.languageDetector&&(m.languageDetector=s(this.modules.languageDetector),m.languageDetector.init&&m.languageDetector.init(m,this.options.detection,this.options)),this.modules.i18nFormat&&(m.i18nFormat=s(this.modules.i18nFormat),m.i18nFormat.init&&m.i18nFormat.init(this)),this.translator=new Tg(this.services,this.options),this.translator.on("*",(v,...b)=>{this.emit(v,...b)}),this.modules.external.forEach(v=>{v.init&&v.init(this)})}if(this.format=this.options.interpolation.format,r||(r=Sm),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const f=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);f.length>0&&f[0]!=="dev"&&(this.options.lng=f[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(f=>{this[f]=(...p)=>this.store[f](...p)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(f=>{this[f]=(...p)=>(this.store[f](...p),this)});const u=gf(),d=()=>{const f=(p,m)=>{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),u.resolve(m),r(p,m)};if(this.languages&&!this.isInitialized)return f(null,this.t.bind(this));this.changeLanguage(this.options.lng,f)};return this.options.resources||!this.options.initAsync?d():setTimeout(d,0),u}loadResources(t,r=Sm){var i,l;let a=r;const s=kt(t)?t:this.language;if(typeof t=="function"&&(a=t),!this.options.resources||this.options.partialBundledLanguages){if((s==null?void 0:s.toLowerCase())==="cimode"&&(!this.options.preload||this.options.preload.length===0))return a();const u=[],d=f=>{if(!f||f==="cimode")return;this.services.languageUtils.toResolveHierarchy(f).forEach(m=>{m!=="cimode"&&u.indexOf(m)<0&&u.push(m)})};s?d(s):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(p=>d(p)),(l=(i=this.options.preload)==null?void 0:i.forEach)==null||l.call(i,f=>d(f)),this.services.backendConnector.load(u,this.options.ns,f=>{!f&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),a(f)})}else a(null)}reloadResources(t,r,a){const s=gf();return typeof t=="function"&&(a=t,t=void 0),typeof r=="function"&&(a=r,r=void 0),t||(t=this.languages),r||(r=this.options.ns),a||(a=Sm),this.services.backendConnector.reload(t,r,i=>{s.resolve(),a(i)}),s}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&wO.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1)){for(let r=0;r-1)&&this.store.hasLanguageSomeTranslations(a)){this.resolvedLanguage=a;break}}!this.resolvedLanguage&&this.languages.indexOf(t)<0&&this.store.hasLanguageSomeTranslations(t)&&(this.resolvedLanguage=t,this.languages.unshift(t))}}changeLanguage(t,r){this.isLanguageChangingTo=t;const a=gf();this.emit("languageChanging",t);const s=u=>{this.language=u,this.languages=this.services.languageUtils.toResolveHierarchy(u),this.resolvedLanguage=void 0,this.setResolvedLanguage(u)},i=(u,d)=>{d?this.isLanguageChangingTo===t&&(s(d),this.translator.changeLanguage(d),this.isLanguageChangingTo=void 0,this.emit("languageChanged",d),this.logger.log("languageChanged",d)):this.isLanguageChangingTo=void 0,a.resolve((...f)=>this.t(...f)),r&&r(u,(...f)=>this.t(...f))},l=u=>{var p,m;!t&&!u&&this.services.languageDetector&&(u=[]);const d=kt(u)?u:u&&u[0],f=this.store.hasLanguageSomeTranslations(d)?d:this.services.languageUtils.getBestMatchFromCodes(kt(u)?[u]:u);f&&(this.language||s(f),this.translator.language||this.translator.changeLanguage(f),(m=(p=this.services.languageDetector)==null?void 0:p.cacheUserLanguage)==null||m.call(p,f)),this.loadResources(f,x=>{i(x,f)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?l(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(l):this.services.languageDetector.detect(l):l(t),a}getFixedT(t,r,a){const s=(i,l,...u)=>{let d;typeof l!="object"?d=this.options.overloadTranslationOptionHandler([i,l].concat(u)):d=ee({},l),d.lng=d.lng||s.lng,d.lngs=d.lngs||s.lngs,d.ns=d.ns||s.ns,d.keyPrefix!==""&&(d.keyPrefix=d.keyPrefix||a||s.keyPrefix);const f=ee(ee({},this.options),d);typeof d.keyPrefix=="function"&&(d.keyPrefix=Md(d.keyPrefix,f));const p=this.options.keySeparator||".";let m;return d.keyPrefix&&Array.isArray(i)?m=i.map(x=>(typeof x=="function"&&(x=Md(x,f)),`${d.keyPrefix}${p}${x}`)):(typeof i=="function"&&(i=Md(i,f)),m=d.keyPrefix?`${d.keyPrefix}${p}${i}`:i),this.t(m,d)};return kt(t)?s.lng=t:s.lngs=t,s.ns=r,s.keyPrefix=a,s}t(...t){var r;return(r=this.translator)==null?void 0:r.translate(...t)}exists(...t){var r;return(r=this.translator)==null?void 0:r.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,r={}){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 a=r.lng||this.resolvedLanguage||this.languages[0],s=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(a.toLowerCase()==="cimode")return!0;const l=(u,d)=>{const f=this.services.backendConnector.state[`${u}|${d}`];return f===-1||f===0||f===2};if(r.precheck){const u=r.precheck(this,l);if(u!==void 0)return u}return!!(this.hasResourceBundle(a,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||l(a,t)&&(!s||l(i,t)))}loadNamespaces(t,r){const a=gf();return this.options.ns?(kt(t)&&(t=[t]),t.forEach(s=>{this.options.ns.indexOf(s)<0&&this.options.ns.push(s)}),this.loadResources(s=>{a.resolve(),r&&r(s)}),a):(r&&r(),Promise.resolve())}loadLanguages(t,r){const a=gf();kt(t)&&(t=[t]);const s=this.options.preload||[],i=t.filter(l=>s.indexOf(l)<0&&this.services.languageUtils.isSupportedCode(l));return i.length?(this.options.preload=s.concat(i),this.loadResources(l=>{a.resolve(),r&&r(l)}),a):(r&&r(),Promise.resolve())}dir(t){var s,i;if(t||(t=this.resolvedLanguage||(((s=this.languages)==null?void 0:s.length)>0?this.languages[0]:this.language)),!t)return"rtl";try{const l=new Intl.Locale(t);if(l&&l.getTextInfo){const u=l.getTextInfo();if(u&&u.direction)return u.direction}}catch(l){}const r=["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"],a=((i=this.services)==null?void 0:i.languageUtils)||new SC(bb());return t.toLowerCase().indexOf("-latn")>1?"ltr":r.indexOf(a.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},r){const a=new Vf(t,r);return a.createInstance=Vf.createInstance,a}cloneInstance(t={},r=Sm){const a=t.forkResourceStore;a&&delete t.forkResourceStore;const s=Se(ee(ee({},this.options),t),{isClone:!0}),i=new Vf(s);if((t.debug!==void 0||t.prefix!==void 0)&&(i.logger=i.logger.clone(t)),["store","services","language"].forEach(u=>{i[u]=this[u]}),i.services=ee({},this.services),i.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},a){const u=Object.keys(this.store.data).reduce((d,f)=>(d[f]=ee({},this.store.data[f]),d[f]=Object.keys(d[f]).reduce((p,m)=>(p[m]=ee({},d[f][m]),p),d[f]),d),{});i.store=new _C(u,s),i.services.resourceStore=i.store}if(t.interpolation){const u=bb(),d=ee(ee(ee({},u.interpolation),this.options.interpolation),t.interpolation),f=Se(ee({},s),{interpolation:d});i.services.interpolator=new EC(f)}return i.translator=new Tg(i.services,s),i.translator.on("*",(u,...d)=>{i.emit(u,...d)}),i.init(s,r),i.translator.options=s,i.translator.backendConnector.services.utils={hasLoadedNamespace:i.hasLoadedNamespace.bind(i)},i}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const Ra=Vf.createInstance();Ra.createInstance;Ra.dir;Ra.init;Ra.loadResources;Ra.reloadResources;Ra.use;Ra.changeLanguage;Ra.getFixedT;Ra.t;Ra.exists;Ra.setDefaultNamespace;Ra.hasLoadedNamespace;Ra.loadNamespaces;Ra.loadLanguages;const gB=(e,t,r,a)=>{var i,l,u,d;const s=[r,ee({code:t},a||{})];if((l=(i=e==null?void 0:e.services)==null?void 0:i.logger)!=null&&l.forward)return e.services.logger.forward(s,"warn","react-i18next::",!0);Vc(s[0])&&(s[0]=`react-i18next:: ${s[0]}`),(d=(u=e==null?void 0:e.services)==null?void 0:u.logger)!=null&&d.warn?e.services.logger.warn(...s):console!=null&&console.warn&&console.warn(...s)},PC={},Aw=(e,t,r,a)=>{Vc(r)&&PC[r]||(Vc(r)&&(PC[r]=new Date),gB(e,t,r,a))},kO=(e,t)=>()=>{if(e.isInitialized)t();else{const r=()=>{setTimeout(()=>{e.off("initialized",r)},0),t()};e.on("initialized",r)}},Ow=(e,t,r)=>{e.loadNamespaces(t,kO(e,r))},DC=(e,t,r,a)=>{if(Vc(r)&&(r=[r]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Ow(e,r,a);r.forEach(s=>{e.options.ns.indexOf(s)<0&&e.options.ns.push(s)}),e.loadLanguages(t,kO(e,a))},xB=(e,t,r={})=>!t.languages||!t.languages.length?(Aw(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:r.lng,precheck:(a,s)=>{if(r.bindI18n&&r.bindI18n.indexOf("languageChanging")>-1&&a.services.backendConnector.backend&&a.isLanguageChangingTo&&!s(a.isLanguageChangingTo,e))return!1}}),Vc=e=>typeof e=="string",yB=e=>typeof e=="object"&&e!==null,vB=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,bB={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},wB=e=>bB[e],jB=e=>e.replace(vB,wB);let Pw={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:jB,transDefaultProps:void 0};const _B=(e={})=>{Pw=ee(ee({},Pw),e)},kB=()=>Pw;let SO;const SB=e=>{SO=e},NB=()=>SO,CB={type:"3rdParty",init(e){_B(e.options.react),SB(e)}},TB=y.createContext();class EB{constructor(){this.usedNamespaces={}}addUsedNamespaces(t){t.forEach(r=>{this.usedNamespaces[r]||(this.usedNamespaces[r]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var wb={exports:{}},jb={};var RC;function AB(){if(RC)return jb;RC=1;var e=o0();function t(m,x){return m===x&&(m!==0||1/m===1/x)||m!==m&&x!==x}var r=typeof Object.is=="function"?Object.is:t,a=e.useState,s=e.useEffect,i=e.useLayoutEffect,l=e.useDebugValue;function u(m,x){var v=x(),b=a({inst:{value:v,getSnapshot:x}}),w=b[0].inst,j=b[1];return i(function(){w.value=v,w.getSnapshot=x,d(w)&&j({inst:w})},[m,v,x]),s(function(){return d(w)&&j({inst:w}),m(function(){d(w)&&j({inst:w})})},[m]),l(v),v}function d(m){var x=m.getSnapshot;m=m.value;try{var v=x();return!r(m,v)}catch(b){return!0}}function f(m,x){return x()}var p=typeof window=="undefined"||typeof window.document=="undefined"||typeof window.document.createElement=="undefined"?f:u;return jb.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:p,jb}var FC;function NO(){return FC||(FC=1,wb.exports=AB()),wb.exports}var OB=NO();const PB=(e,t)=>{if(Vc(t))return t;if(yB(t)&&Vc(t.defaultValue))return t.defaultValue;if(typeof e=="function")return"";if(Array.isArray(e)){const r=e[e.length-1];return typeof r=="function"?"":r}return e},DB={t:PB,ready:!1},RB=()=>()=>{},sr=(e,t={})=>{var D,z,G;const{i18n:r}=t,{i18n:a,defaultNS:s}=y.useContext(TB)||{},i=r||a||NB();i&&!i.reportNamespaces&&(i.reportNamespaces=new EB),i||Aw(i,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const l=y.useMemo(()=>{var V;return ee(ee(ee({},kB()),(V=i==null?void 0:i.options)==null?void 0:V.react),t)},[i,t]),{useSuspense:u,keyPrefix:d}=l,f=s||((D=i==null?void 0:i.options)==null?void 0:D.defaultNS),p=Vc(f)?[f]:f||["translation"],m=y.useMemo(()=>p,p);(G=(z=i==null?void 0:i.reportNamespaces)==null?void 0:z.addUsedNamespaces)==null||G.call(z,m);const x=y.useRef(0),v=y.useCallback(V=>{if(!i)return RB;const{bindI18n:ne,bindI18nStore:ge}=l,Z=()=>{x.current+=1,V()};return ne&&i.on(ne,Z),ge&&i.store.on(ge,Z),()=>{ne&&ne.split(" ").forEach(U=>i.off(U,Z)),ge&&ge.split(" ").forEach(U=>i.store.off(U,Z))}},[i,l]),b=y.useRef(),w=y.useCallback(()=>{if(!i)return DB;const V=!!(i.isInitialized||i.initializedStoreOnce)&&m.every(xe=>xB(xe,i,l)),ne=t.lng||i.language,ge=x.current,Z=b.current;if(Z&&Z.ready===V&&Z.lng===ne&&Z.keyPrefix===d&&Z.revision===ge)return Z;const ce={t:i.getFixedT(ne,l.nsMode==="fallback"?m:m[0],d),ready:V,lng:ne,keyPrefix:d,revision:ge};return b.current=ce,ce},[i,m,d,l,t.lng]),[j,k]=y.useState(0),{t:C,ready:N}=OB.useSyncExternalStore(v,w,w);y.useEffect(()=>{if(i&&!N&&!u){const V=()=>k(ne=>ne+1);t.lng?DC(i,t.lng,m,V):Ow(i,m,V)}},[i,t.lng,m,N,u,j]);const O=i||{},E=y.useRef(null),A=y.useRef(),T=V=>{const ne=Object.getOwnPropertyDescriptors(V);ne.__original&&delete ne.__original;const ge=Object.create(Object.getPrototypeOf(V),ne);if(!Object.prototype.hasOwnProperty.call(ge,"__original"))try{Object.defineProperty(ge,"__original",{value:V,writable:!1,enumerable:!1,configurable:!1})}catch(Z){}return ge},P=y.useMemo(()=>{const V=O,ne=V==null?void 0:V.language;let ge=V;V&&(E.current&&E.current.__original===V?A.current!==ne?(ge=T(V),E.current=ge,A.current=ne):ge=E.current:(ge=T(V),E.current=ge,A.current=ne));const Z=!N&&!u?(...ce)=>(Aw(i,"USE_T_BEFORE_READY","useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t."),C(...ce)):C,U=[Z,ge,N];return U.t=Z,U.i18n=ge,U.ready=N,U},[C,O,N,O.resolvedLanguage,O.language,O.languages]);if(i&&u&&!N)throw new Promise(V=>{const ne=()=>V();t.lng?DC(i,t.lng,m,ne):Ow(i,m,ne)});return P},{slice:FB,forEach:MB}=[];function LB(e){return MB.call(FB.call(arguments,1),t=>{if(t)for(const r in t)e[r]===void 0&&(e[r]=t[r])}),e}function IB(e){return typeof e!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(r=>r.test(e))}const MC=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,zB=function(e,t){const a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},s=encodeURIComponent(t);let i=`${e}=${s}`;if(a.maxAge>0){const l=a.maxAge-0;if(Number.isNaN(l))throw new Error("maxAge should be a Number");i+=`; Max-Age=${Math.floor(l)}`}if(a.domain){if(!MC.test(a.domain))throw new TypeError("option domain is invalid");i+=`; Domain=${a.domain}`}if(a.path){if(!MC.test(a.path))throw new TypeError("option path is invalid");i+=`; Path=${a.path}`}if(a.expires){if(typeof a.expires.toUTCString!="function")throw new TypeError("option expires is invalid");i+=`; Expires=${a.expires.toUTCString()}`}if(a.httpOnly&&(i+="; HttpOnly"),a.secure&&(i+="; Secure"),a.sameSite)switch(typeof a.sameSite=="string"?a.sameSite.toLowerCase():a.sameSite){case!0:i+="; SameSite=Strict";break;case"lax":i+="; SameSite=Lax";break;case"strict":i+="; SameSite=Strict";break;case"none":i+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return a.partitioned&&(i+="; Partitioned"),i},LC={create(e,t,r,a){let s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};r&&(s.expires=new Date,s.expires.setTime(s.expires.getTime()+r*60*1e3)),a&&(s.domain=a),document.cookie=zB(e,t,s)},read(e){const t=`${e}=`,r=document.cookie.split(";");for(let a=0;a-1&&(s=window.location.hash.substring(window.location.hash.indexOf("?")));const l=s.substring(1).split("&");for(let u=0;u0&&l[u].substring(0,d)===t&&(r=l[u].substring(d+1))}}return r}},UB={name:"hash",lookup(e){var s;let{lookupHash:t,lookupFromHashIndex:r}=e,a;if(typeof window!="undefined"){const{hash:i}=window.location;if(i&&i.length>2){const l=i.substring(1);if(t){const u=l.split("&");for(let d=0;d0&&u[d].substring(0,f)===t&&(a=u[d].substring(f+1))}}if(a)return a;if(!a&&r>-1){const u=i.match(/\/([a-zA-Z-]*)/g);return Array.isArray(u)?(s=u[typeof r=="number"?r:0])==null?void 0:s.replace("/",""):void 0}}}return a}};let ad=null;const IC=()=>{if(ad!==null)return ad;try{if(ad=typeof window!="undefined"&&window.localStorage!==null,!ad)return!1;const e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch(e){ad=!1}return ad};var HB={name:"localStorage",lookup(e){let{lookupLocalStorage:t}=e;if(t&&IC())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:r}=t;r&&IC()&&window.localStorage.setItem(r,e)}};let nd=null;const zC=()=>{if(nd!==null)return nd;try{if(nd=typeof window!="undefined"&&window.sessionStorage!==null,!nd)return!1;const e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch(e){nd=!1}return nd};var qB={name:"sessionStorage",lookup(e){let{lookupSessionStorage:t}=e;if(t&&zC())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:r}=t;r&&zC()&&window.sessionStorage.setItem(r,e)}},WB={name:"navigator",lookup(e){const t=[];if(typeof navigator!="undefined"){const{languages:r,userLanguage:a,language:s}=navigator;if(r)for(let i=0;i0?t:void 0}},VB={name:"htmlTag",lookup(e){let{htmlTag:t}=e,r;const a=t||(typeof document!="undefined"?document.documentElement:null);return a&&typeof a.getAttribute=="function"&&(r=a.getAttribute("lang")),r}},GB={name:"path",lookup(e){var s;let{lookupFromPathIndex:t}=e;if(typeof window=="undefined")return;const r=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(r)?(s=r[typeof t=="number"?t:0])==null?void 0:s.replace("/",""):void 0}},KB={name:"subdomain",lookup(e){var s,i;let{lookupFromSubdomainIndex:t}=e;const r=typeof t=="number"?t+1:1,a=typeof window!="undefined"&&((i=(s=window.location)==null?void 0:s.hostname)==null?void 0:i.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i));if(a)return a[r]}};let CO=!1;try{document.cookie,CO=!0}catch(e){}const TO=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];CO||TO.splice(1,1);const YB=()=>({order:TO,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:e=>e});class EO{constructor(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(t,r)}init(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=t,this.options=LB(r,this.options||{},YB()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=s=>s.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=a,this.addDetector(BB),this.addDetector($B),this.addDetector(HB),this.addDetector(qB),this.addDetector(WB),this.addDetector(VB),this.addDetector(GB),this.addDetector(KB),this.addDetector(UB)}addDetector(t){return this.detectors[t.name]=t,this}detect(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,r=[];return t.forEach(a=>{if(this.detectors[a]){let s=this.detectors[a].lookup(this.options);s&&typeof s=="string"&&(s=[s]),s&&(r=r.concat(s))}}),r=r.filter(a=>a!=null&&!IB(a)).map(a=>this.options.convertDetectedLanguage(a)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?r:r.length>0?r[0]:null}cacheUserLanguage(t){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;r&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(t)>-1||r.forEach(a=>{this.detectors[a]&&this.detectors[a].cacheUserLanguage(t,this.options)}))}}EO.type="languageDetector";const XB={dashboard:"Dashboard",assets:"Assets",workOrders:"Work Orders",maintenance:"Asset Maintenance",ppm:"PPM",logout:"Logout",login:"Login",email:"Email",password:"Password",submit:"Submit",cancel:"Cancel",save:"Save",saveChanges:"Save Changes",delete:"Delete",deleting:"Deleting...",edit:"Edit",create:"Create",search:"Search",filter:"Filter",export:"Export",import:"Import",loading:"Loading...",noData:"No data available",error:"Error",success:"Success",darkMode:"Dark Mode",lightMode:"Light Mode",language:"Language",english:"English",arabic:"Arabic",backToDashboard:"Back to Dashboard",back:"Back",saving:"Saving...",tryAgain:"Try Again",filters:"Filters",enterFilterName:"Enter filter name",saveFilterPreset:"Save Filter Preset",saveFilter:"Save Filter",filtering:"Filtering...",updating:"Updating...",clearFilters:"Clear filters",total:"Total",selected:"selected",rows:"rows",actions:"Actions",selectAllTitle:"Select all",deselectAllTitle:"Deselect all",typeToSearch:"Type to search...",typing:"typing...",enterFilterNameExample:"Enter filter name (e.g., 'Open High Priority')",yes:"Yes",no:"No"},JB={title:"SEERA-ASM",loggedInAs:"Logged in as:",version:"Seera-ASM v2.26",inventory:"Inventory",ppmPlanner:"PPM Planner",maintenanceCalendar:"Maintenance Calendar",activeMap:"Active Map",maintenanceTeam:"Maintenance Team",procurement:"Procurement",projects:"Project Management",sla:"Service Level Agreement (SLA)",support:"Support",inspection:"Inspection",sfdaEntries:"SFDA Recalls",deleteRequests:"Delete Requests",userProfile:"User Profile"},QB={moduleTitle:"Project Management",title:"Projects",listTotal:"Total: ",listProject:"project",listProjects:"projects",projectsDoctype:"Projects",tasksDoctype:"Tasks",timesheetDoctype:"Timesheets",projectTemplateDoctype:"Project templates",activityTypeDoctype:"Activity types",newProject:"New project",newTask:"New task",newTimesheet:"New timesheet",newProjectTemplate:"New project template",newActivityType:"New activity type",searchPlaceholder:"Search by project name…",noProjects:"No projects found.",noTasks:"No tasks found.",noTimesheets:"No timesheets found.",projectName:"Project name",customer:"Customer",expectedEnd:"Expected end",progress:"Progress",project:"Project",assignedTo:"Assigned to",dueDate:"Due date",timesheetId:"Timesheet",totalHours:"Total hours",taskColumn:"Task",templateCreated:"Template saved.",templateUpdated:"Template updated.",timesheetCreated:"Timesheet saved.",timesheetUpdated:"Timesheet updated.",reportsDashboardTitle:"Project reports",reportsDashboardSubtitle:"Portfolio KPIs and charts from Project, Task, and Timesheet data.",projectOverviewSection:"Project overview",projectOverviewBanner:"Project Overview",reportProjectFilter:"Report project",reportProjectFilterHint:"Selection applies to charts, KPIs, and tasks. Project snapshot and project updates appear only when a project is selected.",selectProjectPlaceholder:"Select project…",searchProjectPlaceholder:"Search by name or ID…",clearProjectSelection:"Clear selection",noMatchingOpenProjects:"No matching open projects.",projectPickerLimitNote:"Showing up to 2,000 most recently modified open projects. Refine search to find one.",snapshotProjectBudget:"Project budget",snapshotOverallShort:"Overall",overviewProjectNameLabel:"Project Name :",overviewDepartmentLabel:"Department:",overviewDateLabel:"DATE:",overviewProgressLabel:"Progress:",overviewCustomerLabel:"Customer:",overviewDatesUpToday:"Dates up today",overviewProjectDuration:"Project Duration",overviewStartDateLabel:"Project start Date :",overviewEndDateLabel:"Project End Date :",projectNotesSection:"Project notes",hubSubtitle:"Projects, tasks, timesheets, and linked other documents.",reportsCardSub:"Charts & portfolio snapshot",chipOpenProjects:"Open projects",sectionCoreTitle:"Project & task management",sectionCoreSubtitle:"Core project tracking and planning.",tasksCardSub:"All tasks",timesheetsCardSub:"Time logs",reportsCardLabel:"Reports"},ZB={twoFactorTitle:"Two-factor authentication (OTP App)",twoFactorSidebarTitle:"Two-factor auth",twoFactorOtpAppNoteShort:"Authenticator app required. Reset only if you need a new QR setup.",twoFactorLoading:"Loading security settings…",twoFactorRequired:"Two-factor authentication is required for your account.",twoFactorNotRequired:"Two-factor authentication is not required for your roles.",twoFactorDisabledSite:"Two-factor authentication is not enabled on this site.",twoFactorOtpAppNote:"Use an authenticator app (Google Authenticator, Authy, etc.). On first login after reset, check your email for a QR setup link.",resetOtp:"Reset authenticator",resetOtpConfirm:"Reset your OTP secret? You will need to scan a new QR code on your next login.",resetOtpSuccess:"Authenticator reset. Check your email on next login for setup instructions.",resetOtpFailed:"Could not reset authenticator."},e$={title:"SEERA-ASM",subtitle:"Asset Management System",signIn:"Sign in to continue",emailPlaceholder:"Enter your email",passwordPlaceholder:"Enter your password",loginFailed:"Login failed. Please check your credentials.",demoLogin:"Demo Login",or:"or",forgotPassword:"Forgot password?",forgotPasswordTitle:"Forgot password?",forgotPasswordHint:"Enter the email or username you use to sign in. We will send reset instructions to your registered email address.",forgotPasswordUserRequired:"Please enter your email or username.",forgotPasswordUserPlaceholder:"Email or username",forgotPasswordSubmit:"Send reset link",forgotPasswordClose:"Cancel",forgotPasswordSentSuccess:"Password reset instructions have been sent to your registered email address. Please check your inbox.",forgotPasswordNotFound:"No user account was found with the provided email address.",forgotPasswordTimeout:"The request took too long. Please try again or contact your administrator if outbound email is not configured.",forgotPasswordCannotReset:"Password reset is not available for this account.",forgotPasswordFailed:"Could not send reset email. Please try again later.",finishingSignOut:"Finishing sign-out…",afterPasswordResetSignIn:"Your password was updated. Please sign in with your new password.",twoFactorTitle:"Two-factor verification",twoFactorCodeLabel:"Verification code",twoFactorCodePlaceholder:"000000",twoFactorVerify:"Verify",twoFactorBackToLogin:"Back to sign in",twoFactorOtpAppEnter:"Enter the 6-digit code from your authenticator app.",twoFactorOtpAppSetupIncomplete:"Authenticator setup is not complete. Check your email for the QR setup link or contact your administrator.",twoFactorEmailQrHint:"Open the setup link in your email on this device to scan the QR code, then return here to enter your code.",twoFactorCodeRequired:"Please enter the verification code.",twoFactorInvalid:"Incorrect verification code. Please try again.",twoFactorSessionExpired:"Verification session expired. Please sign in again."},t$={title:"Dashboard",loading:"Loading dashboard...",totalAssets:"TOTAL NO. OF ASSETS",assetsDown:"Assets Down",openWorkOrders:"OPEN WORK ORDERS",workOrdersInProgress:"WORK ORDERS IN PROGRESS",completedWorkOrders:"COMPLETED WORK ORDERS",totalWorkOrders:"TOTAL WORK ORDERS",overdueWorkOrders:"OVERDUE WORK ORDERS",closedWorkOrders:"Closed Work Orders",upTime:"Up Time",downTime:"Down Time",workOrderStatus:"Work Order Status",workOrderByType:"Work Order by Type",maintenanceByAsset:"Maintenance - Asset wise Count",assigneesStatus:"Asset Maintenance Assignees Status Count",assigneesCount:"Assignees",totalTasksAssigned:"Tasks Assigned",maintenanceFrequency:"Asset Maintenance Frequency Chart",maintenanceLogs:"MAINTENANCE LOGS",assetUptime:"Asset Uptime",avgResponseTime:"Avg Response Time",maintenanceEfficiency:"Maintenance Efficiency",overdueMaintenance:"Overdue Maintenance",upDownTimeChart:"Up & Down Time Chart",ppmStatus:"PPM Status",completionRate:"Contractor Completion Rate",completionRateChartHint:"Completion % over last 7 months — hover a point for details",completionRateTooltip:"{{value}}% completion rate",viewFullReport:"View Full Report",noDataAvailable:"No data available",loadingTechnicianHours:"Loading technician hours...",loadingTechnicianWorkData:"Loading technician work data...",welcome:"Welcome,",user:"User",failedToLoad:"Failed to load dashboard data",recentRecords:"Recent Records",latestEntries:"Latest entries from your Frappe backend",quickActions:"Quick Actions",cardTotalAssets:"Total Assets",cardOpenWorkOrders:"Open Work Orders",cardInProgress:"In Progress",cardCompletedWorkOrders:"Completed Work Orders",viewUsers:"View Users",manageUserAccounts:"Manage user accounts",settings:"Settings",configurePreferences:"Configure your preferences",events:"Events",viewCalendarEvents:"View calendar events",reports:"Reports",viewAnalyticsReports:"View analytics and reports",ppmTemplateCounts:"PPM Template Counts",repairCost:"Repair Cost",dashboardFilter:"Dashboard Filter",allDepartments:"All Departments",workOrderStatusDistribution:"Work Order Status Distribution",workOrderInspectionSummary:"Work Order Inspection Summary",woRejectionSummary:"WO Rejection Summary",total:"Total",inProgress:"In Progress",completed:"Completed",totalSales:"Total Sales",average:"Average",noChartDataAvailable:"No chart data available",loadingInspectionData:"Loading inspection data...",noInspectionDataAvailable:"No inspection data available",totalRejections:"Total rejections",loadingRejectionData:"Loading rejection data...",noRejectionDataAvailable:"No rejection data available",department:"Department",allOperational:"All Operational",low:"Low",highPriority:"High Priority",allClear:"All Clear",fastResponse:"Fast Response",monitor:"Monitor",onTrack:"On Track",needsAttention:"Needs Attention",totalHours:"Total: {{value}} hours",technicianWorkingHours:"Technicians Working Hours",techniciansWorked:"Technicians Work Summary",pendingReviewWorkOrders:"Pending Review",clear:"Clear",clearFilter:"Clear Filter",label:"Label",open:"Open"},r$={assetId:"Asset ID",assetName:"Asset Name",serialNumber:"Serial Number",company:"Company/Hospital",building:"Building",roomNumber:"Room Number",location:"Location",department:"Department",deviceStatus:"Device Status",modality:"Modality",manufacturer:"Manufacturer",supplier:"Supplier",assetCategory:"Asset Category",purchaseDate:"Purchase Date",purchaseAmount:"Purchase Amount",availableForUseDate:"Available For Use Date",createdOn:"Created On",modifiedOn:"Modified On",createdBy:"Created By",modifiedBy:"Modified By",workOrderId:"Work Order ID",workOrderType:"Type",status:"Status",priority:"Priority",description:"Description",assignedTo:"Assigned To",scheduledDate:"Scheduled Date",completedDate:"Completed Date",hospital:"Hospital",assetType:"Asset Type",siteName:"Site Name",assignedSupervisor:"Assigned Supervisor",assignedContractor:"Assigned Contractor",serialNumberShort:"Serial",departmentShort:"Dept",manufacturerShort:"Mfr",workOrderIdShort:"WO ID",assetShort:"Asset",typeShort:"Type",nameShort:"Name",pmId:"PM ID",name:"Name"},a$={filterBy:"Filter By",createdDate:"Created Date",latestModifiedDate:"Latest Modified Date",startDate:"Start Date",endDate:"End Date",assetId:"Asset ID",hospital:"Hospital",name:"Name",serial:"Serial",status:"Status",location:"Location",dept:"Dept",modality:"Modality",mfr:"Mfr",supplier:"Supplier",workOrderId:"WO ID",asset:"Asset",type:"Type",priority:"Priority",workflowState:"Workflow State",allStatuses:"All Statuses",allStates:"All States",allTypes:"All Types",allPriorities:"All priorities",allHospitals:"All Hospitals",allModalities:"All Modalities",filterByCompany:"Filter by Company",allManufacturers:"All Manufacturers",sortBy:"Sort by",sortCreationNewest:"Creation (newest first)",sortCreationOldest:"Creation (oldest first)",sortModifiedNewest:"Modified (newest first)",sortModifiedOldest:"Modified (oldest first)",sortNameAsc:"Name (A-Z)",sortNameDesc:"Name (Z-A)",sortAssetNameAsc:"Asset Name (A-Z)",sortAssetNameDesc:"Asset Name (Z-A)",sortItemNameAsc:"Item Name (A-Z)",sortItemNameDesc:"Item Name (Z-A)",sortTeamNameAsc:"Team Name (A-Z)",sortTeamNameDesc:"Team Name (Z-A)"},n$={addNew:"Add New",searchPlaceholder:"Search...",noResults:"No results found",showing:"Showing",of:"of",results:"results",selectAll:"Select All",deselectAll:"Deselect All",selected:"selected",actions:"Actions",view:"View",edit:"Edit",delete:"Delete",duplicate:"Duplicate",export:"Export",print:"Print",filters:"Filters",clearFilters:"Clear Filters",applyFilters:"Apply Filters",columns:"Columns",exportSelected:"Export Selected",exportAllOnPage:"Export All on Page",exportAllWithFilters:"Export All with Filters",exportFormat:"Export Format",csv:"CSV",excel:"Excel",exporting:"Exporting...",exportComplete:"Export Complete",close:"Close",loading:"Loading...",refresh:"Refresh",deselectAllTitle:"Deselect all",selectAllTitle:"Select all",typeToSearch:"Type to search...",enterFilterName:"Enter filter name",enterFilterNameExample:"Enter filter name (e.g., 'Open High Priority')",allStatuses:"All Statuses",noIssuesFound:"No issues found",createFirstIssue:"Create your first issue",saveFilterPreset:"Save Filter Preset",saveFilter:"Save Filter",savedFilters:"Saved Filters",clear:"Clear",typing:"typing...",filtering:"Filtering...",noMaintenanceTeamsFound:"No maintenance teams found",createFirstTeam:"Create your first team",all:"All",tryAdjustingFilters:"Try adjusting your search or filters",getStartedCreateFirst:"Get started by creating your first PPM Planner",noMaintenanceLogsFound:"No maintenance logs found",createFirstMaintenanceLog:"Create your first maintenance log",total:"Total",noPPMSchedulesFound:"No PPM schedules found",createFirstPPMSchedule:"Create your first PPM schedule",deleteConfirmCannotUndo:"This action cannot be undone."},s$={title:"Assets",addAsset:"Add New Asset",assetDetails:"Asset Details",assetInformation:"Asset Information",newAsset:"New Asset",duplicateAsset:"Duplicate Asset",fromAsset:"From Asset",creatingFromAsset:"Creating Work Order from Asset",assetInfoPrefilled:"Asset information prefilled from",pleaseSelectWorkOrderType:"Please select a Work Order type and add any additional details",loadingAssetDetails:"Loading asset details...",pleaseEnterAssetName:"Please enter an Asset Name",pleaseSelectCategory:"Please select a Category",assetDuplicatedSuccessfully:"Asset duplicated successfully!",assetCreatedSuccessfully:"Asset created successfully!",assetUpdatedSuccessfully:"Asset updated successfully!",sourceAssetNotFound:"Source Asset Not Found",assetNotFoundMessage:"The asset you're trying to duplicate could not be found.",backToAssetsList:"Back to Assets List",backToList:"Back to assets list",createNewAsset:"Create New Asset",newAssetDetails:"New Asset Details",noAssetsFound:"No assets found",createFirstAsset:"Create your first asset",deleteConfirmTitle:"Delete Asset",deleteConfirmMessage:"Are you sure you want to delete this asset? This action cannot be undone.",noDataToExport:"No data to export",loadingPermissions:"Loading permissions...",selectAssetId:"Select Asset ID",selectHospital:"Hospital",viewDetails:"View Details",editAsset:"Edit Asset",createWorkOrder:"Create Work Order",viewLinkedWOs:"View Linked Work Orders",moreActions:"More Actions",exportAsJson:"Export as JSON",printAsset:"Print",status:{up:"Up",down:"Down"},deviceStatus:"Device Status",apiNotAvailable:"Asset API Not Available",apiNotDeployed:"The Asset API endpoint is not deployed yet.",tryCreatingNew:"Try Creating a New Asset (Demo)",listTotal:"Total: ",table:{assetName:"Asset Name",serialNo:"Serial No",company:"Company",location:"Location",status:"Status",updatedOn:"Updated on",actions:"Actions"},export:{title:"Export Assets",selectData:"Select Data to Export",selectedRows:"Selected Rows",selectedCount:"Export {{count}} selected asset ",currentPage:"Current Page",currentPageCount:"Export {{count}} asset on current page",allWithFilters:"All Records (with current filters)",allWithFiltersCount:"Export all {{count}} asset matching current filters",csvDesc:"Comma-separated values",excelDesc:"XLSX spreadsheet",columnsToExport:"Columns to Export",selectAll:"Select All",resetToDefault:"Reset to Default",columnsSelected:"{{count}} column selected",exporting:"Exporting...",exportButton:"Export",exportingSelected:"Exporting {{count}} selected row ",exportingPage:"Exporting {{count}} row from current page",exportingAll:"Exporting all {{count}} row "},detail:{assetInformation:"Asset Information",technicalSpecs:"Technical Specs",financialDetails:"Financial Details",assetFinanceBooks:"Asset Finance Books",addRow:"Add Row",duplicatingFrom:"Duplicating from:",noDepartmentsMapped:"No departments mapped to this building",departmentsAvailable:"{{count}} department(s) available (filtered by building)",selectDepartmentForRoom:"Select Department to enable Room Number",depreciationMethodNote:"The depreciation method is an accounting method used to allocate the cost of a tangible asset over its useful life.",calculateDepreciation:"Calculate Depreciation",noFinanceBooksYet:'No finance books added yet. Click "Add Row" to add one.',noSparePartsYet:'No spare parts added yet. Click "Add Row" to add one.',assetName:"Asset Name",category:"Category",type:"Asset Type",modality:"Modality",class:"Class",assetId:"Asset ID",deviceStatus:"Device Status",serialCode:"Serial Code",technicalDepartment:"Technical Department",manufacturer:"Manufacturer",model:"Model",totalHours:"Total Hours",downTimeHours:"Down Time (Hours)",upTimeHours:"Up Time (Hours)",placeholderAssetName:"e.g. Laptop Model X",placeholderSerialCode:"e.g. SN-12345",placeholderModelNumber:"Model number",placeholderZero:"0",placeholderDescription:"Brief description of the asset",placeholderPONumber:"PO number",selectClass:"Select class",classA:"Class A",classB:"Class B",classC:"Class C",autoGenerated:"Auto-generated",calculatedFromAvailableDate:"Calculated from Available For Use Date",calculatedTotalMinusDown:"Calculated: Total Hours - Down Time",hospital:"Hospital",siteName:"Site name",selectSite:"Select Site",building:"Building",department:"Department",roomNumber:"Room Number",location:"Location",recalled:"Recalled",selectStatus:"Select status",operational:"Operational",underMaintenance:"Under Maintenance",decommissioned:"Decommissioned",selectServiceAgreement:"Select Service Agreement",warranty:"Warranty",contract:"Contract",frameWork:"Frame Work",mainContractor:"Main Contractor",outOfWarranty:"Out of warranty",underDismantle:"Under Dismantle",underInstallation:"Under Installation",selectServiceCoverage:"Select Service Coverage",pmOnly:"PM Only",labour:"Labour",labourAndParts:"Labour & Parts",comprehensive:"Comprehensive",supplierVendor:"Supplier/Vendor",selectMethod:"Select Method",straightLine:"Straight Line",doubleDecliningBalance:"Double Declining Balance",writtenDownValue:"Written Down Value",manual:"Manual",recycling:"Recycling",donation:"Donation",sale:"Sale",assetDuplicatedSuccess:"Asset duplicated successfully!",assetCreatedSuccess:"Asset created successfully!",assetUpdatedSuccess:"Asset updated successfully!",failedToSave:"Failed to save asset",cannotSubmitNotSaved:"Cannot submit: Asset not saved yet",confirmSubmit:'Are you sure you want to submit this asset? Once submitted, only fields marked as "Allow on Submit" can be edited.',assetSubmittedSuccess:"Asset submitted successfully!",failedToSubmit:"Failed to submit asset",pleaseSaveFirstForPPM:"Please save the asset first to view PPM Plan",pleaseSaveFirstForHistory:"Please save the asset first to view Asset History",failedToLoadPPMPlan:"Failed to load PPM Plan. Please try again.",noPlannedMaintenance:"No planned maintenance found for this asset",noWorkOrdersFound:"No Work Orders Found",noSparePartsUsed:"No Spare Parts Used",noMaintenanceRecords:"No Maintenance Records Found",noMaintenanceTasks:"No Maintenance Tasks Found",selectBuildingFirst:"Select Building first to enable Department",coverage:"Coverage",siteContractor:"Site Contractor",contractNumber:"Contract Number",serviceAgreement:"Service Agreement",serviceCoverage:"Service Coverage",purchaseOrderNumber:"Purchase Order Number",grossPurchaseAmount:"Gross Purchase Amount",purchaseDate:"Purchase Date",installationDate:"Installation Date",availableForUseDate:"Available For Use Date",financeBook:"Finance Book",depreciationMethod:"Depreciation Method",totalDepreciations:"Total Depreciations",frequencyMonths:"Frequency (Months)",depreciationPostingDate:"Depreciation Posting Date",startDate:"Start Date",endDate:"End Date",totalAmount:"Total Amount",selectRoomFirst:"Select Room Number to enable Location",autoSetFromRoom:"Auto-set from room mapping",moreDetails:"More Details"}},i$=JSON.parse(`{"title":"Work Orders","addWorkOrder":"Add New Work Order","workOrderDetails":"Work Order Details","newWorkOrder":"New Work Order","duplicateWorkOrder":"Duplicate Work Order","createFromAsset":"Create Work Order from Asset","createFromSupportIssue":"Create Work Order from Support Issue","closeWorkOrders":"Close Work Orders","closeConfirmTitle":"Close Work Orders","closeConfirmMessage":"Are you sure you want to close the selected work order(s)?","deleteConfirmMessage":"Are you sure you want to delete this work order? This action cannot be undone.","cancelConfirmMessage":"Are you sure you want to cancel this work order? This will mark the work order as cancelled and you can then delete it if needed.","assignConfirmMessage":"Are you sure you want to assign this work order to the following technician(s)?","deleteWorkOrder":"Delete Work Order","cancelWorkOrder":"Cancel Work Order","loadingWorkOrders":"Loading work orders...","loadingDetails":"Loading work order details...","backToList":"Back to work orders list","status":{"open":"Open","work_in_progress":"Work In Progress","pending_review":"Pending Review","completed":"Completed","cancelled":"Cancelled","closed":"Closed"},"priorityNormal":"Normal","priorityUrgent":"Urgent","workflowState":{"draft":"Draft"},"priority":{"normal":"Normal","urgent":"Urgent"},"table":{"workOrderId":"Work Order ID","asset":"Asset","type":"Type","technicalReport":"Technical Report","department":"Department","workflowState":"Workflow State","priority":"Priority","noWorkOrdersFound":"No work orders found","createFirstWorkOrder":"Create your first work order"},"export":{"title":"Export Work Orders","selectData":"What to Export","selectedRows":"Selected Rows","selectedCount":"Export {{count}} selected work order ","currentPage":"Current Page","currentPageCount":"Export {{count}} work order on current page","allWithFilters":"All Records (with current filters)","allWithFiltersCount":"Export all {{count}} work order matching current filters","csvDesc":"Comma-separated values","excelDesc":"XLSX spreadsheet","columnsToExport":"Columns to Export","selectAll":"Select All","resetToDefault":"Reset to Default","columnsSelected":"{{count}} column selected","exporting":"Exporting...","exportButton":"Export","exportingSelected":"Exporting {{count}} selected row ","exportingPage":"Exporting {{count}} row from current page","exportingAll":"Exporting all {{count}} row "},"closeModal":{"title":"Close Work Orders","confirmBulkClose":"Confirm Bulk Close Operation","aboutToClose":"You are about to close {{count}} work order . This action will change their workflow state to Closed.","alreadyClosedNote":"Note: {{count}} work order{{count !== 1 ? 's are' : ' is'}} already closed and will be skipped.","selectedWorkOrders":"Selected Work Orders ({{count}})","workOrderId":"Work Order ID","currentStatus":"Current Status","workflowState":"Workflow State","alreadyClosed":"(already closed)","willClose":"Will close {{count}} work order ","allAlreadyClosed":"All selected work orders are already closed","cancel":"Cancel","close":"Close","closing":"Closing..."},"detail":{"workOrderInformation":"Work Order Information","assignments":"Assignments","statusSummary":"Status Summary","existingWorkOrders":"Existing Work Order(s):","created":"Created","proceedCreateNew":"Do you still want to proceed with creating a new Work Order?","loadingTechnicians":"Loading technicians...","feedbackBy":"Feedback By","overallSatisfaction":"Overall Satisfaction","overallRatingPreview":"Overall Rating Preview","uploading":"Uploading...","uploadOpeningFile":"Upload Opening File","uploadClosingFile":"Upload Closing File","noAttachment":"No attachment","noClosingAttachment":"No closing attachment","closingAttachment":"Closing Attachment","currentState":"Current State","loadingActions":"Loading actions...","actionResults":"Action Results:","checkingFeedback":"Checking feedback...","yourRating":"Your Rating","repairStatus":"Repair Status","priority":"Priority","lastModified":"Last Modified","documentStatus":"Document Status","loadingActivity":"Loading activity...","added":"Added:","removed":"Removed:","modified":"Modified:","items":"item(s)","rows":"row(s)","pleaseAllowPopupsServiceReport":"Please allow popups for this site to print the Service Report.","pleaseProvideAtLeastOneRating":"Please provide at least one rating","feedbackSubmittedSuccessfully":"Feedback submitted successfully!","failedToSubmitFeedback":"Failed to submit feedback","feedbackUpdatedSuccessfully":"Feedback updated successfully!","failedToUpdateFeedback":"Failed to update feedback","locationAutoSetTo":"Location auto-set to: {{location}}","noTechniciansSelected":"No technicians selected","techniciansAssignedSuccessfully":"{{count}} additional technician(s) assigned successfully","removedTechnician":"Removed {{name}}","itemAlreadyAdded":"Item \\"{{itemCode}}\\" is already added in row {{row}}. Please select a different item.","insufficientStock":"Insufficient stock for {{itemCode}}. Available: {{available}}, Required: {{required}}","pleaseEnterSerialNumberToSearch":"Please enter a serial number to search","assetFound":"Asset found: {{name}}","noAssetFoundWithSerialNumber":"No asset found with this serial number","fileSizeExceeds":"File size exceeds 10MB limit","fileUploadedSuccessfully":"File uploaded successfully","failedToUploadFile":"Failed to upload file","attachmentRemoved":"Attachment removed","failureDateSetToCurrentTime":"Failure Date set to current time","firstRespondedOnSetToCurrentTime":"First Responded On set to current time","completionDateSetToCurrentTime":"Completion Date set to current time","firstRespondedOnSetTo":"First Responded On set to {{datetime}}","completionDateSetTo":"Completion Date set to {{datetime}}","assignedSupervisorMandatory":"Assigned Supervisor is mandatory for Work Control role.","assignedEngineerMandatory":"Assigned Engineer is mandatory for Work Control role.","assignedTechnicianMandatory":"Assigned Technician is mandatory when workflow is \\"Sent to Engineer\\".","workOrderCancelledSuccessfully":"Work Order cancelled successfully!","failedToCancel":"Failed to cancel: {{error}}","workOrderDeletedSuccessfully":"Work Order deleted successfully!","failedToDelete":"Failed to delete: {{error}}","pleaseSelectWorkOrderType":"Please select a Work Order Type","workOrderUpdatedSuccessfully":"Work order updated successfully!","workOrderCreatedSuccessfully":"Work order created successfully!","workOrderCreatedFromAssetSuccessfully":"Work order created from asset successfully!","workOrderCreatedFromIssueSuccessfully":"Work order created and linked. The support ticket stays open until the requester updates it after the work order is closed.","loadingSupportIssue":"Loading support issue...","failedToLoadSupportIssue":"Could not load support issue. You can still fill the work order manually.","supportIssue":"Support Issue","workOrderDuplicatedSuccessfully":"Work order duplicated successfully!","documentModifiedByAnotherUser":"Document was modified by another user. Refreshing...","pleaseReviewLatestChanges":"Please review the latest changes and try saving again.","failedToSaveWorkOrder":"Failed to save work order: {{error}}","technicalReportMandatoryForSupervisor":"Technical Report is mandatory when sending directly to Supervisor. Please fill in the Technical Report field before proceeding.","applyingAction":"Applying action \\"{{action}}\\"...","assignedTo":"Assigned to: {{name}}","actionCompletedSuccessfully":"Action \\"{{action}}\\" completed successfully!","documentModifiedRefreshing":"Document was modified. Refreshing...","tryActionAgainAfterReview":"Please try the action again after reviewing the latest changes.","failedToApplyAction":"Failed to apply action \\"{{action}}\\". {{error}}","editModeEnabled":"Edit mode enabled","editCancelledChangesDiscarded":"Edit cancelled - changes discarded","closingAttachmentRemoved":"Closing attachment removed","closingAttachmentUploadedSuccessfully":"Closing attachment uploaded successfully","failedToUploadClosingAttachment":"Failed to upload closing attachment","newStockItemRowAdded":"New stock item row added","stockItemRemoved":"Stock item {{item}} removed","activityLogRefreshed":"Activity log refreshed","errorLabel":"Error","backToList":"Back to work orders list","duplicateWorkOrder":"Duplicate Work Order","createFromAsset":"Create Work Order from Asset","createFromSupportIssue":"Create Work Order from Support Issue","newWorkOrder":"New Work Order","workOrderDetails":"Work Order Details","existingWorkOrderFound":"Existing Work Order Found","workOrderExistsForAsset":"A Work Order already exists for this Asset with workflow state not yet Approved or Closed.","workOrderExistsForTypeAndRoom":"A Work Order already exists for this Work Order Type and Room No with workflow state not yet Approved or Closed.","proceedWithNewWO":"Do you still want to proceed with creating a new Work Order?","proceedAnyway":"Proceed Anyway","noGoBack":"No, Go Back","yesCancel":"Yes, Cancel","cancelling":"Cancelling...","deleting":"Deleting...","selectAdditionalTechnicians":"Select Additional Technicians","searchTechnicians":"Search technicians...","techniciansSelected":"{{count}} technician(s) selected","clearAll":"Clear all","noTechniciansMatchSearch":"No technicians match your search","noTechniciansFound":"No technicians found","hospital":"Hospital","technicalDepartment":"Technical Department","woType":"WO Type","assetId":"Asset ID","assetName":"Asset Name","extensionNo":"Extension No","building":"Building","departmentName":"Department Name","roomNo":"Room No","location":"Location","manufacturer":"Manufacturer","supplier":"Supplier","assignedSupervisor":"Assigned Supervisor","assignedEngineer":"Assigned Engineer","assignedTechnician":"Assigned Technician","fromAsset":"From Asset","assetDetailsAutoPopulated":"Asset details auto-populated","selectBuildingFirst":"Select Building first to enable Department","printServiceReport":"Print Service Report","removeAttachment":"Remove attachment","removeClosingAttachment":"Remove closing attachment","setToCurrentDateTime":"Set to current date & time","selectItem":"Select Item","selectWarehouse":"Select Warehouse","autoPopulatedFromStock":"Auto-populated from stock","removeItem":"Remove item","noItemsAddedYet":"No items added yet","commentsDiscussion":"Comments & Discussion","refreshActivityLog":"Refresh activity log","supervisorsAvailableForType":"{{count}} Assigned Supervisor(s) available for this type","civilWorkCategory":"Civil Work Category","selectCivilWorkCategory":"Select Civil Work Category","selectPendingReason":"Select Pending Reason","pleaseSpecifyReason":"Please specify the reason...","selectServiceAgreement":"Select Service Agreement","selectServiceCoverage":"Select Service Coverage","describeComplaint":"Describe the nature of complaint...","describeWorkPerformed":"Describe the work performed...","enterSerialNumber":"Enter serial number","searchAssetBySerial":"Search asset by serial number","workOrder":"Work Order:","giveFeedback":"Give Feedback","editFeedback":"Edit Feedback","feedbackDetails":"Feedback Details","confirmAssignment":"Confirm Assignment","notRated":"Not rated","serviceReport":"Service Report","assetInfoPrefilled":"Asset information has been pre-filled from","linkedFromAsset":"Linked from Asset:","loadingAssetDetails":"Loading asset details...","cancelled":"Cancelled","workOrderId":"Work Order ID","pendingReason":"Pending Reason","otherReason":"Other Reason","serviceAgreementDetails":"Service Agreement Details","siteContractor":"Site Contractor","subcontractor":"Subcontractor","model":"Model","description":"Description","natureOfComplaint":"Nature of Complaint","technicalReport":"Technical Report","selectWoTypeFirstForSupervisors":"Select Work Order Type first to filter Assigned Supervisors","noSupervisorsFound":"No Assigned Supervisors found for this Work Order Type","requiredForExistingWO":"* Required for existing Work Orders","selectWoTypeFirstForEngineers":"Select Work Order Type first to filter Engineers","noEngineersFound":"No Engineers (Contractor Engineer role) found for this Work Order Type","engineersAvailable":"{{count}} Engineer(s) available","selectWoTypeFirstForTechnicians":"Select Work Order Type first to filter Technicians","noTechniciansFoundForType":"No Technicians found for this Work Order Type","techniciansAvailable":"{{count}} Technician(s) available","requiredForSentToEngineer":"* Required for \\"Sent to Engineer\\" state","autoCalculated":"(Auto-calculated)","autoSetOnRepairStart":"(Auto-set on repair start)","autoSetOnClose":"(Auto-set on close)","totalItems":"Total Items:","confirmAction":"Confirm Action","confirmActionMessage":"Are you sure you want to {{action}} this work order?","processing":"Processing...","yesAction":"Yes, {{action}}","systemManagerNote":"System Manager: Showing all valid actions for this state (conditions evaluated).","saveToSeeActions":"Save your changes to see all available actions.","availableActions":"Available Actions","allOptionsAvailable":"All Options Available","bothFilledMessage":"Both Technician and Technical Report are filled. You can now use any available workflow action above.","technicianAssigned":"Technician Assigned","assignedTechnicianLabel":"Assigned Technician:","wantToEnableSendToSupervisor":"Want to also enable \\"Send to Supervisor\\"?","fillTechnicalReportToUnlock":"Fill the \\"Technical Report\\" field to unlock this option","technicalReportFilled":"Technical Report Filled","howWasService":"How was the service for this work order?","noFeedbackYet":"No feedback has been given yet","statusInfoAfterCreation":"Status information will appear after creation","activityLog":"Activity Log","refreshActivityLogTitle":"Refresh activity log","noChangesRecorded":"No changes recorded yet","createdThisWorkOrder":"Created this Work Order","showLess":"Show Less","showAll":"Show All","entries":"entries","changedFrom":"changed from","documentUpdated":"Document updated","addItem":"Add Item","addFirstItem":"+ Add first item","item":"Item","valuationRate":"Valuation Rate","warehouse":"Warehouse","consumedQty":"Consumed Qty","availableStock":"Available Stock","totalValue":"Total Value","action":"Action","open":"Open","autoGenerated":"Auto-generated","updating":"Updating...","submitting":"Submitting...","updateFeedback":"Update Feedback","submitFeedback":"Submit Feedback","editRating":"Edit Rating","saveSelection":"Save Selection","troubleshootingTree":"Troubleshooting tree","troubleshootingGuideDone":"Completed","troubleshootingGuideDoneTitle":"Troubleshooting guide completed. Open again anytime to review the steps."},"troubleshootTree":{"pageTitle":"Troubleshooting tree","backToWorkOrder":"Back","workOrderBadge":"Work order: {{id}}","problemTypeTitle":"What type of problem is it?","selfServiceTitle":"Self-service checks","stepOf":"Step {{current}} of {{total}}","introHint":"Read the steps below. When you have actually tried them, use the button to continue.","confirmTried":"Yes, I've tried this","previousStep":"Previous step","guideCompleteBadge":"All steps done","allStepsCompleteTitle":"Troubleshooting steps completed","allStepsCompleteBodyWo":"Continue on the work order to resolve the complaint—technical report, photos, parts, and workflow actions.","allStepsCompleteBodyStandalone":"When you are ready, go back to Support to open or follow up on an issue.","continueToResolveComplaint":"Continue to resolve complaint","backToSupportFromGuide":"Back to support","reviewCategoryAgain":"Review this category again","cantComplete":"I can't complete these checks","cantCompleteHint":"Note what blocked you on the work order or tell your team lead.","cantCompleteStepPrompt":"Why can't you complete this step? (required to continue)","cantCompletePlaceholder":"e.g. No access to the panel, site policy, or missing tools…","saveExplanationContinue":"Save explanation and continue","backToChecks":"Back to checks","reasonRequiredToast":"Please explain why you can't complete this step to continue.","savedToWorkOrder":"Explanation saved on the work order.","explanationSavedStayOnGuide":"Saved to the technical report. You can keep going with the guide.","saveExplanationFailed":"Could not save to the work order. Try again.","workOrderStillLoading":"Work order is still loading. Wait a moment and try again.","notAvailableUntilRepairInProgress":"The troubleshooting guide is available after a technician is assigned (work order in Repair In Progress).","noSteps":"No steps configured for this category.","ultrasoundBadge":"Ultrasound diagnostic","footerTitle":"Still need help?","footerHint":"Continue on the work order to add details, attachments, or escalate through your normal process.","categories":{"air_conditioning":"Air conditioning","power":"Power & electrical","building_systems":"Building systems","applications_account":"Application & account","ultrasound":"GE Voluson 730 (Ultrasound)"},"steps":{"air_conditioning":[{"heroCaption":"Comfort and cooling basics","title":"Thermostat and operating mode","bullets":["Confirm the thermostat or controller is on, set to cool/heat as needed, and not locked or on a conflicting schedule.","If the display is blank, check power or batteries to the thermostat.","After changes, wait a few minutes; note room, setpoint, and what you observed."]},{"heroCaption":"Air movement","title":"Filters, grilles, and airflow","bullets":["Ensure supply/return grilles are open and not blocked.","If policy allows, check whether filters need cleaning or replacement.","Listen for unusual fan noise; note which indoor unit or zone is affected."]},{"heroCaption":"Condensate and drains","title":"Water and drain lines","bullets":["Look for water around the indoor unit; check visible condensate drains only if safe and permitted.","If you see active leaking, stop and report.","Record location and whether the issue is continuous or only when the system runs."]},{"heroCaption":"Before requesting service","title":"If there is still no improvement","bullets":["Capture temperatures, error codes or blinking patterns on the controller (if any).","List what you already tried and approximate times.","Do not open refrigerant circuits or electrical enclosures unless you are authorized."]}],"power":[{"heroCaption":"Panels, breakers, and protection devices","title":"Breakers, RCDs, and panels","bullets":["Identify whether one circuit or a whole area is affected.","Check the correct panel for that space; reset a tripped breaker only once if policy allows, and note which label matches the room or equipment.","If an RCD/GFCI device has tripped, press reset after unplugging new or suspect equipment—if it trips again, leave it off and report."]},{"heroCaption":"Local circuits","title":"Outlets, lighting, and equipment power","bullets":["Test another outlet on a different circuit; try a known-good lamp or charger.","Confirm equipment power switches and any local disconnects are on.","If only one device fails, try another socket before assuming a building fault."]},{"heroCaption":"Backup supply","title":"UPS, generators, and transfer","bullets":["If the site uses UPS or backup, check indicator panels for alarms or battery mode.","Do not reset generator or ATS equipment unless trained and authorized.","Record alarm messages verbatim for the work order."]},{"heroCaption":"Safety","title":"When to stop","bullets":["Smell of burning, arcing sounds, or hot panel surfaces: stay clear and report immediately.","Never defeat interlocks or safety covers.","Document affected areas and any labels on tripped devices."]}],"building_systems":[{"heroCaption":"Water and wet systems","title":"Shutoff and obvious leaks","bullets":["If safe, identify the nearest isolation valve for the affected fixture or zone—turn off only if you are authorized.","Contain small leaks with towels or bins; do not block drains meant for overflow.","Note color, flow rate, and whether hot or cold lines are involved."]},{"heroCaption":"Access and security","title":"Doors, locks, and access control","bullets":["Verify you are at the correct door or gate for the reported location.","For card or code access, confirm your credential is active; try a secondary reader if available.","Do not force doors or bypass locks—report access failures."]},{"heroCaption":"Fixtures","title":"Sanitary and small building items","bullets":["For simple blockages, use only approved tools or procedures; avoid chemical misuse.","Check for obvious obstructions where visible.","If sewage odor or backflow appears, stop and escalate."]},{"heroCaption":"Structure and glazing","title":"Glass, ceilings, and hazards","bullets":["Cordon off falling debris or broken glass; do not stand under damaged ceiling tiles.","Photograph from a safe distance if policy allows.","Record exact room/zone and approximate size of the issue."]}],"applications_account":[{"heroCaption":"Client side","title":"Browser, session, and cache","bullets":["Try a hard refresh or a second browser; close extra tabs if the app is slow.","Sign out and sign back in if the session seems stuck.","Note the exact URL, time, and any on-screen error text."]},{"heroCaption":"Connectivity","title":"Network and VPN","bullets":["Confirm Wi‑Fi or LAN is connected; try another network if permitted.","If VPN is required, reconnect and wait for full tunnel establishment.","Run a quick test to a known internal site only if standard procedure."]},{"heroCaption":"Identity","title":"Passwords, MFA, and lockouts","bullets":["Use the official password reset or unlock path—avoid sharing credentials.","If MFA fails, check device time sync and try one backup code if available.","Record whether the issue is all users or only your account."]},{"heroCaption":"Application errors","title":"Logs and support handoff","bullets":["Copy or screenshot error IDs; avoid pasting sensitive personal data into chat.","Note steps to reproduce in order.","Attach evidence to the work order or ticket per local policy."]}],"ultrasound":[{"heroCaption":"GE Voluson 730 — power and environment check","title":"Step 1 — Power supply and environment (Section 7-7-1)","bullets":["Verify the scanner power cable is firmly plugged into a standard wall outlet. Do NOT use a red emergency power outlet.","Confirm there is AC voltage at the wall outlet and that the room circuit breaker is ON.","Check that the main power switch on the back of the scanner is in the ON position — you should hear fan noise within a few seconds.","Ensure the room is not excessively hot. The GE Voluson 730 is prone to overheating — check that ventilation holes on the unit are clear of dust and obstructions.","If the scanner was recently moved from a cold environment (e.g. storage), allow at least 2 hours for temperature balance before powering on.","Record what you observe: any indicator lights, fan noise, amber/green ON/OFF button state."]},{"heroCaption":"GE Voluson 730 — probe inspection","title":"Step 2 — Probe and transducer check (Section 7-7-2, 7-7-3)","bullets":["Disconnect the probe from the port and reseat it firmly — a loose connection is the most common cause of missing or noisy images.","Visually inspect the probe cable along its full length for cracks, tears, or kinks. Check the connector for bent pins.","Inspect the probe lens for cracks or cuts — gel or disinfectant entering through cracks can permanently damage the transducer.","For 3D/4D mechanical probes (e.g. RAB series): gently press the dome — no error should appear. Wiggle the cable through its full length to check for intermittent faults.","If a second probe is available, swap it in. If the problem resolves, the fault is probe-related. If it persists across probes, the fault is in the machine itself.","Check the trackball: if it moves but is sluggish, remove the ball and clean it with a lint-free cloth. If it does not move at all, the trackball unit needs replacement."]},{"heroCaption":"GE Voluson 730 — image quality","title":"Step 3 — Image quality and noise (Section 7-7-2, 7-7-5)","bullets":["If the image is noisy or unclear, first check whether any nearby electrical devices (other medical equipment, transformers, HF surgery units) are causing electromagnetic interference. Move the scanner away from them if possible.","Try using a different wall socket — electrical noise from a shared circuit can degrade image quality.","Verify ultrasound gel is applied correctly and that gain, depth, and focus settings are appropriate for the examination type.","For monitor issues: if there is no image but power is on, check the video cable connection at the back of the monitor — ensure no pins are bent. Power cycle the monitor.","If the screen shows colour that is not uniform, power the monitor off and back on to activate the Auto-Degauss function.","If the image is fuzzy, adjust contrast and brightness settings. Check that the video cable is connected to both the scanner output and the monitor — a floating cable increases video output level and causes fuzz."]},{"heroCaption":"GE Voluson 730 — system restart procedure","title":"Step 4 — Correct shutdown and restart sequence","bullets":["Many GE Voluson software faults (freezing, boot loops, blank screens) are caused by improper shutdown — cutting main power instead of using the software sequence.","To shut down correctly: press the ON/OFF button on the control panel → wait for the system to complete its shutdown sequence → only then switch off the main power at the back.","To restart: switch main power ON → wait for the amber standby light → press the ON/OFF button → allow the full boot sequence to complete (typically 2–3 minutes).","If the system is frozen and unresponsive: disconnect main power, wait 30 seconds, then follow the correct startup sequence above.","If the system restarts automatically or shuts off within ~3 minutes of booting, the Primary Power Supply (CPY inside) is likely defective — do not continue cycling power; document and escalate.","After restart, check whether the reported problem persists before proceeding to the next step."]},{"heroCaption":"GE Voluson 730 — error codes and diagnostics","title":"Step 5 — Error codes, fan faults, and system diagnostics","bullets":["Note any error codes or messages displayed on screen verbatim — these are essential for GE service engineers.","Fan failure is a common GE Voluson fault: if you see a message like 'FAN1 Defect' or 'PS Code (0x5461)', the scanner is overheating. Shut it down immediately and do not restart until the fan issue is resolved.","Check the rear ventilation area for dust accumulation on the fan grilles — this is the leading cause of overheating on the Voluson series. Clean with a dry brush or low-pressure air if safe and permitted.","Check the keyboard and trackball for physical damage or stuck keys — some boot failures on Voluson E8 are triggered by keyboard faults rather than power supply issues.","If the scanner boots but shows no signal on the monitor, try reseating the video cable at both ends. If the monitor power indicator is flashing alternately green and orange, this indicates a potential monitor hardware failure.","Document: error code, time of occurrence, what the machine was doing when it failed, and any pattern (e.g. only after extended use, only on first boot in the morning)."]},{"heroCaption":"GE Voluson 730 — escalation to GE service","title":"Step 6 — Escalation: when to call GE / SAMAMA","bullets":["Escalate immediately if: the Primary Power Supply is suspected defective, a fan fault code is shown, internal hardware replacement (CKV module, BF board, power supply) is required, or the probe needs professional repair.","Before calling, gather: asset ID and serial number (visible in SEERA-ASM), the exact error code(s) from the screen, your findings from steps 1–5, and the service agreement details (warranty / contract / SAMAMA coverage).","Do NOT open refrigerant circuits, internal power supplies, or electronic enclosures unless you are a GE-authorized service engineer.","For SAMAMA-covered assets: log the findings in the Technical Report field on this work order, then contact SAMAMA with the work order number and your diagnostic notes.","For warranty-covered assets: contact GE Healthcare service directly with the serial number and error details.","After escalation, update this work order with the outcome: parts ordered, GE visit scheduled, or resolution confirmed."]},{"heroCaption":"GE Voluson 730 — printer troubleshooting","title":"Step 7 — Printer not working (Section 7-7-7)","bullets":["Check that the printer is properly connected — verify all signal and power supply cables between the printer and scanner are seated correctly.","Check that paper is loaded in the printer — insert paper if empty.","Verify the correct Print key(s) configuration is set on the scanner — configure if not set.","If still unable to print, check manual print operation — if manual print also fails, check signal cables between GEF and Backpanel.","If there is still no image on printout, check Video Output of system — if video output is OK, replace the printer. If video output is not OK, replace the CKV module.","Document the fault: which printer, what error message if any, and whether manual print also failed."]},{"heroCaption":"GE Voluson 730 — network troubleshooting","title":"Step 8 — Network connectivity issues (Section 7-7-10)","bullets":["Check that the network cable between the scanner and the wall network outlet is connected and firmly seated at both ends.","Try replacing with a known-good network cable to rule out a faulty cable.","Check the cable between the network connector on the Back Panel and the LAN connector on the GEF board inside the scanner.","Connect a network cable directly between the scanner and a PC — try to ping from the scanner to the PC's IP address. If ping succeeds, the internal hardware connection is OK and the issue is with the hospital network.","If ping fails, the fault is internal — escalate to GE service with findings.","Document: IP addresses used, ping result, which cable was tested, and whether the issue affects this scanner only or other network devices too."]}]}}}`),o$={title:"Asset Maintenance",maintenanceLogs:"Maintenance Logs",maintenanceDetails:"Maintenance Details",addMaintenance:"Add New Maintenance",listTotal:"Total: {{count}} maintenance log ",apiNotAvailable:"Maintenance API Not Available",apiNotDeployed:"The Asset Maintenance API endpoint is not deployed yet.",tryCreatingNew:"Try Creating New (Demo)",deletedSuccessfully:"Maintenance log deleted successfully!",status:{planned:"Planned",completed:"Completed",overdue:"Overdue",cancelled:"Cancelled"},maintenanceTeam:"Maintenance Team",newMaintenanceTeam:"New Maintenance Team",teamId:"Team ID",teamName:"Team Name",managerEmail:"Manager Email",managerName:"Supervisor Name",expertise:"Expertise",selectTeam:"Select Team",viewDetails:"View Details",editTeam:"Edit Team",duplicateTeam:"Duplicate Team",deleteTeam:"Delete Team",selectHospital:"Select Hospital",selectExpertise:"Select Expertise",selectManager:"Select Manager",enterTeamName:"Enter Team Name",teamInformation:"Team Information",selectUser:"Select User",selectRole:"Select Role",totalMembers:"Total Members",teamSummary:"Team Summary",addFirstMember:"Add First Member",manager:"Supervisor Email",loadingTeams:"Loading maintenance teams...",errorLoadingTeams:"Error Loading Maintenance Teams",deleteConfirmMessage:"Are you sure you want to delete this maintenance team? This action cannot be undone.",team:"Team",deleteTeamButton:"Delete Team",listTitle:"Maintenance Teams",statsTotalTeams:"Total Teams",statsManagers:"Managers",statsHospitals:"Hospitals",export:{title:"Export Maintenance Teams",selectData:"Select Data to Export",selectedRows:"Selected Rows",selectedCount:"Export {{count}} selected team ",currentPage:"Current Page",currentPageCount:"Export {{count}} team on current page",allWithFilters:"All Records (with current filters)",allWithFiltersCount:"Export all {{count}} team matching current filters",exportFormat:"Export Format",csv:"CSV",csvDesc:"Comma-separated values",excel:"Excel",excelDesc:"XLSX spreadsheet",columnsToExport:"Columns to Export",selectAll:"Select All",resetToDefault:"Reset to Default",columnsSelected:"{{count}} column selected",exporting:"Exporting...",exportButton:"Export",exportingSelected:"Exporting {{count}} selected row ",exportingPage:"Exporting {{count}} row from current page",exportingAll:"Exporting all {{count}} row "}},l$={title:"PPM",ppmDetails:"PPM Details",addPPM:"Add New PPM",periodicity:"Periodicity",dueDate:"Due Date",manageSchedules:"Manage PM Schedules",pmId:"PM ID",name:"Name",manufacturer:"Manufacturer",listTotal:"Total: {{count}} PPM schedule ",searchPlaceholder:"Search by ID, asset, company...",filterByCompany:"Filter by Company",company:"Company",asset:"Asset",assetType:"Asset Type",frequency:"Frequency",noOfPMs:"No. of PMs",totalAmount:"Total Amount",apiNotAvailable:"PPM API Not Available",apiNotDeployed:"The PPM API endpoint is not deployed yet.",tryCreatingNew:"Try Creating New (Demo)",deletedSuccessfully:"PPM schedule deleted successfully!",noSchedulesFound:"No PPM schedules found",createFirstSchedule:"Create your first PPM schedule",confirmDelete:"Confirm Delete",deleteConfirmMessage:"Are you sure you want to delete this PPM schedule? This action cannot be undone.",detail:{duplicateSchedule:"Duplicate PPM Schedule",newSchedule:"New PPM Schedule",scheduleDetails:"PPM Schedule Details",basicInformation:"Basic Information",financialInformation:"Financial Information",scheduleInformation:"Schedule Information",maintenanceTeam:"Maintenance Team",numberOfPMs:"Number of PMs",pricePerPM:"Price per PM",frequencyPlaceholder:"e.g., Monthly, Quarterly, Yearly",scheduleInfoAfterCreation:"Schedule information will appear after creation",assetName:"Asset Name",pleaseEnterAssetName:"Please enter Asset Name",duplicatedSuccessfully:"PPM schedule duplicated successfully!",createdSuccessfully:"PPM schedule created successfully!",updatedSuccessfully:"PPM schedule updated successfully!",failedToSave:"Failed to save",saveChanges:"Save Changes",loadingSchedule:"Loading PPM schedule...",backToSchedules:"Back to PPM schedules",errorLoading:"Error"}},c$={listTitle:"PPM Schedules",export:{title:"Export PPM Schedules",selectData:"Export Scope",selectedRows:"Selected Rows",selectedCount:"Export {{count}} selected schedule ",currentPage:"Current Page",currentPageCount:"Export {{count}} schedule on current page",allWithFilters:"All Records (with current filters)",allWithFiltersCount:"Export all {{count}} schedule matching current filters",csvDesc:"Comma-separated values",excelDesc:"XLSX spreadsheet",columnsToExport:"Columns to Export",selectAll:"Select All",resetToDefault:"Reset to Default",columnsSelected:"{{count}} column selected",exporting:"Exporting...",exportButton:"Export",exportingSelected:"Exporting {{count}} selected row ",exportingPage:"Exporting {{count}} row from current page",exportingAll:"Exporting all {{count}} row "}},u$={title:"Export",whatToExport:"What to Export",selectedRows:"Selected Rows",currentPage:"Current Page",allWithFilters:"All with Filters",exportSelected:"Export {count} selected",exportPage:"Export {count} on current page",exportAll:"Export all {count}",columnsToExport:"Columns to Export",selectAll:"Select All",selectDefault:"Select Default",exporting:"Exporting...",exportingSelected:"Exporting {count} selected row(s)",exportingPage:"Exporting {count} row(s) from current page",exportingAll:"Exporting all {count} row(s)",selected:"selected",rows:"rows"},d$={title:"Items",itemDetails:"Item details",newItem:"New item",addItem:"Add new item",itemId:"Item ID",itemCode:"Item code",itemName:"Item name",itemGroup:"Item group",stockUOM:"Stock UOM",partDescription:"Part description",brand:"Brand",valuationRate:"Valuation rate",openingStock:"Opening stock",lastCalibrationDate:"Last calibration date",nextCalibrationDate:"Next calibration date",selectItem:"Select item",selectItemGroup:"Select item group",selectHospital:"Select hospital",serialNo:"Serial no.",dateIn:"Date in",watts:"Watts",volts:"Volts",type:"Type",code:"Code",viewDetails:"View details",editItem:"Edit item",duplicateItem:"Duplicate item",deleteItem:"Delete item",basicInformation:"Basic information",inventoryDetails:"Inventory details",stockInformation:"Stock information",isStockItem:"Is stock item",isFixedAsset:"Is fixed asset",balanceQty:"Balance qty",calibrationInformation:"Calibration information",additionalInformation:"Additional information",refreshBalanceQty:"Refresh balance qty",warrantyMonths:"Warranty (months)",errorLoadingItems:"Error loading items",loadingItems:"Loading items...",deleteConfirmMessage:"Are you sure you want to delete this item? This cannot be undone.",backToInventory:"Back to inventory",loadingItem:"Loading item...",errorLoadingItem:"Error loading item",createNewItem:"Create new item",itemCodeLabel:"Item code",itemUpdatedSuccessfully:"Item updated successfully!",pleaseSaveFirst:"Please save the item first before submitting.",submittedSuccessfully:"Item submitted successfully!",failedToSave:"Failed to save",failedToSubmit:"Failed to submit",noItemsFound:"No items found",createFirstItem:"Create your first item",listTitle:"Inventory",listTotal:"Total: {{count}} item(s)",failedToLoadItems:"Failed to load items.",listAddItem:"Add item",export:{title:"Export items",selectData:"Select data to export",selectedRows:"Selected rows",selectedCount:"Export {{count}} selected item(s)",currentPage:"Current page",currentPageCount:"Export {{count}} item(s) on current page",allWithFilters:"All records (current filters)",allWithFiltersCount:"Export all {{count}} item(s) matching filters",csvDesc:"Comma-separated values",excelDesc:"XLSX spreadsheet",columnsToExport:"Columns to export",selectAll:"Select all",resetToDefault:"Reset to default",columnsSelected:"{{count}} column(s) selected",exporting:"Exporting...",exportButton:"Export",exportingSelected:"Exporting {{count}} selected row(s)",exportingPage:"Exporting {{count}} row(s) from current page",exportingAll:"Exporting all {{count}} row(s)"}},f$={title:"Issues",issueDetails:"Issue details",newIssue:"New ticket",addIssue:"Add new ticket",issueId:"Ticket ID",subject:"Subject",raisedBy:"Raised by",contact:"Contact",issueType:"Issue type",openingDate:"Opening date",resolutionDate:"Resolution date",resolvedBy:"Resolved by",firstRespondedOn:"First responded on",resolutionDetails:"Resolution details",selectIssue:"Select issue",allPriorities:"All priorities",allCompanies:"All companies",viewDetails:"View details",editIssue:"Edit issue",deleteIssue:"Delete issue",enterSubject:"Enter subject",selectPriority:"Select priority",selectIssueType:"Select issue type",describeIssue:"Describe the issue...",contactInformation:"Contact information",createNewIssue:"Create new support ticket",resolution:"Resolution",describeResolution:"Describe how the issue was resolved...",selectCompany:"Select company",statusInformation:"Status information",currentStatus:"Current status",timeline:"Timeline",loadingIssues:"Loading tickets...",errorLoadingIssues:"Error loading tickets",deleteConfirmMessage:"Are you sure you want to delete this ticket? This cannot be undone.",deletedSuccessfully:"Ticket deleted successfully!",createWorkOrderFromIssue:"Create work order",workflowActions:"Workflow actions",issueSingular:"support ticket",actionResults:"Action results:",listTitle:"Support tickets",listTotal:"Total",listSelected:"selected",statsTotalIssues:"Total tickets",statsOpen:"Open",statsResolved:"Resolved",statsClosed:"Closed",noIssuesFound:"No tickets found",createFirstIssue:"Create your first ticket",export:{title:"Export tickets",selectData:"Select data to export",selectedRows:"Selected rows",selectedCount:"Export {{count}} selected ticket(s)",currentPage:"Current page",currentPageCount:"Export {{count}} ticket(s) on current page",allWithFilters:"All records (current filters)",allWithFiltersCount:"Export all {{count}} ticket(s) matching filters",exportFormat:"Export format",csv:"CSV",csvDesc:"Comma-separated values",excel:"Excel",excelDesc:"XLSX spreadsheet",columnsToExport:"Columns to export",selectAll:"Select all",resetToDefault:"Reset to default",columnsSelected:"{{count}} column(s) selected",exporting:"Exporting...",exportButton:"Export",exportingSelected:"Exporting {{count}} selected row(s)",exportingPage:"Exporting {{count}} row(s) from current page",exportingAll:"Export all {{count}} row(s)"},status:{open:"Open",replied:"Replied",on_hold:"On hold",resolved:"Resolved",closed:"Closed"},priority:{low:"Low",medium:"Medium",high:"High",critical:"Critical"}},h$={title:"Users",userDetails:"User details",newUser:"New user",addUser:"Add new user",searchUsers:"Search users...",manageUsers:"Manage user accounts and permissions",noUsersFound:"No users found",tryAdjustingSearch:"Try adjusting your search.",noUsersAvailable:"No users available.",backToDashboard:"Back to dashboard",refresh:"Refresh",active:"Active",inactive:"Inactive",noEmail:"No email",created:"Created"},p$={title:"Events",eventDetails:"Event details",newEvent:"New event",addEvent:"Add event",upcomingEvents:"Upcoming events",eventsFromFrappe:"Events from Frappe",noEventsFound:"No events found",noEventsScheduled:"No events scheduled.",refreshEvents:"Refresh events"},m$={previous:"Previous",next:"Next",goTo:"Go to",go:"Go",page:"Page",showingToOf:"Showing {{start}} to {{end}} of {{total}} {{label}}",showingTo:"Showing {{start}} to {{end}} {{label}}",items:"items",assets:"assets",workOrders:"work orders",issues:"tickets",teams:"teams",inspections:"inspections",plans:"plans",sfdaEntries:"SFDA Recalls"},g$={loading:"Loading...",noResultsFound:"No results found",createNewDoctype:"Create new {{doctype}}",selectLabel:"Select {{label}}"},x$={loadingSupportPlans:"Loading support plans...",errorLoadingSupportPlans:"Error loading support plans",deleteConfirmMessage:"Are you sure you want to delete this support plan? This cannot be undone.",planId:"Plan ID",deletedSuccessfully:"Support plan deleted successfully!",deleteSupportPlan:"Delete support plan",noSupportPlansFound:"No support plans found",createFirstSupportPlan:"Create your first support plan",table:{planName:"Plan name",type:"Type",frequency:"Frequency",contractValue:"Contract value",warrantyStatus:"Warranty status",contractStatus:"Contract status"},status:{active:"Active",expired:"Expired",pending:"Pending",terminated:"Terminated early"},statusLabel:{warrantyPrefix:"W:",contractPrefix:"C:"},viewDetails:"View support plan",editSupportPlan:"Edit support plan",listTitle:"Support plans",statsTotalPlans:"Total plans",statsContracts:"Contracts",statsWarranties:"Warranties",statsActive:"Active",export:{title:"Export support plans",selectData:"Select data to export",selectedRows:"Selected rows",selectedCount:"Export {{count}} selected plan(s)",currentPage:"Current page",currentPageCount:"Export {{count}} plan(s) on current page",allWithFilters:"All records (current filters)",allWithFiltersCount:"Export all {{count}} plan(s) matching filters",exportFormat:"Export format",csv:"CSV",csvDesc:"Comma-separated values",excel:"Excel",excelDesc:"XLSX spreadsheet",columnsToExport:"Columns to export",selectAll:"Select all",resetToDefault:"Reset to default",columnsSelected:"{{count}} column(s) selected",exporting:"Exporting...",exportButton:"Export",exportingSelected:"Exporting {{count}} selected row(s)",exportingPage:"Exporting {{count}} row(s) from current page",exportingAll:"Export all {{count}} row(s)"}},y$={title:"Inspections",loadingInspections:"Loading inspections...",errorLoadingInspections:"Error loading inspections",deleteConfirmMessage:"Are you sure you want to delete this inspection? This cannot be undone.",inspectionId:"Inspection ID",deleteInspection:"Delete Inspection",deletedSuccessfully:"Inspection deleted successfully!",noInspectionsFound:"No inspections found",createFirstInspection:"Create your first inspection",type:"Type",workflowStateHeader:"Workflow state",targetDate:"Target Date",requestedBy:"Requested By",linkedWorkOrder:"Linked Work Order",savedFilters:"Saved Filters",newInspection:"New Inspection",inspectionReport:"Inspection Report",technicalDepartment:"Technical Department",filterStatus:"Filter Status",filterWorkflow:"Filter Workflow",filterType:"Filter Type",filterWorkOrder:"Filter Work Order",filterDepartment:"Filter Department",selectWorkOrder:"Select Work Order",selectDepartment:"Select Department",stats:{draft:"Draft",pendingApproval:"Pending Approval",closed:"Closed"},status:{open:"Open",in_progress:"In Progress",pending_review:"Pending Review",closed:"Closed"},workflowState:{draft:"Draft",sent_to_work_control:"Sent to Work Control",sent_to_technician:"Sent to technician",sent_to_supervisor:"Sent to Supervisor",closed:"Closed"},typeMap:{inspection:"Inspection",safety_inspection:"Safety Inspection"},viewDetails:"View Details",editInspection:"Edit Inspection",export:{title:"Export inspections",selectData:"Select data to export",selectedRows:"Selected rows",selectedCount:"Export {{count}} selected inspection(s)",currentPage:"Current page",currentPageCount:"Export {{count}} inspection(s) on current page",allWithFilters:"All records (current filters)",allWithFiltersCount:"Export all {{count}} inspection(s) matching filters",exportFormat:"Export format",csv:"CSV",csvDesc:"Comma-separated values",excel:"Excel",excelDesc:"XLSX spreadsheet",columnsToExport:"Columns to export",selectAll:"Select all",resetToDefault:"Reset to default",columnsSelected:"{{count}} column(s) selected",exporting:"Exporting...",exportButton:"Export",exportingSelected:"Exporting {{count}} selected row(s)",exportingPage:"Exporting {{count}} row(s) from current page",exportingAll:"Export all {{count}} row(s)",inspectionId:"Inspection ID",inspectionType:"Inspection Type",status:"Status",workflowState:"Workflow State",inspectionDate:"Inspection Date",targetClosureDate:"Target Closure Date",requestedBy:"Requested By",technicalDepartment:"Technical Department",linkedWorkOrder:"Linked Work Order",observationNote:"Observation Note",technicalResponse:"Technical Response",createdOn:"Created On",modifiedOn:"Modified On",createdBy:"Created By"},detail:{loadingDetails:"Loading Details...",errorLoading:"Error Loading...",backToList:"Back To List",newInspection:"New Inspection",inspectionDetails:"Inspection Details",createNewRecord:"Create New Record",cancelInspection:"Cancel Inspection",cancelConfirmMessage:"Are you sure you want to cancel this inspection? It will be marked cancelled and you can delete it afterwards if needed.",noGoBack:"No, go back",yesCancel:"Yes, cancel",cancelling:"Cancelling...",selectType:"Select Type",workOrderType:"Work Order Type",selectWorkOrderType:"Select Work Order Type",techniciansAvailable:"{{count}} technician(s) available for this type",selectDepartment:"Select Department",selectLocation:"Select Location",extensionNo:"Extension No",selectExtension:"Select Extension",inspectionDate:"Inspection Date",targetClosureDate:"Target Closure Date",cannotBeInPast:"Cannot be in the past",cannotBeEarlier:"Cannot be earlier than the inspection date or in the past",openingAttachment:"Opening Attachment",closingAttachment:"Closing Attachment",uploading:"Uploading...",uploadFile:"Upload File",uploadClosingFile:"Upload Closing File",noAttachment:"No Attachment",removeAttachment:"Remove Attachment",assignmentInformation:"Assignment Information",requestedBy:"Requested By",selectUser:"Select User",technicalDepartment:"Technical Department",assignedTechnician:"Assigned Technician",selectTechnician:"Select Technician",selectWOTypeFirst:"Select work order type first to filter technicians",noTechniciansForType:"No technicians found for this work order type",notesAndResponse:"Notes And Response",observationNote:"Observation Note",placeholderObservation:"Enter observation notes...",technicalResponse:"Technical Response",placeholderTechnicalResponse:"Enter technical response...",linkedWorkOrder:"Linked Work Order",linkedCorrectiveWO:"Linked Corrective WO",readOnly:"Read Only",viewWorkOrder:"View Work Order",noLinkedWorkOrder:"No Linked Work Order",workflowActions:"Workflow Actions",workflowProgress:"Workflow Progress",workControl:"Work Control",technicianStep:"Technician Step",supervisorStep:"Supervisor Step",draftStep:"Draft Step",closedStep:"Closed Step",statusInfo:"Status Info",documentStatus:"Document Status",woType:"WO Type",assignedTo:"Assigned To",submitted:"Submitted",cancelled:"Cancelled",added:"Added",removed:"Removed",modified:"Modified",items:"Items",rows:"Rows",activityLog:"Activity Log",activityLogRefreshed:"Activity Log Refreshed",refreshActivityLog:"Refresh Activity Log",noChangesRecorded:"No Changes Recorded",createdThisInspection:"Created This Inspection",changedFrom:"Changed From",documentUpdated:"Document Updated",showLess:"Show Less",showAll:"Show All",department:"Department",location:"Location",inspectionType:"Inspection Type",status:"Status",removeClosingAttachment:"Remove Closing Attachment",noClosingAttachment:"No Closing Attachment",cancelledSuccessfully:"Cancelled Successfully",failedToCancel:"Failed to cancel: {{error}}",failedToSave:"Failed to save: {{error}}",failedToDelete:"Failed to delete: {{error}}",targetClosureMandatory:"Target closure date is required to save.",attachmentMandatory:"Attachment is required to save.",extensionMandatory:"Extension number is required to save.",createdSuccessfully:"Created Successfully",updatedSuccessfully:"Updated Successfully",deletedSuccessfully:"Deleted Successfully",inspectionDateInPast:"Inspection date cannot be in the past.",targetClosureEarlier:"Target closure cannot be earlier than the inspection date.",targetClosureInPast:"Target closure date cannot be in the past.",fileSizeExceeds:"File size exceeds 10 MB limit",fileUploadedSuccess:"File uploaded successfully",failedToUpload:"Failed to upload file",closingAttachmentRemoved:"Closing Attachment Removed",closingAttachmentUploadedSuccess:"Closing Attachment Uploaded Success",failedToUploadClosing:"Failed to upload closing attachment",attachmentRemoved:"Attachment Removed",systemManager:"System Manager",workflow:"Workflow"}},v$={title:"Active map",loading:"Loading map data...",hospital:"Hospital",departmentWoType:"Department (work order type)",selectHospital:"Select Hospital",selectDepartment:"Select Department",clearDepartmentHint:"Clear department to filter by hospital only",clearHospitalHint:"Clear hospital to filter by department only",clearFilters:"Clear Filters",legendHospital:"Hospital",legendDepartment:"Department (work order type)",legendHasUrgent:"Has urgent work orders",totalAssets:"Total Assets",workOrderStatus:"Work Order Status",status:"Status",count:"Count",normal:"Normal",urgent:"Urgent",open:"Open",workInProgress:"Work In Progress",pendingReview:"Pending Review",completed:"Completed",closed:"Closed",preventiveMaintenance:"Preventive Maintenance",planned:"Planned",overdue:"Overdue",viewAssets:"View Assets",viewWorkOrders:"View Work Orders",viewAllWorkOrders:"View All Work Orders",showingWorkOrdersByType:"Work orders by type",deptWoType:"Department / WO type",tooltipDept:"Department",tooltipHospital:"Hospital",tooltipUrgent:"Urgent",normalWos:"Normal work orders:",urgentWos:"Urgent work orders:",closedWos:"Closed work orders:",plannedPms:"Planned PM:",completedPms:"Completed PM:",assets:"Assets"},b$={title:"Maintenance calendar",viewType:"View type",maintenanceLog:"Maintenance Log",ppmPlanner:"PPM planner",filters:"Filters",yearlyMap:"Yearly map",yearlyMapTitle:"Yearly PPM planner map view",mapShort:"Map",hospital:"Hospital",selectHospital:"Select Hospital",department:"Department",allDepartments:"All Departments",status:"Status",allStatuses:"All Statuses",planned:"Planned",completed:"Completed",overdue:"Overdue",cancelled:"Cancelled",assignedTo:"Assigned To",allTechnicians:"All Technicians",clearFilters:"Clear Filters",months:{january:"January",february:"February",march:"March",april:"April",may:"May",june:"June",july:"July",august:"August",september:"September",october:"October",november:"November",december:"December"},days:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},previousMonth:"Previous Month",today:"Today",nextMonth:"Next Month",loadingLogs:"Loading maintenance logs...",loadingPpm:"Loading PPM schedules...",overdueInTooltip:"(overdue)",clickToViewDetails:"Click to view details",clickToViewPpmPlanner:"Click to open PPM planner",ppmPlannerDefault:"PPM planner",legendCompleted:"Completed",legendPlanned:"Planned",legendOverdue:"Overdue",legendToday:"Today",summaryPpmPlanners:"PPM planners"},w$={title:"SFDA Recalls",loading:"Loading SFDA Recalls...",errorLoading:"Error Loading SFDA Entries",noEntriesFound:"No SFDA entries found",viewDetails:"View Details",savedFilters:"Saved Filters",paginationLabel:"SFDA Recalls",columns:{title:"Title",date:"Date",ncmdrRef:"NCMDR Ref",manufacturer:"Manufacturer",passed:"Passed"},filters:{title:"Title",titlePlaceholder:"Search by title...",ncmdrRef:"NCMDR Ref",ncmdrRefPlaceholder:"Search by NCMDR ref...",manufacturer:"Manufacturer",manufacturerPlaceholder:"Search by manufacturer...",date:"Date",dateStart:"Date From",dateEnd:"Date To",dateNewest:"Alert Date (newest first)",dateOldest:"Alert Date (oldest first)",passed:"Passed"},stats:{passed:"Passed (this page)",notPassed:"Not Passed (this page)"},deviceFields:{material:"Material",materialDescription:"Material Description",catalogNumber:"Catalog Number",udi:"UDI",serialNo:"Serial No",matching:"Matching",gtin:"GTIN",batch:"Batch"},detail:{loading:"Loading SFDA entry details...",errorLoading:"Error Loading SFDA Entry",notFound:"SFDA entry not found",backToList:"Back to SFDA Recalls",entryInformation:"Weekly Bulletin Information",deviceList:"Alerts & Device List",devices:"device rows",alerts:"alerts",alertCount:"Alert Count",noDevices:"No alerts or devices in this weekly entry",adeDetailPdf:"ADE Detail PDF",openPdfNewTab:"PDF",noPdf:"No PDF attached",passed:"Passed",notPassed:"Not Passed",passedDate:"Passed Date",adeDetailUrl:"ADE",viewAde:"ADE",statusSummary:"Status Summary",passedStatus:"Passed Status",deviceCount:"Device Row Count",pdfAttached:"Rows with PDF",auditInfo:"Audit Information",documentId:"Document ID",openMatchingAsset:"View matching asset",resolvingMatches:"Resolving matches..."}},j$={common:XB,sidebar:JB,projects:QB,profile:ZB,login:e$,dashboard:t$,commonFields:r$,filters:a$,listPages:n$,assets:s$,workOrders:i$,maintenance:o$,ppm:l$,ppmPlanner:c$,exportModal:u$,items:d$,issues:f$,users:h$,events:p$,pagination:m$,linkField:g$,supportPlans:x$,inspections:y$,activeMap:v$,maintenanceCalendarPage:b$,sfdaEntries:w$},_$={dashboard:"لوحة التحكم",assets:"الأصول",workOrders:"أوامر العمل",maintenance:"صيانة الأصول",ppm:"الصيانة الوقائية",logout:"تسجيل الخروج",login:"تسجيل الدخول",email:"البريد الإلكتروني",password:"كلمة المرور",submit:"إرسال",cancel:"إلغاء",save:"حفظ",saveChanges:"حفظ التغييرات",delete:"حذف",deleting:"جاري الحذف...",edit:"تعديل",create:"إنشاء",search:"بحث",filter:"تصفية",export:"تصدير",import:"استيراد",loading:"جاري التحميل...",noData:"لا توجد بيانات",error:"خطأ",success:"نجح",darkMode:"الوضع الداكن",lightMode:"الوضع الفاتح",language:"اللغة",english:"الإنجليزية",arabic:"العربية",backToDashboard:"العودة إلى لوحة التحكم",back:"رجوع",saving:"جاري الحفظ...",tryAgain:"حاول مرة أخرى",filters:"المرشحات",enterFilterName:"أدخل اسم المرشح",saveFilterPreset:"حفظ مجموعة المرشحات",saveFilter:"حفظ المرشح",filtering:"جاري التصفية...",updating:"جاري التحديث...",clearFilters:"مسح المرشحات",total:"الإجمالي",selected:"محدد",rows:"صفوف",actions:"إجراءات",selectAllTitle:"تحديد الكل",deselectAllTitle:"إلغاء تحديد الكل",typeToSearch:"اكتب للبحث...",typing:"جاري الكتابة...",enterFilterNameExample:"أدخل اسم المرشح (مثال: 'مفتوح أولوية عالية')"},k$={title:"أصول سيرا",loggedInAs:"تم تسجيل الدخول كـ:",version:"أصول سيرا نظام إدارة الأصول الإصدار 2.26",inventory:"المخزون",ppmPlanner:"مخطط الصيانة الوقائية",maintenanceCalendar:"تقويم الصيانة",activeMap:"الخريطة النشطة",maintenanceTeam:"فريق الصيانة",procurement:"المشتريات",projects:"إدارة المشاريع",sla:"اتفاقية مستوى الخدمة",support:"الدعم",inspection:"التفتيش",sfdaEntries:"يتذكر SFDA",userProfile:"الملف الشخصي"},S$={moduleTitle:"إدارة المشاريع",hubSubtitle:"المشاريع والمهام وجداول الوقت والمستندات المرتبطة.",reportsCardSub:"مخططات ولقطة محفظة المشاريع.",title:"المشاريع",listTotal:"الإجمالي: ",listProject:"مشروع",listProjects:"مشاريع",projectsDoctype:"المشاريع",tasksDoctype:"المهام",timesheetDoctype:"جداول الوقت",projectTemplateDoctype:"قوالب المشاريع",activityTypeDoctype:"أنواع النشاط",newProject:"مشروع جديد",newTask:"مهمة جديدة",newTimesheet:"جدول وقت جديد",newProjectTemplate:"قالب مشروع جديد",newActivityType:"نوع نشاط جديد",searchPlaceholder:"البحث باسم المشروع…",noProjects:"لا توجد مشاريع.",noTasks:"لا توجد مهام.",noTimesheets:"لا توجد جداول وقت.",projectName:"اسم المشروع",customer:"العميل",expectedEnd:"تاريخ الانتهاء المتوقع",progress:"التقدم",project:"المشروع",assignedTo:"معيّن إلى",dueDate:"تاريخ الاستحقاق",timesheetId:"جدول الوقت",totalHours:"إجمالي الساعات",taskColumn:"المهمة",templateCreated:"تم حفظ القالب.",templateUpdated:"تم تحديث القالب.",timesheetCreated:"تم حفظ جدول الوقت.",timesheetUpdated:"تم تحديث جدول الوقت.",reportsDashboardTitle:"تقارير المشاريع",reportsDashboardSubtitle:"مؤشرات ومخططات من بيانات المشروع والمهمة وجدول الوقت.",projectOverviewSection:"نظرة عامة على المشروع",projectOverviewBanner:"نظرة عامة على المشروع",reportProjectFilter:"مشروع التقرير",reportProjectFilterHint:"يؤثر الاختيار على المخططات والمؤشرات والمهام. تظهر لقطة المشروع وتحديثات المشروع فقط عند اختيار مشروع.",selectProjectPlaceholder:"اختر مشروعًا…",searchProjectPlaceholder:"بحث بالاسم أو الرقم…",clearProjectSelection:"إلغاء الاختيار",noMatchingOpenProjects:"لا توجد مشاريع مفتوحة مطابقة.",projectPickerLimitNote:"عرض حتى 2000 مشروع مفتوح الأحدث تعديلًا. صفِّ البحث للعثور على مشروع.",snapshotProjectBudget:"ميزانية المشروع",snapshotOverallShort:"الإجمالي",overviewProjectNameLabel:"اسم المشروع :",overviewDepartmentLabel:"القسم:",overviewDateLabel:"التاريخ:",overviewProgressLabel:"التقدم:",overviewCustomerLabel:"العميل:",overviewDatesUpToday:"الأيام حتى اليوم",overviewProjectDuration:"مدة المشروع",overviewStartDateLabel:"تاريخ بدء المشروع :",overviewEndDateLabel:"تاريخ انتهاء المشروع :",projectNotesSection:"ملاحظات المشروع",reportsCardLabel:"التقارير"},N$={twoFactorTitle:"المصادقة الثنائية (تطبيق OTP)",twoFactorSidebarTitle:"المصادقة الثنائية",twoFactorOtpAppNoteShort:"تطبيق المصادقة مطلوب. أعد التعيين فقط عند الحاجة لرمز QR جديد.",twoFactorLoading:"جاري تحميل إعدادات الأمان…",twoFactorRequired:"المصادقة الثنائية مطلوبة لحسابك.",twoFactorNotRequired:"المصادقة الثنائية غير مطلوبة لأدوارك.",twoFactorDisabledSite:"المصادقة الثنائية غير مفعّلة على هذا الموقع.",twoFactorOtpAppNote:"استخدم تطبيق مصادقة (Google Authenticator، Authy، إلخ). بعد إعادة التعيين، راجع بريدك عند أول تسجيل دخول لرابط إعداد QR.",resetOtp:"إعادة تعيين المصادقة",resetOtpConfirm:"إعادة تعيين سر OTP؟ ستحتاج لمسح رمز QR جديد عند تسجيل الدخول التالي.",resetOtpSuccess:"تم إعادة تعيين المصادقة. راجع بريدك عند تسجيل الدخول التالي.",resetOtpFailed:"تعذر إعادة تعيين المصادقة."},C$={title:"أصول سيرا",subtitle:"نظام إدارة الأصول",signIn:"قم بتسجيل الدخول للمتابعة",emailPlaceholder:"أدخل بريدك الإلكتروني",passwordPlaceholder:"أدخل كلمة المرور",loginFailed:"فشل تسجيل الدخول. يرجى التحقق من بيانات الاعتماد الخاصة بك.",demoLogin:"تسجيل دخول تجريبي",or:"أو",forgotPassword:"نسيت كلمة المرور؟",forgotPasswordTitle:"نسيت كلمة المرور؟",forgotPasswordHint:"أدخل البريد الإلكتروني أو اسم المستخدم الذي تستخدمه لتسجيل الدخول. سنرسل تعليمات إعادة التعيين إلى بريدك المسجل.",forgotPasswordUserRequired:"يرجى إدخال البريد أو اسم المستخدم.",forgotPasswordUserPlaceholder:"البريد أو اسم المستخدم",forgotPasswordSubmit:"إرسال رابط إعادة التعيين",forgotPasswordClose:"إلغاء",forgotPasswordSentSuccess:"تم إرسال تعليمات إعادة تعيين كلمة المرور إلى بريدك المسجل. يرجى التحقق من صندوق الوارد.",forgotPasswordNotFound:"لم يتم العثور على حساب مستخدم بالبريد أو اسم المستخدم المقدم.",forgotPasswordTimeout:"استغرق الطلب وقتًا طويلاً. حاول مرة أخرى أو تواصل مع المسؤول إذا لم يكن البريد الصادر مُعدًا.",forgotPasswordCannotReset:"إعادة تعيين كلمة المرور غير متاحة لهذا الحساب.",forgotPasswordFailed:"تعذر إرسال بريد إعادة التعيين. حاول مرة أخرى لاحقًا.",finishingSignOut:"جاري إنهاء تسجيل الخروج…",afterPasswordResetSignIn:"تم تحديث كلمة المرور. يرجى تسجيل الدخول بكلمة المرور الجديدة.",twoFactorTitle:"التحقق بخطوتين",twoFactorCodeLabel:"رمز التحقق",twoFactorCodePlaceholder:"000000",twoFactorVerify:"تحقق",twoFactorBackToLogin:"العودة لتسجيل الدخول",twoFactorOtpAppEnter:"أدخل الرمز المكون من 6 أرقام من تطبيق المصادقة.",twoFactorOtpAppSetupIncomplete:"إعداد المصادقة غير مكتمل. راجع بريدك لرابط رمز QR أو تواصل مع المسؤول.",twoFactorEmailQrHint:"افتح رابط الإعداد في بريدك على هذا الجهاز لمسح رمز QR، ثم عد هنا لإدخال الرمز.",twoFactorCodeRequired:"يرجى إدخال رمز التحقق.",twoFactorInvalid:"رمز التحقق غير صحيح. حاول مرة أخرى.",twoFactorSessionExpired:"انتهت جلسة التحقق. يرجى تسجيل الدخول مرة أخرى."},T$={title:"لوحة التحكم",loading:"جاري تحميل لوحة التحكم...",totalAssets:"إجمالي عدد الأصول",assetsDown:"الأصول إلى أسفل",openWorkOrders:"أوامر العمل المفتوحة",workOrdersInProgress:"أوامر العمل قيد التنفيذ",completedWorkOrders:"أوامر العمل المكتملة",totalWorkOrders:"إجمالي أوامر العمل",overdueWorkOrders:"أوامر العمل المتأخرة",closedWorkOrders:"أوامر العمل المغلقة",upTime:"وقت التشغيل",downTime:"وقت التوقف",workOrderStatus:"حالة أمر العمل",workOrderByType:"أمر العمل حسب النوع",maintenanceByAsset:"الصيانة حسب الأصل",assigneesStatus:"حالة المكلفين",assigneesCount:"المكلفون",totalTasksAssigned:"المهام المعينة",maintenanceFrequency:"تكرار الصيانة",maintenanceLogs:"سجلات الصيانة",assetUptime:"وقت تشغيل الأصل",avgResponseTime:"متوسط وقت الاستجابة",maintenanceEfficiency:"كفاءة الصيانة",overdueMaintenance:"صيانة متأخرة",upDownTimeChart:"مخطط وقت التشغيل والتوقف",ppmStatus:"حالة الصيانة الوقائية",completionRate:"معدل الإكمال",completionRateChartHint:"نسبة الإكمال خلال آخر 7 أشهر — مرر المؤشر على النقطة للتفاصيل",completionRateTooltip:"{{value}}% معدل الإكمال",viewFullReport:"عرض التقرير الكامل",noDataAvailable:"لا توجد بيانات",loadingTechnicianHours:"جاري تحميل ساعات الفنيين...",loadingTechnicianWorkData:"جاري تحميل بيانات عمل الفنيين...",welcome:"مرحباً،",user:"المستخدم",failedToLoad:"فشل تحميل بيانات لوحة التحكم",recentRecords:"السجلات الأخيرة",latestEntries:"أحدث الإدخالات من النظام الخلفي",quickActions:"إجراءات سريعة",cardTotalAssets:"إجمالي الأصول",cardOpenWorkOrders:"أوامر العمل المفتوحة",cardInProgress:"قيد التنفيذ",cardCompletedWorkOrders:"أوامر العمل المكتملة",viewUsers:"عرض المستخدمين",manageUserAccounts:"إدارة حسابات المستخدمين",settings:"الإعدادات",configurePreferences:"تكوين التفضيلات",events:"الأحداث",viewCalendarEvents:"عرض أحداث التقويم",reports:"التقارير",viewAnalyticsReports:"عرض التحليلات والتقارير",ppmTemplateCounts:"عدادات قوالب الصيانة الوقائية",repairCost:"تكلفة الإصلاح",dashboardFilter:"فلتر لوحة التحكم",allDepartments:"جميع الأقسام",workOrderStatusDistribution:"توزيع حالة أوامر العمل",workOrderInspectionSummary:"ملخص تفتيش أوامر العمل",woRejectionSummary:"ملخص رفض أوامر العمل",total:"الإجمالي",inProgress:"قيد التنفيذ",completed:"مكتمل",totalSales:"إجمالي المبيعات",average:"متوسط",noChartDataAvailable:"لا توجد بيانات للمخطط",loadingInspectionData:"جاري تحميل بيانات التفتيش...",noInspectionDataAvailable:"لا توجد بيانات تفتيش",totalRejections:"إجمالي الرفض",loadingRejectionData:"جاري تحميل بيانات الرفض...",noRejectionDataAvailable:"لا توجد بيانات رفض",department:"القسم",allOperational:"جميع الأنظمة تعمل",low:"منخفض",highPriority:"أولوية عالية",allClear:"الكل واضح",fastResponse:"استجابة سريعة",monitor:"مراقبة",onTrack:"وفق الخطة",needsAttention:"يحتاج اهتمام",totalHours:"الإجمالي: {{value}} ساعة",technicianWorkingHours:"ساعات عمل الفنيين",techniciansWorked:"ملخص عمل الفنيين",pendingReviewWorkOrders:"قيد المراجعة",clear:"مسح",clearFilter:"مسح الفلتر",label:"التسمية",open:"مفتوح"},E$={assetId:"معرف الأصل",assetName:"اسم الأصل",serialNumber:"الرقم التسلسلي",company:"الشركة/المستشفى",location:"الموقع",department:"القسم",deviceStatus:"حالة الجهاز",modality:"الطريقة",manufacturer:"الشركة المصنعة",supplier:"المورد",assetCategory:"فئة الأصل",purchaseDate:"تاريخ الشراء",purchaseAmount:"مبلغ الشراء",availableForUseDate:"تاريخ التوفر للاستخدام",createdOn:"تم الإنشاء في",modifiedOn:"تم التعديل في",createdBy:"تم الإنشاء بواسطة",modifiedBy:"تم التعديل بواسطة",workOrderId:"معرف أمر العمل",workOrderType:"النوع",status:"الحالة",priority:"الأولوية",description:"الوصف",assignedTo:"مكلف إلى",scheduledDate:"التاريخ المجدول",completedDate:"تاريخ الإكمال",hospital:"المستشفى",assetType:"نوع الأصل",siteName:"اسم الموقع",assignedSupervisor:"المشرف المعين",assignedContractor:"المقاول المعين",serialNumberShort:"الرقم التسلسلي",departmentShort:"القسم",manufacturerShort:"الشركة المصنعة",workOrderIdShort:"معرف أمر العمل",assetShort:"الأصل",typeShort:"النوع",nameShort:"الاسم",pmId:"معرف الصيانة الوقائية",name:"الاسم"},A$={filterBy:"تصفية حسب",createdDate:"تاريخ الإنشاء",latestModifiedDate:"آخر تاريخ تعديل",startDate:"تاريخ البداية",endDate:"تاريخ النهاية",assetId:"معرف الأصل",hospital:"المستشفى",name:"الاسم",serial:"الرقم التسلسلي",status:"الحالة",location:"الموقع",dept:"القسم",modality:"الطريقة",mfr:"الشركة المصنعة",supplier:"المورد",workOrderId:"معرف أمر العمل",asset:"الأصل",type:"النوع",priority:"الأولوية",workflowState:"حالة سير العمل",allStatuses:"أي حالة",allStates:"جميع الحالات",allTypes:"جميع الأنواع",allPriorities:"أي أولوية",allHospitals:"جميع المستشفيات",allModalities:"جميع الطرق",filterByCompany:"تصفية حسب الشركة",allManufacturers:"جميع الشركات المصنعة",sortBy:"ترتيب حسب",sortCreationNewest:"تاريخ الإنشاء (الأحدث أولاً)",sortCreationOldest:"تاريخ الإنشاء (الأقدم أولاً)",sortModifiedNewest:"آخر تعديل (الأحدث أولاً)",sortModifiedOldest:"آخر تعديل (الأقدم أولاً)",sortNameAsc:"الاسم (أ-ي)",sortNameDesc:"الاسم (ي-أ)",sortAssetNameAsc:"اسم الأصل (أ-ي)",sortAssetNameDesc:"اسم الأصل (ي-أ)",sortItemNameAsc:"اسم العنصر (أ-ي)",sortItemNameDesc:"اسم العنصر (ي-أ)",sortTeamNameAsc:"اسم الفريق (أ-ي)",sortTeamNameDesc:"اسم الفريق (ي-أ)"},O$={addNew:"إضافة جديد",searchPlaceholder:"بحث...",noResults:"لم يتم العثور على نتائج",showing:"عرض",of:"من",results:"نتائج",selectAll:"تحديد الكل",deselectAll:"إلغاء تحديد الكل",selected:"محدد",actions:"الإجراءات",view:"عرض",edit:"تعديل",delete:"حذف",duplicate:"نسخ",export:"تصدير",print:"طباعة",filters:"المرشحات",clearFilters:"مسح المرشحات",applyFilters:"تطبيق المرشحات",columns:"الأعمدة",exportSelected:"تصدير المحدد",exportAllOnPage:"تصدير الكل في الصفحة",exportAllWithFilters:"تصدير الكل مع المرشحات",exportFormat:"تنسيق التصدير",csv:"CSV",excel:"Excel",exporting:"جاري التصدير...",exportComplete:"اكتمل التصدير",close:"إغلاق",loading:"جاري التحميل...",refresh:"تحديث",deselectAllTitle:"إلغاء تحديد الكل",selectAllTitle:"تحديد الكل",typeToSearch:"اكتب للبحث...",enterFilterName:"أدخل اسم المرشح",enterFilterNameExample:"أدخل اسم المرشح (مثال: 'مفتوح أولوية عالية')",allStatuses:"أي حالة",savedFilters:"المرشحات المحفوظة",clear:"مسح",noIssuesFound:"لم يتم العثور على تذاكر",createFirstIssue:"أنشئ تذكرتك الأولى",saveFilterPreset:"حفظ مجموعة المرشحات",saveFilter:"حفظ المرشح",filtering:"جاري التصفية...",noMaintenanceTeamsFound:"لم يتم العثور على فرق صيانة",createFirstTeam:"أنشئ فريقك الأول",all:"الكل",tryAdjustingFilters:"حاول تعديل البحث أو المرشحات",getStartedCreateFirst:"ابدأ بإنشاء مخطط الصيانة الوقائية الأول",noMaintenanceLogsFound:"لم يتم العثور على سجلات صيانة",createFirstMaintenanceLog:"أنشئ سجل الصيانة الأول",total:"الإجمالي",noPPMSchedulesFound:"لم يتم العثور على جداول صيانة وقائية",createFirstPPMSchedule:"أنشئ جدول الصيانة الوقائية الأول",deleteConfirmCannotUndo:"لا يمكن التراجع عن هذا الإجراء."},P$={title:"الأصول",addAsset:"إضافة أصل جديد",assetDetails:"تفاصيل الأصل",assetInformation:"معلومات الأصل",newAsset:"أصل جديد",duplicateAsset:"نسخ الأصل",fromAsset:"من الأصل",creatingFromAsset:"جاري إنشاء أمر العمل من الأصل",assetInfoPrefilled:"معلومات الأصل معبأة مسبقاً من",pleaseSelectWorkOrderType:"يرجى اختيار نوع أمر العمل وإضافة أي تفاصيل",loadingAssetDetails:"جاري تحميل تفاصيل الأصل...",pleaseEnterAssetName:"يرجى إدخال اسم الأصل",pleaseSelectCategory:"يرجى اختيار الفئة",assetDuplicatedSuccessfully:"تم نسخ الأصل بنجاح!",assetCreatedSuccessfully:"تم إنشاء الأصل بنجاح!",assetUpdatedSuccessfully:"تم تحديث الأصل بنجاح!",sourceAssetNotFound:"الأصل المصدر غير موجود",assetNotFoundMessage:"لم يتم العثور على الأصل الذي تحاول نسخه.",backToAssetsList:"العودة إلى قائمة الأصول",backToList:"العودة إلى قائمة الأصول",createNewAsset:"إنشاء أصل جديد",newAssetDetails:"تفاصيل أصل جديد",noAssetsFound:"لم يتم العثور على أصول",createFirstAsset:"أنشئ أول أصل",deleteConfirmTitle:"حذف الأصل",deleteConfirmMessage:"هل أنت متأكد من حذف هذا الأصل؟ لا يمكن التراجع عن هذا الإجراء.",noDataToExport:"لا توجد بيانات للتصدير",loadingPermissions:"جاري تحميل الصلاحيات...",selectAssetId:"اختر معرف الأصل",selectHospital:"المستشفى",viewDetails:"عرض التفاصيل",editAsset:"تعديل الأصل",createWorkOrder:"إنشاء أمر عمل",viewLinkedWOs:"عرض أوامر العمل المرتبطة",moreActions:"المزيد من الإجراءات",exportAsJson:"تصدير كـ JSON",printAsset:"طباعة",deviceStatus:"حالة الجهاز",status:{up:"يعمل",down:"متوقف"},apiNotAvailable:"واجهة برمجة الأصول غير متاحة",apiNotDeployed:"نقطة نهاية واجهة برمجة الأصول غير مُنشأة بعد.",tryCreatingNew:"حاول إنشاء أصل جديد (تجريبي)",listTotal:"الإجمالي: ",table:{assetName:"اسم الأصل",serialNo:"الرقم التسلسلي",company:"الشركة",location:"الموقع",status:"الحالة",updatedOn:"آخر تحديث",actions:"إجراءات"},export:{title:"تصدير الأصول",selectData:"اختر البيانات للتصدير",selectedRows:"الصفوف المحددة",selectedCount:"تصدير {{count}} أصل{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",currentPage:"الصفحة الحالية",currentPageCount:"تصدير {{count}} أصل{{count !== 1 ? 'اً' : ''}} في الصفحة الحالية",allWithFilters:"جميع السجلات (مع الفلاتر الحالية)",allWithFiltersCount:"تصدير جميع {{count}} أصل{{count !== 1 ? 'اً' : ''}} المطابقة للفلاتر الحالية",csvDesc:"قيم مفصولة بفاصلة",excelDesc:"جدول XLSX",columnsToExport:"الأعمدة للتصدير",selectAll:"تحديد الكل",resetToDefault:"إعادة التعيين للافتراضي",columnsSelected:"{{count}} عمود{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",exporting:"جاري التصدير...",exportButton:"تصدير",exportingSelected:"جاري تصدير {{count}} صف{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",exportingPage:"جاري تصدير {{count}} صف{{count !== 1 ? 'اً' : ''}} من الصفحة الحالية",exportingAll:"جاري تصدير جميع {{count}} صف{{count !== 1 ? 'اً' : ''}}"},detail:{assetInformation:"معلومات الأصل",technicalSpecs:"المواصفات الفنية",financialDetails:"التفاصيل المالية",assetFinanceBooks:"دفاتر أصول التمويل",addRow:"إضافة صف",duplicatingFrom:"النسخ من:",noDepartmentsMapped:"لا توجد أقسام معينة لهذا المبنى",departmentsAvailable:"{{count}} قسم متاح (مُصفى حسب المبنى)",selectDepartmentForRoom:"اختر القسم لتفعيل رقم الغرفة",depreciationMethodNote:"طريقة الاستهلاك هي طريقة محاسبية لتوزيع تكلفة أصل ملموس على عمره الإنتاجي.",calculateDepreciation:"حساب الاستهلاك",noFinanceBooksYet:'لم تتم إضافة دفاتر مالية بعد. انقر "إضافة صف" للإضافة.',noSparePartsYet:'لم تتم إضافة قطع غيار بعد. انقر "إضافة صف" للإضافة.',assetName:"اسم الأصل",category:"الفئة",modality:"الطريقة",class:"الفئة",assetId:"معرف الأصل",deviceStatus:"حالة الجهاز",serialCode:"الرمز التسلسلي",technicalDepartment:"القسم الفني",manufacturer:"الشركة المصنعة",model:"الموديل",totalHours:"إجمالي الساعات",downTimeHours:"وقت التوقف (بالساعات)",upTimeHours:"وقت التشغيل (بالساعات)",placeholderAssetName:"مثال: كمبيوتر محمول موديل X",placeholderSerialCode:"مثال: SN-12345",placeholderModelNumber:"رقم الموديل",placeholderZero:"0",placeholderDescription:"وصف موجز للأصل",placeholderPONumber:"رقم أمر الشراء",selectClass:"اختر الفئة",classA:"فئة أ",classB:"فئة ب",classC:"فئة ج",autoGenerated:"يُولد تلقائياً",calculatedFromAvailableDate:"محسوب من تاريخ التوفر للاستخدام",calculatedTotalMinusDown:"محسوب: إجمالي الساعات - وقت التوقف",hospital:"المستشفى",siteName:"اسم الموقع",selectSite:"اختر الموقع",building:"المبنى",department:"القسم",roomNumber:"رقم الغرفة",location:"الموقع",recalled:"مسترجع",selectStatus:"اختر الحالة",operational:"يعمل",underMaintenance:"قيد الصيانة",decommissioned:"مُوقف",selectServiceAgreement:"اختر اتفاقية الخدمة",warranty:"ضمان",contract:"عقد",frameWork:"إطار عمل",mainContractor:"المقاول الرئيسي",outOfWarranty:"خارج الضمان",underDismantle:"قيد التفكيك",underInstallation:"قيد التركيب",selectServiceCoverage:"اختر تغطية الخدمة",pmOnly:"صيانة وقائية فقط",labour:"عمالة",labourAndParts:"عمالة وقطع غيار",comprehensive:"شامل",supplierVendor:"المورد/البائع",selectMethod:"اختر الطريقة",straightLine:"الطريقة الخطية",doubleDecliningBalance:"الرصيد المتناقص المزدوج",writtenDownValue:"القيمة المكتوبة",manual:"يدوي",recycling:"إعادة التدوير",donation:"تبرع",sale:"بيع",assetDuplicatedSuccess:"تم نسخ الأصل بنجاح!",assetCreatedSuccess:"تم إنشاء الأصل بنجاح!",assetUpdatedSuccess:"تم تحديث الأصل بنجاح!",failedToSave:"فشل حفظ الأصل",cannotSubmitNotSaved:"لا يمكن الإرسال: الأصل غير محفوظ بعد",confirmSubmit:'هل أنت متأكد من إرسال هذا الأصل؟ بعد الإرسال، يمكن تعديل الحقول المحددة بـ "السماح عند الإرسال" فقط.',assetSubmittedSuccess:"تم إرسال الأصل بنجاح!",failedToSubmit:"فشل إرسال الأصل",pleaseSaveFirstForPPM:"يرجى حفظ الأصل أولاً لعرض خطة الصيانة الوقائية",pleaseSaveFirstForHistory:"يرجى حفظ الأصل أولاً لعرض سجل الأصل",failedToLoadPPMPlan:"فشل تحميل خطة الصيانة الوقائية. يرجى المحاولة مرة أخرى.",noPlannedMaintenance:"لم يتم العثور على صيانة مخطط لها لهذا الأصل",noWorkOrdersFound:"لم يتم العثور على أوامر عمل",noSparePartsUsed:"لم تُستخدم قطع غيار",noMaintenanceRecords:"لم يتم العثور على سجلات صيانة",noMaintenanceTasks:"لم يتم العثور على مهام صيانة",selectBuildingFirst:"اختر المبنى أولاً لتفعيل القسم",coverage:"التغطية",siteContractor:"مقاول الموقع",contractNumber:"رقم العقد",serviceAgreement:"اتفاقية الخدمة",serviceCoverage:"تغطية الخدمة",purchaseOrderNumber:"رقم أمر الشراء",grossPurchaseAmount:"مبلغ الشراء الإجمالي",purchaseDate:"تاريخ الشراء",installationDate:"تاريخ التركيب",availableForUseDate:"تاريخ التوفر للاستخدام",financeBook:"دفتر المالية",depreciationMethod:"طريقة الاستهلاك",totalDepreciations:"إجمالي الاستهلاك",frequencyMonths:"التكرار (بالأشهر)",depreciationPostingDate:"تاريخ ترحيل الاستهلاك",startDate:"تاريخ البداية",endDate:"تاريخ النهاية",totalAmount:"المبلغ الإجمالي",selectRoomFirst:"اختر رقم الغرفة لتفعيل الموقع",autoSetFromRoom:"تم التعيين تلقائياً من خريطة الغرفة",moreDetails:"تفاصيل إضافية"}},D$=JSON.parse(`{"title":"أوامر العمل","addWorkOrder":"إضافة أمر عمل جديد","workOrderDetails":"تفاصيل أمر العمل","newWorkOrder":"أمر عمل جديد","duplicateWorkOrder":"نسخ أمر العمل","createFromAsset":"إنشاء أمر عمل من الأصل","closeWorkOrders":"إغلاق أوامر العمل","closeConfirmTitle":"إغلاق أوامر العمل","closeConfirmMessage":"هل أنت متأكد من إغلاق أمر/أوامر العمل المحددة؟","deleteConfirmMessage":"هل أنت متأكد من حذف أمر العمل هذا؟ لا يمكن التراجع عن هذا الإجراء.","cancelConfirmMessage":"هل أنت متأكد من إلغاء أمر العمل هذا؟ سيتم وضع علامة ملغى ويمكنك حذفه لاحقاً إذا لزم الأمر.","assignConfirmMessage":"هل أنت متأكد من تعيين أمر العمل هذا للفني/الفنيين التاليين؟","deleteWorkOrder":"حذف أمر العمل","cancelWorkOrder":"إلغاء أمر العمل","loadingWorkOrders":"جاري تحميل أوامر العمل...","loadingDetails":"جاري تحميل تفاصيل أمر العمل...","backToList":"العودة إلى قائمة أوامر العمل","status":{"open":"مفتوح","work_in_progress":"جاري العمل","pending_review":"قيد المراجعة","completed":"مكتمل","cancelled":"ملغى","closed":"مغلق"},"priorityNormal":"عادي","priorityUrgent":"عاجل","workflowState":{"draft":"مسودة"},"priority":{"normal":"عادي","urgent":"عاجل"},"table":{"workOrderId":"معرف أمر العمل","asset":"الأصل","type":"النوع","technicalReport":"التقرير الفني","department":"القسم","workflowState":"حالة سير العمل","priority":"الأولوية","noWorkOrdersFound":"لم يتم العثور على أوامر عمل","createFirstWorkOrder":"أنشئ أول أمر عمل"},"export":{"title":"تصدير أوامر العمل","selectData":"ماذا تُصدّر","selectedRows":"الصفوف المحددة","selectedCount":"تصدير {{count}} أمر عمل{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}","currentPage":"الصفحة الحالية","currentPageCount":"تصدير {{count}} أمر عمل{{count !== 1 ? 'اً' : ''}} في الصفحة الحالية","allWithFilters":"جميع السجلات (مع الفلاتر الحالية)","allWithFiltersCount":"تصدير جميع {{count}} أمر عمل{{count !== 1 ? 'اً' : ''}} المطابقة للفلاتر الحالية","csvDesc":"قيم مفصولة بفاصلة","excelDesc":"جدول XLSX","columnsToExport":"الأعمدة للتصدير","selectAll":"تحديد الكل","resetToDefault":"إعادة التعيين للافتراضي","columnsSelected":"{{count}} عمود{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}","exporting":"جاري التصدير...","exportButton":"تصدير","exportingSelected":"جاري تصدير {{count}} صف{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}","exportingPage":"جاري تصدير {{count}} صف{{count !== 1 ? 'اً' : ''}} من الصفحة الحالية","exportingAll":"جاري تصدير جميع {{count}} صف{{count !== 1 ? 'اً' : ''}}"},"closeModal":{"title":"إغلاق أوامر العمل","confirmBulkClose":"تأكيد عملية الإغلاق الجماعي","aboutToClose":"أنت على وشك إغلاق {{count}} أمر عمل{{count !== 1 ? 'اً' : ''}}. سيتم تغيير حالة سير العمل إلى \\"مغلق\\".","alreadyClosedNote":"ملاحظة: {{count}} أمر عمل{{count !== 1 ? ' مغلقة' : ' مغلق'}} بالفعل وسيتم تخطيها.","selectedWorkOrders":"أوامر العمل المحددة ({{count}})","workOrderId":"معرف أمر العمل","currentStatus":"الحالة الحالية","workflowState":"حالة سير العمل","alreadyClosed":"(مغلق بالفعل)","willClose":"سيتم إغلاق {{count}} أمر عمل{{count !== 1 ? 'اً' : ''}}","allAlreadyClosed":"جميع أوامر العمل المحددة مغلقة بالفعل","cancel":"إلغاء","close":"إغلاق","closing":"جاري الإغلاق..."},"detail":{"workOrderInformation":"معلومات أمر العمل","assignments":"التعيينات","statusSummary":"ملخص الحالة","existingWorkOrders":"أمر/أوامر العمل الموجودة:","created":"تاريخ الإنشاء","proceedCreateNew":"هل تريد المتابعة لإنشاء أمر عمل جديد؟","loadingTechnicians":"جاري تحميل الفنيين...","feedbackBy":"التقييم بواسطة","overallSatisfaction":"رضا إجمالي","overallRatingPreview":"معاينة التقييم الإجمالي","uploading":"جاري الرفع...","uploadOpeningFile":"رفع ملف الفتح","uploadClosingFile":"رفع ملف الإغلاق","noAttachment":"لا يوجد مرفق","noClosingAttachment":"لا يوجد مرفق إغلاق","closingAttachment":"مرفق الإغلاق","currentState":"الحالة الحالية","loadingActions":"جاري تحميل الإجراءات...","actionResults":"نتائج الإجراء:","checkingFeedback":"جاري التحقق من التقييم...","yourRating":"تقييمك","repairStatus":"حالة الإصلاح","priority":"الأولوية","lastModified":"آخر تعديل","documentStatus":"حالة المستند","loadingActivity":"جاري تحميل النشاط...","added":"تمت الإضافة:","removed":"تمت الإزالة:","modified":"تم التعديل:","items":"عنصر/عناصر","rows":"صف/صفوف","pleaseAllowPopupsServiceReport":"يرجى السماح بالنوافذ المنبثقة لهذا الموقع لطباعة تقرير الخدمة.","pleaseProvideAtLeastOneRating":"يرجى تقديم تقييم واحد على الأقل","feedbackSubmittedSuccessfully":"تم إرسال التقييم بنجاح!","failedToSubmitFeedback":"فشل إرسال التقييم","feedbackUpdatedSuccessfully":"تم تحديث التقييم بنجاح!","failedToUpdateFeedback":"فشل تحديث التقييم","locationAutoSetTo":"تم تعيين الموقع تلقائياً إلى: {{location}}","noTechniciansSelected":"لم يتم تحديد فنيين","techniciansAssignedSuccessfully":"تم تعيين {{count}} فني/فنيين إضافي بنجاح","removedTechnician":"تمت إزالة {{name}}","itemAlreadyAdded":"الصنف \\"{{itemCode}}\\" مضاف بالفعل في الصف {{row}}. يرجى اختيار صنف مختلف.","insufficientStock":"مخزون غير كافٍ لـ {{itemCode}}. المتوفر: {{available}}، المطلوب: {{required}}","pleaseEnterSerialNumberToSearch":"يرجى إدخال الرقم التسلسلي للبحث","assetFound":"تم العثور على الأصل: {{name}}","noAssetFoundWithSerialNumber":"لم يتم العثور على أصل بهذا الرقم التسلسلي","fileSizeExceeds":"حجم الملف يتجاوز حد 10 ميجابايت","fileUploadedSuccessfully":"تم رفع الملف بنجاح","failedToUploadFile":"فشل رفع الملف","attachmentRemoved":"تم إزالة المرفق","failureDateSetToCurrentTime":"تم تعيين تاريخ العطل على الوقت الحالي","firstRespondedOnSetToCurrentTime":"تم تعيين وقت أول استجابة على الوقت الحالي","completionDateSetToCurrentTime":"تم تعيين تاريخ الإكمال على الوقت الحالي","firstRespondedOnSetTo":"تم تعيين وقت أول استجابة على {{datetime}}","completionDateSetTo":"تم تعيين تاريخ الإكمال على {{datetime}}","assignedSupervisorMandatory":"المشرف المعيّن إلزامي لدور مراقبة العمل.","assignedEngineerMandatory":"المهندس المعيّن إلزامي لدور مراقبة العمل.","assignedTechnicianMandatory":"الفني المعيّن إلزامي عندما تكون الحالة \\"إرسال إلى المهندس\\".","workOrderCancelledSuccessfully":"تم إلغاء أمر العمل بنجاح!","failedToCancel":"فشل الإلغاء: {{error}}","workOrderDeletedSuccessfully":"تم حذف أمر العمل بنجاح!","failedToDelete":"فشل الحذف: {{error}}","pleaseSelectWorkOrderType":"يرجى اختيار نوع أمر العمل","workOrderUpdatedSuccessfully":"تم تحديث أمر العمل بنجاح!","workOrderCreatedSuccessfully":"تم إنشاء أمر العمل بنجاح!","workOrderCreatedFromAssetSuccessfully":"تم إنشاء أمر العمل من الأصل بنجاح!","workOrderDuplicatedSuccessfully":"تم نسخ أمر العمل بنجاح!","documentModifiedByAnotherUser":"تم تعديل المستند من قبل مستخدم آخر. جاري التحديث...","pleaseReviewLatestChanges":"يرجى مراجعة أحدث التغييرات والمحاولة مرة أخرى.","failedToSaveWorkOrder":"فشل حفظ أمر العمل: {{error}}","technicalReportMandatoryForSupervisor":"التقرير الفني إلزامي عند الإرسال مباشرة إلى المشرف. يرجى ملء حقل التقرير الفني قبل المتابعة.","applyingAction":"جاري تطبيق الإجراء \\"{{action}}\\"...","assignedTo":"معيّن إلى: {{name}}","actionCompletedSuccessfully":"تم إكمال الإجراء \\"{{action}}\\" بنجاح!","documentModifiedRefreshing":"تم تعديل المستند. جاري التحديث...","tryActionAgainAfterReview":"يرجى المحاولة مرة أخرى بعد مراجعة أحدث التغييرات.","failedToApplyAction":"فشل تطبيق الإجراء \\"{{action}}\\". {{error}}","editModeEnabled":"تم تفعيل وضع التحرير","editCancelledChangesDiscarded":"تم إلغاء التحرير - تم تجاهل التغييرات","closingAttachmentRemoved":"تم إزالة مرفق الإغلاق","closingAttachmentUploadedSuccessfully":"تم رفع مرفق الإغلاق بنجاح","failedToUploadClosingAttachment":"فشل رفع مرفق الإغلاق","newStockItemRowAdded":"تمت إضافة صف صنف جديد","stockItemRemoved":"تمت إزالة صنف المخزون {{item}}","activityLogRefreshed":"تم تحديث سجل النشاط","errorLabel":"خطأ","backToList":"العودة إلى قائمة أوامر العمل","duplicateWorkOrder":"نسخ أمر العمل","createFromAsset":"إنشاء أمر عمل من الأصل","newWorkOrder":"أمر عمل جديد","workOrderDetails":"تفاصيل أمر العمل","existingWorkOrderFound":"تم العثور على أمر عمل موجود","workOrderExistsForAsset":"يوجد أمر عمل بالفعل لهذا الأصل بحالة سير عمل غير معتمدة أو مغلقة.","workOrderExistsForTypeAndRoom":"يوجد أمر عمل بالفعل لهذا النوع ورقم الغرفة بحالة سير عمل غير معتمدة أو مغلقة.","proceedWithNewWO":"هل ما زلت تريد المتابعة بإنشاء أمر عمل جديد؟","proceedAnyway":"متابعة على أي حال","noGoBack":"لا، تراجع","yesCancel":"نعم، إلغاء","cancelling":"جاري الإلغاء...","deleting":"جاري الحذف...","selectAdditionalTechnicians":"اختر فنيين إضافيين","searchTechnicians":"البحث عن فنيين...","techniciansSelected":"{{count}} فني/فنيين محدد","clearAll":"مسح الكل","noTechniciansMatchSearch":"لا يوجد فنيون يطابقون بحثك","noTechniciansFound":"لم يتم العثور على فنيين","hospital":"المستشفى","technicalDepartment":"القسم الفني","woType":"نوع أمر العمل","assetId":"معرف الأصل","assetName":"اسم الأصل","extensionNo":"رقم الامتداد","building":"المبنى","departmentName":"اسم القسم","roomNo":"رقم الغرفة","location":"الموقع","manufacturer":"الشركة المصنعة","supplier":"المورد","assignedSupervisor":"المشرف المعيّن","assignedEngineer":"المهندس المعيّن","assignedTechnician":"الفني المعيّن","fromAsset":"من الأصل","assetDetailsAutoPopulated":"تم تعبئة تفاصيل الأصل تلقائياً","selectBuildingFirst":"اختر المبنى أولاً لتفعيل القسم","printServiceReport":"طباعة تقرير الخدمة","removeAttachment":"إزالة المرفق","removeClosingAttachment":"إزالة مرفق الإغلاق","setToCurrentDateTime":"تعيين على التاريخ والوقت الحالي","selectItem":"اختر الصنف","selectWarehouse":"اختر المستودع","autoPopulatedFromStock":"تم تعبئته تلقائياً من المخزون","removeItem":"إزالة الصنف","noItemsAddedYet":"لم تتم إضافة أصناف بعد","commentsDiscussion":"التعليقات والنقاش","refreshActivityLog":"تحديث سجل النشاط","supervisorsAvailableForType":"{{count}} مشرف/مشرفين معيّن متاح لهذا النوع","civilWorkCategory":"فئة الأعمال المدنية","selectCivilWorkCategory":"اختر فئة الأعمال المدنية","selectPendingReason":"اختر سبب الانتظار","pleaseSpecifyReason":"يرجى تحديد السبب...","selectServiceAgreement":"اختر اتفاقية الخدمة","selectServiceCoverage":"اختر تغطية الخدمة","describeComplaint":"صف طبيعة الشكوى...","describeWorkPerformed":"صف العمل المنفذ...","enterSerialNumber":"أدخل الرقم التسلسلي","searchAssetBySerial":"البحث عن الأصل بالرقم التسلسلي","workOrder":"أمر العمل:","giveFeedback":"تقديم التقييم","editFeedback":"تعديل التقييم","feedbackDetails":"تفاصيل التقييم","confirmAssignment":"تأكيد التعيين","notRated":"غير مُقيّم","serviceReport":"تقرير الخدمة","assetInfoPrefilled":"تم تعبئة معلومات الأصل تلقائياً من","linkedFromAsset":"مرتبط من الأصل:","loadingAssetDetails":"جاري تحميل تفاصيل الأصل...","cancelled":"ملغى","workOrderId":"معرف أمر العمل","pendingReason":"سبب الانتظار","otherReason":"سبب آخر","serviceAgreementDetails":"تفاصيل اتفاقية الخدمة","siteContractor":"متعاقد الموقع","subcontractor":"المقاول من الباطن","model":"الموديل","description":"الوصف","natureOfComplaint":"طبيعة الشكوى","technicalReport":"التقرير الفني","selectWoTypeFirstForSupervisors":"اختر نوع أمر العمل أولاً لتصفية المشرفين المعيّنين","noSupervisorsFound":"لم يتم العثور على مشرفين معيّنين لهذا النوع من أمر العمل","requiredForExistingWO":"* مطلوب لأوامر العمل الموجودة","selectWoTypeFirstForEngineers":"اختر نوع أمر العمل أولاً لتصفية المهندسين","noEngineersFound":"لم يتم العثور على مهندسين (دور مهندس المقاول) لهذا النوع من أمر العمل","engineersAvailable":"{{count}} مهندس/مهندسين متاح","selectWoTypeFirstForTechnicians":"اختر نوع أمر العمل أولاً لتصفية الفنيين","noTechniciansFoundForType":"لم يتم العثور على فنيين لهذا النوع من أمر العمل","techniciansAvailable":"{{count}} فني/فنيين متاح","requiredForSentToEngineer":"* مطلوب لحالة \\"إرسال إلى المهندس\\"","autoCalculated":"(محسوب تلقائياً)","autoSetOnRepairStart":"(يُعيّن عند بدء الإصلاح)","autoSetOnClose":"(يُعيّن عند الإغلاق)","totalItems":"إجمالي الأصناف:","confirmAction":"تأكيد الإجراء","confirmActionMessage":"هل أنت متأكد أنك تريد {{action}} أمر العمل هذا؟","processing":"جاري المعالجة...","yesAction":"نعم، {{action}}","systemManagerNote":"مدير النظام: عرض جميع الإجراءات الصالحة لهذه الحالة.","saveToSeeActions":"احفظ التغييرات لرؤية جميع الإجراءات المتاحة.","availableActions":"الإجراءات المتاحة","allOptionsAvailable":"جميع الخيارات متاحة","bothFilledMessage":"تم ملء الفني والتقرير الفني. يمكنك الآن استخدام أي إجراء سير عمل متاح أعلاه.","technicianAssigned":"تم تعيين الفني","assignedTechnicianLabel":"الفني المعيّن:","wantToEnableSendToSupervisor":"هل تريد أيضاً تمكين \\"إرسال إلى المشرف\\"؟","fillTechnicalReportToUnlock":"املأ حقل \\"التقرير الفني\\" لفتح هذا الخيار","technicalReportFilled":"تم ملء التقرير الفني","howWasService":"كيف كانت الخدمة لأمر العمل هذا؟","noFeedbackYet":"لم يُقدّم أي تقييم بعد","statusInfoAfterCreation":"ستظهر معلومات الحالة بعد الإنشاء","activityLog":"سجل النشاط","refreshActivityLogTitle":"تحديث سجل النشاط","noChangesRecorded":"لم يُسجّل أي تغيير بعد","createdThisWorkOrder":"أنشأ أمر العمل هذا","showLess":"عرض أقل","showAll":"عرض الكل","entries":"إدخالات","changedFrom":"تغيّر من","documentUpdated":"تم تحديث المستند","addItem":"إضافة صنف","addFirstItem":"+ إضافة الصنف الأول","item":"الصنف","valuationRate":"معدل التقييم","warehouse":"المستودع","consumedQty":"الكمية المستهلكة","availableStock":"المخزون المتاح","totalValue":"إجمالي القيمة","action":"الإجراء","open":"مفتوح","autoGenerated":"يُنشأ تلقائياً","updating":"جاري التحديث...","submitting":"جاري الإرسال...","updateFeedback":"تحديث التقييم","submitFeedback":"إرسال التقييم","editRating":"تعديل التقييم","saveSelection":"حفظ التحديد"}}`),R$={title:"صيانة الأصول",maintenanceLogs:"سجلات الصيانة",maintenanceDetails:"تفاصيل الصيانة",addMaintenance:"إضافة صيانة جديدة",listTotal:"الإجمالي: {{count}} سجل صيانة{{count !== 1 ? '' : ''}}",apiNotAvailable:"واجهة صيانة الأصول غير متاحة",apiNotDeployed:"لم يتم نشر نقطة نهاية واجهة صيانة الأصول بعد.",tryCreatingNew:"جرب الإنشاء (تجريبي)",deletedSuccessfully:"تم حذف فريق الصيانة بنجاح!",status:{planned:"مخطط",completed:"مكتمل",overdue:"متأخر",cancelled:"ملغى"},maintenanceTeam:"فريق الصيانة",newMaintenanceTeam:"فريق صيانة جديد",teamId:"معرف الفريق",teamName:"اسم الفريق",managerEmail:"بريد المشرف",managerName:"اسم المشرف",expertise:"الاختصاص",selectTeam:"اختر الفريق",viewDetails:"عرض التفاصيل",editTeam:"تعديل الفريق",duplicateTeam:"نسخ الفريق",deleteTeam:"حذف الفريق",selectHospital:"اختر المستشفى",selectExpertise:"اختر الاختصاص",selectManager:"اختر المشرف",enterTeamName:"أدخل اسم الفريق",teamInformation:"معلومات الفريق",selectUser:"اختر المستخدم",selectRole:"اختر الدور",totalMembers:"إجمالي الأعضاء",teamSummary:"ملخص الفريق",addFirstMember:"أضف العضو الأول",manager:"بريد المشرف",loadingTeams:"جاري تحميل فرق الصيانة...",errorLoadingTeams:"خطأ في تحميل فرق الصيانة",deleteConfirmMessage:"هل أنت متأكد من حذف فريق الصيانة هذا؟ لا يمكن التراجع عن هذا الإجراء.",team:"الفريق",deleteTeamButton:"حذف الفريق",listTitle:"فرق الصيانة",statsTotalTeams:"إجمالي الفرق",statsManagers:"المديرون",statsHospitals:"المستشفيات",export:{title:"تصدير فرق الصيانة",selectData:"اختر البيانات للتصدير",selectedRows:"الصفوف المحددة",selectedCount:"تصدير {{count}} فريق صيانة محدد",currentPage:"الصفحة الحالية",currentPageCount:"تصدير {{count}} فريق صيانة في الصفحة الحالية",allWithFilters:"جميع السجلات (مع المرشحات الحالية)",allWithFiltersCount:"تصدير كل {{count}} فريق صيانة مطابق للمرشحات",exportFormat:"تنسيق التصدير",csv:"CSV",csvDesc:"قيم مفصولة بفواصل",excel:"Excel",excelDesc:"جدول XLSX",columnsToExport:"الأعمدة للتصدير",selectAll:"تحديد الكل",resetToDefault:"إعادة إلى الافتراضي",columnsSelected:"{{count}} عمود محدد",exporting:"جاري التصدير...",exportButton:"تصدير",exportingSelected:"تصدير {{count}} صف محدد",exportingPage:"تصدير {{count}} صف من الصفحة الحالية",exportingAll:"تصدير كل {{count}} صف"}},F$={title:"الصيانة الوقائية",ppmDetails:"تفاصيل الصيانة الوقائية",addPPM:"إضافة صيانة وقائية جديدة",periodicity:"الدورية",dueDate:"تاريخ الاستحقاق",manageSchedules:"إدارة الجداول",pmId:"معرف الصيانة الوقائية",name:"الاسم",manufacturer:"الشركة المصنعة",listTotal:"الإجمالي: {{count}} جدول صيانة وقائية{{count !== 1 ? '' : ''}}",searchPlaceholder:"ابحث بالمعرف أو الأصل أو الشركة...",filterByCompany:"تصفية حسب الشركة",company:"الشركة",asset:"الأصل",assetType:"نوع الأصل",frequency:"التكرار",noOfPMs:"عدد الصيانات الوقائية",totalAmount:"المبلغ الإجمالي",apiNotAvailable:"واجهة الصيانة الوقائية غير متاحة",apiNotDeployed:"لم يتم نشر نقطة نهاية واجهة الصيانة الوقائية بعد.",tryCreatingNew:"جرب الإنشاء (تجريبي)",deletedSuccessfully:"تم حذف جدول الصيانة الوقائية بنجاح!",noSchedulesFound:"لم يتم العثور على جداول صيانة وقائية",createFirstSchedule:"أنشئ أول جدول صيانة وقائية",confirmDelete:"تأكيد الحذف",deleteConfirmMessage:"هل أنت متأكد من حذف جدول الصيانة الوقائية هذا؟ لا يمكن التراجع عن هذا الإجراء.",detail:{duplicateSchedule:"نسخ جدول الصيانة الوقائية",newSchedule:"جدول صيانة وقائية جديد",scheduleDetails:"تفاصيل جدول الصيانة الوقائية",basicInformation:"المعلومات الأساسية",financialInformation:"المعلومات المالية",scheduleInformation:"معلومات الجدول",maintenanceTeam:"فريق الصيانة",numberOfPMs:"عدد الصيانات الوقائية",pricePerPM:"السعر لكل صيانة وقائية",frequencyPlaceholder:"مثال: شهري، ربع سنوي، سنوي",scheduleInfoAfterCreation:"ستظهر معلومات الجدول بعد الإنشاء",assetName:"اسم الأصل",pleaseEnterAssetName:"يرجى إدخال اسم الأصل",duplicatedSuccessfully:"تم نسخ جدول الصيانة الوقائية بنجاح!",createdSuccessfully:"تم إنشاء جدول الصيانة الوقائية بنجاح!",updatedSuccessfully:"تم تحديث جدول الصيانة الوقائية بنجاح!",failedToSave:"فشل الحفظ",saveChanges:"حفظ التغييرات",loadingSchedule:"جاري تحميل جدول الصيانة الوقائية...",backToSchedules:"العودة إلى جداول الصيانة الوقائية",errorLoading:"خطأ"}},M$={listTitle:"جداول الصيانة الوقائية",export:{title:"تصدير جداول الصيانة الوقائية",selectData:"نطاق التصدير",selectedRows:"الصفوف المحددة",selectedCount:"تصدير {{count}} جدول{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",currentPage:"الصفحة الحالية",currentPageCount:"تصدير {{count}} جدول{{count !== 1 ? 'اً' : ''}} في الصفحة الحالية",allWithFilters:"جميع السجلات (مع الفلاتر الحالية)",allWithFiltersCount:"تصدير جميع {{count}} جدول{{count !== 1 ? 'اً' : ''}} المطابقة للفلاتر الحالية",csvDesc:"قيم مفصولة بفاصلة",excelDesc:"جدول XLSX",columnsToExport:"الأعمدة للتصدير",selectAll:"تحديد الكل",resetToDefault:"إعادة التعيين للافتراضي",columnsSelected:"{{count}} عمود{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",exporting:"جاري التصدير...",exportButton:"تصدير",exportingSelected:"جاري تصدير {{count}} صف{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",exportingPage:"جاري تصدير {{count}} صف{{count !== 1 ? 'اً' : ''}} من الصفحة الحالية",exportingAll:"جاري تصدير جميع {{count}} صف{{count !== 1 ? 'اً' : ''}}"}},L$={title:"تصدير",whatToExport:"ما الذي سيتم تصديره",selectedRows:"الصفوف المحددة",currentPage:"الصفحة الحالية",allWithFilters:"الكل مع المرشحات",exportSelected:"تصدير {count} محدد",exportPage:"تصدير {count} في الصفحة الحالية",exportAll:"تصدير الكل {count}",columnsToExport:"الأعمدة للتصدير",selectAll:"تحديد الكل",selectDefault:"تحديد الافتراضي",exporting:"جاري التصدير...",exportingSelected:"جاري تصدير {count} صف(وف) محدد(ة)",exportingPage:"جاري تصدير {count} صف(وف) من الصفحة الحالية",exportingAll:"جاري تصدير جميع {count} صف(وف)",selected:"محدد",rows:"صفوف"},I$={title:"الأصناف",itemDetails:"تفاصيل الصنف",newItem:"صنف جديد",addItem:"إضافة صنف جديد",itemId:"معرف الصنف",itemCode:"كود الصنف",itemName:"اسم الصنف",itemGroup:"مجموعة الأصناف",stockUOM:"وحدة المخزون",partDescription:"وصف القطعة",brand:"العلامة التجارية",valuationRate:"معدل التقييم",openingStock:"رصيد الافتتاح",lastCalibrationDate:"تاريخ المعايرة الأخير",nextCalibrationDate:"تاريخ المعايرة القادم",selectItem:"اختر الصنف",selectItemGroup:"اختر مجموعة الأصناف",selectHospital:"اختر المستشفى",serialNo:"الرقم التسلسلي",dateIn:"تاريخ الدخول",watts:"واط",volts:"فولت",type:"النوع",code:"الرمز",viewDetails:"عرض التفاصيل",editItem:"تعديل الصنف",duplicateItem:"نسخ الصنف",deleteItem:"حذف الصنف",basicInformation:"المعلومات الأساسية",inventoryDetails:"تفاصيل المخزون",stockInformation:"معلومات المخزون",isStockItem:"صنف مخزني",isFixedAsset:"أصل ثابت",balanceQty:"الرصيد",calibrationInformation:"معلومات المعايرة",additionalInformation:"معلومات إضافية",refreshBalanceQty:"تحديث الرصيد",warrantyMonths:"الضمان (بالأشهر)",errorLoadingItems:"خطأ في تحميل الأصناف",loadingItems:"جاري تحميل الأصناف...",deleteConfirmMessage:"هل أنت متأكد من حذف هذا الصنف؟ لا يمكن التراجع عن هذا الإجراء.",backToInventory:"العودة إلى المخزون",loadingItem:"جاري تحميل الصنف...",errorLoadingItem:"خطأ في تحميل الصنف",createNewItem:"إنشاء صنف جديد",itemCodeLabel:"كود الصنف",itemUpdatedSuccessfully:"تم تحديث الصنف بنجاح!",pleaseSaveFirst:"يرجى حفظ الصنف أولاً قبل الإرسال.",submittedSuccessfully:"تم إرسال الصنف بنجاح!",failedToSave:"فشل الحفظ",failedToSubmit:"فشل الإرسال",noItemsFound:"لم يتم العثور على عناصر",createFirstItem:"أنشئ عنصرك الأول",listTitle:"المخزون",listTotal:"الإجمالي: {{count}} عنصر{{count !== 1 ? 'اً' : ''}}",failedToLoadItems:"فشل تحميل العناصر.",listAddItem:"إضافة عنصر",export:{title:"تصدير العناصر",selectData:"اختر البيانات للتصدير",selectedRows:"الصفوف المحددة",selectedCount:"تصدير {{count}} عنصر{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",currentPage:"الصفحة الحالية",currentPageCount:"تصدير {{count}} عنصر{{count !== 1 ? 'اً' : ''}} في الصفحة الحالية",allWithFilters:"جميع السجلات (مع الفلاتر الحالية)",allWithFiltersCount:"تصدير جميع {{count}} عنصر{{count !== 1 ? 'اً' : ''}} المطابقة للفلاتر الحالية",csvDesc:"قيم مفصولة بفاصلة",excelDesc:"جدول XLSX",columnsToExport:"الأعمدة للتصدير",selectAll:"تحديد الكل",resetToDefault:"إعادة التعيين للافتراضي",columnsSelected:"{{count}} عمود{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",exporting:"جاري التصدير...",exportButton:"تصدير",exportingSelected:"جاري تصدير {{count}} صف{{count !== 1 ? 'اً' : ''}} محدد{{count !== 1 ? 'ة' : ''}}",exportingPage:"جاري تصدير {{count}} صف{{count !== 1 ? 'اً' : ''}} من الصفحة الحالية",exportingAll:"جاري تصدير جميع {{count}} صف{{count !== 1 ? 'اً' : ''}}"}},z$={title:"التذاكر",issueDetails:"تفاصيل التذكرة",newIssue:"تذكرة جديدة",addIssue:"إضافة تذكرة جديدة",issueId:"معرف التذكرة",subject:"الموضوع",raisedBy:"أُبلغ بها",contact:"جهة الاتصال",issueType:"نوع التذكرة",openingDate:"تاريخ الفتح",resolutionDate:"تاريخ الحل",resolvedBy:"تم الحل بواسطة",firstRespondedOn:"أول رد في",resolutionDetails:"تفاصيل الحل",selectIssue:"اختر التذكرة",allPriorities:"أي أولوية",allCompanies:"جميع الشركات",viewDetails:"عرض التفاصيل",editIssue:"تعديل التذكرة",deleteIssue:"حذف التذكرة",enterSubject:"أدخل موضوع التذكرة",selectPriority:"اختر الأولوية",selectIssueType:"اختر نوع التذكرة",describeIssue:"صف التذكرة بالتفصيل...",contactInformation:"معلومات الاتصال",createNewIssue:"إنشاء تذكرة دعم جديدة",resolution:"الحل",describeResolution:"صف كيف تم حل التذكرة...",selectCompany:"اختر الشركة",statusInformation:"معلومات الحالة",currentStatus:"الحالة الحالية",timeline:"الجدول الزمني",loadingIssues:"جاري تحميل التذاكر...",errorLoadingIssues:"خطأ في تحميل التذاكر",deleteConfirmMessage:"هل أنت متأكد من حذف هذه التذكرة؟ لا يمكن التراجع عن هذا الإجراء.",deletedSuccessfully:"تم حذف التذكرة بنجاح!",listTitle:"تذاكر الدعم",listTotal:"الإجمالي",listSelected:"محدد",statsTotalIssues:"إجمالي التذاكر",statsOpen:"مفتوحة",statsResolved:"محلولة",statsClosed:"مغلقة",export:{title:"تصدير التذاكر",selectData:"اختر البيانات للتصدير",selectedRows:"الصفوف المحددة",selectedCount:"تصدير {{count}} تذكرة محددة",currentPage:"الصفحة الحالية",currentPageCount:"تصدير {{count}} تذكرة في الصفحة الحالية",allWithFilters:"جميع السجلات (مع المرشحات الحالية)",allWithFiltersCount:"تصدير كل {{count}} تذكرة مطابقة للمرشحات",exportFormat:"تنسيق التصدير",csv:"CSV",csvDesc:"قيم مفصولة بفواصل",excel:"Excel",excelDesc:"جدول XLSX",columnsToExport:"الأعمدة للتصدير",selectAll:"تحديد الكل",resetToDefault:"إعادة إلى الافتراضي",columnsSelected:"{{count}} عمود محدد",exporting:"جاري التصدير...",exportButton:"تصدير",exportingSelected:"تصدير {{count}} صف محدد",exportingPage:"تصدير {{count}} صف من الصفحة الحالية",exportingAll:"تصدير كل {{count}} صف"},status:{open:"مفتوحة",replied:"تم الرد",on_hold:"قيد الانتظار",resolved:"محلولة",closed:"مغلقة"},priority:{low:"منخفضة",medium:"متوسطة",high:"عالية",critical:"حرجة"}},B$={title:"المستخدمون",userDetails:"تفاصيل المستخدم",newUser:"مستخدم جديد",addUser:"إضافة مستخدم جديد",searchUsers:"بحث عن مستخدمين...",manageUsers:"إدارة حسابات المستخدمين والصلاحيات",noUsersFound:"لم يتم العثور على مستخدمين",tryAdjustingSearch:"حاول تعديل مصطلحات البحث.",noUsersAvailable:"لا يوجد مستخدمون متاحون.",backToDashboard:"العودة إلى لوحة التحكم",refresh:"تحديث",active:"نشط",inactive:"غير نشط",noEmail:"لا يوجد بريد إلكتروني",created:"تاريخ الإنشاء"},$$={title:"الفعاليات",eventDetails:"تفاصيل الفعالية",newEvent:"فعالية جديدة",addEvent:"إضافة فعالية",upcomingEvents:"الفعاليات القادمة",eventsFromFrappe:"فعاليات من نظام Frappe",noEventsFound:"لم يتم العثور على فعاليات",noEventsScheduled:"لا توجد فعاليات مجدولة حالياً.",refreshEvents:"تحديث الفعاليات"},U$={previous:"السابق",next:"التالي",goTo:"انتقل إلى",go:"انتقال",page:"صفحة",showingToOf:"عرض {{start}} إلى {{end}} من {{total}} {{label}}",showingTo:"عرض {{start}} إلى {{end}} {{label}}",items:"أصناف",assets:"أصول",workOrders:"أوامر عمل",issues:"تذاكر",teams:"فرق",inspections:"عمليات تفتيش",plans:"خطط"},H$={loading:"جاري التحميل...",noResultsFound:"لم يتم العثور على نتائج",createNewDoctype:"إنشاء {{doctype}} جديد",selectLabel:"اختر {{label}}"},q$={loadingSupportPlans:"جاري تحميل خطط الدعم...",errorLoadingSupportPlans:"خطأ في تحميل خطط الدعم",deleteConfirmMessage:"هل أنت متأكد من حذف خطة الدعم هذه؟ لا يمكن التراجع عن هذا الإجراء.",planId:"معرف الخطة",deletedSuccessfully:"تم حذف خطة الدعم بنجاح!",deleteSupportPlan:"حذف خطة الدعم",noSupportPlansFound:"لم يتم العثور على خطط دعم",createFirstSupportPlan:"أنشئ أول خطة دعم",table:{planName:"اسم الخطة",type:"النوع",frequency:"التكرار",contractValue:"قيمة العقد",warrantyStatus:"حالة الضمان",contractStatus:"حالة العقد"},status:{active:"نشط",expired:"منتهي",pending:"قيد الانتظار",terminated:"منتهي مبكرًا"},statusLabel:{warrantyPrefix:"ض:",contractPrefix:"ع:"},viewDetails:"عرض خطة الدعم",editSupportPlan:"تعديل خطة الدعم",listTitle:"خطط الدعم",statsTotalPlans:"إجمالي الخطط",statsContracts:"العقود",statsWarranties:"الضمانات",statsActive:"نشطة",export:{title:"تصدير خطط الدعم",selectData:"اختر البيانات للتصدير",selectedRows:"الصفوف المحددة",selectedCount:"تصدير {{count}} خطة دعم محددة",currentPage:"الصفحة الحالية",currentPageCount:"تصدير {{count}} خطة دعم في الصفحة الحالية",allWithFilters:"جميع السجلات (مع المرشحات الحالية)",allWithFiltersCount:"تصدير كل {{count}} خطة دعم مطابقة للمرشحات",exportFormat:"تنسيق التصدير",csv:"CSV",csvDesc:"قيم مفصولة بفواصل",excel:"Excel",excelDesc:"جدول XLSX",columnsToExport:"الأعمدة للتصدير",selectAll:"تحديد الكل",resetToDefault:"إعادة إلى الافتراضي",columnsSelected:"{{count}} عمود محدد",exporting:"جاري التصدير...",exportButton:"تصدير",exportingSelected:"تصدير {{count}} صف محدد",exportingPage:"تصدير {{count}} صف من الصفحة الحالية",exportingAll:"تصدير كل {{count}} صف"}},W$={title:"عمليات التفتيش",loadingInspections:"جاري تحميل عمليات التفتيش...",errorLoadingInspections:"خطأ في تحميل عمليات التفتيش",deleteConfirmMessage:"هل أنت متأكد من حذف عملية التفتيش هذه؟ لا يمكن التراجع عن هذا الإجراء.",inspectionId:"معرف التفتيش",deleteInspection:"حذف التفتيش",deletedSuccessfully:"تم حذف التفتيش بنجاح!",noInspectionsFound:"لم يتم العثور على عمليات تفتيش",createFirstInspection:"أنشئ أول عملية تفتيش",type:"نوع التفتيش",workflowStateHeader:"حالة سير العمل",targetDate:"تاريخ الاستهداف",requestedBy:"طُلِبت بواسطة",linkedWorkOrder:"أمر العمل المرتبط",savedFilters:"المرشحات المحفوظة",newInspection:"تفتيش جديد",inspectionReport:"تقرير التفتيش",technicalDepartment:"القسم الفني",filterStatus:"الحالة",filterWorkflow:"سير العمل",filterType:"النوع",filterWorkOrder:"أمر العمل",filterDepartment:"القسم",selectWorkOrder:"اختر أمر العمل",selectDepartment:"اختر القسم",stats:{draft:"مسودة",pendingApproval:"بانتظار الموافقة",closed:"مغلقة"},status:{open:"مفتوحة",in_progress:"قيد التنفيذ",pending_review:"بانتظار المراجعة",closed:"مغلقة"},workflowState:{draft:"مسودة",sent_to_work_control:"مرسل إلى التحكم بالعمل",sent_to_technician:"مرسل إلى الفني",sent_to_supervisor:"مرسلة إلى المشرف",closed:"مغلقة"},typeMap:{inspection:"تفتيش",safety_inspection:"تفتيش سلامة"},viewDetails:"عرض التفاصيل",editInspection:"تعديل التفتيش",export:{title:"تصدير عمليات التفتيش",selectData:"اختر البيانات للتصدير",selectedRows:"الصفوف المحددة",selectedCount:"تصدير {{count}} عملية تفتيش محددة",currentPage:"الصفحة الحالية",currentPageCount:"تصدير {{count}} عملية تفتيش في الصفحة الحالية",allWithFilters:"جميع السجلات (مع المرشحات الحالية)",allWithFiltersCount:"تصدير كل {{count}} عملية تفتيش مطابقة للمرشحات",exportFormat:"تنسيق التصدير",csv:"CSV",csvDesc:"قيم مفصولة بفواصل",excel:"Excel",excelDesc:"جدول XLSX",columnsToExport:"الأعمدة للتصدير",selectAll:"تحديد الكل",resetToDefault:"إعادة إلى الافتراضي",columnsSelected:"{{count}} عمود محدد",exporting:"جاري التصدير...",exportButton:"تصدير",exportingSelected:"تصدير {{count}} صف محدد",exportingPage:"تصدير {{count}} صف من الصفحة الحالية",exportingAll:"تصدير كل {{count}} صف",inspectionId:"معرف التفتيش",inspectionType:"نوع التفتيش",status:"الحالة",workflowState:"حالة سير العمل",inspectionDate:"تاريخ التفتيش",targetClosureDate:"تاريخ الإغلاق المستهدف",requestedBy:"طُلِبت بواسطة",technicalDepartment:"القسم الفني",linkedWorkOrder:"أمر العمل المرتبط",observationNote:"ملاحظة الملاحظة",technicalResponse:"الرد الفني",createdOn:"تاريخ الإنشاء",modifiedOn:"تاريخ التعديل",createdBy:"أنشئ بواسطة"},detail:{loadingDetails:"جاري تحميل تفاصيل التفتيش...",errorLoading:"خطأ في تحميل التفتيش",backToList:"العودة إلى التفتيشات",newInspection:"تفتيش جديد",inspectionDetails:"تفاصيل التفتيش",createNewRecord:"إنشاء سجل تفتيش جديد",cancelInspection:"إلغاء التفتيش",cancelConfirmMessage:"هل أنت متأكد أنك تريد إلغاء هذا التفتيش؟ سيتم تمييز التفتيش كملغى ويمكنك حذفه بعد ذلك إذا لزم الأمر.",noGoBack:"لا، تراجع",yesCancel:"نعم، إلغاء",cancelling:"جاري الإلغاء...",selectType:"اختر النوع",workOrderType:"نوع أمر العمل",selectWorkOrderType:"اختر نوع أمر العمل",techniciansAvailable:"{{count}} فني/فنيين متاح لهذا النوع",selectDepartment:"اختر القسم",selectLocation:"اختر الموقع",extensionNo:"رقم الامتداد *",selectExtension:"اختر الامتداد",inspectionDate:"تاريخ التفتيش",targetClosureDate:"تاريخ الإغلاق المستهدف",cannotBeInPast:"لا يمكن أن يكون في الماضي",cannotBeEarlier:"لا يمكن أن يكون أقدم من تاريخ التفتيش أو في الماضي",openingAttachment:"مرفق الافتتاح",closingAttachment:"مرفق الإغلاق",uploading:"جاري الرفع...",uploadFile:"رفع ملف",uploadClosingFile:"رفع ملف الإغلاق",noAttachment:"لا يوجد مرفق",removeAttachment:"إزالة المرفق",assignmentInformation:"معلومات التعيين",requestedBy:"طُلِبت بواسطة",selectUser:"اختر المستخدم",technicalDepartment:"القسم الفني",assignedTechnician:"الفني المعيّن",selectTechnician:"اختر الفني",selectWOTypeFirst:"اختر نوع أمر العمل أولاً لتصفية الفنيين",noTechniciansForType:"لم يتم العثور على فنيين لهذا النوع من أمر العمل",notesAndResponse:"الملاحظات والرد",observationNote:"ملاحظة الملاحظة",placeholderObservation:"أدخل ملاحظات الملاحظة...",technicalResponse:"الرد الفني",placeholderTechnicalResponse:"أدخل الرد الفني...",linkedWorkOrder:"أمر العمل المرتبط",linkedCorrectiveWO:"أمر العمل التصحيحي المرتبط",readOnly:"للقراءة فقط",viewWorkOrder:"عرض أمر العمل",noLinkedWorkOrder:"لا يوجد أمر عمل مرتبط",workflowActions:"إجراءات سير العمل",workflowProgress:"تقدم سير العمل",workControl:"مراقبة العمل",technicianStep:"الفني",supervisorStep:"المشرف",draftStep:"مسودة",closedStep:"مغلق",statusInfo:"معلومات الحالة",documentStatus:"حالة المستند",woType:"نوع أمر العمل",assignedTo:"معيّن إلى",submitted:"مُرسل",cancelled:"ملغى",added:"مضاف:",removed:"مُزال:",modified:"مُعدّل:",items:"عنصر/عناصر",rows:"صف/صفوف",activityLog:"سجل النشاط",activityLogRefreshed:"تم تحديث سجل النشاط",refreshActivityLog:"تحديث سجل النشاط",noChangesRecorded:"لم يتم تسجيل أي تغييرات بعد",createdThisInspection:"أنشأ هذا التفتيش",changedFrom:"تم التغيير من",documentUpdated:"تم تحديث المستند",showLess:"عرض أقل",showAll:"عرض الكل",department:"القسم",location:"الموقع",inspectionType:"نوع التفتيش",status:"الحالة",removeClosingAttachment:"إزالة مرفق الإغلاق",noClosingAttachment:"لا يوجد مرفق إغلاق",cancelledSuccessfully:"تم إلغاء التفتيش بنجاح!",failedToCancel:"فشل الإلغاء: {{error}}",failedToSave:"فشل الحفظ: {{error}}",failedToDelete:"فشل الحذف: {{error}}",targetClosureMandatory:"تاريخ الإغلاق المستهدف إلزامي للحفظ.",attachmentMandatory:"المرفق إلزامي للحفظ.",extensionMandatory:"رقم الامتداد إلزامي للحفظ.",createdSuccessfully:"تم إنشاء التفتيش بنجاح!",updatedSuccessfully:"تم تحديث التفتيش بنجاح!",deletedSuccessfully:"تم حذف التفتيش بنجاح!",inspectionDateInPast:"لا يمكن أن يكون تاريخ التفتيش في الماضي.",targetClosureEarlier:"لا يمكن أن يكون تاريخ الإغلاق المستهدف أقدم من تاريخ التفتيش.",targetClosureInPast:"لا يمكن أن يكون تاريخ الإغلاق المستهدف في الماضي.",fileSizeExceeds:"حجم الملف يتجاوز حد 10 ميجابايت",fileUploadedSuccess:"تم رفع الملف بنجاح",failedToUpload:"فشل رفع الملف",closingAttachmentRemoved:"تم إزالة مرفق الإغلاق",closingAttachmentUploadedSuccess:"تم رفع مرفق الإغلاق بنجاح",failedToUploadClosing:"فشل رفع مرفق الإغلاق",attachmentRemoved:"تم إزالة المرفق",systemManager:"مدير النظام",workflow:"سير العمل"}},V$={title:"الخريطة النشطة",loading:"جاري تحميل بيانات الخريطة...",hospital:"المستشفى",departmentWoType:"القسم (نوع أمر العمل)",selectHospital:"اختر المستشفى",selectDepartment:"اختر القسم",clearDepartmentHint:"مسح القسم للتصفية حسب المستشفى",clearHospitalHint:"مسح المستشفى للتصفية حسب القسم",clearFilters:"مسح المرشحات",legendHospital:"المستشفى",legendDepartment:"القسم (نوع أمر العمل)",legendHasUrgent:"يوجد أوامر عمل عاجلة",totalAssets:"إجمالي الأصول",workOrderStatus:"حالة أمر العمل",status:"الحالة",count:"العدد",normal:"عادي",urgent:"عاجل",open:"مفتوح",workInProgress:"قيد التنفيذ",pendingReview:"بانتظار المراجعة",completed:"مكتمل",closed:"مغلق",preventiveMaintenance:"الصيانة الوقائية",planned:"مخطط",overdue:"متأخر",viewAssets:"عرض الأصول",viewWorkOrders:"عرض أوامر العمل",viewAllWorkOrders:"عرض جميع أوامر العمل",showingWorkOrdersByType:"عرض أوامر العمل حسب النوع",deptWoType:"القسم / نوع أمر العمل",tooltipDept:"قسم",tooltipHospital:"مستشفى",tooltipUrgent:"عاجل! ",normalWos:"أوامر عادية:",urgentWos:"أوامر عاجلة:",closedWos:"أوامر مغلقة:",plannedPms:"صيانة مخطط لها:",completedPms:"صيانة مكتملة:",assets:"الأصول"},G$={title:"تقويم الصيانة",viewType:"نوع العرض",maintenanceLog:"سجل الصيانة",ppmPlanner:"مخطط الصيانة الوقائية",filters:"المرشحات",yearlyMap:"الخريطة السنوية",yearlyMapTitle:"عرض خريطة مخطط الصيانة الوقائية السنوية",mapShort:"خريطة",hospital:"المستشفى",selectHospital:"اختر المستشفى",department:"القسم",allDepartments:"جميع الأقسام",status:"الحالة",allStatuses:"جميع الحالات",planned:"مخطط",completed:"مكتمل",overdue:"متأخر",cancelled:"ملغى",assignedTo:"مكلف إلى",allTechnicians:"جميع الفنيين",clearFilters:"مسح المرشحات",months:{january:"يناير",february:"فبراير",march:"مارس",april:"أبريل",may:"مايو",june:"يونيو",july:"يوليو",august:"أغسطس",september:"سبتمبر",october:"أكتوبر",november:"نوفمبر",december:"ديسمبر"},days:{sun:"الأحد",mon:"الإثنين",tue:"الثلاثاء",wed:"الأربعاء",thu:"الخميس",fri:"الجمعة",sat:"السبت"},previousMonth:"الشهر السابق",today:"اليوم",nextMonth:"الشهر التالي",loadingLogs:"جاري تحميل سجلات الصيانة...",loadingPpm:"جاري تحميل مخططات الصيانة الوقائية...",overdueInTooltip:"(متأخر)",clickToViewDetails:"انقر لعرض التفاصيل",clickToViewPpmPlanner:"انقر لعرض مخطط الصيانة الوقائية",ppmPlannerDefault:"مخطط الصيانة الوقائية",legendCompleted:"مكتمل",legendPlanned:"مخطط",legendOverdue:"متأخر",legendToday:"اليوم",summaryPpmPlanners:"مخططات الصيانة الوقائية"},K$={common:_$,sidebar:k$,projects:S$,profile:N$,login:C$,dashboard:T$,commonFields:E$,filters:A$,listPages:O$,assets:P$,workOrders:D$,maintenance:R$,ppm:F$,ppmPlanner:M$,exportModal:L$,items:I$,issues:z$,users:B$,events:$$,pagination:U$,linkField:H$,supportPlans:q$,inspections:W$,activeMap:V$,maintenanceCalendarPage:G$},Ad={BASE_URL:"http://172.25.161.96:8000",ENDPOINTS:{LOGIN:"/api/method/login",RESET_PASSWORD:"/api/method/frappe.core.doctype.user.user.reset_password",LOGOUT:"/api/method/logout",CSRF_TOKEN:"/api/method/frappe.sessions.get_csrf_token",TWO_FACTOR_STATUS:"/api/method/project_management.api.two_factor.get_two_factor_status",UPLOAD_FILE:"/api/method/upload_file",GET_USER_PERMISSIONS:"/api/method/asset_lite.api.userperm_api.get_user_permissions",GET_PERMISSION_FILTERS:"/api/method/asset_lite.api.userperm_api.get_permission_filters",GET_ALLOWED_VALUES:"/api/method/asset_lite.api.userperm_api.get_allowed_values",CHECK_DOCUMENT_ACCESS:"/api/method/asset_lite.api.userperm_api.check_document_access",GET_CONFIGURED_DOCTYPES:"/api/method/asset_lite.api.userperm_api.get_configured_doctypes",GET_USER_DEFAULTS:"/api/method/asset_lite.api.userperm_api.get_user_defaults"},DEFAULT_HEADERS:{"Content-Type":"application/json",Accept:"application/json"},TIMEOUT:parseInt("60000")};class Y${constructor(){xn(this,"baseURL");xn(this,"endpoints");xn(this,"defaultHeaders");xn(this,"timeout");this.baseURL=Ad.BASE_URL,this.endpoints=Ad.ENDPOINTS,this.defaultHeaders=Ad.DEFAULT_HEADERS,this.timeout=Ad.TIMEOUT}getCSRFToken(){return fe(this,null,function*(){try{if(typeof window!="undefined"&&window.csrf_token)return window.csrf_token;if(!localStorage.getItem("user"))return null;const r=yield fetch(`${this.baseURL}${this.endpoints.CSRF_TOKEN}`,{method:"GET",headers:{Accept:"application/json"},credentials:"include"});return r.ok&&(yield r.json()).message||null}catch(t){return null}})}apiCall(a){return fe(this,arguments,function*(t,r={}){const s=`${this.baseURL}${t}`,i=ee({method:"GET",headers:ee(ee({},this.defaultHeaders),r.headers)},r),l=yield this.getCSRFToken();l&&(i.headers["X-Frappe-CSRF-Token"]=l);try{const u=new AbortController,d=setTimeout(()=>u.abort(),this.timeout),f=yield fetch(s,Se(ee({},i),{signal:u.signal}));if(clearTimeout(d),!f.ok){const m=yield f.json().catch(()=>({}));throw new oi(m.error||`HTTP error! status: ${f.status}`,f.status)}const p=yield f.json();return p.message!==void 0?p.message:p}catch(u){throw u instanceof Error?(console.error("API call failed:",u),new oi(u.message)):u}})}parseFrappeLoginError(t,r){if(typeof t.message=="string"&&t.message)return t.message;if(typeof t.exc=="string"&&t.exc){const a=t.exc.match(/:\s*(.+)$/);return a?a[1].trim():t.exc}if(t._server_messages)try{const i=JSON.parse(String(t._server_messages)).map(l=>JSON.parse(l)).map(l=>l.message).filter(Boolean).join(" ");if(i)return i}catch(a){}return r===401?"Invalid credentials or verification code.":"Login failed. Please try again."}parseLoggedInUser(t,r){return typeof t.message=="string"&&t.message==="Logged In"?{full_name:t.full_name,user_id:t.user||r,home_page:t.home_page,sid:t.sid,email:r}:t.message&&typeof t.message=="object"?t.message:t.full_name||t.user?{full_name:t.full_name,user_id:t.user||r,home_page:t.home_page,sid:t.sid,email:r}:null}postLoginRequest(t){return fe(this,null,function*(){const r=`${this.baseURL}${this.endpoints.LOGIN}`,a=new AbortController,s=setTimeout(()=>a.abort(),this.timeout);try{const i=yield fetch(r,{method:"POST",headers:{Accept:"application/json"},body:t,credentials:"include",signal:a.signal}),l=yield i.text();let u={};try{u=l?JSON.parse(l):{}}catch(d){u={}}if(!i.ok){const d=i.status===401?"Invalid credentials or verification code.":"Login failed. Please try again.";throw new oi(d,i.status)}return u}finally{clearTimeout(s)}})}mapLoginResponse(t,r){const a=t.verification,s=t.tmp_id,i=t.message;if(a&&s&&i!=="Logged In")return{status:"two_factor_required",tmp_id:s,verification:a};const l=this.parseLoggedInUser(t,r);if(l&&(i==="Logged In"||l.sid||l.user_id))return{status:"logged_in",user:l};throw new oi("Unexpected login response.",500,"INVALID_RESPONSE")}login(t){return fe(this,null,function*(){const r=new FormData;r.append("usr",t.email),r.append("pwd",t.password);const a=yield this.postLoginRequest(r);return this.mapLoginResponse(a,t.email)})}verifyLoginOtp(t,r){return fe(this,null,function*(){const a=new FormData;a.append("otp",r.trim()),a.append("tmp_id",t);const s=yield this.postLoginRequest(a),i=this.mapLoginResponse(s);if(i.status!=="logged_in")throw new oi("Verification failed. Please try again.",401,"OTP_FAILED");return i})}requestPasswordReset(t,r){return fe(this,null,function*(){const a=t.trim();if(!a)throw new oi("Email is required",400,"EMPTY_EMAIL");const s=yield this.getCSRFTokenForGuest(),i={Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"};s&&(i["X-Frappe-CSRF-Token"]=s);const l=`${this.baseURL}${this.endpoints.RESET_PASSWORD}`,u=new AbortController,d=setTimeout(()=>u.abort(),45e3),f=r?AbortSignal.any([r,u.signal]):u.signal;try{const p=yield fetch(l,{method:"POST",headers:i,body:new URLSearchParams({user:a}).toString(),credentials:"include",signal:f}),m=yield p.text();let x={};try{x=m?JSON.parse(m):{}}catch(b){x={}}const v=typeof x.message=="string"?x.message:typeof x.message=="object"&&x.message!==null&&"message"in x.message?String(x.message.message):"";if(p.status===404||v.toLowerCase().includes("not found"))throw new oi("User not found",404,"USER_NOT_FOUND");if(p.status===403)throw new oi("Could not send reset email",403,"FORBIDDEN");if(!p.ok)throw new oi(v||`HTTP error! status: ${p.status}`,p.status,"REQUEST_FAILED");if(v==="disabled"||v==="not allowed")throw new oi("Reset not allowed",200,"RESET_NOT_ALLOWED")}finally{clearTimeout(d)}})}getCSRFTokenForGuest(){return fe(this,null,function*(){const t=typeof window!="undefined"?window:void 0;if(t!=null&&t.csrf_token)return t.csrf_token;try{const r=yield fetch(`${this.baseURL}${this.endpoints.CSRF_TOKEN}`,{method:"GET",headers:{Accept:"application/json"},credentials:"include"});if(r.ok)return(yield r.json()).message||null}catch(r){}return null})}logout(){return fe(this,null,function*(){yield this.apiCall(this.endpoints.LOGOUT,{method:"POST"})})}getUserDetails(t){return fe(this,null,function*(){const r=t?`?user_id=${t}`:"";return this.apiCall(`${this.endpoints.USER_DETAILS}${r}`)})}getDoctypeRecords(t,r,a,s=20,i=0){return fe(this,null,function*(){const l=new URLSearchParams({doctype:t,limit:s.toString(),offset:i.toString()});return r&&l.append("filters",JSON.stringify(r)),a&&l.append("fields",JSON.stringify(a)),this.apiCall(`${this.endpoints.DOCTYPE_RECORDS}?${l}`)})}getDashboardStats(){return fe(this,null,function*(){return this.apiCall(this.endpoints.DASHBOARD_STATS)})}getNumberCards(){return fe(this,null,function*(){return this.apiCall(this.endpoints.DASHBOARD_NUMBER_CARDS)})}listDashboardCharts(t=!0){return fe(this,null,function*(){const r=new URLSearchParams({public_only:t?"1":"0"});return this.apiCall(`${this.endpoints.DASHBOARD_LIST_CHARTS}?${r}`)})}getDashboardChartData(t,r){return fe(this,null,function*(){const a=new URLSearchParams({chart_name:t});return r&&a.append("report_filters",JSON.stringify(r)),this.apiCall(`${this.endpoints.DASHBOARD_CHART_DATA}?${a}`)})}getKycDetails(){return fe(this,null,function*(){return this.apiCall(this.endpoints.KYC_DETAILS)})}uploadFile(t){return fe(this,null,function*(){const r=new FormData;return r.append("file",t.file),r.append("doctype",t.doctype),r.append("docname",t.docname),r.append("fieldname",t.fieldname),this.apiCall(this.endpoints.UPLOAD_FILE,{method:"POST",headers:{},body:r})})}getUserPermissions(t){return fe(this,null,function*(){const r=t?`?user=${encodeURIComponent(t)}`:"";return this.apiCall(`${this.endpoints.GET_USER_PERMISSIONS}${r}`)})}getPermissionFilters(t,r){return fe(this,null,function*(){const a=new URLSearchParams({target_doctype:t});return r&&a.append("user",r),this.apiCall(`${this.endpoints.GET_PERMISSION_FILTERS}?${a}`)})}getAllowedValues(t,r){return fe(this,null,function*(){const a=new URLSearchParams({allow_doctype:t});return r&&a.append("user",r),this.apiCall(`${this.endpoints.GET_ALLOWED_VALUES}?${a}`)})}checkDocumentAccess(t,r,a){return fe(this,null,function*(){const s=new URLSearchParams({doctype:t,docname:r});return a&&s.append("user",a),this.apiCall(`${this.endpoints.CHECK_DOCUMENT_ACCESS}?${s}`)})}getConfiguredDoctypes(){return fe(this,null,function*(){return this.apiCall(this.endpoints.GET_CONFIGURED_DOCTYPES)})}getUserDefaults(t){return fe(this,null,function*(){const r=t?`?user=${encodeURIComponent(t)}`:"";return this.apiCall(`${this.endpoints.GET_USER_DEFAULTS}${r}`)})}isAuthenticated(){return!!localStorage.getItem("frappe_session_id")}getSessionId(){return localStorage.getItem("frappe_session_id")}setSessionId(t){localStorage.setItem("frappe_session_id",t)}}class oi extends Error{constructor(r,a,s){super(r);xn(this,"status");xn(this,"code");this.name="ApiError",this.status=a,this.code=s}}const Ja=new Y$,Nm=Object.freeze(Object.defineProperty({__proto__:null,ApiError:oi,default:Ja},Symbol.toStringTag,{value:"Module"}));function X$(e){return fe(this,null,function*(){try{const t=yield Ja.getDoctypeRecords("Translation",{language:e},["source_text","translated_text","context"],1e4,0),r={};return t.records&&t.records.length>0&&t.records.forEach(a=>{const s=a.source_text,i=a.translated_text||s;if(a.context){const l=`${a.context}.${s}`;r[l]=i}else s.includes("."),r[s]=i}),r}catch(t){return console.error("Error fetching translations from Frappe:",t),{}}})}function J$(e){const t={};return Object.keys(e).forEach(r=>{if(r.includes(".")){const a=r.split(".");let s=t;for(let i=0;i0&&Ra.addResourceBundle("en","translation",t,!0,!0);const r=yield BC("ar");Object.keys(r).length>0&&Ra.addResourceBundle("ar","translation",r,!0,!0),console.log("✓ Translations loaded from Frappe")}catch(e){console.warn("⚠ Could not load translations from Frappe, using static translations:",e)}})}Ra.on("initialized",()=>{Gf()});var $C="popstate";function UC(e){return typeof e=="object"&&e!=null&&"pathname"in e&&"search"in e&&"hash"in e&&"state"in e&&"key"in e}function Q$(e={}){function t(a,s){var f;let i=(f=s.state)==null?void 0:f.masked,{pathname:l,search:u,hash:d}=i||a.location;return Dw("",{pathname:l,search:u,hash:d},s.state&&s.state.usr||null,s.state&&s.state.key||"default",i?{pathname:a.location.pathname,search:a.location.search,hash:a.location.hash}:void 0)}function r(a,s){return typeof s=="string"?s:nh(s)}return eU(t,r,null,e)}function Lr(e,t){if(e===!1||e===null||typeof e=="undefined")throw new Error(t)}function Ws(e,t){if(!e){typeof console!="undefined"&&console.warn(t);try{throw new Error(t)}catch(r){}}}function Z$(){return Math.random().toString(36).substring(2,10)}function HC(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Dw(e,t,r=null,a,s){return Se(ee({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?l0(t):t),{state:r,key:t&&t.key||a||Z$(),mask:s})}function nh({pathname:e="/",search:t="",hash:r=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),r&&r!=="#"&&(e+=r.charAt(0)==="#"?r:"#"+r),e}function l0(e){let t={};if(e){let r=e.indexOf("#");r>=0&&(t.hash=e.substring(r),e=e.substring(0,r));let a=e.indexOf("?");a>=0&&(t.search=e.substring(a),e=e.substring(0,a)),e&&(t.pathname=e)}return t}function eU(e,t,r,a={}){let{window:s=document.defaultView,v5Compat:i=!1}=a,l=s.history,u="POP",d=null,f=p();f==null&&(f=0,l.replaceState(Se(ee({},l.state),{idx:f}),""));function p(){return(l.state||{idx:null}).idx}function m(){u="POP";let j=p(),k=j==null?null:j-f;f=j,d&&d({action:u,location:w.location,delta:k})}function x(j,k){u="PUSH";let C=UC(j)?j:Dw(w.location,j,k);f=p()+1;let N=HC(C,f),O=w.createHref(C.mask||C);try{l.pushState(N,"",O)}catch(E){if(E instanceof DOMException&&E.name==="DataCloneError")throw E;s.location.assign(O)}i&&d&&d({action:u,location:w.location,delta:1})}function v(j,k){u="REPLACE";let C=UC(j)?j:Dw(w.location,j,k);f=p();let N=HC(C,f),O=w.createHref(C.mask||C);l.replaceState(N,"",O),i&&d&&d({action:u,location:w.location,delta:0})}function b(j){return tU(s,j)}let w={get action(){return u},get location(){return e(s,l)},listen(j){if(d)throw new Error("A history only accepts one active listener");return s.addEventListener($C,m),d=j,()=>{s.removeEventListener($C,m),d=null}},createHref(j){return t(s,j)},createURL:b,encodeLocation(j){let k=b(j);return{pathname:k.pathname,search:k.search,hash:k.hash}},push:x,replace:v,go(j){return l.go(j)}};return w}function tU(e,t,r=!1){let a="http://localhost";e&&(a=e.location.origin!=="null"?e.location.origin:e.location.href),Lr(a,"No window.location.(origin|href) available to create URL");let s=typeof t=="string"?t:nh(t);return s=s.replace(/ $/,"%20"),!r&&s.startsWith("//")&&(s=a+s),new URL(s,a)}function AO(e,t,r="/"){return rU(e,t,r,!1)}function rU(e,t,r,a,s){let i=typeof t=="string"?l0(t):t,l=Ro(i.pathname||"/",r);if(l==null)return null;let u=aU(e),d=null,f=mU(l);for(let p=0;d==null&&p{let p={relativePath:f===void 0?l.path||"":f,caseSensitive:l.caseSensitive===!0,childrenIndex:u,route:l};if(p.relativePath.startsWith("/")){if(!p.relativePath.startsWith(a)&&d)return;Lr(p.relativePath.startsWith(a),`Absolute route path "${p.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),p.relativePath=p.relativePath.slice(a.length)}let m=gi([a,p.relativePath]),x=r.concat(p);l.children&&l.children.length>0&&(Lr(l.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${m}".`),OO(l.children,t,x,m,d)),!(l.path==null&&!l.index)&&t.push({path:m,score:dU(m,l.index),routesMeta:x})};return e.forEach((l,u)=>{var d;if(l.path===""||!((d=l.path)!=null&&d.includes("?")))i(l,u);else for(let f of PO(l.path))i(l,u,!0,f)}),t}function PO(e){let t=e.split("/");if(t.length===0)return[];let[r,...a]=t,s=r.endsWith("?"),i=r.replace(/\?$/,"");if(a.length===0)return s?[i,""]:[i];let l=PO(a.join("/")),u=[];return u.push(...l.map(d=>d===""?i:[i,d].join("/"))),s&&u.push(...l),u.map(d=>e.startsWith("/")&&d===""?"/":d)}function nU(e){e.sort((t,r)=>t.score!==r.score?r.score-t.score:fU(t.routesMeta.map(a=>a.childrenIndex),r.routesMeta.map(a=>a.childrenIndex)))}var sU=/^:[\w-]+$/,iU=3,oU=2,lU=1,cU=10,uU=-2,qC=e=>e==="*";function dU(e,t){let r=e.split("/"),a=r.length;return r.some(qC)&&(a+=uU),t&&(a+=oU),r.filter(s=>!qC(s)).reduce((s,i)=>s+(sU.test(i)?iU:i===""?lU:cU),a)}function fU(e,t){return e.length===t.length&&e.slice(0,-1).every((a,s)=>a===t[s])?e[e.length-1]-t[t.length-1]:0}function hU(e,t,r=!1){let{routesMeta:a}=e,s={},i="/",l=[];for(let u=0;u{if(p==="*"){let b=u[x]||"";l=i.slice(0,i.length-b.length).replace(/(.)\/+$/,"$1")}const v=u[x];return m&&!v?f[p]=void 0:f[p]=(v||"").replace(/%2F/g,"/"),f},{}),pathname:i,pathnameBase:l,pattern:e}}function pU(e,t=!1,r=!0){Ws(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let a=[],s="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,u,d,f,p)=>{if(a.push({paramName:u,isOptional:d!=null}),d){let m=p.charAt(f+l.length);return m&&m!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(a.push({paramName:"*"}),s+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?s+="\\/*$":e!==""&&e!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,t?void 0:"i"),a]}function mU(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Ws(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function Ro(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let r=t.endsWith("/")?t.length-1:t.length,a=e.charAt(r);return a&&a!=="/"?null:e.slice(r)||"/"}var gU=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function xU(e,t="/"){let{pathname:r,search:a="",hash:s=""}=typeof e=="string"?l0(e):e,i;return r?(r=DO(r),r.startsWith("/")?i=WC(r.substring(1),"/"):i=WC(r,t)):i=t,{pathname:i,search:bU(a),hash:wU(s)}}function WC(e,t){let r=Ag(t).split("/");return e.split("/").forEach(s=>{s===".."?r.length>1&&r.pop():s!=="."&&r.push(s)}),r.length>1?r.join("/"):"/"}function _b(e,t,r,a){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(a)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function yU(e){return e.filter((t,r)=>r===0||t.route.path&&t.route.path.length>0)}function Gj(e){let t=yU(e);return t.map((r,a)=>a===t.length-1?r.pathname:r.pathnameBase)}function Wx(e,t,r,a=!1){let s;typeof e=="string"?s=l0(e):(s=ee({},e),Lr(!s.pathname||!s.pathname.includes("?"),_b("?","pathname","search",s)),Lr(!s.pathname||!s.pathname.includes("#"),_b("#","pathname","hash",s)),Lr(!s.search||!s.search.includes("#"),_b("#","search","hash",s)));let i=e===""||s.pathname==="",l=i?"/":s.pathname,u;if(l==null)u=r;else{let m=t.length-1;if(!a&&l.startsWith("..")){let x=l.split("/");for(;x[0]==="..";)x.shift(),m-=1;s.pathname=x.join("/")}u=m>=0?t[m]:"/"}let d=xU(s,u),f=l&&l!=="/"&&l.endsWith("/"),p=(i||l===".")&&r.endsWith("/");return!d.pathname.endsWith("/")&&(f||p)&&(d.pathname+="/"),d}var DO=e=>e.replace(/\/\/+/g,"/"),gi=e=>DO(e.join("/")),Ag=e=>e.replace(/\/+$/,""),vU=e=>Ag(e).replace(/^\/*/,"/"),bU=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,wU=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,jU=class{constructor(e,t,r,a=!1){this.status=e,this.statusText=t||"",this.internal=a,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}};function _U(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function kU(e){let t=e.map(r=>r.route.path).filter(Boolean);return gi(t)||"/"}var RO=typeof window!="undefined"&&typeof window.document!="undefined"&&typeof window.document.createElement!="undefined";function FO(e,t){let r=e;if(typeof r!="string"||!gU.test(r))return{absoluteURL:void 0,isExternal:!1,to:r};let a=r,s=!1;if(RO)try{let i=new URL(window.location.href),l=r.startsWith("//")?new URL(i.protocol+r):new URL(r),u=Ro(l.pathname,t);l.origin===i.origin&&u!=null?r=u+l.search+l.hash:s=!0}catch(i){Ws(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:a,isExternal:s,to:r}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var MO=["POST","PUT","PATCH","DELETE"];new Set(MO);var SU=["GET",...MO];new Set(SU);var c0=y.createContext(null);c0.displayName="DataRouter";var Vx=y.createContext(null);Vx.displayName="DataRouterState";var LO=y.createContext(!1);function NU(){return y.useContext(LO)}var IO=y.createContext({isTransitioning:!1});IO.displayName="ViewTransition";var CU=y.createContext(new Map);CU.displayName="Fetchers";var TU=y.createContext(null);TU.displayName="Await";var ys=y.createContext(null);ys.displayName="Navigation";var Oh=y.createContext(null);Oh.displayName="Location";var bi=y.createContext({outlet:null,matches:[],isDataRoute:!1});bi.displayName="Route";var Kj=y.createContext(null);Kj.displayName="RouteError";var zO="REACT_ROUTER_ERROR",EU="REDIRECT",AU="ROUTE_ERROR_RESPONSE";function OU(e){if(e.startsWith(`${zO}:${EU}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.location=="string"&&typeof t.reloadDocument=="boolean"&&typeof t.replace=="boolean")return t}catch(t){}}function PU(e){if(e.startsWith(`${zO}:${AU}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string")return new jU(t.status,t.statusText,t.data)}catch(t){}}function DU(e,{relative:t}={}){Lr(u0(),"useHref() may be used only in the context of a component.");let{basename:r,navigator:a}=y.useContext(ys),{hash:s,pathname:i,search:l}=Ph(e,{relative:t}),u=i;return r!=="/"&&(u=i==="/"?r:gi([r,i])),a.createHref({pathname:u,search:l,hash:s})}function u0(){return y.useContext(Oh)!=null}function vs(){return Lr(u0(),"useLocation() may be used only in the context of a component."),y.useContext(Oh).location}var BO="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function $O(e){y.useContext(ys).static||y.useLayoutEffect(e)}function Ut(){let{isDataRoute:e}=y.useContext(bi);return e?VU():RU()}function RU(){Lr(u0(),"useNavigate() may be used only in the context of a component.");let e=y.useContext(c0),{basename:t,navigator:r}=y.useContext(ys),{matches:a}=y.useContext(bi),{pathname:s}=vs(),i=JSON.stringify(Gj(a)),l=y.useRef(!1);return $O(()=>{l.current=!0}),y.useCallback((d,f={})=>{if(Ws(l.current,BO),!l.current)return;if(typeof d=="number"){r.go(d);return}let p=Wx(d,JSON.parse(i),s,f.relative==="path");e==null&&t!=="/"&&(p.pathname=p.pathname==="/"?t:gi([t,p.pathname])),(f.replace?r.replace:r.push)(p,f.state,f)},[t,r,i,s,e])}y.createContext(null);function Hn(){var r;let{matches:e}=y.useContext(bi),t=e[e.length-1];return(r=t==null?void 0:t.params)!=null?r:{}}function Ph(e,{relative:t}={}){let{matches:r}=y.useContext(bi),{pathname:a}=vs(),s=JSON.stringify(Gj(r));return y.useMemo(()=>Wx(e,JSON.parse(s),a,t==="path"),[e,s,a,t])}function FU(e,t){return UO(e,t)}function UO(e,t,r){var j;Lr(u0(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=y.useContext(ys),{matches:s}=y.useContext(bi),i=s[s.length-1],l=i?i.params:{},u=i?i.pathname:"/",d=i?i.pathnameBase:"/",f=i&&i.route;{let k=f&&f.path||"";qO(u,!f||k.endsWith("*")||k.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${u}" (under ) 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 to .`)}let p=vs(),m;if(t){let k=typeof t=="string"?l0(t):t;Lr(d==="/"||((j=k.pathname)==null?void 0:j.startsWith(d)),`When overriding the location using \`\` 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 "${d}" but pathname "${k.pathname}" was given in the \`location\` prop.`),m=k}else m=p;let x=m.pathname||"/",v=x;if(d!=="/"){let k=d.replace(/^\//,"").split("/");v="/"+x.replace(/^\//,"").split("/").slice(k.length).join("/")}let b=r&&r.state.matches.length?r.state.matches.map(k=>Object.assign(k,{route:r.manifest[k.route.id]||k.route})):AO(e,{pathname:v});Ws(f||b!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),Ws(b==null||b[b.length-1].route.element!==void 0||b[b.length-1].route.Component!==void 0||b[b.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let w=BU(b&&b.map(k=>Object.assign({},k,{params:Object.assign({},l,k.params),pathname:gi([d,a.encodeLocation?a.encodeLocation(k.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:k.pathname]),pathnameBase:k.pathnameBase==="/"?d:gi([d,a.encodeLocation?a.encodeLocation(k.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:k.pathnameBase])})),s,r);return t&&w?y.createElement(Oh.Provider,{value:{location:ee({pathname:"/",search:"",hash:"",state:null,key:"default",mask:void 0},m),navigationType:"POP"}},w):w}function MU(){let e=WU(),t=_U(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),r=e instanceof Error?e.stack:null,a="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:a},i={padding:"2px 4px",backgroundColor:a},l=null;return console.error("Error handled by React Router default ErrorBoundary:",e),l=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:i},"ErrorBoundary")," or"," ",y.createElement("code",{style:i},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},t),r?y.createElement("pre",{style:s},r):null,l)}var LU=y.createElement(MU,null),HO=class extends y.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const r=PU(e.digest);r&&(e=r)}let t=e!==void 0?y.createElement(bi.Provider,{value:this.props.routeContext},y.createElement(Kj.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?y.createElement(IU,{error:e},t):t}};HO.contextType=LO;var kb=new WeakMap;function IU({children:e,error:t}){let{basename:r}=y.useContext(ys);if(typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){let a=OU(t.digest);if(a){let s=kb.get(t);if(s)throw s;let i=FO(a.location,r);if(RO&&!kb.get(t))if(i.isExternal||a.reloadDocument)window.location.href=i.absoluteURL||i.to;else{const l=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:a.replace}));throw kb.set(t,l),l}return y.createElement("meta",{httpEquiv:"refresh",content:`0;url=${i.absoluteURL||i.to}`})}}return e}function zU({routeContext:e,match:t,children:r}){let a=y.useContext(c0);return a&&a.static&&a.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=t.route.id),y.createElement(bi.Provider,{value:e},r)}function BU(e,t=[],r){let a=r==null?void 0:r.state;if(e==null){if(!a)return null;if(a.errors)e=a.matches;else if(t.length===0&&!a.initialized&&a.matches.length>0)e=a.matches;else return null}let s=e,i=a==null?void 0:a.errors;if(i!=null){let p=s.findIndex(m=>m.route.id&&(i==null?void 0:i[m.route.id])!==void 0);Lr(p>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(i).join(",")}`),s=s.slice(0,Math.min(s.length,p+1))}let l=!1,u=-1;if(r&&a){l=a.renderFallback;for(let p=0;p=0?s=s.slice(0,u+1):s=[s[0]];break}}}}let d=r==null?void 0:r.onError,f=a&&d?(p,m)=>{var x,v,b;d(p,{location:a.location,params:(b=(v=(x=a.matches)==null?void 0:x[0])==null?void 0:v.params)!=null?b:{},pattern:kU(a.matches),errorInfo:m})}:void 0;return s.reduceRight((p,m,x)=>{let v,b=!1,w=null,j=null;a&&(v=i&&m.route.id?i[m.route.id]:void 0,w=m.route.errorElement||LU,l&&(u<0&&x===0?(qO("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),b=!0,j=null):u===x&&(b=!0,j=m.route.hydrateFallbackElement||null)));let k=t.concat(s.slice(0,x+1)),C=()=>{let N;return v?N=w:b?N=j:m.route.Component?N=y.createElement(m.route.Component,null):m.route.element?N=m.route.element:N=p,y.createElement(zU,{match:m,routeContext:{outlet:p,matches:k,isDataRoute:a!=null},children:N})};return a&&(m.route.ErrorBoundary||m.route.errorElement||x===0)?y.createElement(HO,{location:a.location,revalidation:a.revalidation,component:w,error:v,children:C(),routeContext:{outlet:null,matches:k,isDataRoute:!0},onError:f}):C()},null)}function Yj(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function $U(e){let t=y.useContext(c0);return Lr(t,Yj(e)),t}function UU(e){let t=y.useContext(Vx);return Lr(t,Yj(e)),t}function HU(e){let t=y.useContext(bi);return Lr(t,Yj(e)),t}function Xj(e){let t=HU(e),r=t.matches[t.matches.length-1];return Lr(r.route.id,`${e} can only be used on routes that contain a unique "id"`),r.route.id}function qU(){return Xj("useRouteId")}function WU(){var a;let e=y.useContext(Kj),t=UU("useRouteError"),r=Xj("useRouteError");return e!==void 0?e:(a=t.errors)==null?void 0:a[r]}function VU(){let{router:e}=$U("useNavigate"),t=Xj("useNavigate"),r=y.useRef(!1);return $O(()=>{r.current=!0}),y.useCallback((l,...u)=>fe(null,[l,...u],function*(s,i={}){Ws(r.current,BO),r.current&&(typeof s=="number"?yield e.navigate(s):yield e.navigate(s,ee({fromRouteId:t},i)))}),[e,t])}var VC={};function qO(e,t,r){!t&&!VC[e]&&(VC[e]=!0,Ws(!1,r))}y.memo(GU);function GU({routes:e,manifest:t,future:r,state:a,isStatic:s,onError:i}){return UO(e,void 0,{manifest:t,state:a,isStatic:s,onError:i})}function Ff({to:e,replace:t,state:r,relative:a}){Lr(u0()," may be used only in the context of a component.");let{static:s}=y.useContext(ys);Ws(!s," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:i}=y.useContext(bi),{pathname:l}=vs(),u=Ut(),d=Wx(e,Gj(i),l,a==="path"),f=JSON.stringify(d);return y.useEffect(()=>{u(JSON.parse(f),{replace:t,state:r,relative:a})},[u,f,a,t,r]),null}function $t(e){Lr(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function KU({basename:e="/",children:t=null,location:r,navigationType:a="POP",navigator:s,static:i=!1,useTransitions:l}){Lr(!u0(),"You cannot render a inside another . You should never have more than one in your app.");let u=e.replace(/^\/*/,"/"),d=y.useMemo(()=>({basename:u,navigator:s,static:i,useTransitions:l,future:{}}),[u,s,i,l]);typeof r=="string"&&(r=l0(r));let{pathname:f="/",search:p="",hash:m="",state:x=null,key:v="default",mask:b}=r,w=y.useMemo(()=>{let j=Ro(f,u);return j==null?null:{location:{pathname:j,search:p,hash:m,state:x,key:v,mask:b},navigationType:a}},[u,f,p,m,x,v,a,b]);return Ws(w!=null,` is not able to match the URL "${f}${p}${m}" because it does not start with the basename, so the won't render anything.`),w==null?null:y.createElement(ys.Provider,{value:d},y.createElement(Oh.Provider,{children:t,value:w}))}function YU({children:e,location:t}){return FU(Rw(e),t)}function Rw(e,t=[]){let r=[];return y.Children.forEach(e,(a,s)=>{if(!y.isValidElement(a))return;let i=[...t,s];if(a.type===y.Fragment){r.push.apply(r,Rw(a.props.children,i));return}Lr(a.type===$t,`[${typeof a.type=="string"?a.type:a.type.name}] is not a component. All component children of must be a or `),Lr(!a.props.index||!a.props.children,"An index route cannot have child routes.");let l={id:a.props.id||i.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,middleware:a.props.middleware,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(l.children=Rw(a.props.children,i)),r.push(l)}),r}var xg="get",yg="application/x-www-form-urlencoded";function Gx(e){return typeof HTMLElement!="undefined"&&e instanceof HTMLElement}function XU(e){return Gx(e)&&e.tagName.toLowerCase()==="button"}function JU(e){return Gx(e)&&e.tagName.toLowerCase()==="form"}function QU(e){return Gx(e)&&e.tagName.toLowerCase()==="input"}function ZU(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function eH(e,t){return e.button===0&&(!t||t==="_self")&&!ZU(e)}function Fw(e=""){return new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,r)=>{let a=e[r];return t.concat(Array.isArray(a)?a.map(s=>[r,s]):[[r,a]])},[]))}function tH(e,t){let r=Fw(e);return t&&t.forEach((a,s)=>{r.has(s)||t.getAll(s).forEach(i=>{r.append(s,i)})}),r}var Cm=null;function rH(){if(Cm===null)try{new FormData(document.createElement("form"),0),Cm=!1}catch(e){Cm=!0}return Cm}var aH=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Sb(e){return e!=null&&!aH.has(e)?(Ws(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${yg}"`),null):e}function nH(e,t){let r,a,s,i,l;if(JU(e)){let u=e.getAttribute("action");a=u?Ro(u,t):null,r=e.getAttribute("method")||xg,s=Sb(e.getAttribute("enctype"))||yg,i=new FormData(e)}else if(XU(e)||QU(e)&&(e.type==="submit"||e.type==="image")){let u=e.form;if(u==null)throw new Error('Cannot submit a