@remit/web-client-dist 0.0.129 → 0.0.130
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/{ComposeBody-Dv8GTCX-.js → ComposeBody-DTqaYgdZ.js} +3 -3
- package/assets/{ErrorState-C1rQsV_s.js → ErrorState-D6rTDuPX.js} +1 -1
- package/assets/{OnboardingWizard-fH3cV-Bt.js → OnboardingWizard-RRRJdWYS.js} +1 -1
- package/assets/{account-form-helpers-DCLj-gup.js → account-form-helpers-BPwKIAan.js} +1 -1
- package/assets/{accounts-Jh962jif.js → accounts-3Lf2kr2s.js} +1 -1
- package/assets/advanced-Bm5Azc5P.js +1 -0
- package/assets/{appearance-BHjnZjyK.js → appearance-DoaCy-fC.js} +1 -1
- package/assets/{avatar-Ca5J3d1B.js → avatar-CUA7uJyY.js} +1 -1
- package/assets/{browser-ponyfill-jJ7MUtFS.js → browser-ponyfill-CG3KwnMy.js} +1 -1
- package/assets/circle-check-DvXuGOi1.js +1 -0
- package/assets/{download-DvTNYX4j.js → download-Dh1eCo2E.js} +1 -1
- package/assets/filters-DXqxvs4m.js +1 -0
- package/assets/{flagged-Crikbh8F.js → flagged-QLrkA1Uk.js} +1 -1
- package/assets/{folder-C6a40H2R.js → folder-DK-t9VEC.js} +1 -1
- package/assets/{folders-CZHhG4Zu.js → folders-Db8l-2D3.js} +1 -1
- package/assets/index-BHrUY2Yy.js +1 -0
- package/assets/{index-QkIP6MIH.js → index-H7XSpYoL.js} +30 -30
- package/assets/{index-BFlORFK_.js → index-lEk4ocu-.js} +1 -1
- package/assets/{kbd-BgERypjy.js → kbd-BKjAyAcB.js} +1 -1
- package/assets/mail-CoctN5z4.js +118 -0
- package/assets/{onboarding-CCtmYI0E.js → onboarding-ChiMBCMS.js} +1 -1
- package/assets/rotate-ccw-I9VzOzFd.js +1 -0
- package/assets/{senders-Dc4mpem7.js → senders-B560OeMX.js} +1 -1
- package/assets/settings-CqL3Tddw.js +1 -0
- package/assets/{settings-screen-R_p_AfP4.js → settings-screen-BObRfoam.js} +1 -1
- package/assets/suggested-vips-C6Nj7Kq6.js +1 -0
- package/assets/{useDebouncedValue-CV1ge_ZN.js → useDebouncedValue-B1CXBL4P.js} +1 -1
- package/assets/useRulePreview-D9_wO5s2.js +1 -0
- package/assets/{useSignature-daDUU9Xi.js → useSignature-F4bseK_l.js} +1 -1
- package/index.html +1 -1
- package/package.json +1 -1
- package/assets/advanced-DjXn3JWS.js +0 -1
- package/assets/filter-status-By1GnPG1.js +0 -1
- package/assets/filters-CWeH5zfZ.js +0 -1
- package/assets/index-Bksf_UCT.js +0 -1
- package/assets/mail-ZAxRBcsg.js +0 -118
- package/assets/rotate-ccw-B0a3ZBwB.js +0 -1
- package/assets/settings-C_ko2pwO.js +0 -1
- package/assets/suggested-vips-DRsjRZaD.js +0 -1
package/assets/mail-ZAxRBcsg.js
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ComposeBody-Dv8GTCX-.js","assets/index-QkIP6MIH.js","assets/index-ChxiTmNG.css","assets/useDebouncedValue-CV1ge_ZN.js","assets/avatar-Ca5J3d1B.js","assets/kbd-BgERypjy.js","assets/account-form-helpers-DCLj-gup.js","assets/useSignature-daDUU9Xi.js","assets/ErrorState-C1rQsV_s.js","assets/format-B6Elex-n.js","assets/filter-status-By1GnPG1.js","assets/rotate-ccw-B0a3ZBwB.js","assets/folder-C6a40H2R.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{R as W,c as Qd,r as c,a as le,j as n,C as Tt,X as Ue,b as H,B as G,d as ot,S as Mt,e as bt,f as Jt,L as br,g as Yd,h as Zs,i as ut,T as st,k as Zt,u as Yn,l as xr,m as pl,I as bl,p as xl,n as vr,o as Gd,D as vl,q as en,O as Xd,M as Jd,A as Zd,F as yl,s as e0,t as t0,v as s0,w as yr,x as kl,y as kr,P as n0,z as a0,E as wr,G as jr,_ as Ct,H as wl,J as r0,Q as Sr,K as o0,N as i0,U as l0,V as Va,W as c0,Y as u0,Z as ye,$ as d0,a0 as m0,a1 as f0,a2 as h0,a3 as g0,a4 as p0,a5 as To,a6 as b0,a7 as x0,a8 as v0,a9 as Cr,aa as jl,ab as Sl,ac as zt,ad as ze,ae as He,af as Ns,ag as ge,ah as Nr,ai as Er,aj as Ir,ak as Tr,al as Gn,am as ys,an as je,ao as tn,ap as ce,aq as Cl,ar as y0,as as xe,at as Nl,au as k0,av as Xn,aw as El,ax as xt,ay as Je,az as w0,aA as it,aB as Il,aC as Yt,aD as Jn,aE as j0,aF as Rr,aG as Tl,aH as Rl,aI as es,aJ as Zn,aK as ts,aL as S0,aM as C0,aN as ks,aO as N0,aP as Ml,aQ as Qa,aR as ws,aS as E0,aT as Mr,aU as I0,aV as T0,aW as zl,aX as zr,aY as Es,aZ as ht,a_ as Ya,a$ as Ga,b0 as R0,b1 as Al,b2 as M0,b3 as Ar,b4 as Dl,b5 as z0,b6 as A0,b7 as D0,b8 as Ol,b9 as O0,ba as P0,bb as L0,bc as $0,bd as F0,be as _0,bf as q0,bg as B0,bh as K0,bi as U0,bj as H0,bk as W0,bl as V0,bm as Q0,bn as jt,bo as ft,bp as Y0}from"./index-QkIP6MIH.js";import{S as sn,u as Pl}from"./useDebouncedValue-CV1ge_ZN.js";import{A as ct,M as Dr,C as G0}from"./avatar-Ca5J3d1B.js";import{K as bs}from"./kbd-BgERypjy.js";import{M as Ll,a as X0}from"./account-form-helpers-DCLj-gup.js";import{R as J0,u as Z0}from"./useSignature-daDUU9Xi.js";import{E as At,f as $l}from"./ErrorState-C1rQsV_s.js";import{f as Fl,a as Dt,b as _l,c as Fn,d as lt,t as em}from"./format-B6Elex-n.js";import{b as _n,p as tm,u as sm}from"./filter-status-By1GnPG1.js";import{R as nm,C as Or}from"./rotate-ccw-B0a3ZBwB.js";import{F as am}from"./folder-C6a40H2R.js";function Vs(e){if(rm())e.focus({preventScroll:!0});else{let t=om(e);e.focus(),im(t)}}let yn=null;function rm(){if(yn==null){yn=!1;try{document.createElement("div").focus({get preventScroll(){return yn=!0,!0}})}catch{}}return yn}function om(e){let t=e.parentNode,s=[],a=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==a;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&s.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return a instanceof HTMLElement&&s.push({element:a,scrollTop:a.scrollTop,scrollLeft:a.scrollLeft}),s}function im(e){for(let{element:t,scrollTop:s,scrollLeft:a}of e)t.scrollTop=s,t.scrollLeft=a}const Et=e=>e?.ownerDocument??document,Rt=e=>e&&"window"in e&&e.window===e?e:Et(e).defaultView||window;function lm(e){return e!==null&&typeof e=="object"&&"nodeType"in e&&typeof e.nodeType=="number"}function cm(e){return lm(e)&&e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&"host"in e}let um=!1;function ql(){return um}function at(e,t){if(!ql())return t&&e?e.contains(t):!1;if(!e||!t)return!1;let s=t;for(;s!==null;){if(s===e)return!0;s.tagName==="SLOT"&&s.assignedSlot?s=s.assignedSlot.parentNode:cm(s)?s=s.host:s=s.parentNode}return!1}function Ie(e){if(ql()&&e.target instanceof Element&&e.target.shadowRoot){if("composedPath"in e)return e.composedPath()[0]??null;if("composedPath"in e.nativeEvent)return e.nativeEvent.composedPath()[0]??null}return e.target}const dm=typeof Element<"u"&&"checkVisibility"in Element.prototype;function mm(e){const t=Rt(e);if(!(e instanceof t.HTMLElement)&&!(e instanceof t.SVGElement))return!1;let{display:s,visibility:a}=e.style,r=s!=="none"&&a!=="hidden"&&a!=="collapse";if(r){const{getComputedStyle:o}=Rt(e);let{display:i,visibility:l}=o(e);r=i!=="none"&&l!=="hidden"&&l!=="collapse"}return r}function fm(e,t){return!e.hasAttribute("hidden")&&!e.hasAttribute("data-react-aria-prevent-focus")&&(e.nodeName==="DETAILS"&&t&&t.nodeName!=="SUMMARY"?e.hasAttribute("open"):!0)}function Bl(e,t){return dm?e.checkVisibility({visibilityProperty:!0})&&!e.closest("[data-react-aria-prevent-focus]"):e.nodeName!=="#comment"&&mm(e)&&fm(e,t)&&(!e.parentElement||Bl(e.parentElement,e))}const Kl=["input:not([disabled]):not([type=hidden])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","a[href]","area[href]","summary","iframe","object","embed","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable^="false"])',"permission"],hm=Kl.join(":not([hidden]),")+",[tabindex]:not([disabled]):not([hidden])";Kl.push('[tabindex]:not([tabindex="-1"]):not([disabled])');function gm(e,t){return e.matches(hm)&&!pm(e)&&(t?.skipVisibilityCheck||Bl(e))}function pm(e){let t=e;for(;t!=null;){if(t instanceof Rt(t).HTMLElement&&t.inert)return!0;t=t.parentElement}return!1}const Pr=typeof document<"u"?W.useLayoutEffect:()=>{};function bm(e){let t=e;return t.nativeEvent=e,t.isDefaultPrevented=()=>t.defaultPrevented,t.isPropagationStopped=()=>t.cancelBubble,t.persist=()=>{},t}function xm(e,t){Object.defineProperty(e,"target",{value:t}),Object.defineProperty(e,"currentTarget",{value:t})}function vm(e){for(;e&&!gm(e,{skipVisibilityCheck:!0});)e=e.parentElement;let t=Rt(e),s=t.document.activeElement;if(!s||s===e)return;let a=!1,r=m=>{(Ie(m)===s||a)&&m.stopImmediatePropagation()},o=m=>{(Ie(m)===s||a)&&(m.stopImmediatePropagation(),!e&&!a&&(a=!0,Vs(s),u()))},i=m=>{(Ie(m)===e||a)&&m.stopImmediatePropagation()},l=m=>{(Ie(m)===e||a)&&(m.stopImmediatePropagation(),a||(a=!0,Vs(s),u()))};t.addEventListener("blur",r,!0),t.addEventListener("focusout",o,!0),t.addEventListener("focusin",l,!0),t.addEventListener("focus",i,!0);let u=()=>{cancelAnimationFrame(d),t.removeEventListener("blur",r,!0),t.removeEventListener("focusout",o,!0),t.removeEventListener("focusin",l,!0),t.removeEventListener("focus",i,!0),a=!1},d=requestAnimationFrame(u);return u}function ea(e){if(typeof window>"u"||window.navigator==null)return!1;let t=window.navigator.userAgentData?.brands;return Array.isArray(t)&&t.some(s=>e.test(s.brand))||e.test(window.navigator.userAgent)}function Lr(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.userAgentData?.platform||window.navigator.platform):!1}function Ot(e){let t=null;return()=>(t==null&&(t=e()),t)}const qn=Ot(function(){return Lr(/^Mac/i)}),ym=Ot(function(){return Lr(/^iPhone/i)}),Ul=Ot(function(){return Lr(/^iPad/i)||qn()&&navigator.maxTouchPoints>1}),Hl=Ot(function(){return ym()||Ul()}),km=Ot(function(){return ea(/AppleWebKit/i)&&!wm()}),wm=Ot(function(){return ea(/Chrome/i)}),Wl=Ot(function(){return ea(/Android/i)}),jm=Ot(function(){return ea(/Firefox/i)});function Sm(e){return e.pointerType===""&&e.isTrusted?!0:Wl()&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function Cm(e){return!Wl()&&e.width===0&&e.height===0||e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"}function Qs(e,t,s=!0){let{metaKey:a,ctrlKey:r,altKey:o,shiftKey:i}=t;jm()&&window.event?.type?.startsWith("key")&&e.target==="_blank"&&(qn()?a=!0:r=!0);let l=km()&&qn()&&!Ul()?new KeyboardEvent("keydown",{keyIdentifier:"Enter",metaKey:a,ctrlKey:r,altKey:o,shiftKey:i}):new MouseEvent("click",{metaKey:a,ctrlKey:r,altKey:o,shiftKey:i,detail:1,bubbles:!0,cancelable:!0});Qs.isOpening=s,Vs(e),e.dispatchEvent(l),Qs.isOpening=!1}Qs.isOpening=!1;let Nt=new Map,Xa=new Set;function Ro(){if(typeof window>"u")return;function e(a){return"propertyName"in a}let t=a=>{let r=Ie(a);if(!e(a)||!r)return;let o=Nt.get(r);o||(o=new Set,Nt.set(r,o),r.addEventListener("transitioncancel",s,{once:!0})),o.add(a.propertyName)},s=a=>{let r=Ie(a);if(!e(a)||!r)return;let o=Nt.get(r);if(o&&(o.delete(a.propertyName),o.size===0&&(r.removeEventListener("transitioncancel",s),Nt.delete(r)),Nt.size===0)){for(let i of Xa)i();Xa.clear()}};document.body.addEventListener("transitionrun",t),document.body.addEventListener("transitionend",s)}typeof document<"u"&&(document.readyState!=="loading"?Ro():document.addEventListener("DOMContentLoaded",Ro));function Nm(){for(const[e]of Nt)"isConnected"in e&&!e.isConnected&&Nt.delete(e)}function Em(e){requestAnimationFrame(()=>{Nm(),Nt.size===0?e():Xa.add(e)})}function Vl(...e){return(...t)=>{for(let s of e)typeof s=="function"&&s(...t)}}let Ja=new Map;typeof FinalizationRegistry<"u"&&new FinalizationRegistry(e=>{Ja.delete(e)});function Im(e,t){if(e===t)return e;let s=Ja.get(e);if(s)return s.forEach(r=>r.current=t),t;let a=Ja.get(t);return a?(a.forEach(r=>r.current=e),e):t}function Tm(...e){return e.length===1&&e[0]?e[0]:t=>{let s=!1;const a=e.map(r=>{const o=Mo(r,t);return s||=typeof o=="function",o});if(s)return()=>{a.forEach((r,o)=>{typeof r=="function"?r():Mo(e[o],null)})}}}function Mo(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function nn(...e){let t={...e[0]};for(let s=1;s<e.length;s++){let a=e[s];for(let r in a){let o=t[r],i=a[r];typeof o=="function"&&typeof i=="function"&&r[0]==="o"&&r[1]==="n"&&r.charCodeAt(2)>=65&&r.charCodeAt(2)<=90?t[r]=Vl(o,i):(r==="className"||r==="UNSAFE_className")&&typeof o=="string"&&typeof i=="string"?t[r]=Qd(o,i):r==="id"&&o&&i?t.id=Im(o,i):r==="ref"&&o&&i?t.ref=Tm(o,i):t[r]=i!==void 0?i:o}}return t}function Rm(e,t){Pr(()=>{if(e&&e.ref&&t)return e.ref.current=t.current,()=>{e.ref&&(e.ref.current=null)}})}const Mm=W.useInsertionEffect??Pr;function Ca(e){const t=c.useRef(null);return Mm(()=>{t.current=e},[e]),c.useCallback((...s)=>{const a=t.current;return a?.(...s)},[])}let gs="default",Za="",An=new WeakMap;function zm(e){if(Hl()){if(gs==="default"){const t=Et(e);Za=t.documentElement.style.webkitUserSelect,t.documentElement.style.webkitUserSelect="none"}gs="disabled"}else if(e instanceof HTMLElement||e instanceof SVGElement){let t="userSelect"in e.style?"userSelect":"webkitUserSelect";An.set(e,e.style[t]),e.style[t]="none"}}function zo(e){if(Hl()){if(gs!=="disabled")return;gs="restoring",setTimeout(()=>{Em(()=>{if(gs==="restoring"){const t=Et(e);t.documentElement.style.webkitUserSelect==="none"&&(t.documentElement.style.webkitUserSelect=Za||""),Za="",gs="default"}})},300)}else if((e instanceof HTMLElement||e instanceof SVGElement)&&e&&An.has(e)){let t=An.get(e),s="userSelect"in e.style?"userSelect":"webkitUserSelect";e.style[s]==="none"&&(e.style[s]=t),e.getAttribute("style")===""&&e.removeAttribute("style"),An.delete(e)}}function Ao(e){return e?.defaultView?.__webpack_nonce__||globalThis.__webpack_nonce__||void 0}let Na=new WeakMap;function Am(e){let t=e??(typeof document<"u"?document:void 0);if(!t)return Ao(t);if(Na.has(t))return Na.get(t);let s=t.querySelector('meta[property="csp-nonce"]'),a=s&&s instanceof Rt(s).HTMLMetaElement&&(s.nonce||s.content)||Ao(t)||void 0;return a!==void 0&&Na.set(t,a),a}const Ql=W.createContext({register:()=>{}});Ql.displayName="PressResponderContext";function Yl(){let e=c.useRef(new Map),t=c.useCallback((r,o,i,l)=>{let u=l?.once?(...d)=>{e.current.delete(i),i(...d)}:i;e.current.set(i,{type:o,eventTarget:r,fn:u,options:l}),r.addEventListener(o,u,l)},[]),s=c.useCallback((r,o,i,l)=>{let u=e.current.get(i)?.fn||i;r.removeEventListener(o,u,l),e.current.delete(i)},[]),a=c.useCallback(()=>{e.current.forEach((r,o)=>{s(r.eventTarget,r.type,o,r.options)})},[s]);return c.useEffect(()=>a,[a]),{addGlobalListener:t,removeGlobalListener:s,removeAllGlobalListeners:a}}function Dm(e){let t=c.useContext(Ql);if(t){let{register:s,ref:a,...r}=t;e=nn(r,e),s()}return Rm(t,e.ref),e}class kn{#s;constructor(t,s,a,r){this.#s=!0;const i=(r?.target??a.currentTarget)?.getBoundingClientRect();let l,u=0,d,m=null;a.clientX!=null&&a.clientY!=null&&(d=a.clientX,m=a.clientY),i&&(d!=null&&m!=null?(l=d-i.left,u=m-i.top):(l=i.width/2,u=i.height/2)),this.type=t,this.pointerType=s,this.target=a.currentTarget,this.shiftKey=a.shiftKey,this.metaKey=a.metaKey,this.ctrlKey=a.ctrlKey,this.altKey=a.altKey,this.x=l,this.y=u,this.key=a.key}continuePropagation(){this.#s=!1}get shouldStopPropagation(){return this.#s}}const Do=Symbol("linkClicked"),Oo="react-aria-pressable-style",Po="data-react-aria-pressable";function Om(e){let{onPress:t,onPressChange:s,onPressStart:a,onPressEnd:r,onPressUp:o,onClick:i,isDisabled:l,isPressed:u,preventFocusOnPress:d,shouldCancelOnPointerExit:m,allowTextSelectionOnPress:f,ref:h,...b}=Dm(e),[v,p]=c.useState(!1),x=c.useRef({isPressed:!1,ignoreEmulatedMouseEvents:!1,didFirePressStart:!1,isTriggeringEvent:!1,activePointerId:null,target:null,isOverTarget:!1,pointerType:null,disposables:[]}),{addGlobalListener:g,removeAllGlobalListeners:y}=Yl(),k=c.useCallback((j,M)=>{let $=x.current;if(l||$.didFirePressStart)return!1;let R=!0;if($.isTriggeringEvent=!0,a){let O=new kn("pressstart",M,j);a(O),R=O.shouldStopPropagation}return s&&s(!0),$.isTriggeringEvent=!1,$.didFirePressStart=!0,p(!0),R},[l,a,s]),w=c.useCallback((j,M,$=!0)=>{let R=x.current;if(!R.didFirePressStart)return!1;R.didFirePressStart=!1,R.isTriggeringEvent=!0;let O=!0;if(r){let N=new kn("pressend",M,j);r(N),O=N.shouldStopPropagation}if(s&&s(!1),p(!1),t&&$&&!l){let N=new kn("press",M,j);t(N),O&&=N.shouldStopPropagation}return R.isTriggeringEvent=!1,O},[l,r,s,t]),E=Ca(w),T=c.useCallback((j,M)=>{let $=x.current;if(l)return!1;if(o){$.isTriggeringEvent=!0;let R=new kn("pressup",M,j);return o(R),$.isTriggeringEvent=!1,R.shouldStopPropagation}return!0},[l,o]),C=Ca(T),S=c.useCallback(j=>{let M=x.current;if(M.isPressed&&M.target){M.didFirePressStart&&M.pointerType!=null&&w(Ut(M.target,j),M.pointerType,!1),M.isPressed=!1,M.isOverTarget=!1,M.activePointerId=null,M.pointerType=null,y(),f||zo(M.target);for(let $ of M.disposables)$();M.disposables=[]}},[f,y,w]),D=Ca(S);c.useEffect(()=>{l&&x.current.isPressed&&D({currentTarget:x.current.target,shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1})},[l]);let z=c.useCallback(j=>{m&&S(j)},[m,S]),A=c.useCallback(j=>{l||i?.(j)},[l,i]),P=c.useCallback((j,M)=>{if(!l&&i){let $=new MouseEvent("click",j);xm($,M),i(bm($))}},[l,i]),I=c.useMemo(()=>{let j=x.current,M={onKeyDown(R){if(Ea(R.nativeEvent,R.currentTarget)&&at(R.currentTarget,Ie(R))){Lo(Ie(R),R.key)&&R.preventDefault();let O=!0;!j.isPressed&&!R.repeat&&(j.target=R.currentTarget,j.isPressed=!0,j.pointerType="keyboard",O=k(R,"keyboard"));let N=R.currentTarget,L=_=>{Ea(_,N)&&!_.repeat&&at(N,Ie(_))&&j.target&&C(Ut(j.target,_),"keyboard")};g(Et(R.currentTarget),"keyup",Vl(L,$),!0),O&&R.stopPropagation(),R.metaKey&&qn()&&j.metaKeyEvents?.set(R.key,R.nativeEvent)}else R.key==="Meta"&&(j.metaKeyEvents=new Map)},onClick(R){if(!(R&&!at(R.currentTarget,Ie(R)))&&R&&R.button===0&&!j.isTriggeringEvent&&!Qs.isOpening){let O=!0;if(l&&R.preventDefault(),!j.ignoreEmulatedMouseEvents&&!j.isPressed&&(j.pointerType==="virtual"||Sm(R.nativeEvent))){let N=k(R,"virtual"),L=C(R,"virtual"),_=E(R,"virtual");A(R),O=N&&L&&_}else if(j.isPressed&&j.pointerType!=="keyboard"){let N=j.pointerType||R.nativeEvent.pointerType||"virtual",L=C(Ut(R.currentTarget,R),N),_=E(Ut(R.currentTarget,R),N,!0);O=L&&_,j.isOverTarget=!1,A(R),D(R)}j.ignoreEmulatedMouseEvents=!1,O&&R.stopPropagation()}}},$=R=>{if(j.isPressed&&j.target&&Ea(R,j.target)){Lo(Ie(R),R.key)&&R.preventDefault();let O=Ie(R),N=at(j.target,O);E(Ut(j.target,R),"keyboard",N),N&&P(R,j.target),y(),R.key!=="Enter"&&$r(j.target)&&at(j.target,O)&&!R[Do]&&(R[Do]=!0,Qs(j.target,R,!1)),j.isPressed=!1,j.metaKeyEvents?.delete(R.key)}else if(R.key==="Meta"&&j.metaKeyEvents?.size){let O=j.metaKeyEvents;j.metaKeyEvents=void 0;for(let N of O.values())j.target?.dispatchEvent(new KeyboardEvent("keyup",N))}};if(typeof PointerEvent<"u"){M.onPointerDown=N=>{if(N.button!==0||!at(N.currentTarget,Ie(N)))return;if(Cm(N.nativeEvent)){j.pointerType="virtual";return}j.pointerType=N.pointerType;let L=!0;if(!j.isPressed){j.isPressed=!0,j.isOverTarget=!0,j.activePointerId=N.pointerId,j.target=N.currentTarget,f||zm(j.target),L=k(N,j.pointerType);let _=Ie(N);"releasePointerCapture"in _&&("hasPointerCapture"in _?_.hasPointerCapture(N.pointerId)&&_.releasePointerCapture(N.pointerId):_.releasePointerCapture(N.pointerId)),g(Et(N.currentTarget),"pointerup",R,!1),g(Et(N.currentTarget),"pointercancel",O,!1)}L&&N.stopPropagation()},M.onMouseDown=N=>{if(at(N.currentTarget,Ie(N))&&N.button===0){if(d){let L=vm(N.target);L&&j.disposables.push(L)}N.stopPropagation()}},M.onPointerUp=N=>{!at(N.currentTarget,Ie(N))||j.pointerType==="virtual"||N.button===0&&!j.isPressed&&C(N,j.pointerType||N.pointerType)},M.onPointerEnter=N=>{N.pointerId===j.activePointerId&&j.target&&!j.isOverTarget&&j.pointerType!=null&&(j.isOverTarget=!0,k(Ut(j.target,N),j.pointerType))},M.onPointerLeave=N=>{N.pointerId===j.activePointerId&&j.target&&j.isOverTarget&&j.pointerType!=null&&(j.isOverTarget=!1,E(Ut(j.target,N),j.pointerType,!1),z(N))};let R=N=>{if(N.pointerId===j.activePointerId&&j.isPressed&&N.button===0&&j.target){if(at(j.target,Ie(N))&&j.pointerType!=null){let L=!1,_=setTimeout(()=>{j.isPressed&&j.target instanceof HTMLElement&&(L?D(N):(Vs(j.target),j.target.click()))},80);g(N.currentTarget,"click",()=>L=!0,!0),j.disposables.push(()=>clearTimeout(_))}else D(N);j.isOverTarget=!1}},O=N=>{D(N)};M.onDragStart=N=>{at(N.currentTarget,Ie(N))&&D(N)}}return M},[g,l,d,y,f,z,k,A,P]);return c.useEffect(()=>{if(!h)return;const j=Et(h.current);if(!j||!j.head||j.getElementById(Oo))return;const M=j.createElement("style");M.id=Oo;let $=Am(j);$&&(M.nonce=$),M.textContent=`
|
|
3
|
-
@layer {
|
|
4
|
-
[${Po}] {
|
|
5
|
-
touch-action: pan-x pan-y pinch-zoom;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
`.trim(),j.head.prepend(M)},[h]),c.useEffect(()=>{let j=x.current;return()=>{f||zo(j.target??void 0);for(let M of j.disposables)M();j.disposables=[]}},[f]),{isPressed:u||v,pressProps:nn(b,I,{[Po]:!0})}}function $r(e){return e.tagName==="A"&&e.hasAttribute("href")}function Ea(e,t){const{key:s,code:a}=e,r=t,o=r.getAttribute("role");return(s==="Enter"||s===" "||s==="Spacebar"||a==="Space")&&!(r instanceof Rt(r).HTMLInputElement&&!Gl(r,s)||r instanceof Rt(r).HTMLTextAreaElement||r.isContentEditable)&&!((o==="link"||!o&&$r(r))&&s!=="Enter")}function Ut(e,t){let s=t.clientX,a=t.clientY;return{currentTarget:e,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,clientX:s,clientY:a,key:t.key}}function Pm(e){return e instanceof HTMLInputElement?!1:e instanceof HTMLButtonElement?e.type!=="submit"&&e.type!=="reset":!$r(e)}function Lo(e,t){return e instanceof HTMLInputElement?!Gl(e,t):Pm(e)}const Lm=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);function Gl(e,t){return e.type==="checkbox"||e.type==="radio"?t===" ":Lm.has(e.type)}let $m=0;const Ia=new Map;function Fm(e){let[t,s]=c.useState();return Pr(()=>{if(!e)return;let a=Ia.get(e);if(a)s(a.element.id);else{let r=`react-aria-description-${$m++}`;s(r);let o=document.createElement("div");o.id=r,o.style.display="none",o.textContent=e,document.body.appendChild(o),a={refCount:0,element:o},Ia.set(e,a)}return a.refCount++,()=>{a&&--a.refCount===0&&(a.element.remove(),Ia.delete(e))}},[e]),{"aria-describedby":e?t:void 0}}const _m=500;function qm(e){let{isDisabled:t,onLongPressStart:s,onLongPressEnd:a,onLongPress:r,threshold:o=_m,accessibilityDescription:i}=e;const l=c.useRef(void 0);let{addGlobalListener:u,removeGlobalListener:d}=Yl(),{pressProps:m}=Om({isDisabled:t,onPressStart(h){if(h.continuePropagation(),(h.pointerType==="mouse"||h.pointerType==="touch")&&(s&&s({...h,type:"longpressstart"}),l.current=setTimeout(()=>{h.target.dispatchEvent(new PointerEvent("pointercancel",{bubbles:!0})),Et(h.target).activeElement!==h.target&&Vs(h.target),r&&r({...h,type:"longpress"}),l.current=void 0},o),h.pointerType==="touch")){let b=p=>{p.preventDefault()},v=Rt(h.target);u(h.target,"contextmenu",b,{once:!0}),u(v,"pointerup",()=>{setTimeout(()=>{d(h.target,"contextmenu",b)},30)},{once:!0})}},onPressEnd(h){l.current&&clearTimeout(l.current),a&&(h.pointerType==="mouse"||h.pointerType==="touch")&&a({...h,type:"longpressend"})}}),f=Fm(r&&!t?i:void 0);return{longPressProps:nn(m,f)}}const Xl=le("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);const Bm=le("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);const Km=le("ArrowUp",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);const ta=le("BadgeCheck",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const Um=le("Ban",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]]);const Jl=le("BellOff",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]]);const Hm=le("BookmarkPlus",[["path",{d:"m19 21-7-4-7 4V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v16z",key:"1fy3hk"}],["line",{x1:"12",x2:"12",y1:"7",y2:"13",key:"1cppfj"}],["line",{x1:"15",x2:"9",y1:"10",y2:"10",key:"1gty7f"}]]);const $o=le("Bug",[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]]);const js=le("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);const Wm=le("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);const Zl=le("CircleCheckBig",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);const Fr=le("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);const ec=le("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);const tc=le("EllipsisVertical",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"12",cy:"5",r:"1",key:"gxeob9"}],["circle",{cx:"12",cy:"19",r:"1",key:"lyex9k"}]]);const Vm=le("Flag",[["path",{d:"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z",key:"i9b6wo"}],["line",{x1:"4",x2:"4",y1:"22",y2:"15",key:"1cm3nv"}]]);const sc=le("FolderInput",[["path",{d:"M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1",key:"fm4g5t"}],["path",{d:"M2 13h10",key:"pgb2dq"}],["path",{d:"m9 16 3-3-3-3",key:"6m91ic"}]]);const nc=le("Forward",[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]]);const ac=le("LogOut",[["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}],["polyline",{points:"16 17 21 12 16 7",key:"1gabdz"}],["line",{x1:"21",x2:"9",y1:"12",y2:"12",key:"1uyos4"}]]);const Qm=le("MailCheck",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8",key:"12jkf8"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m16 19 2 2 4-4",key:"1b14m6"}]]);const Is=le("MailOpen",[["path",{d:"M21.2 8.4c.5.38.8.97.8 1.6v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V10a2 2 0 0 1 .8-1.6l8-6a2 2 0 0 1 2.4 0l8 6Z",key:"1jhwl8"}],["path",{d:"m22 10-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 10",key:"1qfld7"}]]);const Ym=le("MailX",[["path",{d:"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h9",key:"1j9vog"}],["path",{d:"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7",key:"1ocrg3"}],["path",{d:"m17 17 4 4",key:"1b3523"}],["path",{d:"m21 17-4 4",key:"uinynz"}]]);const Gm=le("Minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);const sa=le("Paperclip",[["path",{d:"M13.234 20.252 21 12.3",key:"1cbrk9"}],["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 0 2.828 2 2 0 0 0 2.828 0l8.414-8.586a4 4 0 0 0 0-5.656 4 4 0 0 0-5.656 0l-8.415 8.585a6 6 0 1 0 8.486 8.486",key:"1pkts6"}]]);const Xm=le("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);const rc=le("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);const oc=le("ReplyAll",[["polyline",{points:"7 17 2 12 7 7",key:"t83bqg"}],["polyline",{points:"12 17 7 12 12 7",key:"1g4ajm"}],["path",{d:"M22 18v-2a4 4 0 0 0-4-4H7",key:"1fcyog"}]]);const ic=le("Reply",[["polyline",{points:"9 17 4 12 9 7",key:"hvgpf2"}],["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}]]);const _r=le("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);const Ts=le("ShieldAlert",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]);const an=le("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);const Jm=le("ShieldQuestion",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3",key:"mhlwft"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);const Zm=le("ShieldX",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]]);const ef=le("SquarePen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]]);const tf=le("Undo2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),sf=({address:e,showTrustedBadge:t=!1})=>{const s=t?n.jsx(ta,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}):null;return e.displayName?n.jsxs("span",{children:[n.jsx("span",{className:"text-fg",children:e.displayName}),n.jsxs("span",{className:"text-fg-muted",children:[" ","<",e.normalizedEmail,">"]}),s]}):n.jsxs("span",{className:"text-fg",children:[e.normalizedEmail,s]})},nf=({label:e,addresses:t,showTrustedBadge:s=!1})=>{const[a,r]=c.useState(!1);if(t.length===0)return null;const o=t.length>3,i=l=>{const u=s&&l.flags?.trusted?.value===!0;return n.jsx(sf,{address:l,showTrustedBadge:u})};return n.jsxs("div",{className:"flex gap-2 text-sm",children:[n.jsxs("span",{className:"text-fg-muted shrink-0 w-12",children:[e,":"]}),n.jsx("div",{className:"flex-1 min-w-0",children:a?n.jsx("div",{className:"flex flex-wrap gap-1",children:t.map((l,u)=>n.jsxs("span",{children:[i(l),u<t.length-1&&", "]},u))}):n.jsx("div",{className:"truncate",children:t.map((l,u)=>n.jsxs("span",{children:[i(l),u<t.length-1&&", "]},u))})}),o&&n.jsx("button",{type:"button",onClick:l=>{l.stopPropagation(),r(!a)},className:"shrink-0 text-fg-muted hover:text-fg transition-colors","aria-label":a?"Collapse":"Expand",children:a?n.jsx(Tt,{className:"h-4 w-4"}):n.jsx(js,{className:"h-4 w-4"})})]})},af=({email:e,displayName:t,onRemove:s,className:a})=>n.jsxs("span",{className:H("inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-accent-2-soft text-sm max-w-[200px]",a),children:[n.jsx("span",{className:"truncate",children:t||e}),n.jsx("button",{type:"button",onClick:s,className:"shrink-0 p-0.5 rounded-full hover:bg-fg-muted/20 transition-colors","aria-label":`Remove ${e}`,children:n.jsx(Ue,{className:"size-3"})})]}),rf={unknown:{label:"Unknown sender",tone:"neutral"},wellknown:{label:"Known sender",tone:"positive"},vip:{label:"VIP",tone:"accent"}};function is({label:e,children:t,className:s}){return n.jsxs("section",{className:H("border-b border-line px-row-inset py-3",s),children:[n.jsx("h3",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e}),n.jsx("div",{className:"mt-2",children:t})]})}function of({sender:e}){const t=rf[e.trust],s=e.inboundCount==null?null:(e.replyCount??0)>0?`${e.inboundCount} received · you replied ${e.replyCount}×`:`${e.inboundCount} received · you've never replied`;return n.jsxs("div",{children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(ct,{name:e.name,email:e.email,size:"md"}),n.jsxs("div",{className:"min-w-0",children:[n.jsx("div",{className:"truncate text-sm font-semibold text-fg",children:e.name}),n.jsx("div",{className:"truncate text-2xs text-fg-subtle",children:e.email})]})]}),n.jsx("div",{className:"mt-2 flex items-center gap-2",children:e.addressUnverified?n.jsx(ot,{tone:"danger",dot:!0,children:"Address couldn't be verified"}):n.jsx(ot,{tone:t.tone,dot:!0,children:t.label})}),n.jsxs("p",{className:"mt-2 text-xs text-fg-muted",children:["First seen ",e.firstSeenLabel,s?` · ${s}`:""]})]})}function lf({auth:e,onShowSimilar:t}){if(e.verdict==="aligned")return n.jsxs("div",{className:"flex items-start gap-2 text-xs text-fg-muted",children:[n.jsx(an,{className:"mt-0.5 size-3.5 shrink-0 text-positive"}),n.jsx("span",{children:e.summary})]});if(e.verdict==="caution")return n.jsxs("div",{className:"flex items-start gap-2 rounded-md bg-warning/10 p-3 text-warning",children:[n.jsx(Jm,{className:"mt-0.5 size-4 shrink-0"}),n.jsx("p",{className:"text-xs leading-relaxed",children:e.summary})]});const s=e.addressUnreadable?"This sender can't be verified":"This message may be impersonating someone";return n.jsxs("div",{className:"rounded-md bg-danger-soft p-3",children:[n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(Ts,{className:"mt-0.5 size-4 shrink-0 text-danger"}),n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:"text-sm font-semibold text-danger",children:s}),n.jsx("p",{className:"mt-1 text-xs leading-relaxed text-fg",children:e.summary}),!e.addressUnreadable&&e.dkimDomain&&n.jsxs("p",{className:"mt-1 text-2xs text-fg-muted",children:["Sent from"," ",n.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.dkimDomain}),", claims to be"," ",n.jsx("code",{className:"rounded bg-surface px-1 py-0.5",children:e.fromDomain})]})]})]}),e.similarCount!=null&&e.similarCount>0&&n.jsxs(G,{variant:"secondary",size:"sm",className:"mt-2 w-full border-danger/30 text-danger hover:bg-danger-soft",onClick:t,children:[e.similarCount," similar messages"]})]})}function ls({icon:e,label:t,active:s,danger:a,onClick:r}){const o=r===void 0;return n.jsxs("button",{type:"button",onClick:r,disabled:o,className:H("flex items-center gap-2 rounded-md border px-2 py-1 text-xs transition-colors",s?"border-accent-2 bg-accent-2-soft text-accent-2":"border-line text-fg-muted hover:border-line-strong hover:text-fg",a&&!s&&"text-danger hover:bg-danger-soft",o&&"cursor-not-allowed opacity-50 hover:border-line"),children:[e,t]})}const cf={sender:"matched: sender",recipient:"matched: recipient",subject:"matched: subject",attachment:"matched: attachment",body:"matched: body",entities:"matched: entities"};function lc({data:e,onClose:t,onShowSimilar:s,actions:a,similarState:r="ready",similarLinkComponent:o,className:i,hideCloseButton:l=!1}){const{sender:u,authenticity:d,category:m,flags:f={},similar:h}=e,b=d.verdict==="mismatch";return n.jsxs("aside",{className:H("flex w-76 shrink-0 flex-col overflow-y-auto border-l border-line bg-surface",i),children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center justify-between border-b border-line px-row-inset",children:[n.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"}),!l&&n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(Ue,{className:"size-3.5"}),onClick:t,"aria-label":"Collapse intelligence sidebar"})]}),n.jsx(is,{label:"Sender",children:n.jsx(of,{sender:u})}),n.jsx(is,{label:"Authenticity",children:n.jsx(lf,{auth:d,onShowSimilar:s})}),n.jsx(is,{label:"Category",children:n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx(ot,{tone:b?"danger":"neutral",children:m.value}),m.overridden&&n.jsx("span",{className:"text-2xs text-fg-subtle",children:"your override"}),n.jsx("button",{type:"button",className:H("ml-auto text-2xs text-accent hover:underline",!a?.onReclassify&&"cursor-not-allowed opacity-50 hover:no-underline"),disabled:!a?.onReclassify,onClick:a?.onReclassify,children:"reclassify"})]})}),n.jsx(is,{label:"Quick actions",children:n.jsxs("div",{className:"flex flex-wrap gap-1.5",children:[n.jsx(ls,{icon:n.jsx(Mt,{className:"size-3.5"}),label:"VIP",active:f.vip,onClick:a?.onToggleVip}),n.jsx(ls,{icon:n.jsx(Jl,{className:"size-3.5"}),label:"Mute",active:f.muted,onClick:a?.onToggleMute}),n.jsx(ls,{icon:n.jsx(Um,{className:"size-3.5"}),label:"Block",active:f.blocked,danger:!0,onClick:a?.onToggleBlock}),n.jsx(ls,{icon:n.jsx(Ym,{className:"size-3.5"}),label:"Unsubscribe",active:f.unsubscribed,onClick:a?.onToggleUnsubscribe}),a?.onNotSpam&&n.jsx(ls,{icon:n.jsx(Qm,{className:"size-3.5"}),label:"Not spam",onClick:a.onNotSpam}),a?.onMarkSpam&&n.jsx(ls,{icon:n.jsx(Zm,{className:"size-3.5"}),label:"Mark spam",danger:!0,onClick:a.onMarkSpam})]})}),(r!=="ready"||h.length>0)&&n.jsx(is,{label:"Similar messages",children:r==="loading"?n.jsx("div",{className:"animate-pulse space-y-2",children:Array.from({length:3}).map((v,p)=>n.jsxs("div",{className:"space-y-1",children:[n.jsx("div",{className:"h-3 w-3/4 rounded bg-surface-sunken"}),n.jsx("div",{className:"h-2.5 w-1/2 rounded bg-surface-sunken"})]},p))}):r==="error"?n.jsx("p",{className:"text-xs text-fg-subtle",children:"Similarity search unavailable"}):n.jsx("ul",{className:"-mx-1 space-y-1",children:h.map(v=>{const p="block w-full rounded-md px-1 py-1 text-left hover:bg-surface-sunken",x=`Open message from ${v.fromName||"unknown sender"}: ${v.subject}`,g=n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[n.jsx("span",{className:"truncate text-xs font-medium text-fg",children:v.fromName}),n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:v.timeLabel})]}),n.jsx("div",{className:"truncate text-xs text-fg-muted",children:v.subject}),n.jsx("span",{className:"mt-1 inline-block rounded-full bg-surface-sunken px-1.5 py-px text-2xs text-fg-subtle",children:cf[v.matched]})]});return n.jsx("li",{children:o?o({mailboxId:v.mailboxId,messageId:v.id,className:p,ariaLabel:x,children:g}):n.jsx("div",{className:p,children:g})},v.id)})})}),n.jsx(is,{label:"Coming soon",className:"border-b-0 opacity-70",children:n.jsxs("div",{className:"space-y-2",children:[n.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[n.jsx(bt,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),n.jsxs("div",{children:[n.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Suggested actions"}),n.jsx("div",{className:"text-2xs text-fg-subtle",children:'"Create a filter for messages like this" — on-device model'})]})]}),n.jsxs("div",{className:"flex items-start gap-2 rounded-md border border-dashed border-line p-2",children:[n.jsx(bt,{className:"mt-0.5 size-3.5 shrink-0 text-fg-subtle"}),n.jsxs("div",{children:[n.jsx("div",{className:"text-xs font-medium text-fg-muted",children:"Thread summary"}),n.jsx("div",{className:"text-2xs text-fg-subtle",children:"One-paragraph digest — Bedrock"})]})]})]})})]})}const uf=[{keys:["j","k"],label:"navigate"},{keys:["m"],label:"mute"},{keys:["?"],label:"all shortcuts"}];function cc({hints:e=uf,className:t}){return n.jsx("footer",{className:H("flex items-center gap-2 border-t border-line px-row-inset py-1 text-2xs text-fg-subtle",t),children:e.map(s=>n.jsx(df,{hint:s},s.label))})}function df({hint:e}){return n.jsxs("span",{className:"flex items-center gap-1",children:[e.keys.map(t=>n.jsx(bs,{children:t},t)),n.jsx("span",{children:e.label})]})}function mf(){return n.jsx("div",{className:"space-y-0",role:"status","aria-busy":"true","aria-label":"Loading messages",children:Array.from({length:8}).map((e,t)=>n.jsxs("div",{className:"animate-pulse border-b border-line px-3 py-2",children:[n.jsxs("div",{className:"mb-2 flex items-center justify-between",children:[n.jsx("div",{className:"h-4 w-32 rounded bg-surface-sunken"}),n.jsx("div",{className:"h-3 w-16 rounded bg-surface-sunken"})]}),n.jsx("div",{className:"mb-2 h-4 w-48 rounded bg-surface-sunken"}),n.jsx("div",{className:"h-3 w-full rounded bg-surface-sunken"})]},t))})}function ff({searchQuery:e}){const t=!!e?.trim();return n.jsx("div",{className:"flex h-full flex-1 items-center justify-center",children:n.jsx("div",{className:"flex flex-col items-center justify-center p-8 text-center",children:n.jsx("p",{className:"text-fg-muted",children:t?"No messages match your search":"No messages in this mailbox"})})})}function hf({message:e="Something went wrong loading this mailbox.",onRetry:t,onReport:s}){return n.jsx("div",{className:"flex h-full flex-1 items-center justify-center p-4",children:n.jsxs("div",{role:"alert",className:"flex max-w-sm flex-col items-center justify-center gap-3 text-center",children:[n.jsx(Jt,{className:"size-8 text-danger","aria-hidden":"true"}),n.jsxs("div",{children:[n.jsx("p",{className:"font-medium text-danger",children:"Couldn't load messages"}),n.jsx("p",{className:"mt-1 break-words text-sm text-fg-muted",children:e})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[t&&n.jsx(G,{variant:"secondary",size:"sm",onClick:t,children:"Retry"}),s&&n.jsx(G,{variant:"ghost",size:"sm",onClick:s,children:"Report a problem"})]})]})})}const uc="outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",dc=({active:e,focused:t})=>H("relative flex h-8 w-full items-center gap-2 px-row-inset text-left",uc,e?"bg-accent-2-soft":t?"bg-surface-sunken":"hover:bg-surface-sunken",t&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2"),rn=({active:e,focused:t})=>H("relative flex w-full items-start gap-3 py-2 pl-5 pr-row-inset text-left transition-colors",uc,e?"bg-accent-2-soft":t?"bg-surface-sunken":"hover:bg-surface-sunken",t&&!e&&"before:absolute before:inset-y-0 before:left-0 before:w-0.5 before:bg-accent-2");function mc({thread:e}){const t=!e.isRead;return n.jsxs(n.Fragment,{children:[n.jsx("span",{className:"flex w-4 shrink-0 items-center justify-center",children:e.suspicious?n.jsx(Ts,{className:"size-3.5 text-danger"}):e.starred?n.jsx(Mt,{className:"size-3 fill-warning text-warning"}):t?n.jsx("span",{className:"size-1.5 rounded-full bg-accent"}):null}),n.jsx("span",{className:H("w-36 shrink-0 truncate text-xs",t?"font-semibold text-fg":"text-fg-muted"),children:e.fromName}),n.jsxs("span",{className:"min-w-0 flex-1 truncate text-xs",children:[n.jsx("span",{className:H(t?"font-medium text-fg":"text-fg-muted"),children:e.subject}),n.jsxs("span",{className:"text-fg-subtle",children:[" — ",e.snippet]})]}),e.hasAttachment&&n.jsx(sa,{className:"size-3 shrink-0 text-fg-subtle"}),n.jsx("span",{className:"w-11 shrink-0 text-right text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]})}function Ys({thread:e,badge:t}){const s=!e.isRead;return n.jsxs("span",{className:"min-w-0 flex-1",children:[n.jsxs("span",{className:"flex items-baseline justify-between gap-2",children:[n.jsxs("span",{className:H("flex min-w-0 items-center gap-1.5 truncate text-sm",s?"font-semibold text-fg":"font-medium text-fg-muted"),children:[e.trust==="vip"&&n.jsx("span",{className:"size-1.5 shrink-0 rounded-full bg-accent-2"}),n.jsx("span",{className:"truncate",children:e.fromName}),e.messageCount!=null&&e.messageCount>1&&n.jsx("span",{className:"shrink-0 text-2xs font-normal text-fg-subtle",children:e.messageCount})]}),n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.timeLabel})]}),n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:H("truncate text-sm",s?"text-fg":"text-fg-muted"),children:e.subject}),e.suspicious&&n.jsx(Ts,{className:"size-3.5 shrink-0 text-danger"}),e.starred&&n.jsx(Mt,{className:"size-3 shrink-0 fill-warning text-warning"}),e.hasAttachment&&n.jsx(sa,{className:"size-3 shrink-0 text-fg-subtle"})]}),n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"line-clamp-1 min-w-0 flex-1 text-xs text-fg-subtle",children:e.snippet}),e.category&&e.category!=="personal"&&n.jsx(ot,{tone:Yd[e.category],className:"shrink-0",children:e.category}),t]})]})}function gf({thread:e,selection:t}){if(!t)return n.jsx(ct,{name:e.fromName,email:e.fromEmail,size:"sm"});const{checked:s,alwaysVisible:a}=t;return n.jsxs("span",{className:"relative size-7 shrink-0",children:[n.jsx(ct,{name:e.fromName,email:e.fromEmail,size:"sm",className:H("absolute inset-0 transition-opacity sm:group-hover:opacity-0",(s||a)&&"opacity-0")}),n.jsx("span",{role:"button",tabIndex:-1,onClick:t.onToggle,onKeyDown:r=>{r.key!=="Enter"&&r.key!==" "||(r.preventDefault(),r.stopPropagation(),t.onToggle(r))},className:H("absolute inset-0 size-7 items-center justify-center rounded-full border transition-opacity",a?"flex":"hidden sm:flex",s?"bg-accent border-accent text-accent-fg opacity-100":a?"border-fg-subtle/40 bg-canvas opacity-100":"border-fg-subtle/40 bg-canvas opacity-0 group-hover:opacity-100"),"aria-label":s?"Deselect message":"Select message",children:s&&n.jsx(Zs,{className:"size-3"})})]})}function fc({thread:e,selection:t,badge:s}){const a=!e.isRead;return n.jsxs(n.Fragment,{children:[a&&n.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),n.jsx(gf,{thread:e,selection:t}),n.jsx(Ys,{thread:e,badge:s})]})}function pf({thread:e,active:t,focused:s,onClick:a}){return n.jsx("button",{type:"button",...br,onClick:a,className:dc({active:t,focused:s}),children:n.jsx(mc,{thread:e})})}function bf({thread:e,active:t,focused:s,selection:a,onClick:r}){return n.jsx("button",{type:"button",...br,onClick:r,className:H("group",rn({active:t,focused:s})),children:n.jsx(fc,{thread:e,selection:a})})}const xf="peer relative size-5 shrink-0 cursor-pointer appearance-none rounded-md border border-line-strong bg-surface outline-none transition-colors checked:border-positive checked:bg-positive indeterminate:border-positive indeterminate:bg-positive focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-surface",Fo="pointer-events-none absolute inset-0 m-auto size-3.5 text-accent-fg";function on({label:e,description:t,indeterminate:s=!1,checked:a,onChange:r,className:o,...i}){const l=c.useRef(null);c.useEffect(()=>{l.current&&(l.current.indeterminate=s)},[s]);const u=n.jsxs("span",{className:"relative inline-flex",children:[n.jsx("input",{ref:l,type:"checkbox",checked:a,onChange:r,className:xf,...i}),n.jsx(Zs,{className:H(Fo,"hidden peer-checked:block"),"aria-hidden":!0}),n.jsx(Gm,{className:H(Fo,"hidden peer-indeterminate:block"),"aria-hidden":!0})]});return e===void 0&&t===void 0?n.jsx("span",{className:o,children:u}):n.jsxs("label",{className:H("flex min-h-11 cursor-pointer items-center gap-3 text-left",o),children:[u,n.jsxs("span",{className:"flex min-w-0 flex-col",children:[e!==void 0&&n.jsx("span",{className:"text-sm text-fg",children:e}),t!==void 0&&n.jsx("span",{className:"text-xs text-fg-subtle",children:t})]})]})}const vf={info:"bg-accent-2",success:"bg-positive",warning:"bg-warning",danger:"bg-danger"};function qr({value:e,max:t,tone:s="info",indeterminate:a=!1,className:r}){const o=a?100:t<=0?0:Math.min(100,Math.max(0,e/t*100));return n.jsx("div",{role:"progressbar","aria-valuenow":a?void 0:e,"aria-valuemin":a?void 0:0,"aria-valuemax":a?void 0:t,className:H("h-1.5 w-full overflow-hidden rounded-full bg-surface-sunken",r),children:n.jsx("div",{className:H("h-full rounded-full transition-[width] duration-300 ease-out",vf[s],a&&"w-1/3 animate-pulse"),style:a?void 0:{width:`${o}%`}})})}const _o=e=>e.toLocaleString();function yf({count:e,onCancel:t,onMarkRead:s,onDelete:a,moveSlot:r,isBusy:o=!1,isCounting:i=!1,selectAll:l,statusLabel:u,progress:d,notice:m}){const f=l?.checked?`All ${_o(e)} loaded selected`:`${_o(e)} ${e===1?"message":"messages"} selected`;return n.jsxs("header",{className:"flex shrink-0 flex-col border-b border-line bg-surface-sunken",children:[n.jsxs("div",{className:"flex h-pane-header items-center gap-2 px-row-inset",children:[n.jsx(G,{variant:"ghost",size:"touch",icon:n.jsx(Ue,{className:"size-4"}),onClick:t,"aria-label":"Cancel selection",className:"-ml-2 shrink-0"}),l&&n.jsx("label",{className:"-ml-1.5 flex size-11 shrink-0 cursor-pointer items-center justify-center",children:n.jsx(on,{"aria-label":"Select all",checked:l.checked,indeterminate:l.indeterminate,onChange:l.onChange})}),n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-medium text-fg",role:"status","aria-live":"polite",children:u??f}),s&&!o&&n.jsx(G,{variant:"ghost",size:"touch",icon:n.jsx(Is,{className:"size-4"}),onClick:s,"aria-label":"Mark as read",className:"shrink-0"}),r,!i&&n.jsx(G,{variant:"ghost",size:"touch",icon:o?n.jsx(ut,{className:"size-4 animate-spin"}):n.jsx(st,{className:"size-4 text-danger"}),onClick:o?void 0:a,"aria-label":"Move selected messages to Trash","aria-busy":o||void 0,className:"ml-4 shrink-0"})]}),d&&n.jsx("div",{className:"px-row-inset pb-2",children:n.jsx(qr,{value:d.value,max:d.max,tone:d.tone})}),m&&n.jsx(Zt,{tone:m.tone,variant:"soft",role:"status","aria-live":"polite",className:"mx-row-inset mb-2",children:n.jsxs("div",{className:"flex items-center justify-between gap-2",children:[m.text&&n.jsx("span",{children:m.text}),m.action&&n.jsx(G,{variant:"ghost",size:"md",onClick:m.action.onClick,className:"-my-1 min-h-11 shrink-0",children:m.action.label})]})})]})}function hc({onLongPress:e,isDisabled:t,delayMs:s=500,accessibilityDescription:a}){return qm({isDisabled:t,threshold:s,accessibilityDescription:a,onLongPress:e})}const Ss=72,qo=10,Bo="__swipeableRowAxisCancel";function Ko(e){return e==="leading"?Ss:e==="trailing"?-Ss:0}function kf(e){return e>=Ss/2?"leading":e<=-Ss/2?"trailing":"none"}function gc({thread:e,selectionMode:t,checked:s,active:a,peek:r,onPeek:o,onToggleCheck:i,onLongPress:l,onOpen:u,onAct:d,linkComponent:m}){const f=c.useRef(null),[h,b]=c.useState(null),{longPressProps:v}=hc({onLongPress:l,isDisabled:t,accessibilityDescription:"Select message"}),p=I=>{const j=new PointerEvent("pointercancel",{bubbles:!0});j[Bo]=!0,I.currentTarget.dispatchEvent(j)},w=nn(v,{onPointerDown:I=>{f.current={startX:I.clientX,startY:I.clientY,axis:"none",moved:!1}},onPointerMove:I=>{if(t)return;const j=f.current;if(!j)return;const M=I.clientX-j.startX,$=I.clientY-j.startY;if(j.axis==="none"){if(Math.abs($)>qo&&Math.abs($)>Math.abs(M)){j.axis="vertical",p(I),f.current=null;return}Math.abs(M)>qo&&(j.axis="horizontal",j.moved=!0,p(I),I.currentTarget.setPointerCapture(I.pointerId))}if(j.axis!=="horizontal")return;const R=Ko(r),O=Math.max(-Ss,Math.min(Ss,R+M));b(O)},onPointerUp:()=>{const I=f.current;f.current=null;const j=h;if(b(null),!!I){if(I.axis==="horizontal"&&j!==null){o(kf(j));return}if(t){i();return}if(r!=="none"){o("none");return}m||u()}},onPointerCancel:I=>{I.nativeEvent[Bo]||(f.current=null,b(null))}}),E=I=>{r!=="none"&&I.preventDefault()},T=h??Ko(r),C=T>0?"leading":T<0?"trailing":"none",S=H("relative touch-pan-y bg-surface","select-none [-webkit-touch-callout:none]",rn({active:s||a})),D={transform:T!==0?`translateX(${T}px)`:void 0,transition:h===null?"transform 150ms ease":"none",minHeight:44},z=!e.isRead,A=I=>I.stopPropagation(),P=t?n.jsxs(n.Fragment,{children:[n.jsx("span",{className:H("inline-flex size-7 shrink-0 items-center justify-center rounded-full border",s?"border-accent bg-accent text-accent-fg":"border-line-strong bg-canvas"),children:s&&n.jsx(Zs,{className:"size-3.5"})}),n.jsx(Ys,{thread:e})]}):n.jsxs(n.Fragment,{children:[z&&n.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),n.jsx("button",{type:"button",role:"checkbox","aria-checked":s,"aria-label":`Select message from ${e.fromName}`,onPointerDown:A,onPointerMove:A,onPointerUp:A,onClick:I=>{I.preventDefault(),I.stopPropagation(),l()},className:"-m-2 inline-flex size-11 shrink-0 items-center justify-center rounded-full",children:n.jsx(ct,{name:e.fromName,email:e.fromEmail,size:"sm"})}),n.jsx(Ys,{thread:e})]});return n.jsxs("div",{className:"relative overflow-hidden",children:[C==="leading"&&n.jsx("button",{type:"button",onClick:()=>d("leading"),"aria-label":e.isRead?"Mark as unread":"Mark as read",className:"absolute inset-y-0 left-0 flex items-center justify-start bg-accent-2 px-6 text-accent-fg",children:e.isRead?n.jsx(Ll,{className:"size-6"}):n.jsx(Is,{className:"size-6"})}),C==="trailing"&&n.jsx("button",{type:"button",onClick:()=>d("trailing"),"aria-label":"Delete message",className:"absolute inset-y-0 right-0 flex items-center justify-end bg-danger px-6 text-canvas",children:n.jsx(st,{className:"size-6"})}),m&&!t?m({...w,className:S,style:D,onOpenClick:E,children:P}):n.jsx("button",{type:"button",role:t?"checkbox":void 0,"aria-checked":t?s:void 0,...w,className:S,style:D,children:P})]})}function wf({sections:e,selectedThreadId:t,selectionMode:s,checkedIds:a,initialPeek:r,onToggleCheck:o,onEnterSelection:i,onOpenThread:l,onRefresh:u,refreshing:d,busy:m=!1}){const[f,h]=c.useState(()=>e.flatMap(x=>x.threads)),[b,v]=c.useState(r&&r!=="none"&&f[1]?{id:f[1].id,side:r}:null),p=(x,g)=>{h(g==="trailing"?y=>y.filter(k=>k.id!==x):y=>y.map(k=>k.id===x?{...k,isRead:!k.isRead}:k)),v(null)};return n.jsxs("div",{className:"flex-1 overflow-y-auto",children:[d&&n.jsxs("div",{className:"flex items-center justify-center gap-2 border-b border-line py-3 text-fg-muted",children:[n.jsx(rc,{className:"size-4 animate-spin"}),n.jsx("span",{className:"text-xs",children:"Checking for new mail…"})]}),n.jsx("div",{className:"divide-y divide-line",children:f.map(x=>n.jsx("div",{className:m?"pointer-events-none opacity-50":void 0,children:n.jsx(gc,{thread:x,selectionMode:s,checked:a.has(x.id),active:x.id===t,peek:b?.id===x.id?b.side:"none",onPeek:g=>v(g==="none"?null:{id:x.id,side:g}),onToggleCheck:()=>o(x.id),onLongPress:()=>i(x.id),onOpen:()=>l(x.id),onAct:g=>p(x.id,g)})},x.id))}),!s&&!d&&!m&&n.jsx("button",{type:"button",onClick:u,className:"w-full border-t border-line py-2 text-center text-2xs text-fg-subtle transition-colors hover:bg-surface-sunken",children:"Pull to refresh"})]})}function pc({listTitle:e,listMeta:t,sections:s,briefFilters:a,flatList:r,listState:o="ready",searchQuery:i,errorMessage:l,onRetry:u,onReportError:d,briefCategory:m,selectedThreadId:f,density:h="comfortable",onSelectThread:b,onSelectBriefCategory:v,onOpenNav:p,isDesktop:x,initialTouchState:g,selectionBar:y,selectionSheet:k,listBody:w,hideHeader:E=!1}){const T=h==="compact"?pf:bf,C=c.useRef(null);Yn({containerRef:C,itemSelector:xr});const S=!x&&!a&&o==="ready",D=s.flatMap(q=>q.threads),[z,A]=c.useState(g==="selection"),[P,I]=c.useState(()=>g==="selection"?new Set(D.slice(0,2).map(q=>q.id)):new Set),[j,M]=c.useState(!1),$=g==="peek-trailing"?"trailing":g==="peek-leading"?"leading":void 0,R=q=>{I(X=>{const ee=new Set(X);return ee.has(q)?ee.delete(q):ee.add(q),ee.size===0&&A(!1),ee})},O=q=>{A(!0),I(new Set([q]))},N=()=>{A(!1),I(new Set)},L=()=>{M(!0),setTimeout(()=>M(!1),1400)},_=!y&&S&&z&&P.size>0;return n.jsxs("section",{className:"relative flex h-full w-full flex-col bg-surface",children:[y??(_?n.jsx(yf,{count:P.size,onCancel:N,onMarkRead:N,onDelete:N}):E?null:n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line px-row-inset",children:[p&&n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(Dr,{className:"size-4"}),onClick:p,"aria-label":"Open folders",className:"-ml-1 shrink-0"}),n.jsx("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e}),t&&n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle",children:t})]})),o==="loading"?n.jsx("div",{className:"flex-1 overflow-y-auto",children:n.jsx(mf,{})}):o==="empty"?n.jsx(ff,{searchQuery:i}):o==="error"?n.jsx(hf,{message:l,onRetry:u,onReport:d}):a?n.jsx(pl,{sections:s,briefCategory:m,selectedThreadId:f,Row:T,onSelectThread:b,onSelectBriefCategory:v}):w??(S?n.jsx(wf,{sections:s,selectedThreadId:f,selectionMode:z,checkedIds:P,initialPeek:$,onToggleCheck:R,onEnterSelection:O,onOpenThread:q=>b?.(q),onRefresh:L,refreshing:j}):n.jsx("div",{ref:C,className:"flex-1 overflow-y-auto",children:s.map(q=>n.jsxs("div",{children:[!r&&q.label&&n.jsxs("div",{className:"sticky top-0 flex h-section-row items-center justify-between border-b border-line bg-surface-sunken px-row-inset",children:[n.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:q.label}),n.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:q.threads.length})]}),n.jsx("div",{className:"divide-y divide-line",children:q.threads.map(X=>n.jsx(T,{thread:X,active:X.id===f,onClick:()=>b?.(X.id)},X.id))})]},q.id))})),x&&n.jsx(cc,{}),k]})}function jf({triggerLabel:e,triggerIcon:t,items:s,align:a="end",touch:r=!0,className:o}){const[i,l]=c.useState(!1),u=c.useRef(null);return c.useEffect(()=>{if(!i)return;const d=f=>{u.current&&!u.current.contains(f.target)&&l(!1)},m=f=>{f.key==="Escape"&&l(!1)};return document.addEventListener("mousedown",d),document.addEventListener("keydown",m),()=>{document.removeEventListener("mousedown",d),document.removeEventListener("keydown",m)}},[i]),s.length===0?null:n.jsxs("div",{ref:u,className:H("relative",o),children:[n.jsx(G,{variant:"ghost",size:"sm",icon:t??n.jsx(tc,{className:"size-5"}),onClick:()=>l(d=>!d),"aria-label":e,"aria-haspopup":"menu","aria-expanded":i,className:H(r&&"min-h-11 min-w-11 px-0")}),i&&n.jsx("div",{role:"menu",className:H("absolute top-full z-50 mt-1 flex min-w-44 flex-col rounded-md border border-line bg-surface py-1 shadow-lg",a==="end"?"right-0":"left-0"),children:s.map(d=>n.jsxs("button",{type:"button",role:"menuitem",onClick:()=>{l(!1),d.onSelect()},className:"flex min-h-11 items-center gap-3 px-4 py-2.5 text-left text-sm text-fg transition-colors hover:bg-surface-sunken",children:[d.icon&&n.jsx("span",{className:"shrink-0 text-fg-subtle",children:d.icon}),d.label]},d.key))})]})}const Ps="min-h-11 min-w-11 px-0";function bc({hasThread:e,onReply:t,onReplyAll:s,onForward:a,isStarred:r,onToggleStar:o,onDelete:i,isRead:l,onToggleRead:u,moveSlot:d,overflowItems:m=[],onUnavailable:f,unavailableHint:h,className:b}){const v=(x,g)=>()=>{if(!e){f?.(x);return}g?.()},p=u?[{key:"toggle-read",label:l?"Mark as unread":"Mark as read",icon:l?n.jsx(Ll,{className:"size-4"}):n.jsx(Is,{className:"size-4"}),onSelect:v("toggleRead",u)}]:[];return n.jsxs("div",{className:H("relative",b),children:[n.jsxs("div",{className:"flex h-12 shrink-0 items-center gap-0.5 bg-canvas px-1",children:[n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(ic,{className:"size-5"}),onClick:v("reply",t),"aria-label":"Reply",title:"Reply",className:Ps}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(oc,{className:"size-5"}),onClick:v("replyAll",s),"aria-label":"Reply all",title:"Reply all",className:Ps}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(nc,{className:"size-5"}),onClick:v("forward",a),"aria-label":"Forward",title:"Forward",className:Ps}),n.jsx("div",{className:"flex-1"}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(Mt,{className:H("size-5",r&&"fill-warning text-warning")}),onClick:v("star",o),"aria-label":r?"Unstar":"Star","aria-pressed":r,title:r?"Unstar":"Star",className:Ps}),d,n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(st,{className:"size-5"}),onClick:v("delete",i),"aria-label":"Move to Trash",title:"Move to Trash",className:Ps}),n.jsx(jf,{triggerLabel:"More actions",items:[...p,...m]})]}),!e&&h&&n.jsx("p",{role:"status",className:"bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:h})]})}function Sf({open:e=!1,enabled:t=!0,onToggle:s,className:a}){return n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(bl,{className:"size-4"}),title:"Intelligence","aria-label":e?"Hide intelligence sidebar":"Show intelligence sidebar","aria-pressed":e,disabled:!t,onClick:s,className:H(e&&"bg-accent-2-soft text-accent-2",a)})}function Cf({hasThread:e,onUnavailable:t,unavailableHint:s,isStarred:a,showTriage:r=!0,onReply:o,onReplyAll:i,onForward:l,onDelete:u,onToggleStar:d,moveSlot:m,onMove:f,replyTitle:h="Reply (r)",replyAllTitle:b="Reply all (a)",forwardTitle:v="Forward (f)",deleteTitle:p="Move to Trash (#)",flagTitle:x="Star (s)",children:g,className:y}){const k=(w,E)=>()=>{if(!e){t?.(w);return}E?.()};return n.jsxs("div",{className:"relative",children:[n.jsxs("header",{className:H("flex h-pane-header shrink-0 items-center gap-1 border-b border-line bg-surface px-3",y),children:[n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(ic,{className:"size-4"}),title:h,"aria-label":"Reply",onClick:k("reply",o)}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(oc,{className:"size-4"}),title:b,"aria-label":"Reply all",onClick:k("replyAll",i)}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(nc,{className:"size-4"}),title:v,"aria-label":"Forward",onClick:k("forward",l)}),r&&n.jsxs(n.Fragment,{children:[n.jsx("span",{className:"mx-1 h-4 w-px bg-line","aria-hidden":!0}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(st,{className:"size-4"}),title:p,"aria-label":"Move to Trash",onClick:k("delete",u)}),m??n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(sc,{className:"size-4"}),title:"Move to mailbox","aria-label":"Move to mailbox",onClick:k("move",f)}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(Mt,{className:H("size-4",a&&"fill-warning text-warning")}),title:x,"aria-label":"Star",onClick:k("flag",d)})]}),n.jsx("div",{className:"flex-1"}),g]}),!e&&s&&n.jsx("p",{role:"status",className:"border-b border-line bg-surface-sunken px-3 py-1 text-2xs text-fg-subtle",children:s})]})}const Nf=(e,t)=>{const a=e==="newsletter"||e==="marketing"||t;return{framed:a,isPlain:!a}},Ef=()=>`
|
|
9
|
-
/* Zero the UA default body margin and clamp the document to the iframe width so
|
|
10
|
-
wide author markup can't push the body (and the page) past the viewport. */
|
|
11
|
-
html, body {
|
|
12
|
-
margin: 0;
|
|
13
|
-
padding: 0;
|
|
14
|
-
max-width: 100%;
|
|
15
|
-
}
|
|
16
|
-
body {
|
|
17
|
-
overflow-wrap: anywhere;
|
|
18
|
-
word-break: break-word;
|
|
19
|
-
}
|
|
20
|
-
/* Media never wider than the frame; keep aspect ratio when width is capped. */
|
|
21
|
-
img, video, iframe, svg, canvas {
|
|
22
|
-
max-width: 100% !important;
|
|
23
|
-
height: auto;
|
|
24
|
-
}
|
|
25
|
-
/* Fixed-width author tables (\`<table width="600">\`) collapse to fit. */
|
|
26
|
-
table {
|
|
27
|
-
max-width: 100% !important;
|
|
28
|
-
table-layout: auto;
|
|
29
|
-
}
|
|
30
|
-
/* Cells carry the fixed widths in real newsletters (\`<td width="600">\`);
|
|
31
|
-
cap them too or the table can't actually shrink. */
|
|
32
|
-
td, th {
|
|
33
|
-
max-width: 100% !important;
|
|
34
|
-
}
|
|
35
|
-
/* \`max-width\` alone can't beat an inline \`min-width\`; zeroing the min lets
|
|
36
|
-
flex / grid / table children actually collapse to the clamped width. */
|
|
37
|
-
* {
|
|
38
|
-
min-width: 0;
|
|
39
|
-
}
|
|
40
|
-
/* Long unbroken strings (URLs, tokens) wrap instead of forcing a wide line. */
|
|
41
|
-
pre, code {
|
|
42
|
-
white-space: pre-wrap;
|
|
43
|
-
overflow-wrap: anywhere;
|
|
44
|
-
word-break: break-word;
|
|
45
|
-
}
|
|
46
|
-
`,If=e=>{const t=new Map;for(const s of e){if(!s.contentId||s.contentUrl.length===0)continue;const a=s.contentId.replace(/^<|>$/g,"");t.set(a,s.contentUrl)}return s=>t.get(s.replace(/^<|>$/g,""))},Tf=/^(none|transparent|inherit|initial|unset)\s*$/i,Rf=e=>{const t=[],s=/<style[^>]*>([\s\S]*?)<\/style>/gi;let a;for(a=s.exec(e);a!==null;)t.push(a[1]),a=s.exec(e);return t},Mf=e=>{const t=/background(?:-color)?\s*:\s*([^;}\n]+)/gi;let s;for(s=t.exec(e);s!==null;){const a=s[1].trim();if(!Tf.test(a))return!0;s=t.exec(e)}return!1},zf=e=>{if(/\bstyle\s*=\s*["'][^"']*background/i.test(e)||/\bbgcolor\s*=/i.test(e))return!0;for(const t of Rf(e))if(Mf(t))return!0;return!1},Af=["script","iframe","object","embed","form","input","button","textarea","select","meta","link","base"],Df=["onerror","onload","onclick","onmouseover","onmouseout","onfocus","onblur","onsubmit","onkeydown","onkeyup","formaction","xlink:href","data-bind"],Of="data:image/svg+xml,"+encodeURIComponent(`
|
|
47
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100">
|
|
48
|
-
<rect fill="#f0f0f0" width="100" height="100"/>
|
|
49
|
-
<text x="50" y="50" text-anchor="middle" dy=".3em" fill="#999" font-size="12">
|
|
50
|
-
Image blocked
|
|
51
|
-
</text>
|
|
52
|
-
</svg>
|
|
53
|
-
`),Pf=e=>e.replace(/url\s*\([^)]*\)/gi,"none").replace(/expression\s*\([^)]*\)/gi,"").replace(/-moz-binding\s*:[^;]*/gi,""),Lf=e=>e.replace(/@import[^;]*;/gi,"/* @import blocked */").replace(/url\s*\([^)]*\)/gi,"none").replace(/expression\s*\([^)]*\)/gi,"").replace(/-moz-binding\s*:[^;]*/gi,""),$f=(e={})=>{const t=xl(),s={FORBID_TAGS:Af,FORBID_ATTR:Df,ALLOW_DATA_ATTR:!1,ALLOW_UNKNOWN_PROTOCOLS:!1};return t.addHook("afterSanitizeAttributes",a=>{if(a.tagName==="IMG"){const r=a.getAttribute("src")||"";if(r.startsWith("data:"))return;if(r.startsWith("cid:")){const i=r.slice(4).replace(/^<|>$/g,""),l=e.resolveCid?.(i);l&&(a.setAttribute("src",l),a.classList.add("inline-content"));return}e.allowExternalImages||(a.setAttribute("data-blocked-src",r),a.setAttribute("src",Of),a.setAttribute("alt","[Blocked image]"),a.classList.add("blocked-image"))}if(a.tagName==="A"){const r=a.getAttribute("href")||"";if(/^(javascript|data):/i.test(r)){a.removeAttribute("href");return}a.setAttribute("target","_blank"),a.setAttribute("rel","noopener noreferrer nofollow"),a.classList.add("external-link")}if(a.hasAttribute("style")){const r=a.getAttribute("style")||"";a.setAttribute("style",Pf(r))}}),t.addHook("uponSanitizeElement",(a,r)=>{if(r.tagName==="style"){const o=a.textContent||"";a.textContent=Lf(o)}}),a=>{const r=zf(a),o=t.sanitize(a,s);return{html:`<style>${Ef()}</style>${o}`,hasAuthorBackground:r}}},Ff='"Geist Variable", "Geist", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',Uo={light:{fg:"oklch(0.3 0.025 235)",surface:"oklch(0.975 0.012 90)",accent:"oklch(0.55 0.14 150)"},dark:{fg:"oklch(0.88 0.02 90)",surface:"oklch(0.25 0.025 220)",accent:"oklch(0.78 0.16 150)"}},_f=/prefers-color-scheme\s*:\s*dark|color-scheme\s*:\s*[^;}"']*\bdark\b/i,Ho='<meta name="viewport" content="width=device-width, initial-scale=1">',qf=e=>{const t=e?Uo.dark:Uo.light;return`
|
|
54
|
-
/* Plain-email base: UI font-stack + theme-aware colors (#424) */
|
|
55
|
-
html, body {
|
|
56
|
-
font-family: ${Ff};
|
|
57
|
-
font-size: 14px;
|
|
58
|
-
line-height: 1.6;
|
|
59
|
-
color: ${t.fg};
|
|
60
|
-
background-color: ${t.surface};
|
|
61
|
-
margin: 0;
|
|
62
|
-
padding: 0;
|
|
63
|
-
}
|
|
64
|
-
/* Strip author unreadable text colors and element backgrounds, scoped to body
|
|
65
|
-
descendants so the themed html/body surface above survives this reset. */
|
|
66
|
-
body * {
|
|
67
|
-
color: inherit !important;
|
|
68
|
-
background-color: transparent !important;
|
|
69
|
-
}
|
|
70
|
-
a, a:visited {
|
|
71
|
-
color: ${t.accent} !important;
|
|
72
|
-
text-decoration: underline;
|
|
73
|
-
}
|
|
74
|
-
`},Bf=(e,t)=>e?t?"html,body{margin:0;color-scheme:dark light}":"html{margin:0;background-color:#ffffff;filter:invert(0.92) hue-rotate(180deg)}body{margin:0}img,picture,video,svg,canvas,[style*='background-image'],[background]{filter:invert(0.92) hue-rotate(180deg)}":"html,body{margin:0;background-color:#ffffff;color-scheme:light}",Kf=(e,t,s)=>{if(t==="plain")return`${Ho}<style>${qf(s)}</style>${e}`;const a=_f.test(e);return`${Ho}<style>${Bf(s,a)}</style>${e}`},Uf=5e4,Hf=1e4,Wf="(max-width: 640px)",Vf=.4,Qf="allow-same-origin allow-popups allow-popups-to-escape-sandbox",Wo=(e,t,s)=>Math.min(Math.ceil(Math.max(e,t)),s),Yf=(e,t)=>e<=0||t<=0||e<=t?1:Math.max(Vf,t/e),Gf=e=>{const[t,s]=c.useState(()=>typeof window>"u"||!window.matchMedia?!1:window.matchMedia(e).matches);return c.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const a=window.matchMedia(e);s(a.matches);const r=o=>s(o.matches);return a.addEventListener("change",r),()=>a.removeEventListener("change",r)},[e]),t},Xf=new Set(["Enter","Escape","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"]),Jf=e=>e===" "?!1:e.length===1?!0:Xf.has(e),Vo=e=>{if(e.metaKey||e.ctrlKey||e.altKey||!Jf(e.key))return;const t=e.currentTarget??e.target,s=t?.defaultView?.parent;!s||s===t?.defaultView||s.dispatchEvent(new KeyboardEvent("keydown",{key:e.key,code:e.code,shiftKey:e.shiftKey,bubbles:!0,cancelable:!0}))},Qo=({html:e,variant:t="framed",isDark:s=!1,className:a})=>{const r=c.useRef(null),o=c.useRef(null),[i,l]=c.useState(0),[u,d]=c.useState(0),[m,f]=c.useState(0),h=Gf(Wf),b=c.useMemo(()=>Kf(e,t,s),[e,t,s]);c.useEffect(()=>{const k=r.current;if(!k)return;const w=()=>f(T=>T===k.clientWidth?T:k.clientWidth);w();const E=new ResizeObserver(w);return E.observe(k),()=>E.disconnect()},[]),c.useEffect(()=>{const k=o.current;if(!k)return;const w=()=>{const S=k.contentDocument;if(!S?.body)return;const D=S.documentElement,z=Wo(S.body.scrollHeight,D?.scrollHeight??0,Uf);l(P=>P===z?P:z);const A=Wo(S.body.scrollWidth,D?.scrollWidth??0,Hf);d(P=>P===A?P:A)};let E,T;const C=()=>{w();const S=k.contentDocument;S?.body&&(E=new ResizeObserver(w),E.observe(S.body),S.documentElement&&E.observe(S.documentElement),S.addEventListener("keydown",Vo),T=S)};return k.addEventListener("load",C),()=>{k.removeEventListener("load",C),T?.removeEventListener("keydown",Vo),E?.disconnect()}},[]);const v=h?Yf(u,m):1,p=v<1,x=p?`${u}px`:h?"100%":t==="framed"&&u>0?`max(100%, ${u}px)`:u===0?"100%":`${u}px`,g=i===0?"1px":`${i}px`,y=n.jsx("iframe",{ref:o,title:"Email content",sandbox:Qf,srcDoc:b,className:p?void 0:a,scrolling:"no",style:{width:x,maxWidth:p?"none":void 0,border:"none",display:"block",height:g,overflow:"hidden",transform:p?`scale(${v})`:void 0,transformOrigin:p?"top left":void 0,colorScheme:"normal"}});return n.jsx("div",{ref:r,className:p?a:void 0,children:p?n.jsx("div",{style:{width:"100%",height:`${Math.ceil(i*v)}px`,overflow:"hidden"},children:y}):y})},Yo=()=>n.jsx("p",{className:"text-fg-muted text-sm italic",children:"This message has no body content."}),xc=({html:e,text:t,isDark:s=!1,category:a,allowImages:r=!1,resolveCid:o,className:i,renderBlockedNotice:l})=>{const u=c.useMemo(()=>!e||typeof document>"u"?null:$f({allowExternalImages:r,resolveCid:o})(e),[e,r,o]),d=u?.html??null,{framed:m,isPlain:f}=Nf(a,u?.hasAuthorBackground??!1),h=c.useMemo(()=>!d||r?0:(d.match(/data-blocked-src/g)||[]).length,[d,r]);return!d&&!t?n.jsx("div",{className:H("message-body",i),children:n.jsx(Yo,{})}):n.jsxs("div",{className:H("message-body",i),children:[h>0&&n.jsx("div",{className:"message-body-notice",children:l?.(h)}),d?m?n.jsx("div",{className:"w-full max-w-full overflow-x-auto",children:n.jsx(Qo,{html:d,variant:"framed",isDark:s})}):n.jsx("div",{className:"max-w-full overflow-x-auto lg:max-w-2xl",children:n.jsx(Qo,{html:d,variant:f?"plain":"framed",isDark:s})}):t?n.jsx("pre",{className:"email-text whitespace-pre-wrap text-sm leading-relaxed",children:t}):n.jsx(Yo,{})]})};function Rs({message:e="Select a thread to read",icon:t,showHints:s=!0,className:a}){return n.jsxs("div",{className:H("flex flex-1 flex-col items-center justify-center text-center",a),children:[t??n.jsx(vr,{className:"size-10 text-fg-subtle"}),n.jsx("p",{className:"mt-3 text-sm text-fg-muted",children:e}),s&&n.jsxs("p",{className:"text-2xs text-fg-subtle",children:[n.jsx(bs,{children:"j"})," / ",n.jsx(bs,{children:"k"})," to move, ",n.jsx(bs,{children:"Enter"})," to open"]})]})}function vc({message:e,onClick:t,isFocused:s,isUnread:a,trailing:r}){const o=n.jsxs(n.Fragment,{children:[n.jsx(js,{className:"size-3.5 shrink-0 text-fg-subtle"}),n.jsxs("div",{className:"relative shrink-0",children:[n.jsx(ct,{name:e.fromName,email:e.fromEmail,size:"md"}),a&&n.jsx("span",{className:"absolute -top-0.5 -right-0.5 size-2 rounded-full border border-canvas bg-accent"})]}),n.jsx("span",{className:H("w-36 shrink-0 truncate text-sm",a?"font-semibold text-fg":"font-medium text-fg-muted"),children:e.fromName}),n.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-fg-subtle",children:e.snippet}),r??n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.dateLabel})]}),i=H("group flex h-section-row w-full items-center gap-3 border-b border-line px-2 text-left transition-colors hover:bg-surface-sunken lg:px-4",s&&"bg-surface-sunken ring-1 ring-inset ring-accent/30");return t?n.jsx("div",{role:"button",tabIndex:0,"aria-expanded":!1,onClick:t,onKeyDown:l=>{Gd(l)&&(l.preventDefault(),t())},className:H(i,"cursor-pointer"),children:o}):n.jsx("div",{className:i,children:o})}function yc({message:e,warning:t,onHeaderClick:s,isFocused:a,senderBadge:r,trailing:o,to:i,indicators:l,actionMenu:u,actionBar:d,body:m}){const f=n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[n.jsxs("span",{className:"text-sm font-semibold text-fg",children:[e.fromName,r]}),o??n.jsx("span",{className:"text-2xs text-fg-subtle",children:e.dateLabel})]}),n.jsx("div",{className:"text-xs text-fg-subtle",children:e.fromEmail}),i!==null&&n.jsx("div",{className:"text-xs text-fg-subtle",children:i??n.jsxs(n.Fragment,{children:["to ",e.toLabel]})})]});return n.jsxs("div",{className:H("px-2 py-3 lg:px-4",a&&"ring-1 ring-inset ring-accent/30"),children:[n.jsxs("div",{className:"flex items-start gap-3",children:[n.jsx(Tt,{className:"mt-1 size-3.5 shrink-0 text-fg-subtle"}),n.jsx(ct,{name:e.fromName,email:e.fromEmail,size:"md"}),n.jsxs("div",{className:"min-w-0 flex-1",children:[s?n.jsx("button",{type:"button",onClick:s,className:"w-full text-left",children:f}):f,l]}),u&&n.jsx("div",{className:"shrink-0",children:u})]}),t&&n.jsxs("div",{className:"mt-3 flex items-start gap-3 rounded-md bg-danger-soft p-3",children:[n.jsx(Ts,{className:"mt-0.5 size-4 shrink-0 text-danger"}),n.jsxs("div",{className:"text-sm text-fg",children:[n.jsx("span",{className:"font-semibold text-danger",children:"Caution: "}),t," ",n.jsx("button",{type:"button",className:"text-accent underline",children:"Why?"})]})]}),d&&n.jsx("div",{className:"mt-3 -mx-2 lg:-mx-4",children:d}),n.jsx("div",{className:"-mx-2 [&_.message-body-notice]:px-2 lg:mx-0 lg:[&_.message-body-notice]:px-0",children:m??n.jsx(xc,{className:"mt-3",html:e.bodyHtml,category:e.framed?"newsletter":"personal",allowImages:!0})})]})}function Zf({thread:e,onBack:t,intelligence:s,intelligenceOpen:a,onToggleIntelligence:r,actions:o,children:i,touchHandlers:l}){const[u,d]=c.useState(!1),m=r!==void 0,f=m?a??!1:u,h=!!s||m,b=()=>{if(m){r?.();return}d(p=>!p)},v=()=>{if(m){f&&r?.();return}d(!1)};return n.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(Xl,{className:"size-4"}),onClick:t,"aria-label":"Back to messages",className:"-ml-1 shrink-0"}),n.jsx("h2",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e.subject}),h&&n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(bl,{className:"size-4"}),onClick:b,"aria-label":f?"Hide intelligence panel":"Show intelligence panel","aria-pressed":f,title:"Intelligence",className:H("shrink-0",f&&"bg-accent-2-soft text-accent-2")})]}),n.jsx("div",{className:"flex-1 overflow-y-auto",style:l?{touchAction:"pan-y"}:void 0,...l,children:i??e.messages.map(p=>{const x=g=>g?()=>g(p.id):void 0;return p.expanded?n.jsx(yc,{message:p,warning:e.warning,onHeaderClick:x(o?.onToggleExpand),actionBar:n.jsx(bc,{hasThread:!0,onReply:x(o?.onReply),onReplyAll:x(o?.onReplyAll),onForward:x(o?.onForward),onToggleStar:x(o?.onToggleStar),onDelete:x(o?.onDelete),onToggleRead:x(o?.onToggleRead),moveSlot:o?.moveSlot?.(p.id)})},p.id):n.jsx(vc,{message:p,onClick:x(o?.onToggleExpand)},p.id)})}),s&&!m&&n.jsx(vl,{open:f,onClose:v,title:"Intelligence",anchor:"right",className:"p-0",children:n.jsx(lc,{data:s,onClose:v,className:"h-full w-full border-l-0"})})]})}const e1="button:not([disabled]), a[href]",Qt="outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-surface-sunken";function t1({active:e,dimmed:t,indent:s}){return H("flex w-full items-center gap-2 rounded-md px-2 py-1 text-left text-sm transition-colors",Qt,s&&"pl-7",e?"bg-accent-2-soft font-medium text-accent-2":"text-fg-muted hover:bg-surface hover:text-fg",t&&"opacity-55")}function s1({icon:e,label:t,count:s,active:a}){return n.jsxs(n.Fragment,{children:[e&&n.jsx("span",{className:H("shrink-0",a?"text-accent-2":"text-fg-subtle"),children:e}),n.jsx("span",{className:"flex-1 truncate",children:t}),s!=null&&s>0&&n.jsx("span",{className:H("text-2xs tabular-nums",a?"text-accent-2":"text-fg-subtle"),children:s})]})}function xs({icon:e,label:t,count:s,active:a,dimmed:r,indent:o,navId:i,linkComponent:l,ariaLabel:u,title:d,onClick:m}){const f=t1({active:a,dimmed:r,indent:o}),h=n.jsx(s1,{icon:e,label:t,count:s,active:a});return i&&l?l({navId:i,className:f,ariaLabel:u??t,title:d,onClick:m,children:h}):n.jsx("button",{type:"button",onClick:m,className:f,"aria-label":u,title:d,children:h})}const Go={inbox:0,flagged:1,drafts:2,sent:3,archive:4,all:5,junk:6,trash:7};function n1(e){switch(e){case"inbox":return n.jsx(vr,{className:"size-4"});case"flagged":return n.jsx(Mt,{className:"size-4"});case"drafts":return n.jsx(yl,{className:"size-4"});case"sent":return n.jsx(en,{className:"size-4"});case"archive":return n.jsx(Zd,{className:"size-4"});case"all":return n.jsx(Jd,{className:"size-4"});case"junk":return n.jsx(Xd,{className:"size-4"});case"trash":return n.jsx(st,{className:"size-4"})}}const Xo=e=>e.role!=null,Ta=8,Jo="remit.nav.folders.open.",Zo="remit.nav.account.open.";function ei(e,t,s){if(typeof localStorage>"u")return s;const a=localStorage.getItem(e+t);return a===null?s:a!=="0"}function ti(e,t,s){typeof localStorage>"u"||localStorage.setItem(e+t,s?"1":"0")}function a1({query:e,onSelect:t,onRemove:s}){return n.jsxs("div",{className:"group flex w-full items-center gap-1 rounded-md pr-1 hover:bg-surface",children:[n.jsxs("button",{type:"button",onClick:t,className:H("flex min-w-0 flex-1 items-center gap-2 px-2 py-1 text-left text-sm text-fg-muted transition-colors hover:text-fg",Qt),children:[n.jsx(sn,{className:"size-4 shrink-0 text-fg-subtle"}),n.jsx("span",{className:"min-w-0 flex-1 truncate",children:e})]}),s&&n.jsx("button",{type:"button",onClick:s,"aria-label":`Remove saved search: ${e}`,className:H("shrink-0 rounded-full p-1 text-fg-subtle opacity-0 transition-opacity hover:bg-surface-sunken hover:text-fg group-hover:opacity-100 focus-visible:opacity-100",Qt),children:n.jsx(Ue,{className:"size-3.5"})})]})}function r1({savedSearches:e,saveableQuery:t,onSelectSavedSearch:s,onRemoveSavedSearch:a,onSaveCurrentSearch:r}){return e.length===0&&!t?null:n.jsxs("div",{className:"mt-3",children:[n.jsx("div",{className:"px-2 pb-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Saved searches"}),t&&n.jsxs("button",{type:"button",onClick:r,className:H("flex w-full items-center gap-2 rounded-md px-2 py-1 text-left text-sm text-accent transition-colors hover:bg-surface",Qt),children:[n.jsx(Hm,{className:"size-4 shrink-0"}),n.jsxs("span",{className:"min-w-0 flex-1 truncate",children:["Save “",t,"”"]})]}),e.map(o=>n.jsx(a1,{query:o,onSelect:()=>s?.(o),onRemove:a?()=>a(o):void 0},o))]})}function o1({account:e,selectedNavId:t,onSelectNav:s,linkComponent:a}){const[r,o]=c.useState(()=>ei(Zo,e.id,!0)),[i,l]=c.useState(()=>ei(Jo,e.id,!0)),[u,d]=c.useState(!1),m=()=>{o(y=>{const k=!y;return ti(Zo,e.id,k),k})},f=()=>{l(y=>{const k=!y;return ti(Jo,e.id,k),k})},h=e.mailboxes.filter(Xo).sort((y,k)=>Go[y.role]-Go[k.role]),b=e.mailboxes.filter(y=>!Xo(y)),v=u||b.length<=Ta?b:b.slice(0,Ta),p=b.length-v.length,x=e.status??"ready",g=x==="ready"&&h.length===0&&b.length===0;return n.jsxs("div",{className:"mt-3",children:[n.jsxs("button",{type:"button",onClick:m,"aria-expanded":r,className:H("flex w-full items-center gap-1.5 px-2 pb-1 text-left transition-colors hover:text-fg",Qt,e.muted&&"opacity-55"),children:[r?n.jsx(Tt,{className:"size-3 shrink-0 text-fg-subtle"}):n.jsx(js,{className:"size-3 shrink-0 text-fg-subtle"}),n.jsx("span",{className:"truncate text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),e.muted&&n.jsxs(n.Fragment,{children:[n.jsx(Jl,{className:"size-3 shrink-0 text-fg-subtle"}),n.jsx("span",{className:"text-2xs text-fg-subtle",children:"muted"})]})]}),r&&n.jsxs(n.Fragment,{children:[x==="loading"&&n.jsx("div",{className:"px-2 py-1 text-sm text-fg-muted",children:"Loading…"}),x==="error"&&n.jsxs("div",{role:"alert",className:"mx-2 my-1 flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-2 py-1.5 text-sm",children:[n.jsx(Jt,{className:"mt-0.5 size-4 shrink-0 text-danger","aria-hidden":"true"}),n.jsx("div",{className:"min-w-0 flex-1",children:n.jsx("p",{className:"font-medium text-danger",children:"Couldn't load mailboxes"})}),e.onRetry&&n.jsx("button",{type:"button",onClick:e.onRetry,className:"shrink-0 text-sm font-medium text-accent hover:underline",children:"Retry"})]}),g&&n.jsx("div",{className:"px-2 py-1 text-sm text-fg-muted",children:"No mailboxes"}),x==="ready"&&n.jsxs(n.Fragment,{children:[h.map(y=>n.jsx(xs,{navId:y.id,linkComponent:a,icon:n1(y.role),label:y.name,ariaLabel:y.name,title:y.fullPath??y.name,count:y.unseen,active:t===y.id,dimmed:e.muted,onClick:()=>s?.(y.id)},y.id)),e.outboxPending!==void 0&&n.jsx(xs,{navId:"outbox",linkComponent:a,icon:n.jsx(en,{className:"size-4"}),label:"Outbox",ariaLabel:"Outbox",count:e.outboxPending>0?e.outboxPending:void 0,active:t==="outbox",dimmed:e.muted,onClick:()=>s?.("outbox")}),b.length>0&&n.jsxs(n.Fragment,{children:[n.jsxs("button",{type:"button",onClick:f,"aria-expanded":i,className:H("mt-1 flex w-full items-center gap-1 px-2 py-1 text-left text-2xs font-semibold uppercase tracking-wider text-fg-subtle transition-colors hover:text-fg",Qt),children:[i?n.jsx(Tt,{className:"size-3 shrink-0"}):n.jsx(js,{className:"size-3 shrink-0"}),n.jsx("span",{className:"flex-1",children:"Folders"}),n.jsx("span",{className:"tabular-nums opacity-70",children:b.length})]}),i&&n.jsxs(n.Fragment,{children:[v.map(y=>n.jsx(xs,{navId:y.id,linkComponent:a,icon:n.jsx(am,{className:"size-4"}),label:y.name,ariaLabel:y.name,title:y.fullPath??y.name,count:y.unseen,active:t===y.id,dimmed:e.muted,onClick:()=>s?.(y.id)},y.id)),(p>0||u)&&b.length>Ta&&n.jsx("button",{type:"button",onClick:()=>d(y=>!y),className:H("ml-7 flex items-center px-2 py-1 text-2xs font-medium text-accent transition-colors hover:underline",Qt),children:u?"Show less":`Show all (${b.length})`})]})]})]})]})]})}function i1({accounts:e,selectedNavId:t,briefUnseen:s,onSelectNav:a,variant:r="desktop",linkComponent:o,savedSearches:i=[],saveableQuery:l,onSelectSavedSearch:u,onRemoveSavedSearch:d,onSaveCurrentSearch:m}){const f=c.useRef(null);Yn({containerRef:f,itemSelector:e1});const h=r==="drawer",b=n.jsxs("nav",{ref:h?f:void 0,className:h?"px-2 py-2":"flex-1 overflow-y-auto px-2 py-2","aria-label":"Mailboxes",children:[n.jsx(xs,{navId:"brief",linkComponent:o,icon:n.jsx(bt,{className:"size-4"}),label:"Daily brief",ariaLabel:"Daily brief",count:s,active:t==="brief",onClick:()=>a?.("brief")}),n.jsx(xs,{navId:"flagged",linkComponent:o,icon:n.jsx(Mt,{className:"size-4"}),label:"Starred",ariaLabel:"Starred",active:t==="flagged",onClick:()=>a?.("flagged")}),n.jsx(r1,{savedSearches:i,saveableQuery:l,onSelectSavedSearch:u,onRemoveSavedSearch:d,onSaveCurrentSearch:m}),e.length===0?n.jsx("div",{className:"px-2 py-4 text-center text-sm text-fg-muted",children:"No accounts configured"}):e.map(v=>n.jsx(o1,{account:v,selectedNavId:t,onSelectNav:a,linkComponent:o},v.id))]});return h?b:n.jsxs("aside",{ref:f,className:"flex h-full w-full flex-col bg-surface-sunken",children:[b,n.jsx("div",{className:"border-t border-line px-2 py-2",children:n.jsx(xs,{navId:"settings",linkComponent:o,icon:n.jsx(_r,{className:"size-4"}),label:"Settings",ariaLabel:"Settings",active:t==="settings",onClick:()=>a?.("settings")})})]})}function l1({search:e,actions:t,className:s}){return n.jsxs("header",{className:H("flex min-h-16 w-full shrink-0 items-center gap-3 border-b border-line bg-canvas px-3 py-2",s),children:[n.jsx("div",{className:"flex min-w-0 flex-1 justify-start",children:n.jsx("div",{className:"w-full max-w-2xl",children:e})}),t&&n.jsx("div",{className:"flex shrink-0 items-center gap-1",children:t})]})}function c1({label:e,size:t="sm",onUndo:s,undoLabel:a="Undo",filtersHref:r,manageLabel:o="Manage filter",className:i}){return n.jsxs(ot,{tone:"accent",className:H(t==="md"&&"py-1 text-xs",i),children:[n.jsx(tf,{className:H(t==="sm"?"size-3":"size-3.5","shrink-0"),"aria-hidden":!0}),n.jsx("span",{children:e}),s&&n.jsx("button",{type:"button",onClick:l=>{l.stopPropagation(),s()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:a}),r&&n.jsx("a",{href:r,onClick:l=>{l.stopPropagation()},className:"font-semibold underline decoration-dotted underline-offset-2 hover:decoration-solid",children:o})]})}const u1=320,d1="cubic-bezier(0.32, 0.9, 0.3, 1)",m1=.5,f1=.4,h1=360;function g1(e){return Math.sign(e)*Math.sqrt(Math.abs(e))*4}function kc({open:e,onClose:t,children:s,dismissLabel:a="Dismiss"}){const r=c.useRef(null),[o,i]=c.useState(h1),[l,u]=c.useState(null);c.useLayoutEffect(()=>{const g=r.current;if(!g)return;const y=()=>i(g.offsetHeight);y();const k=new ResizeObserver(y);return k.observe(g),()=>k.disconnect()},[]);const d=c.useRef(null),m=c.useCallback(g=>{g.currentTarget.setPointerCapture(g.pointerId),d.current={startY:g.clientY,lastY:g.clientY,lastT:g.timeStamp,velocity:0,moved:!1},u(0)},[]),f=c.useCallback(g=>{const y=d.current;if(!y)return;const k=g.timeStamp-y.lastT;k>0&&(y.velocity=(g.clientY-y.lastY)/k),y.lastY=g.clientY,y.lastT=g.timeStamp;const w=g.clientY-y.startY;Math.abs(w)>4&&(y.moved=!0);const E=w<0?g1(w):w;u(E)},[]),h=c.useCallback(()=>{const g=d.current;if(d.current=null,!g)return;const y=g.lastY-g.startY,w=g.velocity>m1||y>o*f1;u(null),w&&t()},[o,t]),b=l!==null,v=e?l??0:o,p=Math.min(Math.max(1-v/o,0),1),x=b?"none":`transform ${u1}ms ${d1}`;return n.jsxs("div",{className:H("absolute inset-0 z-40 select-none overflow-hidden",e||b?"":"pointer-events-none"),children:[n.jsx("button",{type:"button","aria-label":a,tabIndex:-1,onClick:t,className:H("absolute inset-0 bg-black/40",p>0?"pointer-events-auto":"pointer-events-none"),style:{opacity:p*.6,transition:x.replace("transform","opacity")}}),n.jsxs("div",{ref:r,className:"absolute inset-x-0 bottom-0 flex max-h-[92%] flex-col rounded-t-3xl border-t border-line bg-surface shadow-2xl shadow-black/30",style:{transform:`translateY(${v}px)`,transition:x},children:[n.jsx("div",{role:"slider","aria-label":"Drag down to dismiss","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(p*100),tabIndex:0,onPointerDown:m,onPointerMove:f,onPointerUp:h,onPointerCancel:h,className:"flex cursor-grab touch-none justify-center pb-1 pt-2.5 active:cursor-grabbing",children:n.jsx("div",{className:"h-1 w-10 rounded-full bg-fg-subtle/40"})}),n.jsx("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:s})]})]})}const p1=({status:e})=>e==="saving"?n.jsx("span",{className:"animate-pulse text-xs text-fg-muted",children:"Saving..."}):e==="saved"?n.jsx("span",{className:"text-xs text-fg-muted",children:"Draft saved"}):e==="error"?n.jsx("span",{className:"text-xs text-danger",children:"Save failed"}):null;function b1({onSend:e,onDiscard:t,sending:s,canSend:a,saveStatus:r="idle",unavailableReason:o,onUnavailable:i}){return n.jsxs("div",{className:"flex items-center justify-between border-t border-line px-3 py-2",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx(G,{variant:"primary",size:"md","aria-busy":s,title:a?void 0:o,className:"min-h-11 rounded-full px-4",icon:s?n.jsx(ut,{className:"size-4 animate-spin"}):n.jsx(en,{className:"size-4"}),onClick:()=>{if(!s){if(!a){o&&i?.(o);return}e()}},children:"Send"}),n.jsx(p1,{status:r})]}),n.jsx(G,{variant:"ghost",size:"md","aria-busy":s,"aria-label":"Discard",className:"min-h-11 min-w-11 px-2 hover:text-danger",icon:n.jsx(st,{className:"size-4"}),onClick:()=>{s||t()}})]})}function x1({banner:e,header:t,children:s,quoted:a,actionBar:r}){return n.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[e,t,n.jsxs("div",{className:"min-h-0 flex-1 overflow-auto",children:[s,a&&n.jsx("div",{className:"px-3 pb-2",children:a})]}),r]})}function v1({key:e,shiftKey:t=!1,repeat:s=!1,caretAtStart:a,hasValue:r,chipCount:o}){const i=o-1;return e==="Escape"?r?{type:"clearQuery"}:{type:"blur"}:e==="Tab"&&t?o===0?{type:"none"}:{type:"focusChip",index:i}:e==="Backspace"||e==="ArrowLeft"?!a||o===0?{type:"none"}:s?{type:"none"}:{type:"focusChip",index:i}:{type:"none"}}function y1({key:e,repeat:t=!1,index:s,chipCount:a}){return e==="Backspace"||e==="Delete"?t?{type:"none"}:{type:"removeChip",index:s}:e==="ArrowLeft"?s===0?{type:"none"}:{type:"focusChip",index:s-1}:e==="ArrowRight"?s>=a-1?{type:"focusInput"}:{type:"focusChip",index:s+1}:e==="Enter"||e===" "?{type:"activateChip",index:s}:e==="Escape"?{type:"focusInput"}:{type:"none"}}function k1(e,t){const s=t-1;return s<=0?null:e<s?e:s-1}const w1=e=>e instanceof HTMLElement?e.tagName==="INPUT"||e.tagName==="TEXTAREA"||e.isContentEditable:!1,j1=({chips:e=[],onRemoveChip:t,onActivateChip:s,value:a,onChange:r,onClear:o,onClearQuery:i,placeholder:l="Search mail...",globalFocusKey:u=!0,showClearButton:d=!0,size:m="sm",inputId:f,chipsLabel:h="Search filters",className:b})=>{const v=c.useId(),p=f??v,x=c.useRef(null),g=c.useRef([]),y=i??o,[k,w]=c.useState(null),E=c.useRef(void 0),[T,C]=c.useState(""),S=e.length>0;c.useEffect(()=>{w(j=>j!==null&&j>=e.length?null:j)},[e.length]),c.useEffect(()=>{const j=E.current;if(j!==void 0){if(E.current=void 0,j===null){x.current?.focus();return}g.current[j]?.focus()}});const D=c.useCallback(j=>{w(j),E.current=j},[]),z=c.useCallback(j=>{const M=e[j];M&&t&&(D(k1(j,e.length)),C(`${M.label} removed`),t(M.id))},[e,t,D]),A=c.useCallback(()=>{D(null),o()},[o,D]),P=c.useCallback(j=>{const M=j.currentTarget,$=v1({key:j.key,shiftKey:j.shiftKey,repeat:j.repeat,caretAtStart:M.selectionStart===0&&M.selectionEnd===0,hasValue:a.length>0,chipCount:e.length});switch($.type){case"focusChip":j.preventDefault(),D($.index);return;case"clearQuery":y();return;case"blur":M.blur();return;case"none":return}},[e.length,a,y,D]),I=c.useCallback(j=>M=>{const $=y1({key:M.key,repeat:M.repeat,index:j,chipCount:e.length});switch($.type!=="none"&&M.preventDefault(),$.type){case"removeChip":z($.index);return;case"focusChip":D($.index);return;case"focusInput":D(null);return;case"activateChip":{const R=e[$.index];R&&s&&s(R.id);return}case"none":return}},[e,z,D,s]);return c.useEffect(()=>{if(!u)return;const j=M=>{M.key!=="/"||M.metaKey||M.ctrlKey||M.altKey||w1(M.target)||(M.preventDefault(),x.current?.focus())};return window.addEventListener("keydown",j),()=>window.removeEventListener("keydown",j)},[u]),n.jsxs("label",{htmlFor:p,className:H("flex w-full items-center gap-1.5 text-sm","bg-surface-sunken/50 border border-transparent","focus-within:bg-canvas focus-within:border-line focus-within:ring-2 focus-within:ring-ring","transition-colors",m==="lg"?"rounded-xl px-4 py-2":"rounded-md px-2.5 py-1",b),children:[n.jsx(sn,{className:H("shrink-0 text-fg-muted pointer-events-none",m==="lg"?"size-5":"size-4")}),n.jsxs("div",{className:"flex min-w-0 flex-1 flex-wrap items-center gap-1",children:[S&&n.jsx("div",{role:"grid","aria-label":h,className:"flex min-w-0 flex-wrap items-center gap-1",children:e.map((j,M)=>n.jsx(e0,{ref:$=>{g.current[M]=$},label:j.label,tone:j.tone,focused:k===M,onFocusLabel:()=>w(M),onKeyDown:I(M),onRemove:()=>z(M),onActivate:s?()=>s(j.id):void 0},j.id))}),n.jsx("input",{ref:x,id:p,name:"q",type:"text","aria-label":"Search mail",autoComplete:"off",value:a,tabIndex:k===null?0:-1,onChange:j=>r(j.target.value),onKeyDown:P,onFocus:()=>w(null),placeholder:S?void 0:l,className:"min-w-24 flex-1 bg-transparent text-fg outline-none placeholder:text-fg-muted"})]}),(a||S)&&d&&n.jsx("button",{type:"button",onClick:A,className:"shrink-0 rounded p-0.5 hover:bg-surface-raised transition-colors","aria-label":"Clear search",children:n.jsx(Ue,{className:H("text-fg-muted",m==="lg"?"size-5":"size-4")})}),n.jsx("span",{role:"status","aria-live":"polite",className:"sr-only",children:T})]})},Br=({value:e,onChange:t,onClear:s,onClearQuery:a,chips:r,onRemoveChip:o,placeholder:i="Search mail...",globalFocusKey:l=!0,showClearButton:u=!0,size:d,inputId:m,className:f})=>n.jsx(j1,{value:e,onChange:t,onClear:s,onClearQuery:a,chips:r,onRemoveChip:o,placeholder:i,globalFocusKey:l,showClearButton:u,size:d,inputId:m,className:f});function S1({title:e,unreadCount:t,isDesktop:s,onMenuClick:a,searchValue:r,onSearchChange:o,onSearchClear:i,searchOpen:l,onSearchOpenChange:u,showSearch:d=!0}){const m=`${t.toLocaleString()} unread`,f=i??(()=>o("")),h=()=>{f(),u(!1)},b=p=>n.jsx(Br,{value:r,onChange:o,onClear:f,globalFocusKey:!1,showClearButton:p}),v=n.jsx(G,{variant:"ghost",icon:n.jsx(Dr,{className:"size-5"}),onClick:a,"aria-label":"Menu",className:"min-h-11 min-w-11 shrink-0 px-0"});return n.jsx("header",{className:"flex shrink-0 flex-col bg-canvas",children:n.jsx("div",{className:"flex h-12 items-center gap-2 px-row-inset",children:d?s?n.jsxs(n.Fragment,{children:[v,n.jsx("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e}),n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle",children:m}),n.jsx("div",{className:"w-64 max-w-[40%] shrink-0",children:b(!0)})]}):l||r.trim().length>0?n.jsxs("div",{className:"flex flex-1 items-center gap-1",children:[n.jsx("div",{className:"flex-1",children:b(!1)}),n.jsx(G,{variant:"ghost",icon:n.jsx(Ue,{className:"size-5"}),onClick:h,"aria-label":"Close search",className:"min-h-11 min-w-11 shrink-0 px-0"})]}):n.jsxs(n.Fragment,{children:[v,n.jsx("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e}),n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle",children:m}),n.jsx(G,{variant:"ghost",icon:n.jsx(sn,{className:"size-5"}),onClick:()=>u(!0),"aria-label":"Search",className:"min-h-11 min-w-11 shrink-0 px-0"})]}):n.jsxs(n.Fragment,{children:[v,n.jsx("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:e}),n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle",children:m})]})})})}const C1=(e,t)=>e==="vip"?"vip":e==="unknown"&&t==="md"?"unknown-pill":"hidden",wc=({senderTrust:e,size:t="sm",className:s})=>{const a=C1(e,t);return a==="vip"?n.jsx(bt,{className:H("text-warning shrink-0",t==="sm"&&"size-3.5",t==="md"&&"size-4",s),"aria-label":"VIP sender","data-testid":"sender-trust-vip"}):a==="unknown-pill"?n.jsx("span",{className:H("inline-flex items-center rounded border border-dashed border-fg-subtle/40 font-medium uppercase tracking-wide text-fg-muted/80 shrink-0","px-2 py-0.5 text-xs",s),title:"First message from this sender","aria-label":"First message from this sender","data-testid":"sender-trust-unknown",children:"new"}):null};function si(e,t){const s=t?.trim();if(!s)return e;const a=e.toLowerCase(),r=s.toLowerCase(),o=[];let i=0,l=a.indexOf(r,i),u=0;for(;l!==-1;)l>i&&o.push(e.slice(i,l)),o.push(n.jsx("mark",{className:"bg-transparent font-semibold text-fg",children:e.slice(l,l+r.length)},u++)),i=l+r.length,l=a.indexOf(r,i);return i<e.length&&o.push(e.slice(i)),o}function N1({result:e,onClick:t,query:s,showFolder:a=!0}){const r=a&&e.folder?t0(e.folder):void 0;return n.jsxs("button",{type:"button",onClick:t,className:"flex w-full flex-col gap-0.5 border-b border-line px-row-inset py-2.5 text-left transition-colors hover:bg-surface-sunken",children:[n.jsxs("div",{className:"flex items-baseline gap-2",children:[n.jsx("span",{className:H("min-w-0 flex-1 truncate text-sm",e.unread?"font-semibold text-fg":"font-medium text-fg-muted"),children:e.sender}),n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.date})]}),n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:H("min-w-0 flex-1 truncate text-sm",e.unread?"text-fg":"text-fg-muted"),children:si(e.subject,s)}),e.flagged&&n.jsx(Vm,{className:"size-3.5 shrink-0 fill-warning text-warning"})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-fg-subtle",children:si(e.snippet,s)}),r&&n.jsx(ot,{tone:"neutral",className:"shrink-0",children:r}),e.category&&n.jsx(ot,{tone:e.category.tone??"neutral",className:"shrink-0",children:e.category.label}),e.matchedChunkLabel&&n.jsx(ot,{tone:"neutral",className:"shrink-0",children:`matched: ${e.matchedChunkLabel}`}),e.score!=null&&n.jsx("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:e.score.toFixed(2)})]})]})}const E1=e=>e===1?"result":"results";function I1({count:e,onScopeToSpam:t}){return n.jsx(Zt,{tone:"info",variant:"soft",className:"items-center justify-between gap-3 rounded-none border-b border-line",children:n.jsxs("div",{className:"flex items-center justify-between gap-3",children:[n.jsxs("p",{className:"min-w-0 text-xs text-fg-muted",children:[n.jsx("span",{className:"font-semibold text-fg tabular-nums",children:e})," ",`${E1(e)} from Spam`]}),n.jsx(G,{variant:"ghost",size:"sm",onClick:t,className:"shrink-0 text-accent",children:"Go to Spam"})]})})}const ni=6,T1={kind:"global"},R1=e=>e.kind==="folder"&&e.role==="junk",M1=e=>e.folder?.role==="junk";function jc(e){const t=[],s=[];for(const a of e)M1(a)?s.push(a):t.push(a);return{kept:t,spam:s}}function z1({section:e,query:t,onSelectResult:s,showFolder:a}){const[r,o]=c.useState(e.initialCollapsed??!1),[i,l]=c.useState(!1),u=e.results.length>ni,m=!i&&u?e.results.slice(0,ni):e.results,f=e.results.length-m.length;return n.jsxs("div",{children:[n.jsxs("button",{type:"button","aria-expanded":!r,onClick:()=>o(h=>!h),className:"sticky top-0 z-10 flex h-section-row w-full items-center gap-1.5 border-b border-line bg-surface-sunken px-row-inset text-left transition-colors hover:bg-surface",children:[n.jsx("span",{className:"flex-1 text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e.label}),n.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:e.results.length}),n.jsx(Tt,{className:H("size-3 shrink-0 text-fg-subtle transition-transform duration-200",r?"rotate-0":"rotate-180")})]}),!r&&n.jsxs(n.Fragment,{children:[m.map(h=>n.jsx(N1,{result:h,query:t,showFolder:a,onClick:s?()=>s(h):void 0},h.id)),u&&n.jsxs("button",{type:"button",onClick:()=>l(h=>!h),className:"flex w-full items-center justify-center border-b border-line px-row-inset py-1.5 text-2xs font-medium text-accent transition-colors hover:bg-surface",children:[i?"Show less":`Show ${f} more`,!i&&n.jsx(Tt,{className:"ml-1 size-3"})]})]})]})}function Sc({value:e,recentSearches:t,onPickRecent:s,sections:a,loading:r,onSelectResult:o,tokens:i,scope:l=T1}){if(!(e.trim().length>0))return t&&t.length>0?n.jsxs("div",{className:"flex flex-col",children:[n.jsx("h3",{className:"px-row-inset pb-1 pt-3 text-2xs font-semibold uppercase tracking-wide text-fg-subtle",children:"Recent searches"}),t.map(y=>n.jsxs("button",{type:"button",onClick:()=>s?.(y),className:"flex w-full items-center gap-2.5 border-b border-line px-row-inset py-2.5 text-left transition-colors hover:bg-surface-sunken",children:[n.jsx(Fr,{className:"size-4 shrink-0 text-fg-subtle"}),n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm text-fg-muted",children:y})]},y))]}):n.jsx("p",{className:"px-row-inset py-6 text-center text-sm text-fg-subtle",children:"Search across your mail by sender, subject or words in the message."});const d=i&&i.length>0&&n.jsx(s0,{tokens:i});if(r)return n.jsxs("div",{className:"flex flex-col",children:[d,n.jsx("div",{className:"flex flex-col gap-3 px-row-inset py-4",children:[0,1,2,3].map(y=>n.jsxs("div",{className:"flex flex-col gap-1.5",children:[n.jsx("div",{className:"h-3 w-1/3 animate-pulse rounded bg-surface-sunken"}),n.jsx("div",{className:"h-3 w-2/3 animate-pulse rounded bg-surface-sunken"}),n.jsx("div",{className:"h-2.5 w-1/2 animate-pulse rounded bg-surface-sunken"})]},y))})]});const m=l.kind==="global",f=R1(l)||l.kind==="collection",h=m||l.kind==="collection",b=(a??[]).map(y=>{if(f)return{section:y,spam:[]};const{kept:k,spam:w}=jc(y.results);return{section:{...y,results:k},spam:w}}),v=b.map(y=>y.section),p=b.reduce((y,k)=>y+k.spam.length,0),x=l.kind==="global"&&p>0&&l.onScopeToSpam!==void 0?n.jsx(I1,{count:p,onScopeToSpam:l.onScopeToSpam}):void 0;return v.some(y=>y.results.length>0)?n.jsxs("div",{className:"flex flex-col",children:[d,x,v.filter(y=>y.results.length>0).map(y=>n.jsx(z1,{section:y,query:e,showFolder:h,onSelectResult:o},y.id))]}):n.jsxs("div",{className:"flex flex-col",children:[d,x,n.jsxs("div",{className:"px-row-inset py-10 text-center",children:[n.jsxs("p",{className:"text-sm font-medium text-fg",children:["No matches for “",e,"”"]}),n.jsx("p",{className:"mt-1 text-xs text-fg-subtle",children:"Try a different word, or adjust the filters above."})]})]})}function A1({value:e,onChange:t,onClear:s,onCancel:a,filter:r,recentSearches:o,onPickRecent:i,sections:l,loading:u,onSelectResult:d,tokens:m,chips:f,onRemoveChip:h,scope:b}){const v=n.jsx(Sc,{value:e,recentSearches:o,onPickRecent:i,sections:l,loading:u,onSelectResult:d,tokens:m,scope:b});return n.jsxs("article",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line bg-surface px-row-inset",children:[n.jsx("div",{className:"min-w-0 flex-1",children:n.jsx(Br,{value:e,onChange:t,onClear:s,chips:f,onRemoveChip:h,globalFocusKey:!1,showClearButton:!1})}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(Ue,{className:"size-4"}),onClick:a,"aria-label":"Clear and close search",className:"-mr-1 shrink-0"})]}),r?n.jsx(yr,{...r,children:v}):n.jsx("div",{className:"flex-1 overflow-y-auto",children:v})]})}const ai="w-full text-left px-3 py-2.5 min-h-11 flex items-center gap-2 transition-colors text-sm rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-canvas",D1={searchPlaceholder:"Move to…",searchAriaLabel:"Filter folders",listAriaLabel:"Destination folders",currentSuffix:"(current folder)",currentTag:"current",emptyMessage:e=>`No folders match "${e}"`,optionLabel:e=>`Move to ${e}`},Ra=e=>{for(let t=0;t<e.length;t+=1)if(!e[t]?.isCurrent)return t;return-1},O1=e=>{for(let t=e.length-1;t>=0;t-=1)if(!e[t]?.isCurrent)return t;return-1},ri=(e,t,s)=>{const a=e.length;if(a<=0)return-1;const r=t<0?s===1?-1:a:t;for(let o=1;o<=a;o+=1){const i=((r+s*o)%a+a)%a;if(!e[i]?.isCurrent)return i}return-1},P1=(e,t)=>e.label.toLowerCase().includes(t)?!0:e.searchValue?.toLowerCase().includes(t)??!1,Cc=({mailboxes:e,onSelect:t,onCancel:s,autoFocus:a=!1,labels:r})=>{const o={...D1,...r},[i,l]=c.useState(""),[u,d]=c.useState(()=>Ra(e)),m=c.useRef(null),f=c.useRef([]);c.useEffect(()=>{a&&m.current?.focus()},[a]);const h=i.trim().toLowerCase(),b=c.useMemo(()=>h?e.filter(g=>P1(g,h)):[...e],[e,h]);c.useEffect(()=>{d(g=>g>=0&&g<b.length&&!b[g]?.isCurrent?g:Ra(b))},[b]),c.useEffect(()=>{if(u<0)return;const g=f.current[u];g&&document.activeElement!==m.current&&g.focus()},[u]);const v=c.useCallback(()=>{if(u<0)return;const g=b[u];!g||g.isCurrent||t(g.id)},[u,b,t]),p=c.useCallback(g=>{switch(g.key){case"ArrowDown":g.preventDefault(),d(y=>ri(b,y,1));return;case"ArrowUp":g.preventDefault(),d(y=>ri(b,y,-1));return;case"Home":g.preventDefault(),d(Ra(b));return;case"End":g.preventDefault(),d(O1(b));return;case"Enter":case" ":g.preventDefault(),v();return;case"Escape":g.preventDefault(),s?.();return;default:return}},[b,v,s]),x=c.useCallback(g=>{if(g.key==="ArrowDown"){if(g.preventDefault(),b.length===0)return;f.current[u>=0?u:0]?.focus();return}g.key==="Escape"&&(g.preventDefault(),s?.())},[b.length,u,s]);return n.jsxs("div",{className:"flex flex-col",children:[n.jsx(kl,{variant:"inline",className:"border-b border-line px-3 py-2",icon:n.jsx(sn,{className:"size-4","aria-hidden":"true"}),ref:m,type:"search",value:i,onChange:g=>l(g.target.value),onKeyDown:x,placeholder:o.searchPlaceholder,"aria-label":o.searchAriaLabel}),n.jsx("div",{className:"flex-1 overflow-y-auto py-1",role:"listbox","aria-label":o.listAriaLabel,onKeyDown:p,children:b.length===0?n.jsx("div",{className:"px-3 py-3 text-sm text-fg-muted","aria-live":"polite",children:o.emptyMessage(i)}):b.map((g,y)=>{const k=g.isCurrent??!1,w=y===u;return k?n.jsx("div",{children:n.jsxs("div",{role:"option","aria-selected":!1,"aria-current":"true","aria-label":`${g.label} ${o.currentSuffix}`,className:H(ai,"opacity-60 bg-surface-sunken/40"),children:[n.jsx("span",{className:"truncate flex-1",children:g.label}),n.jsx("span",{className:"text-xs text-fg-muted shrink-0",children:o.currentTag})]})},g.id):n.jsx("div",{children:n.jsx("button",{ref:E=>{f.current[y]=E},type:"button",role:"option","aria-selected":!1,tabIndex:w?0:-1,onClick:()=>t(g.id),onFocus:()=>d(y),"aria-label":o.optionLabel(g.label),className:H(ai,"hover:bg-surface-raised"),children:n.jsx("span",{className:"truncate flex-1",children:g.label})})},g.id)})})]})},L1={queued:{icon:Fr,label:"Queued",className:"text-warning"},sending:{icon:ut,label:"Sending…",className:"text-accent-2",spin:!0},sent:{icon:Zl,label:"Sent",className:"text-positive"},failed:{icon:Jt,label:"Failed",className:"text-danger"},blocked:{icon:kr,label:"Blocked",className:"text-warning"}};function oi({status:e,iconOnly:t,className:s}){const a=L1[e],r=a.icon;return n.jsxs("span",{className:H("inline-flex items-center gap-1.5 text-xs font-medium",a.className,s),children:[n.jsx(r,{className:H("size-4",a.spin&&"animate-spin")}),!t&&a.label]})}const $1=(e,t)=>t?"bg-accent-2-soft":e==="failed"?"bg-danger-soft":e==="blocked"?"bg-warning/10":"";function F1({recipients:e,subject:t,time:s,status:a,error:r,selected:o,onSelect:i,onRetry:l,retrying:u,onEdit:d,onDelete:m,deleting:f}){const h=a==="failed"||a==="blocked";return n.jsxs("div",{className:H("flex items-start gap-3 border-b border-line px-4 py-3 transition-colors hover:bg-surface-raised",$1(a,o)),children:[n.jsxs("button",{type:"button",...br,onClick:i,className:"flex flex-1 min-w-0 items-start gap-3 text-left",children:[n.jsx("div",{className:"mt-0.5 shrink-0",children:n.jsx(oi,{status:a,iconOnly:!0})}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsxs("div",{className:"flex items-center justify-between gap-2",children:[n.jsx("span",{className:"truncate text-sm font-medium",children:e}),n.jsx("span",{className:"shrink-0 text-xs text-fg-muted",children:s})]}),n.jsx("div",{className:"truncate text-sm",children:t||"No subject"}),n.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[n.jsx(oi,{status:a}),r&&n.jsxs("span",{className:"truncate text-xs text-fg-muted",children:["— ",r]})]})]})]}),h&&n.jsx("div",{className:"shrink-0",children:n.jsx(J0,{actions:[...a==="failed"&&l?[{label:"Retry sending",iconOnly:!0,icon:n.jsx(nm,{className:"size-3.5"}),busy:u,onClick:l}]:[],{label:"Edit as draft",iconOnly:!0,icon:n.jsx(en,{className:"size-3.5"}),onClick:d}],destructive:{label:"Delete message",iconOnly:!0,icon:n.jsx(st,{className:"size-3.5"}),busy:f,confirm:{prompt:"Delete this message?",confirmLabel:"Delete"},onClick:m}})})]})}const _1=e=>{const[t,s]=c.useState(()=>typeof window>"u"||!window.matchMedia?!1:window.matchMedia(e).matches);return c.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const a=window.matchMedia(e);s(a.matches);const r=o=>s(o.matches);return a.addEventListener("change",r),()=>a.removeEventListener("change",r)},[e]),t},q1=({children:e,onRefresh:t,isRefreshing:s})=>_1("(min-width: 1024px)")?e:n.jsx(n0,{onRefresh:t,isPullable:!s,children:e}),B1=({text:e,html:t,senderName:s,date:a})=>{const[r,o]=c.useState(!1);if(!e&&!t)return null;const i=[s,a].filter(Boolean).join(" on ");return n.jsxs("div",{className:"mt-2 px-3 pb-2",children:[n.jsxs("button",{type:"button",onClick:()=>o(!r),"aria-expanded":r,className:"flex items-center gap-1 text-xs text-fg-muted hover:text-fg transition-colors",children:[r?n.jsx(Tt,{className:"size-3"}):n.jsx(js,{className:"size-3"}),i?`${i} wrote:`:"Show quoted text"]}),r&&n.jsx("blockquote",{className:"mt-2 pl-3 border-l-2 border-fg-subtle/30 text-sm text-fg-muted [&_a]:text-accent [&_a]:underline [&_blockquote]:pl-3 [&_blockquote]:border-l-2 [&_blockquote]:border-fg-subtle/30",children:t?n.jsx("div",{dangerouslySetInnerHTML:{__html:t}}):e.split(`
|
|
75
|
-
`).map((l,u)=>n.jsx("p",{className:"min-h-[1.2em]",children:l},u))})]})},K1=e=>e===1?"message":"messages";function U1({count:e,onReview:t,onDismiss:s,actionLabel:a="Review & rescue"}){return n.jsx(Zt,{tone:"info",variant:"soft",onDismiss:s,children:n.jsxs("div",{className:"flex flex-col gap-2",children:[n.jsxs("p",{className:"flex items-start gap-2 text-sm text-fg",children:[n.jsx(an,{className:"mt-0.5 size-4 shrink-0 text-positive","aria-hidden":!0}),n.jsxs("span",{children:[n.jsx("span",{className:"font-semibold text-fg",children:`${e} ${K1(e)} here`})," ","may not be spam — they're from senders we can verify."]})]}),n.jsx(G,{variant:"primary",size:"sm",onClick:t,className:"self-start",children:a})]})})}function H1({candidate:e,selected:t,onToggle:s,hideSender:a=!1}){const{senderName:r,senderAddress:o,subject:i,snippet:l,trustReason:u,trustSubReason:d,senderTrust:m}=e;return n.jsxs("label",{className:H("flex w-full cursor-pointer items-start gap-3 px-3 py-2.5 text-left transition-colors",a&&"pl-11",t?"bg-positive/10":"bg-surface hover:bg-surface-sunken"),children:[n.jsx(on,{className:"mt-0.5",checked:t,onChange:s,"aria-label":`${t?"Deselect":"Select"} ${a?i:`message from ${r}`}`}),!a&&n.jsx(ct,{name:r,email:o,size:"sm"}),n.jsxs("span",{className:"min-w-0 flex-1",children:[!a&&n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"truncate text-sm font-medium text-fg",children:r}),m&&n.jsx(wc,{senderTrust:m,size:"sm"}),n.jsx("span",{className:"truncate text-2xs text-fg-subtle",children:o})]}),n.jsx("span",{className:"block truncate text-sm text-fg-muted",children:i}),n.jsx("span",{className:"block line-clamp-1 text-xs text-fg-subtle",children:l}),!a&&n.jsxs("span",{className:"mt-1.5 flex flex-wrap items-center gap-1.5",children:[n.jsxs(ot,{tone:"positive",children:[n.jsx(an,{className:"size-3","aria-hidden":!0}),u]}),n.jsx("span",{className:"text-2xs text-fg-subtle",children:d})]})]})]})}const W1=e=>{const t=new Map,s=[];for(const a of e){const r=(a.senderAddress||a.senderName).toLowerCase(),o=t.get(r);if(o){o.messages.push(a);continue}t.set(r,{key:r,senderName:a.senderName,senderAddress:a.senderAddress,trustReason:a.trustReason,trustSubReason:a.trustSubReason,senderTrust:a.senderTrust,messages:[a]}),s.push(r)}return s.map(a=>t.get(a)).sort((a,r)=>r.messages.length-a.messages.length)},V1=(e,t)=>{const s=e.messages.filter(a=>t.has(a.id)).length;return s===0?"none":s===e.messages.length?"all":"some"},ii=e=>e===1?"message":"messages";function Q1({group:e,selected:t,onToggleGroup:s,onToggleMessage:a}){const[r,o]=c.useState(!1),i=V1(e,t),l=e.messages.length,u=r?Tt:js;return n.jsxs("div",{className:H(i!=="none"?"bg-positive/10":"bg-surface"),children:[n.jsxs("div",{className:"flex w-full items-start gap-3 px-3 py-2.5",children:[n.jsx(on,{className:"mt-0.5",checked:i==="all",indeterminate:i==="some",onChange:()=>s(e,i!=="all"),"aria-label":`${i==="all"?"Deselect":"Select"} all ${l} ${ii(l)} from ${e.senderName}`}),n.jsx(ct,{name:e.senderName,email:e.senderAddress,size:"sm"}),n.jsxs("div",{className:"min-w-0 flex-1",children:[n.jsxs("div",{className:"flex items-center gap-1.5",children:[n.jsx("span",{className:"truncate text-sm font-medium text-fg",children:e.senderName}),e.senderTrust&&n.jsx(wc,{senderTrust:e.senderTrust,size:"sm"}),n.jsx("span",{className:"truncate text-2xs text-fg-subtle",children:e.senderAddress})]}),n.jsxs("div",{className:"mt-1.5 flex flex-wrap items-center gap-1.5",children:[n.jsxs(ot,{tone:"positive",children:[n.jsx(an,{className:"size-3","aria-hidden":!0}),e.trustReason]}),n.jsx("span",{className:"text-2xs text-fg-subtle",children:e.trustSubReason})]})]}),n.jsxs("button",{type:"button",onClick:()=>o(d=>!d),"aria-expanded":r,className:"flex shrink-0 items-center gap-1 rounded-md px-1.5 py-1 text-2xs text-fg-muted transition-colors hover:bg-surface-sunken hover:text-fg",children:[`${l} ${ii(l)}`,n.jsx(u,{className:"size-3.5","aria-hidden":!0})]})]}),r&&n.jsx("div",{className:"divide-y divide-line border-t border-line",children:e.messages.map(d=>n.jsx(H1,{candidate:d,selected:t.has(d.id),onToggle:()=>a(d.id),hideSender:!0},d.id))})]})}const Kr=e=>e===1?"message":"messages",Y1=(e,t)=>`Moves ${e===1?"this message":`these ${e} ${Kr(e)}`} out of Spam to ${t} now. Nothing later.`,er=(e,t)=>e.find(s=>s.id===t)?.label??"Inbox";function G1(){return n.jsx(Zt,{tone:"info",variant:"soft",children:n.jsx("p",{className:"text-2xs text-fg-muted",children:"We list a message here only when we can confirm the sender is who they say — usually someone you've emailed before, write to often, or a service that consistently checks out. We never guess from words in the subject. Anything we can't confirm stays in Spam."})})}function X1({candidates:e,selected:t,onToggle:s,onToggleGroup:a,onSelectAll:r,onSelectNone:o,onContinue:i,onCancel:l}){const[u,d]=c.useState(!1),m=t.size,f=c.useMemo(()=>W1(e),[e]);return n.jsxs("div",{className:"flex min-h-0 flex-col",children:[n.jsxs("div",{className:"px-row-inset pb-2 pt-1",children:[n.jsxs("div",{className:"flex items-start justify-between gap-2",children:[n.jsxs("h2",{className:"flex items-center gap-2 text-sm font-semibold text-fg",children:[n.jsx(an,{className:"size-4 text-positive","aria-hidden":!0}),"Rescue from Spam"]}),n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(G0,{className:"size-3.5"}),onClick:()=>d(h=>!h),className:"-mr-1.5 -mt-0.5",children:"Why these?"})]}),n.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"These look safe — from senders we can verify. Uncheck any sender that belongs in Spam, or open a sender to pick individual messages."}),u&&n.jsx("div",{className:"mt-2",children:n.jsx(G1,{})})]}),n.jsxs("div",{className:"flex items-center justify-between px-row-inset pb-1.5",children:[n.jsx("span",{className:"text-2xs font-medium text-fg-muted",children:`${m} of ${e.length} selected · ${f.length} ${f.length===1?"sender":"senders"}`}),n.jsxs("span",{className:"flex gap-1",children:[n.jsx(G,{variant:"ghost",size:"sm",onClick:r,children:"Select all"}),n.jsx(G,{variant:"ghost",size:"sm",onClick:o,children:"Select none"})]})]}),n.jsx("div",{className:"min-h-0 flex-1 divide-y divide-line overflow-y-auto border-y border-line",children:f.map(h=>n.jsx(Q1,{group:h,selected:t,onToggleGroup:a,onToggleMessage:s},h.key))}),n.jsxs("div",{className:"space-y-2 border-t border-line bg-surface px-row-inset py-3",children:[n.jsx(G,{variant:"primary",onClick:i,className:"h-11 w-full font-semibold",children:`Continue with ${m} ${Kr(m)}`}),n.jsx(G,{variant:"ghost",onClick:l,className:"h-11 w-full",children:"Cancel"})]})]})}function J1({count:e,folders:t,destination:s,onPick:a,onMove:r,onBack:o}){const[i,l]=c.useState(!1);return n.jsxs("div",{className:"flex min-h-0 flex-col",children:[n.jsxs("div",{className:"px-row-inset pb-2 pt-1",children:[n.jsx("h2",{className:"text-sm font-semibold text-fg",children:"Where should they go?"}),n.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"Pick a folder, then we move them out of Spam."})]}),n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-row-inset py-2",children:i?n.jsx("div",{className:"overflow-hidden rounded-xl border border-line bg-surface",children:n.jsx(Cc,{mailboxes:t,autoFocus:!0,onSelect:u=>{a(u),l(!1)},onCancel:()=>l(!1)})}):n.jsxs("div",{className:"rounded-xl border border-line bg-surface-sunken p-3",children:[n.jsx("p",{className:"text-2xs text-fg-subtle",children:"Destination"}),n.jsx("p",{className:"mt-0.5 text-sm font-medium text-fg",children:er(t,s)}),n.jsx(G,{variant:"ghost",size:"sm",onClick:()=>l(!0),className:"mt-2 px-0",children:"Move to a different folder"})]})}),n.jsxs("div",{className:"space-y-2 border-t border-line bg-surface px-row-inset py-3",children:[n.jsx("p",{className:"text-2xs text-fg-subtle",children:Y1(e,er(t,s))}),n.jsx(G,{variant:"primary",onClick:r,className:"h-11 w-full font-semibold",children:`Move ${e} out of Spam`}),n.jsx(G,{variant:"ghost",onClick:o,className:"h-11 w-full",children:"Back"})]})]})}function Z1({count:e,destinationLabel:t,onClose:s}){return n.jsxs("div",{className:"flex min-h-0 flex-col",children:[n.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 px-row-inset py-10 text-center",children:[n.jsx(Or,{className:"size-10 text-positive","aria-hidden":!0}),n.jsx("p",{className:"text-base font-semibold text-fg",children:`Moved ${e} ${Kr(e)} out of Spam.`}),n.jsx("p",{className:"text-2xs text-fg-subtle",children:`You'll find them in ${t}.`})]}),n.jsx("div",{className:"border-t border-line bg-surface px-row-inset py-3",children:n.jsx(G,{variant:"primary",onClick:s,className:"h-11 w-full font-semibold",children:"Done"})})]})}function eh({open:e,candidates:t,defaultDestinationId:s,availableFolders:a,onConfirmMove:r,onCancel:o}){const[i,l]=c.useState("review"),[u,d]=c.useState(()=>e?new Set(t.map(k=>k.id)):new Set),[m,f]=c.useState(s),[h,b]=c.useState(0),v=c.useRef(!1);c.useEffect(()=>{e&&!v.current&&(l("review"),d(new Set(t.map(k=>k.id))),f(s),b(0)),v.current=e},[e,t,s]);const p=u.size,x=k=>{d(w=>{const E=new Set(w);return E.has(k)?E.delete(k):E.add(k),E})},g=(k,w)=>{d(E=>{const T=new Set(E);for(const C of k.messages)w?T.add(C.id):T.delete(C.id);return T})},y=()=>{const k=Array.from(u);b(k.length),r(k,m),l("done")};return n.jsxs(kc,{open:e,onClose:o,dismissLabel:"Close rescue",children:[i==="review"&&n.jsx(X1,{candidates:t,selected:u,onToggle:x,onToggleGroup:g,onSelectAll:()=>d(new Set(t.map(k=>k.id))),onSelectNone:()=>d(new Set),onContinue:()=>l("destination"),onCancel:o}),i==="destination"&&n.jsx(J1,{count:p,folders:a,destination:m,onPick:f,onMove:y,onBack:()=>l("review")}),i==="done"&&n.jsx(Z1,{count:h,destinationLabel:er(a,m),onClose:o})]})}const li=e=>e.toLocaleString(),Hs=56,ci=320,th=320,sh="cubic-bezier(0.32, 0.9, 0.3, 1)",nh=.5;function wn(e){return Math.sign(e)*Math.sqrt(Math.abs(e))*4}function ah({expanded:e,delta:t,velocity:s,expandedHeight:a,teaserHeight:r,flickVelocity:o=nh}){if(Math.abs(s)>o)return s<0;const i=(a-r)/2;return e?t<i:t<-i}function rh({count:e,mode:t="idle",onCancel:s,onDelete:a,onJunk:r,onMarkRead:o,onSelectSimilar:i,onSomethingElse:l,moveSlot:u,isBusy:d=!1,selectAll:m,statusLabel:f,progress:h,notice:b,startExpanded:v=!1}){const[p,x]=c.useState(v),g=c.useRef(null),[y,k]=c.useState(ci),w=t==="counting"||t==="running";c.useEffect(()=>{w&&x(!0)},[w]),c.useLayoutEffect(()=>{const L=g.current;if(!L)return;const _=()=>k(L.offsetHeight);_();const q=new ResizeObserver(_);return q.observe(L),()=>q.disconnect()},[]);const[E,T]=c.useState(null),C=c.useRef(null),S=c.useRef(!1),D=c.useCallback(L=>{w||(L.currentTarget.setPointerCapture(L.pointerId),C.current={startY:L.clientY,lastY:L.clientY,lastT:L.timeStamp,velocity:0},S.current=!1,T(0))},[w]),z=c.useCallback(L=>{const _=C.current;if(!_)return;const q=L.timeStamp-_.lastT;q>0&&(_.velocity=(L.clientY-_.lastY)/q),_.lastY=L.clientY,_.lastT=L.timeStamp;const X=L.clientY-_.startY;Math.abs(X)>4&&(S.current=!0);const ee=y-Hs,Y=p?X<0?wn(X):Math.min(X,ee+wn(Math.max(0,X-ee))):X>0?wn(X):Math.max(X,-ee+wn(Math.min(0,X+ee)));T(Y)},[p,y]),A=c.useCallback(()=>{const L=C.current;C.current=null,L&&(T(null),x(ah({expanded:p,delta:L.lastY-L.startY,velocity:L.velocity,expandedHeight:y,teaserHeight:Hs})))},[p,y]),P=y-Hs,I=p?0:P,j=E!==null,M=I+(E??0),$=j?"none":`transform ${th}ms ${sh}`,R=m?.checked?`All ${li(e)} loaded selected`:`${li(e)} ${e===1?"message":"messages"} selected`,O=t==="idle"||t==="escalated",N=t==="idle";return n.jsxs("div",{ref:g,"data-selection-sheet":"",className:"absolute inset-x-0 bottom-0 z-30 flex select-none flex-col rounded-t-2xl border-t border-line bg-surface shadow-2xl shadow-black/40",style:{maxHeight:`min(${ci}px, 38dvh)`,minHeight:`${Hs}px`,transform:`translateY(${M}px)`,transition:$},children:[n.jsxs("div",{role:"slider","aria-label":p?"Collapse selection actions":"Expand selection actions","aria-valuemin":0,"aria-valuemax":1,"aria-valuenow":p?1:0,tabIndex:0,onPointerDown:D,onPointerMove:z,onPointerUp:A,onPointerCancel:A,onClick:()=>{if(S.current){S.current=!1;return}!j&&!w&&x(L=>!L)},className:H("flex touch-none flex-col items-center pt-2",w?"":"cursor-grab active:cursor-grabbing"),children:[n.jsx("div",{className:"mb-1.5 h-1 w-10 rounded-full bg-fg-subtle/40"}),n.jsxs("div",{className:"flex w-full items-center gap-2 px-4 pb-3",children:[n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",role:"status","aria-live":"polite",children:f??R}),p?n.jsxs(n.Fragment,{children:[o&&!d&&t!=="counting"&&n.jsx(G,{variant:"ghost",size:"touch",icon:n.jsx(Is,{className:"size-4"}),onPointerDown:L=>L.stopPropagation(),onClick:L=>{L.stopPropagation(),o()},"aria-label":"Mark as read",className:"-my-2 shrink-0"}),n.jsx(G,{variant:"ghost",size:"touch",icon:n.jsx(Ue,{className:"size-4"}),onPointerDown:L=>L.stopPropagation(),onClick:L=>{L.stopPropagation(),s()},"aria-label":"Cancel selection",className:"-my-2 -mr-2 shrink-0"})]}):n.jsxs("span",{className:"flex shrink-0 items-center gap-1 text-xs text-fg-subtle",children:[n.jsx("span",{children:"Swipe up for actions"}),n.jsx(Wm,{className:"size-4"})]})]})]}),n.jsxs("div",{inert:p?void 0:!0,className:"flex min-h-0 flex-1 flex-col overflow-hidden px-4 pb-4",children:[h&&n.jsx("div",{className:"mb-3",children:n.jsx(qr,{value:h.value,max:h.max,tone:h.tone})}),m&&t!=="running"&&n.jsxs("label",{className:"mb-3 flex min-h-11 cursor-pointer items-center gap-3 text-sm font-medium text-fg-muted",children:[n.jsx(on,{"aria-label":"Select all",checked:m.checked,indeterminate:m.indeterminate,onChange:m.onChange}),"Select all loaded"]}),O&&n.jsxs("div",{className:"mb-3 flex items-stretch justify-around gap-1 border-b border-line pb-3",children:[n.jsx(G,{variant:"ghost",onClick:a,icon:d?n.jsx(ut,{className:"size-5 animate-spin"}):n.jsx(st,{className:"size-5 text-danger"}),"aria-label":"Move selected messages to Trash","aria-busy":d||void 0,className:"h-auto flex-1 flex-col gap-1 px-0 py-1.5 text-[11px]",children:"Delete"}),u&&n.jsxs("div",{className:"flex flex-1 flex-col items-center gap-1",children:[u,n.jsx("span",{"aria-hidden":"true",className:"text-[11px] text-fg-muted",children:"Move"})]}),r&&n.jsx(G,{variant:"ghost",onClick:r,icon:n.jsx(Ts,{className:"size-5"}),"aria-label":"Move selected messages to Junk",className:"h-auto flex-1 flex-col gap-1 px-0 py-1.5 text-[11px]",children:"Junk"})]}),N&&(i||l)&&n.jsxs("div",{className:"flex flex-col gap-2",children:[i&&n.jsxs(G,{variant:"primary",onClick:i,className:"h-auto flex-col items-start gap-0 px-4 py-2.5 text-left",children:[n.jsx("span",{className:"text-sm font-semibold leading-tight",children:"Select similar messages"}),n.jsx("span",{className:"text-xs opacity-80",children:"find more like these"})]}),l&&n.jsxs(G,{variant:"secondary",onClick:l,className:"h-auto flex-col items-start gap-0 px-4 py-2.5 text-left",children:[n.jsx("span",{className:"text-sm font-medium leading-tight",children:"Something else"}),n.jsx("span",{className:"text-xs text-fg-subtle",children:"just deal with these"})]})]}),b&&n.jsx(Zt,{tone:b.tone,variant:"soft",role:"status","aria-live":"polite",className:H(O||h?"mt-1":"mt-0"),children:n.jsxs("div",{className:"flex items-center justify-between gap-2",children:[b.text&&n.jsx("span",{children:b.text}),b.action&&n.jsx(G,{variant:"ghost",size:"md",onClick:b.action.onClick,className:"-my-1 min-h-11 shrink-0",children:b.action.label})]})})]})]})}const Ur=[{id:"all",label:"All",tone:"neutral"},{id:"personal",label:"Personal",tone:"accent"},{id:"transactional",label:"Transactional",tone:"positive"},{id:"newsletter",label:"Newsletter",tone:"neutral"},{id:"marketing",label:"Marketing",tone:"warning"},{id:"social",label:"Social",tone:"warning"},{id:"automated",label:"Automated",tone:"neutral"}],Nc={id:"unread",label:"Unread"},oh={id:"flagged",label:"Starred"},Ec={id:"attachment",label:"Has attachment"};function ih(e){if(!(e.length<=1))return e.map(t=>({id:t.id,label:t.label,count:t.count,active:t.active}))}function lh(e=[]){return{categories:[...Ur],filters:a0,sources:ih(e)}}function ch(){return{categories:[...Ur],filters:[Nc,oh,Ec]}}function uh(){return{categories:[...Ur],filters:[Nc,Ec]}}function It(e,t,{checkForDefaultPrevented:s=!0}={}){return function(r){if(e?.(r),s===!1||!r||!r.defaultPrevented)return t?.(r)}}function ui(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function dh(...e){return t=>{let s=!1;const a=e.map(r=>{const o=ui(r,t);return!s&&typeof o=="function"&&(s=!0),o});if(s)return()=>{for(let r=0;r<a.length;r++){const o=a[r];typeof o=="function"?o():ui(e[r],null)}}}}function ss(...e){return c.useCallback(dh(...e),e)}function mh(e,t=[]){let s=[];function a(o,i){const l=c.createContext(i);l.displayName=o+"Context";const u=s.length;s=[...s,i];const d=f=>{const{scope:h,children:b,...v}=f,p=h?.[e]?.[u]||l,x=c.useMemo(()=>v,Object.values(v));return n.jsx(p.Provider,{value:x,children:b})};d.displayName=o+"Provider";function m(f,h,b={}){const{optional:v=!1}=b,p=h?.[e]?.[u]||l,x=c.useContext(p);if(x)return x;if(i!==void 0)return i;if(!v)throw new Error(`\`${f}\` must be used within \`${o}\``)}return[d,m]}const r=()=>{const o=s.map(i=>c.createContext(i));return function(l){const u=l?.[e]||o;return c.useMemo(()=>({[`__scope${e}`]:{...l,[e]:u}}),[l,u])}};return r.scopeName=e,[a,fh(r,...t)]}function fh(...e){const t=e[0];if(e.length===1)return t;const s=()=>{const a=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(o){const i=a.reduce((l,{useScope:u,scopeName:d})=>{const f=u(o)[`__scope${d}`];return{...l,...f}},{});return c.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return s.scopeName=t.scopeName,s}var Gs=globalThis?.document?c.useLayoutEffect:()=>{},hh=wr[" useInsertionEffect ".trim().toString()]||Gs;function gh({prop:e,defaultProp:t,onChange:s=()=>{},caller:a}){const[r,o,i]=ph({defaultProp:t,onChange:s}),l=e!==void 0,u=l?e:r;{const m=c.useRef(e!==void 0);c.useEffect(()=>{const f=m.current;f!==l&&console.warn(`${a} is changing from ${f?"controlled":"uncontrolled"} to ${l?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),m.current=l},[l,a])}const d=c.useCallback(m=>{if(l){const f=bh(m)?m(e):m;f!==e&&i.current?.(f)}else o(m)},[l,e,o,i]);return[u,d]}function ph({defaultProp:e,onChange:t}){const[s,a]=c.useState(e),r=c.useRef(s),o=c.useRef(t);return hh(()=>{o.current=t},[t]),c.useEffect(()=>{r.current!==s&&(o.current?.(s),r.current=s)},[s,r]),[s,a,o]}function bh(e){return typeof e=="function"}function Hr(e){const t=c.forwardRef((s,a)=>{let{children:r,...o}=s,i=null,l=!1;const u=[];di(r)&&typeof jn=="function"&&(r=jn(r._payload)),c.Children.forEach(r,h=>{if(wh(h)){l=!0;const b=h;let v="child"in b.props?b.props.child:b.props.children;di(v)&&typeof jn=="function"&&(v=jn(v._payload)),i=vh(b,v),u.push(i?.props?.children)}else u.push(h)}),i?i=c.cloneElement(i,void 0,u):!l&&c.Children.count(r)===1&&c.isValidElement(r)&&(i=r);const d=i?kh(i):void 0,m=ss(a,d);if(!i){if(r||r===0)throw new Error(l?Nh(e):Ch(e));return r}const f=yh(o,i.props??{});return i.type!==c.Fragment&&(f.ref=a?m:d),c.cloneElement(i,f)});return t.displayName=`${e}.Slot`,t}var Bk=Hr("Slot"),xh=Symbol.for("radix.slottable"),vh=(e,t)=>{if("child"in e.props){const s=e.props.child;return c.isValidElement(s)?c.cloneElement(s,void 0,e.props.children(s.props.children)):null}return c.isValidElement(t)?t:null};function yh(e,t){const s={...t};for(const a in t){const r=e[a],o=t[a];/^on[A-Z]/.test(a)?r&&o?s[a]=(...l)=>{const u=o(...l);return r(...l),u}:r&&(s[a]=r):a==="style"?s[a]={...r,...o}:a==="className"&&(s[a]=[r,o].filter(Boolean).join(" "))}return{...e,...s}}function kh(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,s=t&&"isReactWarning"in t&&t.isReactWarning;return s?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,s=t&&"isReactWarning"in t&&t.isReactWarning,s?e.props.ref:e.props.ref||e.ref)}function wh(e){return c.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===xh}var jh=Symbol.for("react.lazy");function di(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===jh&&"_payload"in e&&Sh(e._payload)}function Sh(e){return typeof e=="object"&&e!==null&&"then"in e}var Ch=e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,Nh=e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,jn=wr[" use ".trim().toString()],Eh=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],vt=Eh.reduce((e,t)=>{const s=Hr(`Primitive.${t}`),a=c.forwardRef((r,o)=>{const{asChild:i,...l}=r,u=i?s:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),n.jsx(u,{...l,ref:o})});return a.displayName=`Primitive.${t}`,{...e,[t]:a}},{});function Ih(e,t){e&&jr.flushSync(()=>e.dispatchEvent(t))}function Xs(e){const t=c.useRef(e);return c.useEffect(()=>{t.current=e}),c.useMemo(()=>((...s)=>t.current?.(...s)),[])}var Th="DismissableLayer",tr="dismissableLayer.update",Rh="dismissableLayer.pointerDownOutside",Mh="dismissableLayer.focusOutside",mi,Wr=c.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),Ic=c.forwardRef((e,t)=>{const{disableOutsidePointerEvents:s=!1,deferPointerDownOutside:a=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:i,onInteractOutside:l,onDismiss:u,...d}=e,m=c.useContext(Wr),[f,h]=c.useState(null),b=f?.ownerDocument??globalThis?.document,[,v]=c.useState({}),p=ss(t,h),x=Array.from(m.layers),[g]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),y=g?x.indexOf(g):-1,k=f?x.indexOf(f):-1,w=m.layersWithOutsidePointerEventsDisabled.size>0,E=k>=y,T=c.useRef(!1),C=Ph(A=>{o?.(A),l?.(A),A.defaultPrevented||u?.()},{ownerDocument:b,deferPointerDownOutside:a,isDeferredPointerDownOutsideRef:T,dismissableSurfaces:m.dismissableSurfaces,shouldHandlePointerDownOutside:c.useCallback(A=>{if(!(A instanceof Node))return!1;const P=[...m.branches].some(I=>I.contains(A));return E&&!P},[m.branches,E])}),S=Lh(A=>{if(a&&T.current)return;const P=A.target;[...m.branches].some(j=>j.contains(P))||(i?.(A),l?.(A),A.defaultPrevented||u?.())},b),D=f?k===x.length-1:!1,z=Xs(A=>{A.key==="Escape"&&(r?.(A),!A.defaultPrevented&&u&&(A.preventDefault(),u()))});return c.useEffect(()=>{if(D)return b.addEventListener("keydown",z,{capture:!0}),()=>b.removeEventListener("keydown",z,{capture:!0})},[b,D,z]),c.useEffect(()=>{if(f)return s&&(m.layersWithOutsidePointerEventsDisabled.size===0&&(mi=b.body.style.pointerEvents,b.body.style.pointerEvents="none"),m.layersWithOutsidePointerEventsDisabled.add(f)),m.layers.add(f),fi(),()=>{s&&(m.layersWithOutsidePointerEventsDisabled.delete(f),m.layersWithOutsidePointerEventsDisabled.size===0&&(b.body.style.pointerEvents=mi))}},[f,b,s,m]),c.useEffect(()=>()=>{f&&(m.layers.delete(f),m.layersWithOutsidePointerEventsDisabled.delete(f),fi())},[f,m]),c.useEffect(()=>{const A=()=>v({});return document.addEventListener(tr,A),()=>document.removeEventListener(tr,A)},[]),n.jsx(vt.div,{...d,ref:p,style:{pointerEvents:w?E?"auto":"none":void 0,...e.style},onFocusCapture:It(e.onFocusCapture,S.onFocusCapture),onBlurCapture:It(e.onBlurCapture,S.onBlurCapture),onPointerDownCapture:It(e.onPointerDownCapture,C.onPointerDownCapture)})});Ic.displayName=Th;var zh="DismissableLayerBranch",Ah=c.forwardRef((e,t)=>{const s=c.useContext(Wr),a=c.useRef(null),r=ss(t,a);return c.useEffect(()=>{const o=a.current;if(o)return s.branches.add(o),()=>{s.branches.delete(o)}},[s.branches]),n.jsx(vt.div,{...e,ref:r})});Ah.displayName=zh;function Dh(){const e=c.useContext(Wr),[t,s]=c.useState(null);return c.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),s}var Oh=()=>!0;function Ph(e,t){const{ownerDocument:s=globalThis?.document,deferPointerDownOutside:a=!1,isDeferredPointerDownOutsideRef:r,dismissableSurfaces:o,shouldHandlePointerDownOutside:i=Oh}=t,l=Xs(e),u=c.useRef(!1),d=c.useRef(!1),m=c.useRef(new Map),f=c.useRef(()=>{});return c.useEffect(()=>{function h(){d.current=!1,r.current=!1,m.current.clear()}function b(){return Array.from(m.current.values()).some(Boolean)}function v(k){if(!d.current)return;const w=k.target;w instanceof Node&&[...o].some(T=>T.contains(w))||m.current.set(k.type,!0),k.type==="click"&&window.setTimeout(()=>{d.current&&f.current()},0)}function p(k){d.current&&m.current.set(k.type,!1)}const x=k=>{if(k.target&&!u.current){let w=function(){s.removeEventListener("click",f.current);const T=b();h(),T||Tc(Rh,l,E,{discrete:!0})};if(!i(k.target)){s.removeEventListener("click",f.current),h(),u.current=!1;return}const E={originalEvent:k};d.current=!0,r.current=a&&k.button===0,m.current.clear(),!a||k.button!==0?w():(s.removeEventListener("click",f.current),f.current=w,s.addEventListener("click",f.current,{once:!0}))}else s.removeEventListener("click",f.current),h();u.current=!1},g=["pointerup","mousedown","mouseup","touchstart","touchend","click"];for(const k of g)s.addEventListener(k,v,!0),s.addEventListener(k,p);const y=window.setTimeout(()=>{s.addEventListener("pointerdown",x)},0);return()=>{window.clearTimeout(y),s.removeEventListener("pointerdown",x),s.removeEventListener("click",f.current);for(const k of g)s.removeEventListener(k,v,!0),s.removeEventListener(k,p)}},[s,l,a,r,o,i]),{onPointerDownCapture:()=>u.current=!0}}function Lh(e,t=globalThis?.document){const s=Xs(e),a=c.useRef(!1);return c.useEffect(()=>{const r=o=>{o.target&&!a.current&&Tc(Mh,s,{originalEvent:o},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,s]),{onFocusCapture:()=>a.current=!0,onBlurCapture:()=>a.current=!1}}function fi(){const e=new CustomEvent(tr);document.dispatchEvent(e)}function Tc(e,t,s,{discrete:a}){const r=s.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:s});t&&r.addEventListener(e,t,{once:!0}),a?Ih(r,o):r.dispatchEvent(o)}var Sn=0,cs=null;function $h(){c.useEffect(()=>{cs||(cs={start:hi(),end:hi()});const{start:e,end:t}=cs;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement("afterbegin",e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement("beforeend",t),Sn++,()=>{Sn===1&&(cs?.start.remove(),cs?.end.remove(),cs=null),Sn=Math.max(0,Sn-1)}},[])}function hi(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var Ma="focusScope.autoFocusOnMount",za="focusScope.autoFocusOnUnmount",gi={bubbles:!1,cancelable:!0},Fh="FocusScope",Rc=c.forwardRef((e,t)=>{const{loop:s=!1,trapped:a=!1,onMountAutoFocus:r,onUnmountAutoFocus:o,...i}=e,[l,u]=c.useState(null),d=Xs(r),m=Xs(o),f=c.useRef(null),h=ss(t,u),b=c.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;c.useEffect(()=>{if(a){let p=function(k){if(b.paused||!l)return;const w=k.target;l.contains(w)?f.current=w:St(f.current,{select:!0})},x=function(k){if(b.paused||!l)return;const w=k.relatedTarget;w!==null&&(l.contains(w)||St(f.current,{select:!0}))},g=function(k){if(document.activeElement===document.body)for(const E of k)E.removedNodes.length>0&&St(l)};document.addEventListener("focusin",p),document.addEventListener("focusout",x);const y=new MutationObserver(g);return l&&y.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",p),document.removeEventListener("focusout",x),y.disconnect()}}},[a,l,b.paused]),c.useEffect(()=>{if(l){bi.add(b);const p=document.activeElement;if(!l.contains(p)){const g=new CustomEvent(Ma,gi);l.addEventListener(Ma,d),l.dispatchEvent(g),g.defaultPrevented||(_h(Hh(Mc(l)),{select:!0}),document.activeElement===p&&St(l))}return()=>{l.removeEventListener(Ma,d),setTimeout(()=>{const g=new CustomEvent(za,gi);l.addEventListener(za,m),l.dispatchEvent(g),g.defaultPrevented||St(p??document.body,{select:!0}),l.removeEventListener(za,m),bi.remove(b)},0)}}},[l,d,m,b]);const v=c.useCallback(p=>{if(!s&&!a||b.paused)return;const x=p.key==="Tab"&&!p.altKey&&!p.ctrlKey&&!p.metaKey,g=document.activeElement;if(x&&g){const y=p.currentTarget,[k,w]=qh(y);k&&w?!p.shiftKey&&g===w?(p.preventDefault(),s&&St(k,{select:!0})):p.shiftKey&&g===k&&(p.preventDefault(),s&&St(w,{select:!0})):g===y&&p.preventDefault()}},[s,a,b.paused]);return n.jsx(vt.div,{tabIndex:-1,...i,ref:h,onKeyDown:v})});Rc.displayName=Fh;function _h(e,{select:t=!1}={}){const s=document.activeElement;for(const a of e)if(St(a,{select:t}),document.activeElement!==s)return}function qh(e){const t=Mc(e),s=pi(t,e),a=pi(t.reverse(),e);return[s,a]}function Mc(e){const t=[],s=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:a=>{const r=a.tagName==="INPUT"&&a.type==="hidden";return a.disabled||a.hidden||r?NodeFilter.FILTER_SKIP:a.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;s.nextNode();)t.push(s.currentNode);return t}function pi(e,t){const s=typeof t.checkVisibility=="function"&&t.checkVisibility({checkVisibilityCSS:!0});for(const a of e)if(!(s?!a.checkVisibility({checkVisibilityCSS:!0}):Bh(a,{upTo:t})))return a}function Bh(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function Kh(e){return e instanceof HTMLInputElement&&"select"in e}function St(e,{select:t=!1}={}){if(e&&e.focus){const s=document.activeElement;e.focus({preventScroll:!0}),e!==s&&Kh(e)&&t&&e.select()}}var bi=Uh();function Uh(){let e=[];return{add(t){const s=e[0];t!==s&&s?.pause(),e=xi(e,t),e.unshift(t)},remove(t){e=xi(e,t),e[0]?.resume()}}}function xi(e,t){const s=[...e],a=s.indexOf(t);return a!==-1&&s.splice(a,1),s}function Hh(e){return e.filter(t=>t.tagName!=="A")}var Wh=wr[" useId ".trim().toString()]||(()=>{}),Vh=0;function Aa(e){const[t,s]=c.useState(Wh());return Gs(()=>{s(a=>a??String(Vh++))},[e]),e||(t?`radix-${t}`:"")}var Qh="Portal",zc=c.forwardRef((e,t)=>{const{container:s,...a}=e,[r,o]=c.useState(!1);Gs(()=>o(!0),[]);const i=s||r&&globalThis?.document?.body;return i?jr.createPortal(n.jsx(vt.div,{...a,ref:t}),i):null});zc.displayName=Qh;function Yh(e,t){return c.useReducer((s,a)=>t[s][a]??s,e)}var na=e=>{const{present:t,children:s}=e,a=Gh(t),r=typeof s=="function"?s({present:a.isPresent}):c.Children.only(s),o=Xh(a.ref,Jh(r));return typeof s=="function"||a.isPresent?c.cloneElement(r,{ref:o}):null};na.displayName="Presence";function Gh(e){const[t,s]=c.useState(),a=c.useRef(null),r=c.useRef(e),o=c.useRef("none"),i=c.useRef(void 0),l=e?"mounted":"unmounted",[u,d]=Yh(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return c.useEffect(()=>{u==="mounted"?(o.current=i.current??Ls(a.current),i.current=void 0):o.current="none"},[u]),Gs(()=>{const m=a.current,f=r.current;if(f!==e){const b=o.current,v=Ls(m);e?(i.current=v,d("MOUNT")):v==="none"||m?.display==="none"?d("UNMOUNT"):d(f&&b!==v?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,d]),Gs(()=>{if(t){let m;const f=t.ownerDocument.defaultView??window,h=v=>{const x=Ls(a.current).includes(CSS.escape(v.animationName));if(v.target===t&&x&&(d("ANIMATION_END"),!r.current)){const g=t.style.animationFillMode;t.style.animationFillMode="forwards",m=f.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=g)})}},b=v=>{v.target===t&&(o.current=Ls(a.current))};return t.addEventListener("animationstart",b),t.addEventListener("animationcancel",h),t.addEventListener("animationend",h),()=>{f.clearTimeout(m),t.removeEventListener("animationstart",b),t.removeEventListener("animationcancel",h),t.removeEventListener("animationend",h)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:c.useCallback(m=>{if(m){const f=getComputedStyle(m);a.current=f,i.current=Ls(f)}else a.current=null;s(m)},[])}}function vi(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Xh(...e){const t=c.useRef(e);return t.current=e,c.useCallback(s=>{const a=t.current;let r=!1;const o=a.map(i=>{const l=vi(i,s);return!r&&typeof l=="function"&&(r=!0),l});if(r)return()=>{for(let i=0;i<o.length;i++){const l=o[i];typeof l=="function"?l():vi(a[i],null)}}},[])}function Ls(e){return e?.animationName||"none"}function Jh(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,s=t&&"isReactWarning"in t&&t.isReactWarning;return s?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,s=t&&"isReactWarning"in t&&t.isReactWarning,s?e.props.ref:e.props.ref||e.ref)}var Zh=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},us=new WeakMap,Cn=new WeakMap,Nn={},Da=0,Ac=function(e){return e&&(e.host||Ac(e.parentNode))},eg=function(e,t){return t.map(function(s){if(e.contains(s))return s;var a=Ac(s);return a&&e.contains(a)?a:(console.error("aria-hidden",s,"in not contained inside",e,". Doing nothing"),null)}).filter(function(s){return!!s})},tg=function(e,t,s,a){var r=eg(t,Array.isArray(e)?e:[e]);Nn[s]||(Nn[s]=new WeakMap);var o=Nn[s],i=[],l=new Set,u=new Set(r),d=function(f){!f||l.has(f)||(l.add(f),d(f.parentNode))};r.forEach(d);var m=function(f){!f||u.has(f)||Array.prototype.forEach.call(f.children,function(h){if(l.has(h))m(h);else try{var b=h.getAttribute(a),v=b!==null&&b!=="false",p=(us.get(h)||0)+1,x=(o.get(h)||0)+1;us.set(h,p),o.set(h,x),i.push(h),p===1&&v&&Cn.set(h,!0),x===1&&h.setAttribute(s,"true"),v||h.setAttribute(a,"true")}catch(g){console.error("aria-hidden: cannot operate on ",h,g)}})};return m(t),l.clear(),Da++,function(){i.forEach(function(f){var h=us.get(f)-1,b=o.get(f)-1;us.set(f,h),o.set(f,b),h||(Cn.has(f)||f.removeAttribute(a),Cn.delete(f)),b||f.removeAttribute(s)}),Da--,Da||(us=new WeakMap,us=new WeakMap,Cn=new WeakMap,Nn={})}},sg=function(e,t,s){s===void 0&&(s="data-aria-hidden");var a=Array.from(Array.isArray(e)?e:[e]),r=Zh(e);return r?(a.push.apply(a,Array.from(r.querySelectorAll("[aria-live], script"))),tg(a,r,s,"aria-hidden")):function(){return null}},Dn="right-scroll-bar-position",On="width-before-scroll-bar",ng="with-scroll-bars-hidden",ag="--removed-body-scroll-bar-size";function Oa(e,t){return typeof e=="function"?e(t):e&&(e.current=t),e}function rg(e,t){var s=c.useState(function(){return{value:e,callback:t,facade:{get current(){return s.value},set current(a){var r=s.value;r!==a&&(s.value=a,s.callback(a,r))}}}})[0];return s.callback=t,s.facade}var og=typeof window<"u"?c.useLayoutEffect:c.useEffect,yi=new WeakMap;function ig(e,t){var s=rg(null,function(a){return e.forEach(function(r){return Oa(r,a)})});return og(function(){var a=yi.get(s);if(a){var r=new Set(a),o=new Set(e),i=s.current;r.forEach(function(l){o.has(l)||Oa(l,null)}),o.forEach(function(l){r.has(l)||Oa(l,i)})}yi.set(s,e)},[e]),s}function lg(e){return e}function cg(e,t){t===void 0&&(t=lg);var s=[],a=!1,r={read:function(){if(a)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return s.length?s[s.length-1]:e},useMedium:function(o){var i=t(o,a);return s.push(i),function(){s=s.filter(function(l){return l!==i})}},assignSyncMedium:function(o){for(a=!0;s.length;){var i=s;s=[],i.forEach(o)}s={push:function(l){return o(l)},filter:function(){return s}}},assignMedium:function(o){a=!0;var i=[];if(s.length){var l=s;s=[],l.forEach(o),i=s}var u=function(){var m=i;i=[],m.forEach(o)},d=function(){return Promise.resolve().then(u)};d(),s={push:function(m){i.push(m),d()},filter:function(m){return i=i.filter(m),s}}}};return r}function ug(e){e===void 0&&(e={});var t=cg(null);return t.options=Ct({async:!0,ssr:!1},e),t}var Dc=function(e){var t=e.sideCar,s=wl(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var a=t.read();if(!a)throw new Error("Sidecar medium not found");return c.createElement(a,Ct({},s))};Dc.isSideCarExport=!0;function dg(e,t){return e.useMedium(t),Dc}var Oc=ug(),Pa=function(){},aa=c.forwardRef(function(e,t){var s=c.useRef(null),a=c.useState({onScrollCapture:Pa,onWheelCapture:Pa,onTouchMoveCapture:Pa}),r=a[0],o=a[1],i=e.forwardProps,l=e.children,u=e.className,d=e.removeScrollBar,m=e.enabled,f=e.shards,h=e.sideCar,b=e.noRelative,v=e.noIsolation,p=e.inert,x=e.allowPinchZoom,g=e.as,y=g===void 0?"div":g,k=e.gapMode,w=wl(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),E=h,T=ig([s,t]),C=Ct(Ct({},w),r);return c.createElement(c.Fragment,null,m&&c.createElement(E,{sideCar:Oc,removeScrollBar:d,shards:f,noRelative:b,noIsolation:v,inert:p,setCallbacks:o,allowPinchZoom:!!x,lockRef:s,gapMode:k}),i?c.cloneElement(c.Children.only(l),Ct(Ct({},C),{ref:T})):c.createElement(y,Ct({},C,{className:u,ref:T}),l))});aa.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};aa.classNames={fullWidth:On,zeroRight:Dn};var mg=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function fg(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=mg();return t&&e.setAttribute("nonce",t),e}function hg(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function gg(e){var t=document.head||document.getElementsByTagName("head")[0];t.appendChild(e)}var pg=function(){var e=0,t=null;return{add:function(s){e==0&&(t=fg())&&(hg(t,s),gg(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},bg=function(){var e=pg();return function(t,s){c.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&s])}},Pc=function(){var e=bg(),t=function(s){var a=s.styles,r=s.dynamic;return e(a,r),null};return t},xg={left:0,top:0,right:0,gap:0},La=function(e){return parseInt(e||"",10)||0},vg=function(e){var t=window.getComputedStyle(document.body),s=t[e==="padding"?"paddingLeft":"marginLeft"],a=t[e==="padding"?"paddingTop":"marginTop"],r=t[e==="padding"?"paddingRight":"marginRight"];return[La(s),La(a),La(r)]},yg=function(e){if(e===void 0&&(e="margin"),typeof window>"u")return xg;var t=vg(e),s=document.documentElement.clientWidth,a=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,a-s+t[2]-t[0])}},kg=Pc(),vs="data-scroll-locked",wg=function(e,t,s,a){var r=e.left,o=e.top,i=e.right,l=e.gap;return s===void 0&&(s="margin"),`
|
|
76
|
-
.`.concat(ng,` {
|
|
77
|
-
overflow: hidden `).concat(a,`;
|
|
78
|
-
padding-right: `).concat(l,"px ").concat(a,`;
|
|
79
|
-
}
|
|
80
|
-
body[`).concat(vs,`] {
|
|
81
|
-
overflow: hidden `).concat(a,`;
|
|
82
|
-
overscroll-behavior: contain;
|
|
83
|
-
`).concat([t&&"position: relative ".concat(a,";"),s==="margin"&&`
|
|
84
|
-
padding-left: `.concat(r,`px;
|
|
85
|
-
padding-top: `).concat(o,`px;
|
|
86
|
-
padding-right: `).concat(i,`px;
|
|
87
|
-
margin-left:0;
|
|
88
|
-
margin-top:0;
|
|
89
|
-
margin-right: `).concat(l,"px ").concat(a,`;
|
|
90
|
-
`),s==="padding"&&"padding-right: ".concat(l,"px ").concat(a,";")].filter(Boolean).join(""),`
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.`).concat(Dn,` {
|
|
94
|
-
right: `).concat(l,"px ").concat(a,`;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.`).concat(On,` {
|
|
98
|
-
margin-right: `).concat(l,"px ").concat(a,`;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.`).concat(Dn," .").concat(Dn,` {
|
|
102
|
-
right: 0 `).concat(a,`;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.`).concat(On," .").concat(On,` {
|
|
106
|
-
margin-right: 0 `).concat(a,`;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
body[`).concat(vs,`] {
|
|
110
|
-
`).concat(ag,": ").concat(l,`px;
|
|
111
|
-
}
|
|
112
|
-
`)},ki=function(){var e=parseInt(document.body.getAttribute(vs)||"0",10);return isFinite(e)?e:0},jg=function(){c.useEffect(function(){return document.body.setAttribute(vs,(ki()+1).toString()),function(){var e=ki()-1;e<=0?document.body.removeAttribute(vs):document.body.setAttribute(vs,e.toString())}},[])},Sg=function(e){var t=e.noRelative,s=e.noImportant,a=e.gapMode,r=a===void 0?"margin":a;jg();var o=c.useMemo(function(){return yg(r)},[r]);return c.createElement(kg,{styles:wg(o,!t,r,s?"":"!important")})},sr=!1;if(typeof window<"u")try{var En=Object.defineProperty({},"passive",{get:function(){return sr=!0,!0}});window.addEventListener("test",En,En),window.removeEventListener("test",En,En)}catch{sr=!1}var ds=sr?{passive:!1}:!1,Cg=function(e){return e.tagName==="TEXTAREA"},Lc=function(e,t){if(!(e instanceof Element))return!1;var s=window.getComputedStyle(e);return s[t]!=="hidden"&&!(s.overflowY===s.overflowX&&!Cg(e)&&s[t]==="visible")},Ng=function(e){return Lc(e,"overflowY")},Eg=function(e){return Lc(e,"overflowX")},wi=function(e,t){var s=t.ownerDocument,a=t;do{typeof ShadowRoot<"u"&&a instanceof ShadowRoot&&(a=a.host);var r=$c(e,a);if(r){var o=Fc(e,a),i=o[1],l=o[2];if(i>l)return!0}a=a.parentNode}while(a&&a!==s.body);return!1},Ig=function(e){var t=e.scrollTop,s=e.scrollHeight,a=e.clientHeight;return[t,s,a]},Tg=function(e){var t=e.scrollLeft,s=e.scrollWidth,a=e.clientWidth;return[t,s,a]},$c=function(e,t){return e==="v"?Ng(t):Eg(t)},Fc=function(e,t){return e==="v"?Ig(t):Tg(t)},Rg=function(e,t){return e==="h"&&t==="rtl"?-1:1},Mg=function(e,t,s,a,r){var o=Rg(e,window.getComputedStyle(t).direction),i=o*a,l=s.target,u=t.contains(l),d=!1,m=i>0,f=0,h=0;do{if(!l)break;var b=Fc(e,l),v=b[0],p=b[1],x=b[2],g=p-x-o*v;(v||g)&&$c(e,l)&&(f+=g,h+=v);var y=l.parentNode;l=y&&y.nodeType===Node.DOCUMENT_FRAGMENT_NODE?y.host:y}while(!u&&l!==document.body||u&&(t.contains(l)||t===l));return(m&&Math.abs(f)<1||!m&&Math.abs(h)<1)&&(d=!0),d},In=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},ji=function(e){return[e.deltaX,e.deltaY]},Si=function(e){return e&&"current"in e?e.current:e},zg=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Ag=function(e){return`
|
|
113
|
-
.block-interactivity-`.concat(e,` {pointer-events: none;}
|
|
114
|
-
.allow-interactivity-`).concat(e,` {pointer-events: all;}
|
|
115
|
-
`)},Dg=0,ms=[];function Og(e){var t=c.useRef([]),s=c.useRef([0,0]),a=c.useRef(),r=c.useState(Dg++)[0],o=c.useState(Pc)[0],i=c.useRef(e);c.useEffect(function(){i.current=e},[e]),c.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(r));var p=r0([e.lockRef.current],(e.shards||[]).map(Si),!0).filter(Boolean);return p.forEach(function(x){return x.classList.add("allow-interactivity-".concat(r))}),function(){document.body.classList.remove("block-interactivity-".concat(r)),p.forEach(function(x){return x.classList.remove("allow-interactivity-".concat(r))})}}},[e.inert,e.lockRef.current,e.shards]);var l=c.useCallback(function(p,x){if("touches"in p&&p.touches.length===2||p.type==="wheel"&&p.ctrlKey)return!i.current.allowPinchZoom;var g=In(p),y=s.current,k="deltaX"in p?p.deltaX:y[0]-g[0],w="deltaY"in p?p.deltaY:y[1]-g[1],E,T=p.target,C=Math.abs(k)>Math.abs(w)?"h":"v";if("touches"in p&&C==="h"&&T.type==="range")return!1;var S=window.getSelection(),D=S&&S.anchorNode,z=D?D===T||D.contains(T):!1;if(z)return!1;var A=wi(C,T);if(!A)return!0;if(A?E=C:(E=C==="v"?"h":"v",A=wi(C,T)),!A)return!1;if(!a.current&&"changedTouches"in p&&(k||w)&&(a.current=E),!E)return!0;var P=a.current||E;return Mg(P,x,p,P==="h"?k:w)},[]),u=c.useCallback(function(p){var x=p;if(!(!ms.length||ms[ms.length-1]!==o)){var g="deltaY"in x?ji(x):In(x),y=t.current.filter(function(E){return E.name===x.type&&(E.target===x.target||x.target===E.shadowParent)&&zg(E.delta,g)})[0];if(y&&y.should){x.cancelable&&x.preventDefault();return}if(!y){var k=(i.current.shards||[]).map(Si).filter(Boolean).filter(function(E){return E.contains(x.target)}),w=k.length>0?l(x,k[0]):!i.current.noIsolation;w&&x.cancelable&&x.preventDefault()}}},[]),d=c.useCallback(function(p,x,g,y){var k={name:p,delta:x,target:g,should:y,shadowParent:Pg(g)};t.current.push(k),setTimeout(function(){t.current=t.current.filter(function(w){return w!==k})},1)},[]),m=c.useCallback(function(p){s.current=In(p),a.current=void 0},[]),f=c.useCallback(function(p){d(p.type,ji(p),p.target,l(p,e.lockRef.current))},[]),h=c.useCallback(function(p){d(p.type,In(p),p.target,l(p,e.lockRef.current))},[]);c.useEffect(function(){return ms.push(o),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:h}),document.addEventListener("wheel",u,ds),document.addEventListener("touchmove",u,ds),document.addEventListener("touchstart",m,ds),function(){ms=ms.filter(function(p){return p!==o}),document.removeEventListener("wheel",u,ds),document.removeEventListener("touchmove",u,ds),document.removeEventListener("touchstart",m,ds)}},[]);var b=e.removeScrollBar,v=e.inert;return c.createElement(c.Fragment,null,v?c.createElement(o,{styles:Ag(r)}):null,b?c.createElement(Sg,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Pg(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Lg=dg(Oc,Og);var _c=c.forwardRef(function(e,t){return c.createElement(aa,Ct({},e,{ref:t,sideCar:Lg}))});_c.classNames=aa.classNames;var $g=class extends Sr{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type="infinite",super.setOptions(e)}getOptimisticResult(e){return e._type="infinite",super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"forward"}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:"backward"}}})}createResult(e,t){const{state:s}=e,a=super.createResult(e,t),{isFetching:r,isRefetching:o,isError:i,isRefetchError:l}=a,u=s.fetchMeta?.fetchMore?.direction,d=i&&u==="forward",m=r&&u==="forward",f=i&&u==="backward",h=r&&u==="backward";return{...a,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:i0(t,s.data),hasPreviousPage:o0(t,s.data),isFetchNextPageError:d,isFetchingNextPage:m,isFetchPreviousPageError:f,isFetchingPreviousPage:h,isRefetchError:l&&!d&&!f,isRefetching:o&&!m&&!h}}};function Ci(e,t){const s=new Set(t);return e.filter(a=>!s.has(a))}function Fg(e,t,s){const a=e.slice(0);return a[t]=s,a}var _g=class extends l0{#s;#e;#r;#a;#t;#n;#o;#i;#l;#c=[];constructor(e,t,s){super(),this.#s=e,this.#a=s,this.#r=[],this.#t=[],this.#e=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#t.forEach(e=>{e.subscribe(t=>{this.#f(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#t.forEach(e=>{e.destroy()})}setQueries(e,t){this.#r=e,this.#a=t,Va.batch(()=>{const s=this.#t,a=this.#m(this.#r);a.forEach(m=>m.observer.setOptions(m.defaultedQueryOptions));const r=a.map(m=>m.observer),o=r.map(m=>m.getCurrentResult()),i=s.length!==r.length,l=r.some((m,f)=>m!==s[f]),u=i||l,d=u?!0:o.some((m,f)=>{const h=this.#e[f];return!h||!c0(m,h)});!u&&!d||(u&&(this.#c=a,this.#t=r),this.#e=o,this.hasListeners()&&(u&&(Ci(s,r).forEach(m=>{m.destroy()}),Ci(r,s).forEach(m=>{m.subscribe(f=>{this.#f(m,f)})})),this.#h()))})}getCurrentResult(){return this.#e}getQueries(){return this.#t.map(e=>e.getCurrentQuery())}getObservers(){return this.#t}getOptimisticResult(e,t){const s=this.#m(e),a=s.map(o=>o.observer.getOptimisticResult(o.defaultedQueryOptions)),r=s.map(o=>o.defaultedQueryOptions.queryHash);return[a,o=>this.#d(o??a,t,r),()=>this.#u(a,s)]}#u(e,t){return t.map((s,a)=>{const r=e[a];return s.defaultedQueryOptions.notifyOnChangeProps?r:s.observer.trackResult(r,o=>{t.forEach(i=>{i.observer.trackProp(o)})})})}#d(e,t,s){if(t){const a=this.#l,r=s!==void 0&&a!==void 0&&(a.length!==s.length||s.some((o,i)=>o!==a[i]));return(!this.#n||this.#e!==this.#i||r||t!==this.#o)&&(this.#o=t,this.#i=this.#e,s!==void 0&&(this.#l=s),this.#n=u0(this.#n,t(e))),this.#n}return e}#g(){return this.#a?.combine!==void 0&&this.#t.some((e,t)=>e.options.suspense&&this.#e[t]?.data===void 0)}#m(e){const t=new Map;this.#t.forEach(a=>{const r=a.options.queryHash;if(!r)return;const o=t.get(r);o?o.push(a):t.set(r,[a])});const s=[];return e.forEach(a=>{const r=this.#s.defaultQueryOptions(a),i=t.get(r.queryHash)?.shift()??new Sr(this.#s,r);s.push({defaultedQueryOptions:r,observer:i})}),s}#f(e,t){const s=this.#t.indexOf(e);s!==-1&&(this.#e=Fg(this.#e,s,t),this.#h())}#h(){if(this.hasListeners()){const e=this.#u(this.#e,this.#c),t=this.#g(),s=this.#n,a=t?s:this.#d(e,this.#a?.combine);(t||s!==a)&&Va.batch(()=>{this.listeners.forEach(r=>{r(this.#e)})})}}};function Pt({queries:e,...t},s){const a=ye(),r=d0(),o=m0(),i=c.useMemo(()=>e.map(p=>{const x=a.defaultQueryOptions(p);return x._optimisticResults=r?"isRestoring":"optimistic",x}),[e,a,r]);i.forEach(p=>{f0(p);const x=a.getQueryCache().get(p.queryHash);h0(p,o,x)}),g0(o);const[l]=c.useState(()=>new _g(a,i,t)),[u,d,m]=l.getOptimisticResult(i,t.combine),f=!r&&t.subscribed!==!1;c.useSyncExternalStore(c.useCallback(p=>f?l.subscribe(Va.batchCalls(p)):p0,[l,f]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),c.useEffect(()=>{l.setQueries(i,t)},[i,t,l]);const b=u.some((p,x)=>To(i[x],p))?u.flatMap((p,x)=>{const g=i[x];if(g&&To(g,p)){const y=new Sr(a,g);return b0(g,y,o)}return[]}):[];if(b.length>0)throw Promise.all(b);const v=u.find((p,x)=>{const g=i[x];return g&&x0({result:p,errorResetBoundary:o,throwOnError:g.throwOnError,query:a.getQueryCache().get(g.queryHash),suspense:g.suspense})});if(v?.error)throw v.error;return d(m())}function qc(e,t){return v0(e,$g)}function qg(e,t){if(e===void 0)return{shouldBlockFn:()=>!0,withResolver:!1};if("shouldBlockFn"in e)return e;if(typeof e=="function")return{shouldBlockFn:async()=>await e(),enableBeforeUnload:!0,withResolver:!1};const s=!!(e.condition??!0),a=e.blockerFn;return{shouldBlockFn:async()=>s&&a!==void 0?await a():s,enableBeforeUnload:s,withResolver:a===void 0}}function Bg(e,t){const{shouldBlockFn:s,enableBeforeUnload:a=!0,disabled:r=!1,withResolver:o=!1}=qg(e),i=Cr(),{history:l}=i,[u,d]=c.useState({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0});return c.useEffect(()=>{const m=async f=>{function h(g){const y=i.parseLocation(g),k=i.getMatchedRoutes(y.pathname);return k.foundRoute===void 0?{routeId:"__notFound__",fullPath:y.pathname,pathname:y.pathname,params:k.routeParams,search:i.options.parseSearch(g.search)}:{routeId:k.foundRoute.id,fullPath:k.foundRoute.fullPath,pathname:y.pathname,params:k.routeParams,search:i.options.parseSearch(g.search)}}const b=h(f.currentLocation),v=h(f.nextLocation);if(b.routeId==="__notFound__"&&v.routeId!=="__notFound__")return!1;const p=await s({action:f.action,current:b,next:v});if(!o)return p;if(!p)return!1;const x=await new Promise(g=>{d({status:"blocked",current:b,next:v,action:f.action,proceed:()=>g(!1),reset:()=>g(!0)})});return d({status:"idle",current:void 0,next:void 0,action:void 0,proceed:void 0,reset:void 0}),x};return r?void 0:l.block({blockerFn:m,enableBeforeUnload:a})},[s,a,r,o,l,i]),u}function gt(e){const t=Cr({warn:e?.router===void 0}),s=e?.router||t;return jl(s.stores.__store,Sl(e,s))}function ra(e){const t=Cr();return jl(t.stores.location,Sl(e,t))}const Kg=new Set(["outbox","flagged"]),Ug=e=>{const[,t,s]=e.split(/[?#]/)[0].split("/");return t!=="mail"||!s?!1:!Kg.has(s)};function Hg(e){const t=Pt({queries:e.map(s=>({...He({path:{accountId:s.accountId}}),staleTime:1/0}))});for(const[s,a]of e.entries()){const r=t[s];if(!r||r.isPending)return;const o=r.data?.items??[];if(o.length===0)continue;const i=Ns(a.folderAppointments);return(o.find(u=>i.get(u.mailboxId)==="inbox")??o[0])?.mailboxId}}function Bc(e){const{openCompose:t}=zt(),s=ze(),a=ra(),r=Hg(e);return c.useCallback(()=>{if(Ug(a.pathname)){c.startTransition(()=>{t({mode:"new"})});return}r&&(c.startTransition(()=>{t({mode:"new"})}),s({to:"/mail/$mailboxId",params:{mailboxId:r}}))},[t,s,a.pathname,r])}const Wg=e=>e.startsWith("/mail")||e.startsWith("/settings"),Vg=({accounts:e})=>{const{state:t}=zt(),s=ra(),a=Bc(e),r=s.search,o=typeof r?.selectedMessageId=="string"&&r.selectedMessageId.length>0;return!Wg(s.pathname)||t.isOpen||o?null:n.jsx("button",{type:"button",onClick:a,"aria-label":"Compose new message",className:"lg:hidden fixed right-4 z-30 h-14 w-14 rounded-full bg-accent text-accent-fg shadow-lg flex items-center justify-center hover:opacity-90 active:scale-95 transition-all",style:{bottom:"calc(env(safe-area-inset-bottom, 0) + 1rem)"},children:n.jsx(Xm,{className:"size-6"})})},Kc=({trigger:e,children:t,align:s="right"})=>{const[a,r]=c.useState(!1),o=c.useRef(null),i=c.useCallback(u=>{o.current&&!o.current.contains(u.target)&&r(!1)},[]),l=c.useCallback(u=>{u.key==="Escape"&&r(!1)},[]);return c.useEffect(()=>(a&&(document.addEventListener("mousedown",i),document.addEventListener("keydown",l)),()=>{document.removeEventListener("mousedown",i),document.removeEventListener("keydown",l)}),[a,i,l]),n.jsxs("div",{ref:o,className:"relative",children:[n.jsx("button",{type:"button",onClick:u=>{u.stopPropagation(),r(!a)},className:ge("p-1.5 min-h-11 min-w-11 inline-flex items-center justify-center rounded-md transition-colors","hover:bg-surface-raised text-fg-muted hover:text-fg"),children:e}),a&&n.jsx("div",{className:ge("absolute z-50 mt-1 min-w-[180px] py-1","bg-surface border border-line rounded-md shadow-lg",s==="right"?"right-0":"left-0"),children:t})]})},ps=({onClick:e,disabled:t,destructive:s,children:a})=>n.jsx("button",{type:"button",onClick:r=>{r.stopPropagation(),t||e()},disabled:t,className:ge("w-full px-3 py-2 text-left text-sm transition-colors","flex items-center gap-2",t&&"opacity-50 cursor-not-allowed",!t&&"hover:bg-surface-raised",s&&"text-danger hover:text-danger"),children:a}),nr=()=>n.jsx("div",{className:"my-1 h-px bg-line"}),Uc=({children:e})=>{const{Account:t}=Nr();return n.jsx(t,{children:e})},Qg=({email:e,onSignOut:t})=>{const s=ze(),a=e??"Account";return n.jsxs(Kc,{trigger:n.jsx(ct,{name:a,email:e??void 0,size:"sm"}),align:"right",children:[e&&n.jsxs(n.Fragment,{children:[n.jsx("div",{className:"px-3 py-2 text-xs text-fg-muted truncate",title:e,"data-testid":"account-menu-email",children:e}),n.jsx(nr,{})]}),n.jsxs(ps,{onClick:()=>s({to:"/settings/accounts"}),children:[n.jsx(_r,{className:"size-4"}),"Settings"]}),n.jsx(nr,{}),n.jsxs(ps,{onClick:t,children:[n.jsx(ac,{className:"size-4"}),"Sign out"]})]})},Yg=()=>n.jsx(Uc,{children:({email:e,signOut:t})=>n.jsx(Qg,{email:e,onSignOut:t})}),Ni=()=>{const e=Er(),t=Ir(e);window.open(t,"_blank","noopener,noreferrer")};function Hc({variant:e="icon"}){return e==="drawer"?n.jsxs("button",{type:"button",onClick:Ni,className:"flex w-full items-center gap-2 rounded-md px-2 py-1 text-sm text-fg-muted transition-colors hover:bg-surface hover:text-fg",children:[n.jsx($o,{className:"size-4 shrink-0"}),n.jsx("span",{className:"flex-1 truncate text-left",children:"Report a bug"})]}):n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx($o,{className:"size-4"}),title:"Report a bug","aria-label":"Report a bug",onClick:Ni})}const Wc="/mail/",Vr="/mail/$mailboxId",Vc="/mail/outbox",Qc="/mail/flagged";function Qr(e){return e.some(t=>t.routeId===Wc)}function ln(e){return e.some(t=>t.routeId===Qc)}function oa(e){return e.some(t=>t.routeId===Vc)}function Yc(e){return e.some(t=>t.routeId===Vr)}function Gg(e){const t=e.find(s=>s.params?.mailboxId)?.params?.mailboxId;return t?`${Vr}:${t}`:ln(e)?Qc:oa(e)?Vc:Qr(e)?Wc:""}const Pn="search-scope";function Xg(e){const t=e.trim().replace(/\s+/g," ").toLowerCase();return/\s/.test(t)?`in:"${t}"`:`in:${t}`}function Gc(e){return ln(e)||oa(e)||Yc(e)}function Xc(e){return e.find(t=>t.routeId===Vr)?.params?.mailboxId}function Jg(e){const t=Xc(e.matches);return t||(Gc(e.matches)?e.callerMailboxId:e.callerMailboxId??e.inTokenMailboxId)}function Zg(e,t){return Qr(e)?{kind:"global"}:ln(e)?{kind:"scoped",chip:{id:Pn,label:"is:starred"}}:oa(e)?{kind:"scoped",chip:{id:Pn,label:"in:outbox"}}:Yc(e)?t?{kind:"scoped",chip:{id:Pn,label:Xg(t)}}:{kind:"pending"}:{kind:"global"}}function ep(e,t,s){return t.kind==="global"?{kind:"global"}:ln(e)?{kind:"collection"}:{kind:"folder",...s?{role:s}:{}}}const Jc=({accounts:e})=>{const t=Tr({strict:!1}),s=ra(),a=t.mailboxId,{t:r}=Gn("mail",{useSuspense:!1}),o=c.useCallback((l,u)=>r(l,{defaultValue:u}),[r]),i=Pt({queries:e.map(l=>({...He({path:{accountId:l.accountId}}),staleTime:1/0}))});if(s.pathname.startsWith("/mail/outbox"))return"Outbox";if(!a)return null;for(let l=0;l<e.length;l++){const u=i[l]?.data?.items;if(!u)continue;const d=u.find(f=>f.mailboxId===a);if(!d)continue;const m=Ns(e[l].folderAppointments);return ys(d,m.get(a),o)}return null},tp=({accounts:e})=>{const s=Tr({strict:!1}).mailboxId,a=Pt({queries:e.map(r=>({...He({path:{accountId:r.accountId}}),staleTime:1/0}))});if(!s)return null;for(const r of a){const o=r.data?.items;if(!o)continue;const i=o.find(l=>l.mailboxId===s);if(i)return i.unseenCount}return null};function Zc(e){const t=ze(),{searchInput:s}=je(),a=Jc({accounts:e}),r=gt({select:l=>l.matches}),o=Zg(r,a),i=c.useCallback(l=>{l===Pn&&t({to:"/mail",search:{q:s||void 0,selectedMessageId:void 0}})},[t,s]);return{scope:o,clearScope:i}}const eu=[{title:"Navigation",hints:[{action:"focusNext",keys:["j"],description:"Focus next message"},{action:"focusPrevious",keys:["k"],description:"Focus previous message"},{action:"focusNext",keys:["↓"],description:"Focus next message"},{action:"focusPrevious",keys:["↑"],description:"Focus previous message"},{action:"focusFirst",keys:["Home"],description:"Focus first"},{action:"focusLast",keys:["End"],description:"Focus last"},{action:"openFocused",keys:["Enter"],description:"Open focused thread"},{action:"back",keys:["Esc"],description:"Back / close overlay"}]},{title:"Selection",hints:[{action:"toggleSelect",keys:["x"],description:"Toggle select"},{action:"toggleSelect",keys:["Space"],description:"Toggle select"},{action:"extendSelectDown",keys:["Shift","j"],description:"Extend selection down"},{action:"extendSelectUp",keys:["Shift","k"],description:"Extend selection up"},{action:"extendSelectDown",keys:["Shift","↓"],description:"Extend selection down"},{action:"extendSelectUp",keys:["Shift","↑"],description:"Extend selection up"},{action:"selectAll",keys:["⌘","A"],description:"Select all"}]},{title:"Actions",hints:[{action:"reply",keys:["r"],description:"Reply"},{action:"replyAll",keys:["a"],description:"Reply all"},{action:"forward",keys:["f"],description:"Forward"},{action:"delete",keys:["#"],description:"Delete"},{action:"toggleStar",keys:["s"],description:"Star / unstar"},{action:"toggleRead",keys:["u"],description:"Toggle read / unread"}]},{title:"Sender",hints:[{action:"muteSender",keys:["m"],description:"Mute sender"},{action:"blockSender",keys:["b"],description:"Block sender"},{action:"vipSender",keys:["v"],description:"VIP sender"},{action:"markJunk",keys:["!"],description:"Mark junk"}]},{title:"Go to",hints:[{action:"goBrief",keys:["g","b"],description:"Daily brief"},{action:"goInbox",keys:["g","i"],description:"Inbox"},{action:"goSent",keys:["g","s"],description:"Sent"},{action:"goFlagged",keys:["g","f"],description:"Starred"},{action:"goSettings",keys:["g",","],description:"Settings"}]},{title:"View & global",hints:[{action:"toggleIntelligence",keys:["i"],description:"Toggle intelligence"},{action:"toggleDensity",keys:["d"],description:"Toggle density"},{action:"focusSearch",keys:["/"],description:"Focus search"},{action:"compose",keys:["c"],description:"Compose"},{action:"compose",keys:["⌘","N"],description:"Compose"},{action:"help",keys:["?"],description:"Shortcut help"}]}];function sp(e){for(const t of eu){const s=t.hints.find(a=>a.action===e);if(s)return s.keys}}function hs(e){const t=sp(e);return!t||t.length===0?"":t.length===1?`(${t[0]})`:t[0]==="g"?`(${t.join(" then ")})`:`(${t.join("")})`}const np={global:"Search all mail",pending:"Search mail",scoped:"Search this folder"};function ap({accounts:e}){const{searchInput:t,onSearchChange:s,onSearchClear:a,onSearchClearQuery:r}=je(),o=Bc(e),{scope:i,clearScope:l}=Zc(e),u=i.kind==="scoped"?[{id:i.chip.id,label:i.chip.label,tone:"scope"}]:void 0,d=np[i.kind];return n.jsx(l1,{search:n.jsx(Br,{value:t,onChange:s,onClear:a,onClearQuery:r,chips:u,onRemoveChip:l,placeholder:d,size:"lg"}),actions:n.jsxs(n.Fragment,{children:[n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(ef,{className:"size-4"}),title:`Compose ${hs("compose")}`,"aria-label":"Compose",onClick:o}),n.jsx(Hc,{}),n.jsx(Yg,{})]})})}const Yr=({isOpen:e,onClose:t,children:s,ariaLabel:a="Navigation",side:r="left",widthClassName:o="w-[80vw] max-w-[320px]"})=>{const i=c.useRef(null),l=c.useRef(null);if(c.useEffect(()=>{if(!e)return;l.current=document.activeElement;const d=h=>{h.key==="Escape"&&(h.preventDefault(),t())};document.addEventListener("keydown",d),i.current?.querySelector("button, [href], input, select, textarea, [tabindex]:not([tabindex='-1'])")?.focus();const f=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.removeEventListener("keydown",d),document.body.style.overflow=f,l.current?.focus()}},[e,t]),!e)return null;const u=r==="left"?"left-0 border-r animate-in slide-in-from-left duration-150":"right-0 border-l animate-in slide-in-from-right duration-150";return n.jsxs("div",{className:"fixed inset-0 z-50 lg:hidden",role:"dialog","aria-modal":"true","aria-label":a,children:[n.jsx("button",{type:"button","aria-label":"Close menu",onClick:t,className:"absolute inset-0 bg-black/40 animate-in fade-in duration-150 cursor-default"}),n.jsxs("div",{ref:i,className:ge("absolute top-0 bottom-0 bg-canvas border-line shadow-xl flex flex-col",o,u),children:[n.jsx("div",{className:"flex items-center justify-end h-12 px-2 border-b border-line shrink-0",children:n.jsx("button",{type:"button",onClick:t,className:"p-2 rounded-md hover:bg-surface-raised transition-colors min-h-11 min-w-11 inline-flex items-center justify-center","aria-label":"Close menu",children:n.jsx(Ue,{className:"size-5"})})}),n.jsx("div",{className:"flex-1 overflow-y-auto",children:s})]})]})},rp=e=>{const t=e.filter(r=>!r.isMultipart&&r.disposition!=="attachment"&&r.mediaType==="TEXT"&&r.contentUrl.length>0),s=t.find(r=>r.mediaSubtype.toUpperCase()==="HTML");if(s)return{kind:"html",contentUrl:s.contentUrl};const a=t.find(r=>r.mediaSubtype.toUpperCase()==="PLAIN");return a?{kind:"text",contentUrl:a.contentUrl}:null},ar={all:["messages"],detail:e=>[...ar.all,"detail",e],body:e=>[...ar.detail(e),"body"]};class Wt extends Error{reason;status;retryAfterSeconds;constructor(t,s,a,r){super(s),this.name="BodyFetchError",this.reason=t,this.status=a,this.retryAfterSeconds=r}}const op=e=>{const t=Number.parseInt(e??"",10);return!Number.isFinite(t)||t<=0?1:Math.min(t,30)},ip=8,lp="x-remit-403-reason",cp=(e,t)=>{const s=t?.trim()??"";return e===401?"auth":e===403?s.length>0?"auth":"body-missing":e===404?"body-missing":"generic"},up=(e,t)=>(t??"").toLowerCase().startsWith("text/html")?/<div\s+id=["']root["']/i.test(e):!1,dp=(e,t)=>{const s=(t??"").toLowerCase();return!!(e==="text"&&s.startsWith("text/html"))},mp=async(e,t,s=async()=>null)=>{const a={},r=await s();r&&(a.Authorization=`Bearer ${r}`);const o=await y0(e,{headers:a});if(o.status===202)throw new Wt("not-ready","Message body is still syncing",202,op(o.headers.get("Retry-After")));if(!o.ok){const u=o.headers.get(lp),d=cp(o.status,u);throw new Wt(d,`Failed to load message body (${o.status} ${o.statusText})`,o.status)}const i=o.headers.get("content-type");if(dp(t,i))throw new Wt("content-type-mismatch",`Refusing to render message body — expected ${t}, got Content-Type ${i}`);const l=await o.text();if(up(l,i))throw new Wt("spa-shell-leak","Refusing to render message body — response looks like the SPA shell (CloudFront 403/404 fallback leaked through to /content/*)");return l},fp=async(e,t)=>(t.isRetryAfterNotReady&&await e.refetchDescribeMessage(),e.fetchContent(t.contentUrl,t.kind)),tu=({messageId:e,bodyParts:t,enabled:s=!0})=>{const a=t?rp(t):null,r=tn(),{getToken:o}=Nr(),i=c.useRef(null),l=ye(),u=c.useRef(!1),d=c.useRef(null),m=e&&a?`${e}:${a.contentUrl}`:null;d.current!==m&&(d.current=m,u.current=!1);const f=ce({queryKey:e?[...ar.body(e),a?.contentUrl??null]:["messages","body","noop"],queryFn:()=>{if(!a)throw new Error("No renderable body part");if(!e)throw new Error("No messageId");const v=u.current;return u.current=!1,fp({fetchContent:(p,x)=>mp(p,x,o),refetchDescribeMessage:()=>l.refetchQueries({queryKey:Cl({path:{messageId:e}})})},{contentUrl:a.contentUrl,kind:a.kind,isRetryAfterNotReady:v})},enabled:s&&!!e&&!!a,staleTime:300*1e3,gcTime:1800*1e3,retry:(v,p)=>p instanceof Wt&&p.reason==="not-ready"?v<ip:v<1,retryDelay:(v,p)=>p instanceof Wt&&p.reason==="not-ready"?(u.current=!0,(p.retryAfterSeconds??1)*1e3):1e3,meta:{softError:!0}}),h=f.isLoading&&!!a;c.useEffect(()=>{h&&(i.current=performance.now())},[h]),c.useEffect(()=>{f.isSuccess&&i.current!==null&&(r.recordTiming("message.body.load",Math.round(performance.now()-i.current)),i.current=null)},[f.isSuccess,r]);const b=f.data&&a?{kind:a.kind,body:f.data}:void 0;return{picked:a,data:b,isLoading:h,isError:f.isError,error:f.error,refetch:f.refetch}},hp=({outboxMessageId:e,onDraftCreated:t})=>{const[s,a]=c.useState("idle"),[r,o]=c.useState(null),i=c.useRef(void 0),l=ye(),u=xe(Nl()),d=xe(k0()),m=c.useCallback(async v=>{if(a("saving"),o(null),e){const x=await d.mutateAsync({path:{outboxMessageId:e},body:{toAddresses:v.toAddresses,ccAddresses:v.ccAddresses,bccAddresses:v.bccAddresses,subject:v.subject,textBody:v.textBody,htmlBody:v.htmlBody,inReplyTo:v.inReplyTo,references:v.references}});return a("saved"),x}const p=await u.mutateAsync({body:{...v,sendImmediately:!1}});return t(p.outboxMessageId),a("saved"),l.invalidateQueries({queryKey:Xn().queryKey}),p},[e,u,d,t,l]),f=c.useCallback(v=>{i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{m(v).catch(p=>{o(p),a("error")})},2e3)},[m]),h=c.useCallback(v=>(i.current&&clearTimeout(i.current),m(v)),[m]),b=c.useCallback(()=>{i.current&&clearTimeout(i.current)},[]);return{saveStatus:s,saveError:r,saveDraft:f,saveImmediately:h,cancelAutoSave:b}},su=e=>"text"in e&&!("children"in e),nu=e=>e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""),gp=e=>{let t=nu(e.text);return e.bold&&(t=`<strong>${t}</strong>`),e.italic&&(t=`<em>${t}</em>`),t},au=e=>{const t=e.children.map(s=>su(s)?gp(s):au(s)).join("");switch(e.type){case"blockquote":return`<blockquote>${t}</blockquote>`;case"a":{const s=e.url??"";return`<a href="${nu(s)}">${t}</a>`}default:return`<p>${t}</p>`}},Ei=e=>e.map(au).join(""),ru=e=>su(e)?e.text:e.children.map(ru).join(""),rr=e=>e.map(ru).join(`
|
|
116
|
-
`),pp=e=>e.displayName?`${e.displayName} <${e.normalizedEmail}>`:e.normalizedEmail,Ii=e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim()),bp=e=>{const t=e.trim();if(!t)return;const s=t.match(/^(.+?)\s*<([^>]+)>$/);if(s){const a=s[1].trim(),r=s[2].trim();if(Ii(r))return{email:r,displayName:a}}if(Ii(t))return{email:t}},$a=({label:e,addresses:t,onChange:s,placeholder:a})=>{const[r,o]=c.useState(""),[i,l]=c.useState(-1),[u,d]=c.useState(!1),m=c.useRef(null),f=c.useRef(null),h=Pl(r,200),{data:b}=ce({...El({query:{q:h,limit:8}}),enabled:h.length>=2}),v=b?.items??[],p=new Set(t.map(C=>C.email.toLowerCase())),x=v.filter(C=>!p.has(C.normalizedEmail.toLowerCase()));c.useEffect(()=>{l(-1),d(x.length>0&&r.length>=2)},[x.length,r.length]);const g=c.useCallback(C=>{p.has(C.email.toLowerCase())||(s([...t,C]),o(""),d(!1))},[t,p,s]),y=c.useCallback(C=>{s(t.filter((S,D)=>D!==C))},[t,s]),k=c.useCallback(C=>{g({email:C.normalizedEmail,displayName:C.displayName}),m.current?.focus()},[g]),w=c.useCallback(()=>{const C=bp(r);C&&g(C)},[r,g]),E=c.useCallback(C=>{if(C.key==="Backspace"&&r===""&&t.length>0){y(t.length-1);return}if(C.key==="Enter"||C.key==="Tab"||C.key===","){if(i>=0&&x[i]){C.preventDefault(),k(x[i]);return}r.trim()&&(C.preventDefault(),w());return}if(C.key==="ArrowDown"&&u){C.preventDefault(),l(S=>S<x.length-1?S+1:0);return}if(C.key==="ArrowUp"&&u){C.preventDefault(),l(S=>S>0?S-1:x.length-1);return}C.key==="Escape"&&(d(!1),l(-1))},[r,t.length,i,x,u,y,k,w]),T=c.useCallback(()=>{setTimeout(()=>{w(),d(!1)},150)},[w]);return n.jsxs("div",{className:"relative",children:[n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsxs("label",{htmlFor:`address-field-${e}`,className:"text-sm text-fg-muted shrink-0 w-12 pt-1.5",children:[e,":"]}),n.jsxs("div",{className:"flex-1 flex flex-wrap items-center gap-1 min-h-[36px] px-2 py-1 border rounded-md bg-canvas cursor-text",onClick:()=>m.current?.focus(),onKeyDown:C=>{(C.key==="Enter"||C.key===" ")&&m.current?.focus()},children:[t.map((C,S)=>n.jsx(af,{email:C.email,displayName:C.displayName,onRemove:()=>y(S)},C.email)),n.jsx("input",{ref:m,id:`address-field-${e}`,type:"text",value:r,onChange:C=>o(C.target.value),onKeyDown:E,onBlur:T,placeholder:t.length===0?a:"",className:"flex-1 min-w-[120px] bg-transparent outline-none text-sm py-0.5"})]})]}),u&&x.length>0&&n.jsx("ul",{ref:f,className:"absolute left-12 right-0 mt-1 bg-surface border border-line rounded-md shadow-lg z-50 max-h-[200px] overflow-auto",children:x.map((C,S)=>n.jsx("li",{className:ge("px-3 py-2 text-sm cursor-pointer transition-colors",S===i&&"bg-accent-2-soft"),onMouseDown:D=>{D.preventDefault(),k(C)},onMouseEnter:()=>l(S),children:pp(C)},C.addressId))})]})},xp=({accountId:e})=>{const t=ze();return n.jsxs("div",{role:"alert","data-testid":"compose-smtp-missing-banner",className:"flex items-start gap-3 border-b border-warning/50 bg-warning/10 px-3 py-2",children:[n.jsx(kr,{className:"size-5 shrink-0 mt-0.5 text-warning","aria-hidden":"true"}),n.jsxs("div",{className:"flex-1 min-w-0",children:[n.jsx("p",{className:"text-sm font-medium text-warning",children:"This account can't send mail until SMTP is configured."}),n.jsxs("button",{type:"button",onClick:()=>{t({to:"/settings/accounts",search:{editAccountId:e,focusSmtp:!0}})},className:"mt-1 inline-flex items-center gap-1 text-xs font-medium text-warning hover:underline",children:["Configure SMTP",n.jsx(Bm,{className:"size-3","aria-hidden":"true"})]})]})]})},or=e=>{const[t,s]=c.useState(()=>typeof window>"u"||!window.matchMedia?!1:window.matchMedia(e).matches);return c.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const a=window.matchMedia(e),r=o=>s(o.matches);return s(a.matches),a.addEventListener("change",r),()=>a.removeEventListener("change",r)},[e]),t},Lt=()=>or("(min-width: 1024px)"),Ti=150,vp=()=>{const[e,t]=c.useState(()=>{if(typeof window>"u"||!window.visualViewport)return{viewportHeight:0,isKeyboardOpen:!1};const s=window.visualViewport.height;return{viewportHeight:s,isKeyboardOpen:window.innerHeight-s>Ti}});return c.useEffect(()=>{if(typeof window>"u"||!window.visualViewport)return;const s=window.visualViewport,a=()=>{const r=s.height;t({viewportHeight:r,isKeyboardOpen:window.innerHeight-r>Ti})};return a(),s.addEventListener("resize",a),()=>s.removeEventListener("resize",a)},[]),e},yp=({selectedAccountId:e,onSelect:t})=>{const{data:s}=ce({...xt(),staleTime:1/0}),a=s?.accounts??[];if(c.useEffect(()=>{!e&&a.length===1&&a[0]&&t(a[0])},[e,a,t]),a.length<=1){const r=a[0];return r?n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx("label",{className:"text-sm text-fg-muted shrink-0 w-12 pt-1.5",children:"From:"}),n.jsx("div",{className:"text-sm py-1.5",children:r.email})]}):null}return n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx("label",{htmlFor:"from-account-selector",className:"text-sm text-fg-muted shrink-0 w-12 pt-1.5",children:"From:"}),n.jsx("select",{id:"from-account-selector",value:e??"",onChange:r=>{const o=a.find(i=>i.accountId===r.target.value);o&&t(o)},className:"flex-1 px-2 py-1.5 border rounded-md bg-canvas text-sm",children:a.map(r=>n.jsx("option",{value:r.accountId,children:r.email},r.accountId))})]})},kp=({value:e,onChange:t})=>n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx("label",{className:"text-sm text-fg-muted shrink-0 w-12 pt-1.5",children:"Subj:"}),n.jsx("input",{type:"text",value:e,onChange:s=>t(s.target.value),className:"flex-1 px-2 py-1.5 border rounded-md bg-canvas text-sm",placeholder:"Subject","data-subject-field":!0})]}),wp=["p","br","strong","b","em","i","a","blockquote","ul","ol","li"],jp=["href"],Sp=e=>xl.sanitize(e,{ALLOWED_TAGS:wp,ALLOWED_ATTR:jp}),Cp=c.lazy(()=>j0(()=>import("./ComposeBody-Dv8GTCX-.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12])).then(e=>({default:e.ComposeBody}))),Np=()=>n.jsxs("div",{className:"min-h-[120px] px-3 py-2",children:[n.jsx("div",{className:"h-8 mb-2 rounded bg-surface-sunken animate-pulse"}),n.jsx("div",{className:"min-h-[80px] rounded bg-surface-sunken/50 animate-pulse"})]}),ou=[{type:"p",children:[{text:""}]}],Ep=[{type:"p",children:[{text:""}]},{type:"p",children:[{text:"-- "}]}],Ip=e=>e?[...Ep,{type:"p",children:[{text:e}]}]:ou,Tp=e=>e?/^re:\s/i.test(e)?e:`Re: ${e}`:"Re: ",Rp=e=>e?/^fwd?:\s/i.test(e)?e:`Fwd: ${e}`:"Fwd: ",Mp=(e,t,s)=>{const{envelope:a}=e,o=(a.replyTo.length>0?a.replyTo:a.from).map(d=>({email:d.normalizedEmail,displayName:d.displayName}));if(t!=="reply_all")return{to:o,cc:[]};const i=s?.toLowerCase(),l=new Set(o.map(d=>d.email.toLowerCase())),u=[...a.to,...a.cc].filter(d=>d.normalizedEmail.toLowerCase()!==i&&!l.has(d.normalizedEmail.toLowerCase())).map(d=>({email:d.normalizedEmail,displayName:d.displayName}));return{to:o,cc:u}},zp=e=>{const t=e.envelope.messageIdValue,a=[...e.references.filter(r=>r.referenceType==="references").sort((r,o)=>r.referenceOrder-o.referenceOrder).map(r=>r.messageIdValue)];return t&&!a.includes(t)&&a.push(t),{inReplyTo:t,references:a}},Ap=(e,t,s,a,r)=>e.length===0&&t.length===0&&s.length===0&&a.trim()===""&&rr(r).trim()==="",Dp=({selectedAccountId:e,onAccountChange:t,toAddresses:s,setToAddresses:a,ccAddresses:r,setCcAddresses:o,bccAddresses:i,setBccAddresses:l,showCc:u,setShowCc:d,showBcc:m,setShowBcc:f,subject:h,setSubject:b})=>{const v=Lt(),{isKeyboardOpen:p}=vp();if(!v&&p){const g=[];return s.length>0&&g.push(`To: ${s.map(y=>y.displayName??y.email).join(", ")}`),r.length>0&&g.push(`Cc: ${r.length}`),i.length>0&&g.push(`Bcc: ${i.length}`),h&&g.push(h),n.jsxs("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-line overflow-hidden","data-testid":"compose-header-collapsed",children:[n.jsx("span",{className:"truncate text-xs text-fg-muted",children:g.length>0?g.join(" · "):"…"}),n.jsx("span",{className:"shrink-0 inline-flex items-center justify-center rounded bg-surface-sunken px-1.5 py-0.5 text-2xs text-fg-muted",children:"…"})]})}return n.jsxs("div",{className:"space-y-1 px-3 py-2 border-b border-line",children:[n.jsx(yp,{selectedAccountId:e,onSelect:t}),n.jsx($a,{label:"To",addresses:s,onChange:a,placeholder:"Recipients"}),u?n.jsx($a,{label:"Cc",addresses:r,onChange:o}):n.jsxs("div",{className:"flex gap-2 pl-14",children:[n.jsx("button",{type:"button",onClick:()=>d(!0),className:"text-xs text-fg-muted hover:text-fg transition-colors",children:"Cc"}),n.jsx("button",{type:"button",onClick:()=>f(!0),className:"text-xs text-fg-muted hover:text-fg transition-colors",children:"Bcc"})]}),u&&!m&&n.jsx("div",{className:"pl-14",children:n.jsx("button",{type:"button",onClick:()=>f(!0),className:"text-xs text-fg-muted hover:text-fg transition-colors",children:"Bcc"})}),m&&n.jsx($a,{label:"Bcc",addresses:i,onChange:l}),n.jsx(kp,{value:h,onChange:b})]})},Gr=({mode:e,account:t,sourceMessage:s,onClose:a,onAccountChange:r})=>{const{state:o,setOutboxMessageId:i,startSendPolling:l}=zt(),{pushError:u}=Je(),{outboxMessageId:d}=o,[m,f]=c.useState([]),[h,b]=c.useState([]),[v,p]=c.useState([]),[x,g]=c.useState(""),[y,k]=c.useState(!1),[w,E]=c.useState(!1),[T,C]=c.useState(t?.accountId),[S,D]=c.useState(!1),z=c.useRef(d);c.useEffect(()=>{z.current!==d&&(z.current=d,d&&(f([]),b([]),p([]),g(""),k(!1),E(!1),I(ou),D(!1)))},[d]);const{signature:A}=Z0(T),[P,I]=c.useState(()=>Ip(A.plainText)),{data:j}=ce({...w0({path:{outboxMessageId:d??""}}),enabled:!!d&&!S});c.useEffect(()=>{!j||S||(f(j.toAddresses.map(J=>({email:J,displayName:void 0}))),j.ccAddresses&&j.ccAddresses.length>0&&(b(j.ccAddresses.map(J=>({email:J,displayName:void 0}))),k(!0)),j.bccAddresses&&j.bccAddresses.length>0&&(p(j.bccAddresses.map(J=>({email:J,displayName:void 0}))),E(!0)),j.subject&&g(j.subject),j.textBody&&I([{type:"p",children:[{text:j.textBody}]}]),C(j.accountId),D(!0))},[j,S]),c.useEffect(()=>{if(s){if(e==="reply"||e==="reply_all"){const{to:J,cc:re}=Mp(s,e,t?.email);f(J),b(re),re.length>0&&k(!0),g(Tp(s.envelope.subject))}e==="forward"&&g(Rp(s.envelope.subject))}},[e,s,t?.email]);const M=e==="reply"||e==="reply_all"||e==="forward",{data:$}=tu({messageId:s?.message.messageId,bodyParts:s?.bodyParts,enabled:M&&!!s}),R=$?.kind==="text"?$.body:"",O=$?.kind==="html"?Sp($.body):void 0,N=s?.envelope.from[0]?.displayName??s?.envelope.from[0]?.normalizedEmail,{saveStatus:L,saveError:_,saveDraft:q,cancelAutoSave:X}=hp({outboxMessageId:d,onDraftCreated:i});c.useEffect(()=>{_&&u({title:"Couldn't save draft",detail:it(_)??"Saving the draft failed.",error:_})},[_,u]);const ee=xe(Nl()),Y=xe(Il()),fe=xe({...Jn(),onError:J=>{u(Yt("Couldn't discard draft","The draft wasn't discarded.",J))}}),{data:ue}=ce({...xt(),staleTime:1/0}),te=ue?.accounts.find(J=>J.accountId===T),U=te?X0(te):!1,K=ee.isPending||Y.isPending,ae=m.length>0&&!!T&&!U;c.useEffect(()=>{if(!T||d&&!S||Ap(m,h,v,x,P))return;const J=rr(P),re=Ei(P);q({accountId:T,toAddresses:m.map(de=>de.email),ccAddresses:h.length>0?h.map(de=>de.email):void 0,bccAddresses:v.length>0?v.map(de=>de.email):void 0,subject:x||void 0,textBody:J||void 0,htmlBody:re||void 0})},[T,d,S,m,h,v,x,P,q]);const Pe=c.useCallback(async()=>{if(!T||m.length===0)return;X();const J=s&&(e==="reply"||e==="reply_all")?zp(s):{};let re=d,de=!1;if(!re){const We=rr(P),Le=Ei(P),pe=await ee.mutateAsync({body:{accountId:T,toAddresses:m.map(ke=>ke.email),ccAddresses:h.length>0?h.map(ke=>ke.email):void 0,bccAddresses:v.length>0?v.map(ke=>ke.email):void 0,subject:x||void 0,textBody:We||void 0,htmlBody:Le||void 0,sendImmediately:!0,...J}}).catch(ke=>(u({title:"Couldn't send message",detail:it(ke)??"Saving the draft failed.",error:ke}),null));if(pe===null)return;re=pe.outboxMessageId,de=!0,i(re)}await Y.mutateAsync({path:{outboxMessageId:re}}).catch(We=>(u({title:"Couldn't send message",detail:it(We)??(de?"The draft was saved but the send request failed. Try again from the Outbox.":"The send request failed. Try again."),error:We}),null))!==null&&(l(re),a())},[T,m,h,v,x,P,e,s,d,ee,Y,X,l,i,u,a]),Te=c.useCallback(()=>{X(),d&&fe.mutate({path:{outboxMessageId:d}}),a()},[X,d,fe,a]),V=c.useCallback(J=>{C(J.accountId),r?.(J)},[r]);return n.jsx(x1,{banner:te&&U?n.jsx(xp,{accountId:te.accountId}):void 0,header:n.jsx(Dp,{selectedAccountId:T,onAccountChange:V,toAddresses:m,setToAddresses:f,ccAddresses:h,setCcAddresses:b,bccAddresses:v,setBccAddresses:p,showCc:y,setShowCc:k,showBcc:w,setShowBcc:E,subject:x,setSubject:g}),quoted:R||O?n.jsx(B1,{text:R,html:O,senderName:N}):void 0,actionBar:n.jsx(b1,{onSend:Pe,onDiscard:Te,sending:K,canSend:ae,saveStatus:L,unavailableReason:U?"SMTP not configured":void 0,onUnavailable:J=>u({title:"Can't send yet",detail:J})}),children:n.jsx(c.Suspense,{fallback:n.jsx(Np,{}),children:n.jsx(Cp,{value:P,onChange:I,onSubmit:Pe,autoFocus:e==="new"})})})},Ri=({mode:e,account:t,sourceMessage:s,onClose:a})=>n.jsx("div",{className:"border-t border-line bg-canvas max-h-[400px] flex flex-col",children:n.jsx(Gr,{mode:e,account:t,sourceMessage:s,onClose:a})}),iu=({message:e,icon:t})=>n.jsxs("div",{className:"flex flex-col items-center justify-center p-8 text-center",children:[t&&n.jsx("div",{className:"mb-4 text-fg-muted",children:t}),n.jsx("p",{className:"text-fg-muted",children:e})]}),Xr=({enabled:e=!0,bindings:t,capture:s=!1})=>{const a=c.useCallback(r=>{const o=r.target;if(!(o.tagName==="INPUT"||o.tagName==="TEXTAREA"||o.isContentEditable))for(const i of t){if(!(r.key.toLowerCase()===i.key.toLowerCase())||i.requireShift!==void 0&&i.requireShift!==r.shiftKey)continue;const u=r.ctrlKey||r.metaKey;if(i.requireMeta!==void 0){if(i.requireMeta!==u)continue}else{const d=i.noModifiers??!0,m=u||r.altKey||i.requireShift===void 0&&r.shiftKey;if(d&&m)continue}i.preventDefault&&r.preventDefault(),i.stopPropagation&&(r.stopPropagation(),r.stopImmediatePropagation()),i.handler(r);return}},[t]);c.useEffect(()=>{if(e)return window.addEventListener("keydown",a,s),()=>window.removeEventListener("keydown",a,s)},[e,a,s])},lu=e=>{const{data:t,isLoading:s}=ce({...xt(),staleTime:1/0}),a=c.useMemo(()=>(t?.accounts??[]).map(l=>l.accountId),[t?.accounts]),r=Pt({queries:a.map(l=>({...He({path:{accountId:l}}),staleTime:1/0,enabled:!!e}))}),o=s||r.some(l=>l.isLoading);return{accountId:c.useMemo(()=>{if(e){for(let l=0;l<a.length;l++)if((r[l].data?.items??[]).some(m=>m.mailboxId===e))return a[l]}},[e,a,r]),isLoading:o}},Op=e=>typeof e=="object"&&e!==null&&Array.isArray(e.pages),Pp=e=>typeof e=="object"&&e!==null&&Array.isArray(e.items),cu=(e,t)=>e===void 0?e:Op(e)?{...e,pages:e.pages.map(s=>({...s,items:t(s.items)}))}:Pp(e)?{...e,items:t(e.items)}:e,$t=e=>{const t=[];for(const s of new Set(e))t.push(Rr({path:{mailboxId:s}})),t.push(Tl({path:{mailboxId:s}}));return t.push(Rl()),t},cn=(e,t)=>Promise.all(t.map(s=>e.cancelQueries({queryKey:s}))),un=(e,t)=>t.flatMap(s=>e.getQueriesData({queryKey:s})).filter(s=>s[1]!==void 0).map(([s,a])=>({queryKey:s,data:a})),dn=(e,t,s)=>{const a=r=>cu(r,s);for(const r of t)e.setQueriesData({queryKey:r},a)},mn=(e,t)=>{for(const s of t)e.setQueryData(s.queryKey,s.data)},Ft=(e,t)=>{for(const s of t)e.invalidateQueries({queryKey:s})},Lp=3e3,$p=(e,t,s)=>{if(e.length===0)return()=>{};const a=setTimeout(()=>s(e),t);return()=>clearTimeout(a)},Jr=(e,t,s)=>{const a=new Map(t.map(o=>[o.messageId,o.mailboxId])),r=new Set;for(const o of e)r.add(a.get(o)??s);return[...r]},Bn=(e,t,s)=>e.map(a=>t.has(a.messageId)?{...a,isRead:s}:a),Fp=(e,t,s,a)=>e.filter(r=>!r.isRead&&t.has(r.threadMessageId)&&!s.has(r.messageId)&&!a.has(r.messageId)).map(r=>r.messageId),_p=({messages:e,expandedIds:t,threadId:s,mailboxId:a,accountId:r})=>{const o=ye(),{pushError:i}=Je(),l=c.useRef(new Set),u=c.useRef(new Set),{mutate:d}=xe({...Zn(),onMutate:async h=>{const b=new Set(h.body.messageIds??[]),v=h.body.isRead??!0,p=ts({path:{threadId:s}}),x=$t(Jr(b,e,a));await Promise.all([o.cancelQueries({queryKey:p}),cn(o,x)]);const g=o.getQueriesData({queryKey:p}).filter(k=>k[1]!==void 0).map(([k,w])=>({queryKey:k,data:w})),y=un(o,x);return o.setQueriesData({queryKey:p},k=>k&&{...k,items:Bn(k.items,b,v)}),dn(o,x,k=>Bn(k,b,v)),{threadMessagesPrefix:p,listPrefixes:x,previousThreadMessages:g,previousThreadsList:y}},onSuccess:(h,b)=>{const v=b.body.messageIds??[];for(const p of v)l.current.add(p),u.current.delete(p)},onError:(h,b,v)=>{const p=b.body.messageIds??[];for(const g of p)u.current.delete(g);if(v){for(const g of v.previousThreadMessages)o.setQueryData(g.queryKey,g.data);mn(o,v.previousThreadsList)}const x=b.body.isRead??!0;i({title:x?"Couldn't mark as read":"Couldn't mark as unread",detail:it(h),error:h})},onSettled:(h,b,v,p)=>{p&&(o.invalidateQueries({queryKey:p.threadMessagesPrefix}),Ft(o,p.listPrefixes),r&&o.invalidateQueries({queryKey:es({path:{accountId:r}})}))}}),m=c.useCallback(h=>{const b=h.filter(v=>!l.current.has(v)&&!u.current.has(v));if(b.length!==0){for(const v of b)u.current.add(v);d({body:{messageIds:b,isRead:!0}})}},[d]),f=c.useMemo(()=>Fp(e,t,l.current,u.current),[e,t]);c.useEffect(()=>$p(f,Lp,m),[f,m]),c.useEffect(()=>{l.current.clear(),u.current.clear()},[s])},ia=e=>{const{mailboxId:t,accountId:s,messages:a}=e,r=ye(),{pushError:o}=Je(),{mutate:i,isPending:l}=xe({...Zn(),onError:(d,m)=>{const f=m.body.isRead??!0;o({title:f?"Couldn't mark as read":"Couldn't mark as unread",detail:it(d),error:d})},onSettled:(d,m,f)=>{Ft(r,$t(Jr(f.body.messageIds??[],a??[],t))),s&&r.invalidateQueries({queryKey:es({path:{accountId:s}})})}});return{toggleReadFor:c.useCallback((d,m)=>{d.length!==0&&i({body:{messageIds:d,isRead:m}})},[i]),isPending:l}},qp=60,Bp=1.5,Kp=(e,t,s)=>{const a=Math.abs(e),r=Math.abs(t);return a<s?{direction:null}:a<r*Bp?{direction:null}:{direction:e<0?"left":"right"}},Up=({onSwipeLeft:e,onSwipeRight:t,thresholdPx:s=qp})=>{const a=c.useRef(null),r=c.useCallback(u=>{if(u.pointerType==="mouse"){a.current=null;return}a.current={x:u.clientX,y:u.clientY}},[]),o=c.useCallback(()=>{},[]),i=c.useCallback(u=>{const d=a.current;if(a.current=null,!d)return;const{direction:m}=Kp(u.clientX-d.x,u.clientY-d.y,s);m==="left"&&e?.(),m==="right"&&t?.()},[e,t,s]),l=c.useCallback(()=>{a.current=null},[]);return{handlers:{onPointerDown:r,onPointerMove:o,onPointerUp:i,onPointerCancel:l}}},Hp=(e,t,s)=>t?.find(a=>a.messageId===e)?.mailboxId??s,Mi=(e,t,s)=>e.map(a=>a.messageId===t?{...a,hasStars:s}:a),Zr=({threadId:e,mailboxId:t,messages:s})=>{const a=ye(),{pushError:r}=Je(),{mutate:o,isPending:i,variables:l}=xe({...S0(),onMutate:async d=>{const m=d.path.messageId,f=d.body.isStarred??!1,h=ts({path:{threadId:e}}),b=$t([Hp(m,s,t)]);await Promise.all([a.cancelQueries({queryKey:h}),cn(a,b)]);const v=a.getQueriesData({queryKey:h}).filter(x=>x[1]!==void 0).map(([x,g])=>({queryKey:x,data:g})),p=un(a,b);return a.setQueriesData({queryKey:h},x=>cu(x,g=>Mi(g,m,f))),dn(a,b,x=>Mi(x,m,f)),{threadMessagesPrefix:h,listPrefixes:b,previousThreadMessages:v,previousThreadsList:p}},onError:(d,m,f)=>{if(f){for(const b of f.previousThreadMessages)a.setQueryData(b.queryKey,b.data);mn(a,f.previousThreadsList)}const h=m.body.isStarred??!1;r({title:h?"Couldn't star message":"Couldn't unstar message",detail:it(d),error:d})},onSettled:(d,m,f,h)=>{h&&(a.invalidateQueries({queryKey:h.threadMessagesPrefix}),Ft(a,h.listPrefixes))}});return{toggleStar:(d,m)=>{o({path:{messageId:d},body:{isStarred:!m}})},isPending:i,pendingMessageId:i?l?.path.messageId:void 0}};function la(e){return e===void 0?"uncategorized":e}const rt={uncategorized:"uncategorized",personal:"personal",newsletter:"newsletter",marketing:"marketing",automated:"automated",transactional:"transactional",social:"social"},zi={MoveToInbox:"MoveToInbox",MoveToJunk:"MoveToJunk"},Wp={inbox:"Inbox",junk:"Junk"},eo=e=>e.destinationMailboxId!==void 0,Vp=(e,t)=>{if(eo(e))return`Moved from ${t??"another folder"} by Remit`;const s=e.fromPlacement??"";return`Moved from ${Wp[s]??"another folder"} by Remit`},Qp=(e,t)=>{if(e===zi.MoveToInbox)return t.inboxMailboxId;if(e===zi.MoveToJunk)return t.junkMailboxId},Yp=(e,t,s)=>{if(!e||!t)return!1;const a=eo(e)?e.destinationMailboxId:Qp(e.action,s);return a!==void 0&&a===t},Gp=(e,t)=>{if(e){if(eo(e))return e.fromMailboxId;if(e.fromPlacement==="inbox")return t.inboxMailboxId;if(e.fromPlacement==="junk")return t.junkMailboxId}},ca=(e,t)=>{const{data:s,isLoading:a}=ce({...xt(),staleTime:1/0,enabled:!!e});return{mailboxId:c.useMemo(()=>e?s?.accounts.find(i=>i.accountId===e)?.folderAppointments.find(i=>i.role===t)?.mailboxId:void 0,[s,e,t]),isLoading:a}},Xp=e=>{const{mailboxId:t,isLoading:s}=ca(e,"Archive");return{archiveMailboxId:t,isLoading:s}},Jp=e=>{const{mailboxId:t,isLoading:s}=ca(e,"Drafts");return{draftsMailboxId:t,isLoading:s}},to=e=>{const{mailboxId:t,isLoading:s}=ca(e,"Inbox");return{inboxMailboxId:t,isLoading:s}},ua=e=>{const{mailboxId:t,isLoading:s}=ca(e,"Junk");return{junkMailboxId:t,isLoading:s}},uu=e=>{const{data:t}=ce({...xt(),staleTime:1/0,enabled:!!e});return c.useMemo(()=>t?.accounts.find(s=>s.accountId===e)?.folderAppointments??[],[t,e])},Ai=(e,t)=>e.filter(s=>!t.has(s.messageId)),Gt=({mailboxId:e,threadId:t,accountId:s,onAfterOptimisticRemove:a})=>{const r=ye(),{pushError:o}=Je(),{mutate:i,isPending:l}=xe({...C0(),onMutate:async d=>{const m=new Set(d.body.messageIds??[]),f=t?ts({path:{threadId:t}}):[],h=$t([e,d.body.destinationMailboxId]);await Promise.all([...t?[r.cancelQueries({queryKey:f})]:[],cn(r,h)]);const b=t?r.getQueriesData({queryKey:f}).filter(p=>p[1]!==void 0).map(([p,x])=>({queryKey:p,data:x})):[],v=un(r,h);return t&&r.setQueriesData({queryKey:f},p=>p&&{...p,items:Ai(p.items,m)}),dn(r,h,p=>Ai(p,m)),a?.(Array.from(m)),{threadMessagesPrefix:f,listPrefixes:h,previousThreadMessages:b,previousThreadsList:v}},onError:(d,m,f)=>{if(f){for(const b of f.previousThreadMessages)r.setQueryData(b.queryKey,b.data);mn(r,f.previousThreadsList)}const h=m.body.messageIds?.length??0;o({title:h>1?`Couldn't move ${h} messages`:"Couldn't move this message",detail:it(d),error:d})},onSettled:(d,m,f,h)=>{h&&(t&&r.invalidateQueries({queryKey:h.threadMessagesPrefix}),Ft(r,h.listPrefixes),s&&r.invalidateQueries({queryKey:es({path:{accountId:s}})}))}});return{moveMessages:c.useCallback((d,m)=>{d.length!==0&&i({body:{messageIds:d,destinationMailboxId:m}})},[i]),isPending:l}},Zp=({accountId:e,messageId:t,threadId:s,mailboxId:a,autoMoved:r})=>{const{inboxMailboxId:o}=to(e),{junkMailboxId:i}=ua(e),{moveMessages:l,isPending:u}=Gt({mailboxId:a,threadId:s,accountId:e}),{data:d}=ce({...He({path:{accountId:e??""}}),staleTime:1/0,enabled:!!e&&r?.fromMailboxId!==void 0}),m={inboxMailboxId:o,junkMailboxId:i},f=Yp(r,a,m),h=Gp(r,m),b=c.useCallback(()=>{h&&l([t],h)},[l,t,h]);if(!f||!r)return{show:!1,label:"",isUndoing:!1};const v=r.fromMailboxId?d?.items.filter(p=>p.mailboxId===r.fromMailboxId).map(p=>ks(p.fullPath))[0]:void 0;return{show:!0,label:Vp(r,v),onUndo:h?b:void 0,isUndoing:u,...r.filterId?{filtersHref:"/settings/filters"}:{}}};function du({accountId:e,messageId:t,threadId:s,mailboxId:a,autoMoved:r,size:o="sm"}){const i=Zp({accountId:e,messageId:t,threadId:s,mailboxId:a,autoMoved:r});return i.show?n.jsx(c1,{label:i.label,size:o,onUndo:i.onUndo,undoLabel:i.isUndoing?"Undoing…":"Undo",filtersHref:o==="md"?i.filtersHref:void 0}):null}const Di=(e,t)=>e.filter(s=>!t.has(s.messageId)),eb=e=>e.filter(t=>t.isDeleted!==!0),Xt=({mailboxId:e,threadId:t,accountId:s,messages:a,onAfterOptimisticRemove:r})=>{const o=ye(),{pushError:i}=Je(),{mutate:l,isPending:u}=xe({...N0(),onMutate:async m=>{const f=new Set(m.body.messageIds??[]),h=t?ts({path:{threadId:t}}):[],b=$t(Jr(f,a??[],e));await Promise.all([o.cancelQueries({queryKey:h}),cn(o,b)]);const v=t?o.getQueriesData({queryKey:h}).filter(x=>x[1]!==void 0).map(([x,g])=>({queryKey:x,data:g})):[],p=un(o,b);return t&&o.setQueriesData({queryKey:h},x=>x&&{...x,items:Di(x.items,f)}),dn(o,b,x=>Di(x,f)),r?.(Array.from(f)),{threadMessagesPrefix:h,listPrefixes:b,previousThreadMessages:v,previousThreadsList:p}},onError:(m,f,h)=>{if(h){for(const v of h.previousThreadMessages)o.setQueryData(v.queryKey,v.data);mn(o,h.previousThreadsList)}const b=f.body.messageIds?.length??0;i({title:b>1?`Couldn't delete ${b} messages`:"Couldn't delete this message",detail:it(m),error:m})},onSettled:(m,f,h,b)=>{b&&(t&&o.invalidateQueries({queryKey:b.threadMessagesPrefix}),Ft(o,b.listPrefixes),s&&o.invalidateQueries({queryKey:es({path:{accountId:s}})}))}});return{deleteMessages:c.useCallback(m=>{m.length!==0&&l({body:{messageIds:m}})},[l]),isPending:u}},mu=(e,t=Date.now())=>({value:e,setAt:t}),tb=(e,t,s,a)=>{if(e.addressId!==t)return e;const r={...e.flags??{}};return s?r.trusted=mu(!0,a):delete r.trusted,{...e,flags:r}},sb=(e,t,s,a)=>{const r=o=>o.map(i=>tb(i,t,s,a));return{...e,envelope:{...e.envelope,from:r(e.envelope.from),to:r(e.envelope.to),cc:r(e.envelope.cc),bcc:r(e.envelope.bcc),replyTo:r(e.envelope.replyTo)}}},so=({messageId:e})=>{const t=ye(),{pushError:s}=Je(),{mutate:a,isPending:r,error:o,reset:i}=xe({...Ml(),onMutate:async u=>{const d=u.path.addressId,f=u.body.flags?.trusted?.value===!0,h=Cl({path:{messageId:e}});await t.cancelQueries({queryKey:h});const b=t.getQueriesData({queryKey:h}).filter(v=>v[1]!==void 0).map(([v,p])=>({queryKey:v,data:p}));return t.setQueriesData({queryKey:h},v=>v&&sb(v,d,f)),{describePrefix:h,previous:b}},onError:(u,d,m)=>{if(m)for(const f of m.previous)t.setQueryData(f.queryKey,f.data);s(Yt("Couldn't trust sender","The change wasn't saved.",u))},onSettled:(u,d,m,f)=>{f&&t.invalidateQueries({queryKey:f.describePrefix})}});return{toggleTrusted:(u,d)=>{a({path:{addressId:u},body:{flags:{trusted:mu(!d)}}})},isPending:r,error:o,reset:i}};var da="Dialog",[fu]=mh(da),[nb,nt]=fu(da),hu=e=>{const{__scopeDialog:t,children:s,open:a,defaultOpen:r,onOpenChange:o,modal:i=!0}=e,l=c.useRef(null),u=c.useRef(null),[d,m]=gh({prop:a,defaultProp:r??!1,onChange:o,caller:da});return n.jsx(nb,{scope:t,triggerRef:l,contentRef:u,contentId:Aa(),titleId:Aa(),descriptionId:Aa(),open:d,onOpenChange:m,onOpenToggle:c.useCallback(()=>m(f=>!f),[m]),modal:i,children:s})};hu.displayName=da;var gu="DialogTrigger",ab=c.forwardRef((e,t)=>{const{__scopeDialog:s,...a}=e,r=nt(gu,s),o=ss(t,r.triggerRef);return n.jsx(vt.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.open?r.contentId:void 0,"data-state":ao(r.open),...a,ref:o,onClick:It(e.onClick,r.onOpenToggle)})});ab.displayName=gu;var no="DialogPortal",[rb,pu]=fu(no,{forceMount:void 0}),bu=e=>{const{__scopeDialog:t,forceMount:s,children:a,container:r}=e,o=nt(no,t);return n.jsx(rb,{scope:t,forceMount:s,children:c.Children.map(a,i=>n.jsx(na,{present:s||o.open,children:n.jsx(zc,{asChild:!0,container:r,children:i})}))})};bu.displayName=no;var Kn="DialogOverlay",xu=c.forwardRef((e,t)=>{const s=pu(Kn,e.__scopeDialog),{forceMount:a=s.forceMount,...r}=e,o=nt(Kn,e.__scopeDialog);return o.modal?n.jsx(na,{present:a||o.open,children:n.jsx(ib,{...r,ref:t})}):null});xu.displayName=Kn;var ob=Hr("DialogOverlay.RemoveScroll"),ib=c.forwardRef((e,t)=>{const{__scopeDialog:s,...a}=e,r=nt(Kn,s),o=Dh(),i=ss(t,o);return n.jsx(_c,{as:ob,allowPinchZoom:!0,shards:[r.contentRef],children:n.jsx(vt.div,{"data-state":ao(r.open),...a,ref:i,style:{pointerEvents:"auto",...a.style}})})}),Cs="DialogContent",vu=c.forwardRef((e,t)=>{const s=pu(Cs,e.__scopeDialog),{forceMount:a=s.forceMount,...r}=e,o=nt(Cs,e.__scopeDialog);return n.jsx(na,{present:a||o.open,children:o.modal?n.jsx(lb,{...r,ref:t}):n.jsx(cb,{...r,ref:t})})});vu.displayName=Cs;var lb=c.forwardRef((e,t)=>{const s=nt(Cs,e.__scopeDialog),a=c.useRef(null),r=ss(t,s.contentRef,a);return c.useEffect(()=>{const o=a.current;if(o)return sg(o)},[]),n.jsx(yu,{...e,ref:r,trapFocus:s.open,disableOutsidePointerEvents:s.open,onCloseAutoFocus:It(e.onCloseAutoFocus,o=>{o.preventDefault(),s.triggerRef.current?.focus()}),onPointerDownOutside:It(e.onPointerDownOutside,o=>{const i=o.detail.originalEvent,l=i.button===0&&i.ctrlKey===!0;(i.button===2||l)&&o.preventDefault()}),onFocusOutside:It(e.onFocusOutside,o=>o.preventDefault())})}),cb=c.forwardRef((e,t)=>{const s=nt(Cs,e.__scopeDialog),a=c.useRef(!1),r=c.useRef(!1);return n.jsx(yu,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:o=>{e.onCloseAutoFocus?.(o),o.defaultPrevented||(a.current||s.triggerRef.current?.focus(),o.preventDefault()),a.current=!1,r.current=!1},onInteractOutside:o=>{e.onInteractOutside?.(o),o.defaultPrevented||(a.current=!0,o.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const i=o.target;s.triggerRef.current?.contains(i)&&o.preventDefault(),o.detail.originalEvent.type==="focusin"&&r.current&&o.preventDefault()}})}),yu=c.forwardRef((e,t)=>{const{__scopeDialog:s,trapFocus:a,onOpenAutoFocus:r,onCloseAutoFocus:o,...i}=e,l=nt(Cs,s);return $h(),n.jsx(n.Fragment,{children:n.jsx(Rc,{asChild:!0,loop:!0,trapped:a,onMountAutoFocus:r,onUnmountAutoFocus:o,children:n.jsx(Ic,{role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":ao(l.open),...i,ref:t,deferPointerDownOutside:!0,onDismiss:()=>l.onOpenChange(!1)})})})}),ku="DialogTitle",wu=c.forwardRef((e,t)=>{const{__scopeDialog:s,...a}=e,r=nt(ku,s);return n.jsx(vt.h2,{id:r.titleId,...a,ref:t})});wu.displayName=ku;var ju="DialogDescription",ub=c.forwardRef((e,t)=>{const{__scopeDialog:s,...a}=e,r=nt(ju,s);return n.jsx(vt.p,{id:r.descriptionId,...a,ref:t})});ub.displayName=ju;var Su="DialogClose",db=c.forwardRef((e,t)=>{const{__scopeDialog:s,...a}=e,r=nt(Su,s);return n.jsx(vt.button,{type:"button",...a,ref:t,onClick:It(e.onClick,()=>r.onOpenChange(!1))})});db.displayName=Su;function ao(e){return e?"open":"closed"}function mb(e){if(typeof document>"u")return;let t=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",t.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}const Cu=W.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),fn=()=>{const e=W.useContext(Cu);if(!e)throw new Error("useDrawerContext must be used within a Drawer.Root");return e};mb(`[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(
|
|
117
|
-
[data-state=closed]
|
|
118
|
-
){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}`);function fb(){const e=navigator.userAgent;return typeof window<"u"&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))}function hb(){return ro(/^Mac/)}function gb(){return ro(/^iPhone/)}function Oi(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function pb(){return ro(/^iPad/)||hb()&&navigator.maxTouchPoints>1}function Nu(){return gb()||pb()}function ro(e){return typeof window<"u"&&window.navigator!=null?e.test(window.navigator.platform):void 0}const bb=24,xb=typeof window<"u"?c.useLayoutEffect:c.useEffect;function Pi(...e){return(...t)=>{for(let s of e)typeof s=="function"&&s(...t)}}const Fa=typeof document<"u"&&window.visualViewport;function Li(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function Eu(e){for(Li(e)&&(e=e.parentElement);e&&!Li(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}const vb=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);let Tn=0,_a;function yb(e={}){let{isDisabled:t}=e;xb(()=>{if(!t)return Tn++,Tn===1&&Nu()&&(_a=kb()),()=>{Tn--,Tn===0&&_a?.()}},[t])}function kb(){let e,t=0,s=f=>{e=Eu(f.target),!(e===document.documentElement&&e===document.body)&&(t=f.changedTouches[0].pageY)},a=f=>{if(!e||e===document.documentElement||e===document.body){f.preventDefault();return}let h=f.changedTouches[0].pageY,b=e.scrollTop,v=e.scrollHeight-e.clientHeight;v!==0&&((b<=0&&h>t||b>=v&&h<t)&&f.preventDefault(),t=h)},r=f=>{let h=f.target;ir(h)&&h!==document.activeElement&&(f.preventDefault(),h.style.transform="translateY(-2000px)",h.focus(),requestAnimationFrame(()=>{h.style.transform=""}))},o=f=>{let h=f.target;ir(h)&&(h.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{h.style.transform="",Fa&&(Fa.height<window.innerHeight?requestAnimationFrame(()=>{$i(h)}):Fa.addEventListener("resize",()=>$i(h),{once:!0}))}))},i=()=>{window.scrollTo(0,0)},l=window.pageXOffset,u=window.pageYOffset,d=Pi(wb(document.documentElement,"paddingRight",`${window.innerWidth-document.documentElement.clientWidth}px`));window.scrollTo(0,0);let m=Pi($s(document,"touchstart",s,{passive:!1,capture:!0}),$s(document,"touchmove",a,{passive:!1,capture:!0}),$s(document,"touchend",r,{passive:!1,capture:!0}),$s(document,"focus",o,!0),$s(window,"scroll",i));return()=>{d(),m(),window.scrollTo(l,u)}}function wb(e,t,s){let a=e.style[t];return e.style[t]=s,()=>{e.style[t]=a}}function $s(e,t,s,a){return e.addEventListener(t,s,a),()=>{e.removeEventListener(t,s,a)}}function $i(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let s=Eu(e);if(s!==document.documentElement&&s!==document.body&&s!==e){let a=s.getBoundingClientRect().top,r=e.getBoundingClientRect().top,o=e.getBoundingClientRect().bottom;const i=s.getBoundingClientRect().bottom+bb;o>i&&(s.scrollTop+=r-a)}e=s.parentElement}}function ir(e){return e instanceof HTMLInputElement&&!vb.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function jb(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function Sb(...e){return t=>e.forEach(s=>jb(s,t))}function Iu(...e){return c.useCallback(Sb(...e),e)}const Tu=new WeakMap;function Ce(e,t,s=!1){if(!e||!(e instanceof HTMLElement))return;let a={};Object.entries(t).forEach(([r,o])=>{if(r.startsWith("--")){e.style.setProperty(r,o);return}a[r]=e.style[r],e.style[r]=o}),!s&&Tu.set(e,a)}function Cb(e,t){if(!e||!(e instanceof HTMLElement))return;let s=Tu.get(e);s&&(e.style[t]=s[t])}const we=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function Rn(e,t){if(!e)return null;const s=window.getComputedStyle(e),a=s.transform||s.webkitTransform||s.mozTransform;let r=a.match(/^matrix3d\((.+)\)$/);return r?parseFloat(r[1].split(", ")[we(t)?13:12]):(r=a.match(/^matrix\((.+)\)$/),r?parseFloat(r[1].split(", ")[we(t)?5:4]):null)}function Nb(e){return 8*(Math.log(e+1)-2)}function qa(e,t){if(!e)return()=>{};const s=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=s}}function Eb(...e){return(...t)=>{for(const s of e)typeof s=="function"&&s(...t)}}const be={DURATION:.5,EASE:[.32,.72,0,1]},Ru=.4,Ib=.25,Tb=100,Mu=8,Ht=16,lr=26,Ba="vaul-dragging";function zu(e){const t=W.useRef(e);return W.useEffect(()=>{t.current=e}),W.useMemo(()=>(...s)=>t.current==null?void 0:t.current.call(t,...s),[])}function Rb({defaultProp:e,onChange:t}){const s=W.useState(e),[a]=s,r=W.useRef(a),o=zu(t);return W.useEffect(()=>{r.current!==a&&(o(a),r.current=a)},[a,r,o]),s}function Au({prop:e,defaultProp:t,onChange:s=()=>{}}){const[a,r]=Rb({defaultProp:t,onChange:s}),o=e!==void 0,i=o?e:a,l=zu(s),u=W.useCallback(d=>{if(o){const f=typeof d=="function"?d(e):d;f!==e&&l(f)}else r(d)},[o,e,r,l]);return[i,u]}function Mb({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:s,drawerRef:a,overlayRef:r,fadeFromIndex:o,onSnapPointChange:i,direction:l="bottom",container:u,snapToSequentialPoint:d}){const[m,f]=Au({prop:e,defaultProp:s?.[0],onChange:t}),[h,b]=W.useState(typeof window<"u"?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);W.useEffect(()=>{function C(){b({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[]);const v=W.useMemo(()=>m===s?.[s.length-1]||null,[s,m]),p=W.useMemo(()=>{var C;return(C=s?.findIndex(S=>S===m))!=null?C:null},[s,m]),x=s&&s.length>0&&(o||o===0)&&!Number.isNaN(o)&&s[o]===m||!s,g=W.useMemo(()=>{const C=u?{width:u.getBoundingClientRect().width,height:u.getBoundingClientRect().height}:typeof window<"u"?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};var S;return(S=s?.map(D=>{const z=typeof D=="string";let A=0;if(z&&(A=parseInt(D,10)),we(l)){const I=z?A:h?D*C.height:0;return h?l==="bottom"?C.height-I:-C.height+I:I}const P=z?A:h?D*C.width:0;return h?l==="right"?C.width-P:-C.width+P:P}))!=null?S:[]},[s,h,u]),y=W.useMemo(()=>p!==null?g?.[p]:null,[g,p]),k=W.useCallback(C=>{var S;const D=(S=g?.findIndex(z=>z===C))!=null?S:null;i(D),Ce(a.current,{transition:`transform ${be.DURATION}s cubic-bezier(${be.EASE.join(",")})`,transform:we(l)?`translate3d(0, ${C}px, 0)`:`translate3d(${C}px, 0, 0)`}),g&&D!==g.length-1&&o!==void 0&&D!==o&&D<o?Ce(r.current,{transition:`opacity ${be.DURATION}s cubic-bezier(${be.EASE.join(",")})`,opacity:"0"}):Ce(r.current,{transition:`opacity ${be.DURATION}s cubic-bezier(${be.EASE.join(",")})`,opacity:"1"}),f(s?.[Math.max(D,0)])},[a.current,s,g,o,r,f]);W.useEffect(()=>{if(m||e){var C;const S=(C=s?.findIndex(D=>D===e||D===m))!=null?C:-1;g&&S!==-1&&typeof g[S]=="number"&&k(g[S])}},[m,e,s,g,k]);function w({draggedDistance:C,closeDrawer:S,velocity:D,dismissible:z}){if(o===void 0)return;const A=l==="bottom"||l==="right"?(y??0)-C:(y??0)+C,P=p===o-1,I=p===0,j=C>0;if(P&&Ce(r.current,{transition:`opacity ${be.DURATION}s cubic-bezier(${be.EASE.join(",")})`}),!d&&D>2&&!j){z?S():k(g[0]);return}if(!d&&D>2&&j&&g&&s){k(g[s.length-1]);return}const M=g?.reduce((R,O)=>typeof R!="number"||typeof O!="number"?R:Math.abs(O-A)<Math.abs(R-A)?O:R),$=we(l)?window.innerHeight:window.innerWidth;if(D>Ru&&Math.abs(C)<$*.4){const R=j?1:-1;if(R>0&&v&&s){k(g[s.length-1]);return}if(I&&R<0&&z&&S(),p===null)return;k(g[p+R]);return}k(M)}function E({draggedDistance:C}){if(y===null)return;const S=l==="bottom"||l==="right"?y-C:y+C;(l==="bottom"||l==="right")&&S<g[g.length-1]||(l==="top"||l==="left")&&S>g[g.length-1]||Ce(a.current,{transform:we(l)?`translate3d(0, ${S}px, 0)`:`translate3d(${S}px, 0, 0)`})}function T(C,S){if(!s||typeof p!="number"||!g||o===void 0)return null;const D=p===o-1;if(p>=o&&S)return 0;if(D&&!S)return 1;if(!x&&!D)return null;const A=D?p+1:p-1,P=D?g[A]-g[A-1]:g[A+1]-g[A],I=C/Math.abs(P);return D?1-I:I}return{isLastSnapPoint:v,activeSnapPoint:m,shouldFade:x,getPercentageDragged:T,setActiveSnapPoint:f,activeSnapPointIndex:p,onRelease:w,onDrag:E,snapPointsOffset:g}}const zb=()=>()=>{};function Ab(){const{direction:e,isOpen:t,shouldScaleBackground:s,setBackgroundColorOnScale:a,noBodyStyles:r}=fn(),o=W.useRef(null),i=c.useMemo(()=>document.body.style.backgroundColor,[]);function l(){return(window.innerWidth-lr)/window.innerWidth}W.useEffect(()=>{if(t&&s){o.current&&clearTimeout(o.current);const u=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!u)return;Eb(a&&!r?qa(document.body,{background:"black"}):zb,qa(u,{transformOrigin:we(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:`${be.DURATION}s`,transitionTimingFunction:`cubic-bezier(${be.EASE.join(",")})`}));const d=qa(u,{borderRadius:`${Mu}px`,overflow:"hidden",...we(e)?{transform:`scale(${l()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${l()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{d(),o.current=window.setTimeout(()=>{i?document.body.style.background=i:document.body.style.removeProperty("background")},be.DURATION*1e3)}}},[t,s,i])}let Fs=null;function Db({isOpen:e,modal:t,nested:s,hasBeenOpened:a,preventScrollRestoration:r,noBodyStyles:o}){const[i,l]=W.useState(()=>typeof window<"u"?window.location.href:""),u=W.useRef(0),d=W.useCallback(()=>{if(Oi()&&Fs===null&&e&&!o){Fs={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};const{scrollX:f,innerHeight:h}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-u.current}px`,left:`${-f}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{const b=h-window.innerHeight;b&&u.current>=h&&(document.body.style.top=`${-(u.current+b)}px`)}),300)}},[e]),m=W.useCallback(()=>{if(Oi()&&Fs!==null&&!o){const f=-parseInt(document.body.style.top,10),h=-parseInt(document.body.style.left,10);Object.assign(document.body.style,Fs),window.requestAnimationFrame(()=>{if(r&&i!==window.location.href){l(window.location.href);return}window.scrollTo(h,f)}),Fs=null}},[i]);return W.useEffect(()=>{function f(){u.current=window.scrollY}return f(),window.addEventListener("scroll",f),()=>{window.removeEventListener("scroll",f)}},[]),W.useEffect(()=>{if(t)return()=>{typeof document>"u"||document.querySelector("[data-vaul-drawer]")||m()}},[t,m]),W.useEffect(()=>{s||!a||(e?(!window.matchMedia("(display-mode: standalone)").matches&&d(),t||window.setTimeout(()=>{m()},500)):m())},[e,a,i,t,s,d,m]),{restorePositionSetting:m}}function Ob({open:e,onOpenChange:t,children:s,onDrag:a,onRelease:r,snapPoints:o,shouldScaleBackground:i=!1,setBackgroundColorOnScale:l=!0,closeThreshold:u=Ib,scrollLockTimeout:d=Tb,dismissible:m=!0,handleOnly:f=!1,fadeFromIndex:h=o&&o.length-1,activeSnapPoint:b,setActiveSnapPoint:v,fixed:p,modal:x=!0,onClose:g,nested:y,noBodyStyles:k=!1,direction:w="bottom",defaultOpen:E=!1,disablePreventScroll:T=!0,snapToSequentialPoint:C=!1,preventScrollRestoration:S=!1,repositionInputs:D=!0,onAnimationEnd:z,container:A,autoFocus:P=!1}){var I,j;const[M=!1,$]=Au({defaultProp:E,prop:e,onChange:Z=>{t?.(Z),!Z&&!y&&Fe(),setTimeout(()=>{z?.(Z)},be.DURATION*1e3),Z&&!x&&typeof window<"u"&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),Z||(document.body.style.pointerEvents="auto")}}),[R,O]=W.useState(!1),[N,L]=W.useState(!1),[_,q]=W.useState(!1),X=W.useRef(null),ee=W.useRef(null),Y=W.useRef(null),fe=W.useRef(null),ue=W.useRef(null),te=W.useRef(!1),U=W.useRef(null),K=W.useRef(0),ae=W.useRef(!1),Pe=W.useRef(!E),Te=W.useRef(0),V=W.useRef(null),J=W.useRef(((I=V.current)==null?void 0:I.getBoundingClientRect().height)||0),re=W.useRef(((j=V.current)==null?void 0:j.getBoundingClientRect().width)||0),de=W.useRef(0),B=W.useCallback(Z=>{o&&Z===Ve.length-1&&(ee.current=new Date)},[]),{activeSnapPoint:We,activeSnapPointIndex:Le,setActiveSnapPoint:pe,onRelease:ke,snapPointsOffset:Ve,onDrag:ns,shouldFade:$e,getPercentageDragged:Ze}=Mb({snapPoints:o,activeSnapPointProp:b,setActiveSnapPointProp:v,drawerRef:V,fadeFromIndex:h,overlayRef:X,onSnapPointChange:B,direction:w,container:A,snapToSequentialPoint:C});yb({isDisabled:!M||N||!x||_||!R||!D||!T});const{restorePositionSetting:Fe}=Db({isOpen:M,modal:x,nested:y??!1,hasBeenOpened:R,preventScrollRestoration:S,noBodyStyles:k});function _e(){return(window.innerWidth-lr)/window.innerWidth}function dt(Z){var ie,ne;!m&&!o||V.current&&!V.current.contains(Z.target)||(J.current=((ie=V.current)==null?void 0:ie.getBoundingClientRect().height)||0,re.current=((ne=V.current)==null?void 0:ne.getBoundingClientRect().width)||0,L(!0),Y.current=new Date,Nu()&&window.addEventListener("touchend",()=>te.current=!1,{once:!0}),Z.target.setPointerCapture(Z.pointerId),K.current=we(w)?Z.pageY:Z.pageX)}function Ne(Z,ie){var ne;let oe=Z;const he=(ne=window.getSelection())==null?void 0:ne.toString(),me=V.current?Rn(V.current,w):null,ve=new Date;if(oe.tagName==="SELECT"||oe.hasAttribute("data-vaul-no-drag")||oe.closest("[data-vaul-no-drag]"))return!1;if(w==="right"||w==="left")return!0;if(ee.current&&ve.getTime()-ee.current.getTime()<500)return!1;if(me!==null&&(w==="bottom"?me>0:me<0))return!0;if(he&&he.length>0)return!1;if(ue.current&&ve.getTime()-ue.current.getTime()<d&&me===0||ie)return ue.current=ve,!1;for(;oe;){if(oe.scrollHeight>oe.clientHeight){if(oe.scrollTop!==0)return ue.current=new Date,!1;if(oe.getAttribute("role")==="dialog")return!0}oe=oe.parentNode}return!0}function as(Z){if(V.current&&N){const ie=w==="bottom"||w==="right"?1:-1,ne=(K.current-(we(w)?Z.pageY:Z.pageX))*ie,oe=ne>0,he=o&&!m&&!oe;if(he&&Le===0)return;const me=Math.abs(ne),ve=document.querySelector("[data-vaul-drawer-wrapper]"),Ae=w==="bottom"||w==="top"?J.current:re.current;let Re=me/Ae;const Ke=Ze(me,oe);if(Ke!==null&&(Re=Ke),he&&Re>=1||!te.current&&!Ne(Z.target,oe))return;if(V.current.classList.add(Ba),te.current=!0,Ce(V.current,{transition:"none"}),Ce(X.current,{transition:"none"}),o&&ns({draggedDistance:ne}),oe&&!o){const Ee=Nb(ne),Qe=Math.min(Ee*-1,0)*ie;Ce(V.current,{transform:we(w)?`translate3d(0, ${Qe}px, 0)`:`translate3d(${Qe}px, 0, 0)`});return}const Me=1-Re;if(($e||h&&Le===h-1)&&(a?.(Z,Re),Ce(X.current,{opacity:`${Me}`,transition:"none"},!0)),ve&&X.current&&i){const Ee=Math.min(_e()+Re*(1-_e()),1),Qe=8-Re*8,Ye=Math.max(0,14-Re*14);Ce(ve,{borderRadius:`${Qe}px`,transform:we(w)?`scale(${Ee}) translate3d(0, ${Ye}px, 0)`:`scale(${Ee}) translate3d(${Ye}px, 0, 0)`,transition:"none"},!0)}if(!o){const Ee=me*ie;Ce(V.current,{transform:we(w)?`translate3d(0, ${Ee}px, 0)`:`translate3d(${Ee}px, 0, 0)`})}}}W.useEffect(()=>{window.requestAnimationFrame(()=>{Pe.current=!0})},[]),W.useEffect(()=>{var Z;function ie(){if(!V.current||!D)return;const ne=document.activeElement;if(ir(ne)||ae.current){var oe;const he=((oe=window.visualViewport)==null?void 0:oe.height)||0,me=window.innerHeight;let ve=me-he;const Ae=V.current.getBoundingClientRect().height||0,Re=Ae>me*.8;de.current||(de.current=Ae);const Ke=V.current.getBoundingClientRect().top;if(Math.abs(Te.current-ve)>60&&(ae.current=!ae.current),o&&o.length>0&&Ve&&Le){const Me=Ve[Le]||0;ve+=Me}if(Te.current=ve,Ae>he||ae.current){const Me=V.current.getBoundingClientRect().height;let Ee=Me;Me>he&&(Ee=he-(Re?Ke:lr)),p?V.current.style.height=`${Me-Math.max(ve,0)}px`:V.current.style.height=`${Math.max(Ee,he-Ke)}px`}else fb()||(V.current.style.height=`${de.current}px`);o&&o.length>0&&!ae.current?V.current.style.bottom="0px":V.current.style.bottom=`${Math.max(ve,0)}px`}}return(Z=window.visualViewport)==null||Z.addEventListener("resize",ie),()=>{var ne;return(ne=window.visualViewport)==null?void 0:ne.removeEventListener("resize",ie)}},[Le,o,Ve]);function qe(Z){Se(),g?.(),Z||$(!1),setTimeout(()=>{o&&pe(o[0])},be.DURATION*1e3)}function _t(){if(!V.current)return;const Z=document.querySelector("[data-vaul-drawer-wrapper]"),ie=Rn(V.current,w);Ce(V.current,{transform:"translate3d(0, 0, 0)",transition:`transform ${be.DURATION}s cubic-bezier(${be.EASE.join(",")})`}),Ce(X.current,{transition:`opacity ${be.DURATION}s cubic-bezier(${be.EASE.join(",")})`,opacity:"1"}),i&&ie&&ie>0&&M&&Ce(Z,{borderRadius:`${Mu}px`,overflow:"hidden",...we(w)?{transform:`scale(${_e()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${_e()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:`${be.DURATION}s`,transitionTimingFunction:`cubic-bezier(${be.EASE.join(",")})`},!0)}function Se(){!N||!V.current||(V.current.classList.remove(Ba),te.current=!1,L(!1),fe.current=new Date)}function Be(Z){if(!N||!V.current)return;V.current.classList.remove(Ba),te.current=!1,L(!1),fe.current=new Date;const ie=Rn(V.current,w);if(!Z||!Ne(Z.target,!1)||!ie||Number.isNaN(ie)||Y.current===null)return;const ne=fe.current.getTime()-Y.current.getTime(),oe=K.current-(we(w)?Z.pageY:Z.pageX),he=Math.abs(oe)/ne;if(he>.05&&(q(!0),setTimeout(()=>{q(!1)},200)),o){ke({draggedDistance:oe*(w==="bottom"||w==="right"?1:-1),closeDrawer:qe,velocity:he,dismissible:m}),r?.(Z,!0);return}if(w==="bottom"||w==="right"?oe>0:oe<0){_t(),r?.(Z,!0);return}if(he>Ru){qe(),r?.(Z,!1);return}var me;const ve=Math.min((me=V.current.getBoundingClientRect().height)!=null?me:0,window.innerHeight);var Ae;const Re=Math.min((Ae=V.current.getBoundingClientRect().width)!=null?Ae:0,window.innerWidth),Ke=w==="left"||w==="right";if(Math.abs(ie)>=(Ke?Re:ve)*u){qe(),r?.(Z,!1);return}r?.(Z,!0),_t()}W.useEffect(()=>(M&&(Ce(document.documentElement,{scrollBehavior:"auto"}),ee.current=new Date),()=>{Cb(document.documentElement,"scrollBehavior")}),[M]);function mt(Z){const ie=Z?(window.innerWidth-Ht)/window.innerWidth:1,ne=Z?-Ht:0;U.current&&window.clearTimeout(U.current),Ce(V.current,{transition:`transform ${be.DURATION}s cubic-bezier(${be.EASE.join(",")})`,transform:we(w)?`scale(${ie}) translate3d(0, ${ne}px, 0)`:`scale(${ie}) translate3d(${ne}px, 0, 0)`}),!Z&&V.current&&(U.current=setTimeout(()=>{const oe=Rn(V.current,w);Ce(V.current,{transition:"none",transform:we(w)?`translate3d(0, ${oe}px, 0)`:`translate3d(${oe}px, 0, 0)`})},500))}function rs(Z,ie){if(ie<0)return;const ne=(window.innerWidth-Ht)/window.innerWidth,oe=ne+ie*(1-ne),he=-Ht+ie*Ht;Ce(V.current,{transform:we(w)?`scale(${oe}) translate3d(0, ${he}px, 0)`:`scale(${oe}) translate3d(${he}px, 0, 0)`,transition:"none"})}function qt(Z,ie){const ne=we(w)?window.innerHeight:window.innerWidth,oe=ie?(ne-Ht)/ne:1,he=ie?-Ht:0;ie&&Ce(V.current,{transition:`transform ${be.DURATION}s cubic-bezier(${be.EASE.join(",")})`,transform:we(w)?`scale(${oe}) translate3d(0, ${he}px, 0)`:`scale(${oe}) translate3d(${he}px, 0, 0)`})}return W.useEffect(()=>{x||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[x]),W.createElement(hu,{defaultOpen:E,onOpenChange:Z=>{!m&&!Z||(Z?O(!0):qe(!0),$(Z))},open:M},W.createElement(Cu.Provider,{value:{activeSnapPoint:We,snapPoints:o,setActiveSnapPoint:pe,drawerRef:V,overlayRef:X,onOpenChange:t,onPress:dt,onRelease:Be,onDrag:as,dismissible:m,shouldAnimate:Pe,handleOnly:f,isOpen:M,isDragging:N,shouldFade:$e,closeDrawer:qe,onNestedDrag:rs,onNestedOpenChange:mt,onNestedRelease:qt,keyboardIsOpen:ae,modal:x,snapPointsOffset:Ve,activeSnapPointIndex:Le,direction:w,shouldScaleBackground:i,setBackgroundColorOnScale:l,noBodyStyles:k,container:A,autoFocus:P}},s))}const Du=W.forwardRef(function({...e},t){const{overlayRef:s,snapPoints:a,onRelease:r,shouldFade:o,isOpen:i,modal:l,shouldAnimate:u}=fn(),d=Iu(t,s),m=a&&a.length>0;if(!l)return null;const f=W.useCallback(h=>r(h),[r]);return W.createElement(xu,{onMouseUp:f,ref:d,"data-vaul-overlay":"","data-vaul-snap-points":i&&m?"true":"false","data-vaul-snap-points-overlay":i&&o?"true":"false","data-vaul-animate":u?.current?"true":"false",...e})});Du.displayName="Drawer.Overlay";const Ou=W.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:s,...a},r){const{drawerRef:o,onPress:i,onRelease:l,onDrag:u,keyboardIsOpen:d,snapPointsOffset:m,activeSnapPointIndex:f,modal:h,isOpen:b,direction:v,snapPoints:p,container:x,handleOnly:g,shouldAnimate:y,autoFocus:k}=fn(),[w,E]=W.useState(!1),T=Iu(r,o),C=W.useRef(null),S=W.useRef(null),D=W.useRef(!1),z=p&&p.length>0;Ab();const A=(I,j,M=0)=>{if(D.current)return!0;const $=Math.abs(I.y),R=Math.abs(I.x),O=R>$,N=["bottom","right"].includes(j)?1:-1;if(j==="left"||j==="right"){if(!(I.x*N<0)&&R>=0&&R<=M)return O}else if(!(I.y*N<0)&&$>=0&&$<=M)return!O;return D.current=!0,!0};W.useEffect(()=>{z&&window.requestAnimationFrame(()=>{E(!0)})},[]);function P(I){C.current=null,D.current=!1,l(I)}return W.createElement(vu,{"data-vaul-drawer-direction":v,"data-vaul-drawer":"","data-vaul-delayed-snap-points":w?"true":"false","data-vaul-snap-points":b&&z?"true":"false","data-vaul-custom-container":x?"true":"false","data-vaul-animate":y?.current?"true":"false",...a,ref:T,style:m&&m.length>0?{"--snap-point-height":`${m[f??0]}px`,...t}:t,onPointerDown:I=>{g||(a.onPointerDown==null||a.onPointerDown.call(a,I),C.current={x:I.pageX,y:I.pageY},i(I))},onOpenAutoFocus:I=>{s?.(I),k||I.preventDefault()},onPointerDownOutside:I=>{if(e?.(I),!h||I.defaultPrevented){I.preventDefault();return}d.current&&(d.current=!1)},onFocusOutside:I=>{if(!h){I.preventDefault();return}},onPointerMove:I=>{if(S.current=I,g||(a.onPointerMove==null||a.onPointerMove.call(a,I),!C.current))return;const j=I.pageY-C.current.y,M=I.pageX-C.current.x,$=I.pointerType==="touch"?10:2;A({x:M,y:j},v,$)?u(I):(Math.abs(M)>$||Math.abs(j)>$)&&(C.current=null)},onPointerUp:I=>{a.onPointerUp==null||a.onPointerUp.call(a,I),C.current=null,D.current=!1,l(I)},onPointerOut:I=>{a.onPointerOut==null||a.onPointerOut.call(a,I),P(S.current)},onContextMenu:I=>{a.onContextMenu==null||a.onContextMenu.call(a,I),S.current&&P(S.current)}})});Ou.displayName="Drawer.Content";const Pb=250,Lb=120,Pu=W.forwardRef(function({preventCycle:e=!1,children:t,...s},a){const{closeDrawer:r,isDragging:o,snapPoints:i,activeSnapPoint:l,setActiveSnapPoint:u,dismissible:d,handleOnly:m,isOpen:f,onPress:h,onDrag:b}=fn(),v=W.useRef(null),p=W.useRef(!1);function x(){if(p.current){k();return}window.setTimeout(()=>{g()},Lb)}function g(){if(o||e||p.current){k();return}if(k(),!i||i.length===0){d||r();return}if(l===i[i.length-1]&&d){r();return}const E=i.findIndex(C=>C===l);if(E===-1)return;const T=i[E+1];u(T)}function y(){v.current=window.setTimeout(()=>{p.current=!0},Pb)}function k(){v.current&&window.clearTimeout(v.current),p.current=!1}return W.createElement("div",{onClick:x,onPointerCancel:k,onPointerDown:w=>{m&&h(w),y()},onPointerMove:w=>{m&&b(w)},ref:a,"data-vaul-drawer-visible":f?"true":"false","data-vaul-handle":"","aria-hidden":"true",...s},W.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))});Pu.displayName="Drawer.Handle";function $b(e){const t=fn(),{container:s=t.container,...a}=e;return W.createElement(bu,{container:s,...a})}const Xe={Root:Ob,Content:Ou,Overlay:Du,Portal:$b,Handle:Pu,Title:wu},Fb=new Set(["outbox","postvak uit","boîte d'envoi","postausgang","buzón de salida","posta in uscita","送信トレイ","送件匣","发件箱","skrzynka nadawcza"]),_b=e=>{const t=ks(e.fullPath).trim().toLowerCase();return Fb.has(t)},Fi=Qa.length,ma=(e,t=[])=>{const s=Ns(t);return[...e.filter(r=>{const o=s.get(r.mailboxId);return o==="drafts"||o==="sent"?!1:!_b(r)})].sort((r,o)=>{const i=s.has(r.mailboxId)?Qa.indexOf(s.get(r.mailboxId)??"inbox"):Fi,l=s.has(o.mailboxId)?Qa.indexOf(s.get(o.mailboxId)??"inbox"):Fi;return i!==l?i-l:ks(r.fullPath).localeCompare(ks(o.fullPath),void 0,{sensitivity:"base",numeric:!0})})},Lu="inline-flex items-center justify-center transition-colors",qb=ge(Lu,"min-h-11 min-w-11 rounded hover:bg-surface-raised"),Bb=ge(Lu,"min-h-11 gap-1.5 px-3 rounded text-sm font-medium hover:bg-surface-raised"),hn=({accountId:e,currentMailboxId:t,onMove:s,disabled:a=!1,disabledHint:r,variant:o="icon-only",label:i})=>{const[l,u]=c.useState(!1),d=Lt(),m=c.useRef(null),f=i??"Move to folder",h=c.useId(),{t:b}=Gn("mail",{useSuspense:!1}),v=c.useCallback((z,A)=>b(z,{defaultValue:A}),[b]),{data:p,isLoading:x,isError:g,error:y,refetch:k}=ce({...He({path:{accountId:e}}),staleTime:1/0,enabled:l}),w=uu(e),E=c.useMemo(()=>{const z=ma(p?.items??[],w),A=Ns(w);return z.map(P=>({id:P.mailboxId,label:ys(P,A.get(P.mailboxId),v),searchValue:P.fullPath,isCurrent:P.mailboxId===t}))},[p?.items,w,t,v]),T=c.useCallback(z=>{u(!1),s(z)},[s]);c.useEffect(()=>{if(!l||!d)return;const z=P=>{m.current&&!m.current.contains(P.target)&&u(!1)},A=P=>{P.key==="Escape"&&u(!1)};return document.addEventListener("mousedown",z),document.addEventListener("keydown",A),()=>{document.removeEventListener("mousedown",z),document.removeEventListener("keydown",A)}},[l,d]);const C=a||!!r,S=n.jsxs("button",{type:"button",onClick:z=>{z.stopPropagation(),!C&&u(A=>!A)},"aria-label":f,"aria-haspopup":d?"listbox":"dialog","aria-expanded":l,"aria-controls":l?h:void 0,title:r,className:o==="icon-only"?qb:Bb,children:[n.jsx(sc,{className:"size-4"}),o==="compact"&&n.jsx("span",{className:"hidden sm:inline",children:"Move"})]}),D=x?n.jsx("div",{className:"px-3 py-5 text-sm text-fg-muted",children:"Loading folders…"}):g?n.jsx("div",{className:"p-3",children:n.jsx(At,{variant:"inline",title:"Couldn't load folders",error:y,onRetry:()=>k()})}):n.jsx(Cc,{mailboxes:E,onSelect:T,onCancel:()=>u(!1),autoFocus:!d,labels:{searchPlaceholder:b("move_picker_placeholder",{defaultValue:"Move to…"}),searchAriaLabel:b("move_picker_filter_label",{defaultValue:"Filter folders"}),optionLabel:z=>`Move to ${z}`,currentSuffix:"(current folder)",currentTag:"current",emptyMessage:z=>`No folders match "${z}"`}});return d?n.jsxs("div",{ref:m,className:"relative inline-block",children:[S,l&&n.jsx("div",{id:h,className:ge("absolute right-0 mt-1 z-50 w-72 max-h-96 flex flex-col","bg-surface border border-line rounded-md shadow-lg"),children:D})]}):n.jsxs(n.Fragment,{children:[S,n.jsx(Xe.Root,{open:l,onOpenChange:u,children:n.jsxs(Xe.Portal,{children:[n.jsx(Xe.Overlay,{className:"fixed inset-0 z-40 bg-black/40"}),n.jsxs(Xe.Content,{className:"fixed inset-x-0 bottom-0 z-50 flex flex-col bg-canvas rounded-t-lg",style:{maxHeight:"85dvh"},id:h,children:[n.jsx(Xe.Handle,{className:"mx-auto mt-2 mb-1 h-1.5 w-12 rounded-full bg-fg-subtle/30"}),n.jsx(Xe.Title,{className:"px-4 py-2 text-base font-semibold border-b border-line",children:"Move to folder"}),n.jsx("div",{className:"flex-1 overflow-hidden",children:D})]})]})})]})},Kb=({messageId:e,threadId:t,mailboxId:s,isRead:a,accountId:r,fromAddressId:o,isTrusted:i=!1,showRaw:l=!1,onToggleRaw:u})=>{const d=ye(),m=ze(),{pushError:f}=Je(),{selectedMessageId:h}=ws({strict:!1}),{mutate:b,isPending:v}=xe({...Zn(),onMutate:async M=>{const $=M.body.isRead??!0,R=new Set(M.body.messageIds??[]),O=ts({path:{threadId:t}}),N=$t([s]);await Promise.all([d.cancelQueries({queryKey:O}),cn(d,N)]);const L=d.getQueriesData({queryKey:O}).filter(q=>q[1]!==void 0).map(([q,X])=>({queryKey:q,data:X})),_=un(d,N);return d.setQueriesData({queryKey:O},q=>q&&{...q,items:Bn(q.items,R,$)}),dn(d,N,q=>Bn(q,R,$)),{threadMessagesPrefix:O,listPrefixes:N,previousThreadMessages:L,previousThreadsList:_}},onError:(M,$,R)=>{if(R){for(const N of R.previousThreadMessages)d.setQueryData(N.queryKey,N.data);mn(d,R.previousThreadsList)}const O=$.body.isRead??!0;f({title:O?"Couldn't mark as read":"Couldn't mark as unread",detail:it(M),error:M})},onSettled:(M,$,R,O)=>{O&&(d.invalidateQueries({queryKey:O.threadMessagesPrefix}),Ft(d,O.listPrefixes))}}),p=c.useCallback(M=>{h&&M.includes(h)&&m({to:"/mail/$mailboxId",params:{mailboxId:s},search:$=>({...$,selectedMessageId:void 0})})},[h,s,m]),{deleteMessages:x,isPending:g}=Xt({mailboxId:s,threadId:t,onAfterOptimisticRemove:p}),{moveMessages:y,isPending:k}=Gt({mailboxId:s,threadId:t,accountId:r,onAfterOptimisticRemove:p}),{toggleTrusted:w,isPending:E,error:T,reset:C}=so({messageId:e}),S=()=>{b({body:{messageIds:[e],isRead:!1}})},D=()=>{x([e])},z=()=>{o&&w(o,i)},A=v||g||k||E,P=A||!o,I=c.useCallback(M=>{y([e],M)},[y,e]),j=o?void 0:"Sender has no parseable address";return n.jsxs("div",{className:"flex flex-col items-end gap-1",children:[n.jsxs("div",{className:"flex items-center gap-1",children:[r&&n.jsx(hn,{accountId:r,currentMailboxId:s,onMove:I,disabled:A,label:"Move this message"}),n.jsxs(Kc,{trigger:n.jsx(tc,{className:"size-4"}),children:[n.jsxs(ps,{onClick:z,disabled:P,children:[i?n.jsx(ta,{className:"size-4 text-positive"}):n.jsx(Zs,{className:"size-4 opacity-0"}),n.jsx("span",{title:j,children:"Trusted sender"})]}),a&&n.jsxs(ps,{onClick:S,disabled:A,children:[n.jsx(Is,{className:"size-4"}),"Mark as unread"]}),u&&n.jsxs(ps,{onClick:u,children:[n.jsx(ec,{className:"size-4"}),l?"Show formatted":"Show raw email"]}),n.jsx(nr,{}),n.jsxs(ps,{onClick:D,disabled:A,destructive:!0,children:[n.jsx(st,{className:"size-4"}),"Delete"]})]})]}),T&&n.jsx("div",{className:"w-64",children:n.jsx(At,{variant:"inline",title:"Couldn't update trust",error:T,onRetry:()=>{C(),z()}})})]})},Ub=()=>{const[e,t]=c.useState(()=>typeof document<"u"&&document.documentElement.classList.contains("dark"));return c.useEffect(()=>{const s=document.documentElement,a=new MutationObserver(()=>{t(s.classList.contains("dark"))});return a.observe(s,{attributes:!0,attributeFilter:["class"]}),()=>a.disconnect()},[]),e},Hb=({blockedImageCount:e,canAlwaysTrust:t,isTrustPending:s,onLoadOnce:a,onAlwaysTrust:r})=>n.jsxs("div",{className:"mb-3 flex items-center justify-between rounded-md bg-surface-sunken/50 px-3 py-2 text-sm",children:[n.jsxs("span",{className:"text-fg-muted",children:[e," image",e>1?"s":""," blocked for privacy"]}),n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("button",{type:"button",onClick:a,className:"text-accent hover:underline",children:"Load once"}),t&&n.jsx("button",{type:"button",onClick:r,"aria-busy":s,className:"text-accent hover:underline aria-busy:opacity-50",children:s?"Trusting…":"Always trust"})]})]}),Wb=(e,t)=>{switch(e){case"auth":return{title:"Your session expired",detail:"Sign in again to reload the message body. Other parts of the app may also stop responding until you do."};case"body-missing":return{title:"Message body is missing in storage",detail:"A sync failure may have left this message without its body bytes. Contact support, or run the reconcile script to refetch from the upstream IMAP server."};case"content-type-mismatch":return{title:"Couldn't load message body",detail:"The server returned an unexpected content type for this part. The message body has not been rendered to keep you safe."};case"spa-shell-leak":return{title:"Couldn't load message body",detail:"The server returned the app shell instead of the message body. This is an infrastructure bug — please report it."};case"not-ready":return{title:"Message body is still syncing",detail:"This message's body hasn't finished downloading from the mail server yet. It should appear shortly — reopen the message to try again."};default:return{title:"Couldn't load message body",detail:t}}},Vb=e=>e instanceof Wt?e.reason:"generic",Qb=e=>e instanceof Error?e.message:typeof e=="string"?e:"An unexpected error occurred while loading the message body.",Yb=({error:e,onRetry:t})=>{const s=Vb(e),a=Qb(e),{title:r,detail:o}=Wb(s,a),[i,l]=c.useState(!1),{Account:u}=Nr();return i?null:n.jsxs("div",{role:"alert","data-testid":"message-body-error-banner","data-reason":s,className:"flex items-start gap-2 rounded-md border border-danger/40 bg-danger-soft px-3 py-2 text-sm",children:[n.jsx(Jt,{className:"size-4 shrink-0 text-danger mt-0.5","aria-hidden":"true"}),n.jsxs("div",{className:"flex-1 min-w-0",children:[n.jsx("p",{className:"font-medium text-danger",children:r}),n.jsx("p",{className:"text-fg-muted mt-1 break-words",children:o})]}),n.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[s==="auth"&&n.jsx(u,{children:({signOut:d})=>n.jsx("button",{type:"button",onClick:()=>d(),className:"text-sm font-medium text-accent hover:underline",children:"Sign in again"})}),t&&n.jsx("button",{type:"button",onClick:t,className:"text-sm font-medium text-accent hover:underline",children:"Retry"}),n.jsx("button",{type:"button",onClick:()=>l(!0),"aria-label":"Dismiss message body error",className:"rounded-md p-1 text-fg-muted hover:bg-surface-raised hover:text-fg transition-colors",children:n.jsx(Ue,{className:"size-4","aria-hidden":"true"})})]})]})},Gb=()=>n.jsxs("div",{className:"animate-pulse space-y-2",role:"status","aria-label":"Loading message body",children:[n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-11/12"}),n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"}),n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-5/6"})]}),_i=()=>n.jsx("p",{className:"text-fg-muted text-sm italic",children:"This message has no body content."}),$u=({bodyParts:e,html:t,text:s,isTrusted:a=!1,messageId:r,fromAddressId:o,category:i,className:l})=>{const[u,d]=c.useState(!1),m=a||u,f=Ub(),{toggleTrusted:h,isPending:b}=so({messageId:r??""}),v=!!e&&e.length>0,{picked:p,data:x,isLoading:g,isError:y,error:k,refetch:w}=tu({messageId:r,bodyParts:e,enabled:v}),E=c.useMemo(()=>If(e??[]),[e]),T=v&&x?.kind==="html"?x.body:t,C=v&&x?.kind==="text"?x.body:s;if(v){if(g)return n.jsx("div",{className:ge("message-body",l),children:n.jsx(Gb,{})});if(y)return n.jsx("div",{className:ge("message-body",l),children:n.jsx(Yb,{error:k,onRetry:()=>w()})});if(!p)return n.jsx("div",{className:ge("message-body",l),children:n.jsx(_i,{})})}else if(!t&&!s)return n.jsx("div",{className:ge("message-body",l),children:n.jsx(_i,{})});const S=!!(o&&r),D=()=>{!o||b||(d(!0),h(o,!1))};return n.jsx(xc,{className:l,html:T,text:C,isDark:f,category:i,allowImages:m,resolveCid:E,renderBlockedNotice:z=>n.jsx(Hb,{blockedImageCount:z,canAlwaysTrust:S,isTrustPending:b,onLoadOnce:()=>d(!0),onAlwaysTrust:D})})},Xb=({messageId:e,threadId:t,mailboxId:s,accountId:a,isRead:r,isStarred:o,onToggleStar:i,fromAddressId:l,isTrusted:u,showRaw:d,onToggleRaw:m,onReply:f,onReplyAll:h,onForward:b})=>{const v=ye(),{deleteMessages:p}=Xt({mailboxId:s,threadId:t}),{moveMessages:x}=Gt({mailboxId:s,threadId:t,accountId:a}),{toggleTrusted:g}=so({messageId:e}),{mutate:y}=xe({...Zn(),onSettled:()=>{v.invalidateQueries({queryKey:ts({path:{threadId:t}})}),Ft(v,$t([s]))}}),k=c.useCallback(C=>{x([e],C)},[x,e]),w=c.useCallback(()=>{p([e])},[p,e]),E=c.useCallback(()=>{y({body:{messageIds:[e],isRead:!r}})},[y,e,r]),T=[];return l&&T.push({key:"trusted",label:u?"Trusted sender":"Mark sender trusted",icon:u?n.jsx(ta,{className:"size-4 text-positive"}):n.jsx(Zs,{className:"size-4"}),onSelect:()=>g(l,u)}),m&&T.push({key:"raw",label:d?"Show formatted":"Show raw email",icon:n.jsx(ec,{className:"size-4"}),onSelect:m}),n.jsx(bc,{hasThread:!0,onReply:f,onReplyAll:h,onForward:b,isStarred:o,onToggleStar:i,onDelete:w,isRead:r,onToggleRead:E,overflowItems:T,moveSlot:a?n.jsx(hn,{accountId:a,currentMailboxId:s,onMove:k,label:"Move this message"}):void 0})},Jb=()=>n.jsxs("div",{className:"animate-pulse space-y-2",role:"status","aria-label":"Loading raw email",children:[n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-11/12"}),n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-5/6"}),n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"})]}),Zb=({messageId:e,enabled:t=!0})=>{const{data:s,isLoading:a,isError:r,error:o,refetch:i}=ce({...E0({path:{messageId:e}}),enabled:t});if(a)return n.jsx("div",{className:"message-body",children:n.jsx(Jb,{})});if(r)return n.jsx("div",{className:"message-body",children:n.jsx(At,{variant:"inline",title:"Couldn't load the raw email",error:o,onRetry:()=>i()})});const l=s?.raw??"";return l===""?n.jsx("div",{className:"message-body",children:n.jsx("p",{className:"text-fg-muted text-sm italic",children:"No raw source available for this message."})}):n.jsx("div",{className:"message-body",children:n.jsx("pre",{className:"email-text whitespace-pre-wrap break-words text-sm leading-relaxed bg-surface-sunken rounded-md p-3 max-h-[32rem] overflow-auto",children:l})})},ex=()=>n.jsx(ta,{className:"inline-block size-4 ml-1 -mt-0.5 text-positive align-middle","aria-label":"Trusted sender","data-testid":"trusted-sender-badge"}),Fu=(e,t)=>({id:e.messageId,fromName:e.fromName??e.fromEmail??"?",fromEmail:e.fromEmail??"",toLabel:"",dateLabel:t,snippet:e.snippet||"",bodyHtml:""}),_u=({isStarred:e,onToggleStar:t,isStarPending:s,hoverReveal:a})=>n.jsx("button",{type:"button",onClick:r=>{r.stopPropagation(),t()},disabled:s,"aria-label":e?"Remove star":"Add star",className:ge("shrink-0 p-0.5 rounded transition-colors",e?"text-warning":ge("text-fg-subtle hover:text-warning",a&&"opacity-0 group-hover:opacity-100 focus:opacity-100"),s&&"opacity-50"),children:n.jsx(Mt,{className:ge("size-3.5",e&&"fill-current")})}),tx=({threadMessage:e,isFocused:t,onToggle:s,onToggleStar:a,isStarPending:r})=>{const o=Fl(e.sentDate,"datetime"),i=Fu(e,o);return n.jsx(vc,{message:i,onClick:s,isFocused:t,isUnread:!e.isRead,trailing:n.jsxs(n.Fragment,{children:[e.hasAttachment&&n.jsx(sa,{className:"size-3 shrink-0 text-fg-subtle"}),n.jsx(_u,{isStarred:e.hasStars,onToggleStar:a,isStarPending:r,hoverReveal:!0}),n.jsx("span",{"data-testid":"message-date",className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:o})]})})},sx=({threadMessage:e,messageData:t,isLoading:s,isError:a,error:r,onRetry:o,isFocused:i,onToggle:l,onToggleStar:u,isStarPending:d,accountId:m,showRaw:f,onToggleRaw:h,mobile:b,onReply:v,onReplyAll:p,onForward:x})=>{const g=Fl(e.sentDate,"long"),y=!e.isRead,k=t?.envelope.from[0]?.flags?.trusted?.value===!0,w=t?.envelope.from[0]?.addressId,E=Fu(e,g),T=e.autoMoved?n.jsx(du,{accountId:m,messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,autoMoved:e.autoMoved,size:"md"}):null;return n.jsx(yc,{message:E,isFocused:b?!1:i,onHeaderClick:l,senderBadge:k?n.jsx(ex,{}):void 0,trailing:n.jsx("span",{"data-testid":"message-date",className:"text-2xs text-fg-subtle",children:g}),to:t?n.jsx(nf,{label:"To",addresses:t.envelope.to}):null,indicators:T||!b?n.jsxs("div",{className:"flex flex-wrap items-center gap-1.5 mt-0.5",children:[T,!b&&n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"flex items-center justify-end gap-1",children:[n.jsx(_u,{isStarred:e.hasStars,onToggleStar:u,isStarPending:d}),e.hasAttachment&&n.jsx("span",{className:"text-fg-subtle p-0.5",children:n.jsx(sa,{className:"size-3.5"})})]}),y&&n.jsx("span",{className:"size-1.5 rounded-full bg-accent","aria-label":"Unread"})]})]}):void 0,actionMenu:b?void 0:n.jsx(Kb,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,isRead:e.isRead,accountId:m,fromAddressId:w,isTrusted:k,showRaw:f,onToggleRaw:h}),actionBar:b?n.jsx(Xb,{messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,accountId:m,isRead:e.isRead,isStarred:e.hasStars,onToggleStar:u,fromAddressId:w,isTrusted:k,showRaw:f,onToggleRaw:h,onReply:v,onReplyAll:p,onForward:x}):void 0,body:s?n.jsxs("div",{className:"mt-3 animate-pulse space-y-2",children:[n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-full"}),n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-3/4"}),n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-1/2"})]}):a&&I0(r)?n.jsx("div",{className:"mt-3",children:n.jsx(iu,{message:"This message has been deleted"})}):a?n.jsx("div",{className:"mt-3",children:n.jsx(At,{variant:"inline",title:"Couldn't load this message",error:r,onRetry:o})}):f?n.jsx("div",{className:"mt-3",children:n.jsx(Zb,{messageId:e.messageId})}):n.jsx("div",{className:"mt-3",children:n.jsx($u,{bodyParts:t?.bodyParts,messageId:e.messageId,fromAddressId:t?.envelope.from[0]?.addressId,isTrusted:k,category:la(e.category)})})})},nx=({threadMessage:e,isExpanded:t,isFocused:s,onToggle:a,onToggleStar:r,isStarPending:o,accountId:i,mobile:l,onReply:u,onReplyAll:d,onForward:m})=>{const[f,h]=c.useState(!1),{data:b,isLoading:v,isError:p,error:x,refetch:g}=ce({...Mr({path:{messageId:e.messageId}}),enabled:t,meta:{softError:!0}});return t?n.jsx(sx,{threadMessage:e,messageData:b,isLoading:v,isError:p,error:x,onRetry:()=>g(),isFocused:s,onToggle:a,onToggleStar:r,isStarPending:o,accountId:i,showRaw:f,onToggleRaw:()=>h(y=>!y),mobile:l,onReply:u,onReplyAll:d,onForward:m}):n.jsx(tx,{threadMessage:e,isFocused:s,onToggle:a,onToggleStar:r,isStarPending:o})},ax=()=>n.jsxs("div",{className:"animate-pulse p-4",children:[n.jsx("div",{className:"h-6 bg-surface-sunken rounded w-3/4 mb-5"}),n.jsx("div",{className:"space-y-4",children:Array.from({length:2}).map((e,t)=>n.jsxs("div",{className:"flex gap-3 py-3",children:[n.jsx("div",{className:"size-10 bg-surface-sunken rounded-full shrink-0"}),n.jsxs("div",{className:"flex-1",children:[n.jsx("div",{className:"h-4 bg-surface-sunken rounded w-32 mb-2"}),n.jsx("div",{className:"h-3 bg-surface-sunken rounded w-48"})]})]},t))})]});function qi({authenticity:e,onOpenIntelligence:t}){return e.dkimMismatch?n.jsxs("div",{className:"flex items-start gap-2 rounded-none border-b border-danger/20 bg-danger-soft px-5 py-2.5 text-sm",children:[n.jsx(Ts,{className:"mt-0.5 size-4 shrink-0 text-danger"}),n.jsxs("p",{className:"flex-1 leading-snug text-fg",children:["This message claims to be from"," ",n.jsx("span",{className:"font-semibold",children:e.fromDomain})," but was sent",e.dkimDomain?` via ${e.dkimDomain}`:" from a different domain","."]}),t&&n.jsx("button",{type:"button",onClick:t,className:"shrink-0 text-2xs font-medium text-danger hover:underline",children:"Why?"})]}):null}const Ms=({threadId:e,mailboxId:t,subject:s,selectedMessageId:a,authenticity:r,onOpenIntelligence:o,onBack:i,composeRequest:l,onComposeClose:u,onSwipeNext:d,onSwipePrevious:m,mobileIntelligenceOpen:f})=>{const h=Lt(),{handlers:b}=Up({onSwipeLeft:d,onSwipeRight:m}),{accountId:v}=lu(t),{data:p,isLoading:x,isError:g,error:y,refetch:k}=ce({...T0({path:{threadId:e}})}),w=c.useMemo(()=>p?.items??[],[p?.items]),E=w[w.length-1],T=c.useRef(new Map),[C,S]=c.useState(new Set),[D,z]=c.useState(null),[A,P]=c.useState(0);c.useEffect(()=>{if(w.length>0&&e!==D){z(e);const J=new Set([w[w.length-1].threadMessageId]);if(a){const re=w.find(de=>de.messageId===a);re&&J.add(re.threadMessageId)}S(J),P(w.length-1)}},[e,w,D,a]);const I=c.useCallback(J=>{S(re=>{const de=new Set(re);return de.has(J)?de.delete(J):de.add(J),de})},[]),j=c.useCallback(J=>{const re=w[J];if(!re)return;T.current.get(re.threadMessageId)?.scrollIntoView({behavior:"smooth",block:"nearest"})},[w]),M=c.useCallback(()=>{if(w.length===0)return;const J=Math.min(A+1,w.length-1);P(J),j(J)},[w.length,A,j]),$=c.useCallback(()=>{if(w.length===0)return;const J=Math.max(A-1,0);P(J),j(J)},[w.length,A,j]),R=c.useCallback(()=>{const J=w[A];J&&I(J.threadMessageId)},[w,A,I]),{data:O}=ce({...xt(),staleTime:1/0}),N=O?.accounts?.[0],L=!!N?.smtpHost;_p({messages:w,expandedIds:C,threadId:e,mailboxId:t,accountId:N?.accountId});const{toggleStar:_,isPending:q,pendingMessageId:X}=Zr({threadId:e,mailboxId:t,messages:w}),[ee,Y]=c.useState(null);c.useEffect(()=>{l&&l!=="new"&&(Y(l),u?.())},[l,u]);const{data:fe}=ce({...Mr({path:{messageId:E?.messageId??""}}),enabled:!!E&&ee!==null}),ue=c.useCallback(()=>{Y("reply")},[]),te=c.useCallback(()=>{Y("reply_all")},[]),U=c.useCallback(()=>{Y("forward")},[]),K=c.useCallback(()=>{Y(null),u?.()},[u]);if(Xr({enabled:!x&&w.length>0&&ee===null,bindings:[{key:"j",handler:M,preventDefault:!0},{key:"ArrowDown",handler:M,preventDefault:!0},{key:"k",handler:$,preventDefault:!0},{key:"ArrowUp",handler:$,preventDefault:!0},{key:"Enter",handler:R,preventDefault:!0},{key:"o",handler:R,preventDefault:!0},...L?[{key:"r",handler:ue,preventDefault:!0},{key:"R",handler:te,noModifiers:!1,preventDefault:!0},{key:"f",handler:U,preventDefault:!0}]:[]]}),x)return n.jsx(ax,{});if(g)return n.jsx("div",{className:"flex h-full items-center justify-center",children:n.jsx(At,{title:"Couldn't load this conversation",error:y,onRetry:()=>k()})});if(w.length===0)return n.jsx("div",{className:"flex h-full items-center justify-center",children:n.jsx(iu,{message:"No messages in this thread"})});const ae=s||w[0]?.subject||"(No subject)",Pe=w.length,Te=J=>n.jsx("div",{children:w.map((re,de)=>n.jsx("div",{ref:B=>{B&&T.current.set(re.threadMessageId,B)},children:n.jsx(nx,{threadMessage:re,isExpanded:C.has(re.threadMessageId),isFocused:de===A,onToggle:()=>I(re.threadMessageId),onToggleStar:()=>_(re.messageId,re.hasStars),isStarPending:q&&X===re.messageId,accountId:v,mobile:J,onReply:J&&L?ue:void 0,onReplyAll:J&&L?te:void 0,onForward:J&&L?U:void 0})},re.threadMessageId))}),V=n.jsxs("header",{className:"border-b border-line px-5 pt-5 pb-3",children:[n.jsx("h1",{className:"max-w-2xl text-lg font-semibold leading-snug text-fg",children:ae}),n.jsxs("p",{className:"mt-1 text-2xs text-fg-subtle",children:[Pe," ",Pe===1?"message":"messages"]})]});return h?n.jsxs("article",{className:"h-full flex flex-col",children:[V,r?.dkimMismatch&&n.jsx(qi,{authenticity:r,onOpenIntelligence:o}),n.jsx("div",{className:"flex-1 overflow-auto",children:Te(!1)}),ee!==null&&n.jsx(Ri,{mode:ee,account:N,sourceMessage:fe,onClose:K})]}):n.jsxs(Zf,{thread:{subject:ae,messages:[]},onBack:i??(()=>{}),intelligenceOpen:f,onToggleIntelligence:o,touchHandlers:b,children:[r?.dkimMismatch&&n.jsx(qi,{authenticity:r,onOpenIntelligence:o}),Te(!0),ee!==null&&n.jsx(Ri,{mode:ee,account:N,sourceMessage:fe,onClose:K})]})};function zs(){const{mailboxNameIndex:e,accountNameIndex:t}=je();return{...gt({select:a=>Gc(a.matches)})?{}:{mailboxesByName:e},accountsByName:t}}const oo=e=>e.trim().toLocaleLowerCase(),rx=/^\d{4}-\d{2}-\d{2}$/;function Bi(e,t,s){if(!rx.test(s))return;const a=Date.parse(`${s}T00:00:00Z`);if(!Number.isNaN(a))return{type:e,raw:t,value:s,epochSeconds:Math.floor(a/1e3)}}function ox(e,t){const s=e.toLowerCase();if(s.startsWith("from:")&&e.length>5)return{type:"from",raw:e,value:e.slice(5)};if(s==="has:attachment")return{type:"hasAttachment",raw:e};if(s==="is:unread")return{type:"isUnread",raw:e};if(s.startsWith("before:")&&e.length>7)return Bi("before",e,e.slice(7));if(s.startsWith("after:")&&e.length>6)return Bi("after",e,e.slice(6));if(s.startsWith("in:")&&e.length>3){const a=e.slice(3),r=t.mailboxesByName?.get(a.toLowerCase());return r?{type:"in",raw:e,value:a,mailboxId:r}:void 0}if(s.startsWith("account:")&&e.length>8){const a=e.slice(8),r=t.accountsByName?.get(a.toLowerCase());return r?{type:"account",raw:e,value:a,accountId:r}:void 0}}function As(e,t={}){const s=e.split(/\s+/).filter(o=>o.length>0),a=[],r=[];for(const o of s){const i=ox(o,t);i?a.push(i):r.push(o)}return{freeText:r.join(" "),tokens:a}}function ix(e,t){return e.split(/\s+/).filter(s=>s.length>0&&s!==t.raw).join(" ")}function lx(e){switch(e.type){case"from":return`From: ${e.value}`;case"hasAttachment":return"Has attachment";case"isUnread":return"Unread";case"before":return`Before ${e.value}`;case"after":return`After ${e.value}`;case"in":return`In: ${e.value}`;case"account":return`Account: ${e.value}`}}const cx=20,ux=new Set(Object.values(rt)),dx=e=>e!==void 0&&ux.has(e)?e:void 0;function qu({mailboxId:e,filterCategory:t}={}){const{searchQuery:s}=je(),a=zs(),r=gt({select:y=>y.matches}),o=oo(s),{freeText:i,tokens:l}=As(o,a),u=i.length>0,d=dx(t),m=l.some(y=>y.type==="hasAttachment")?!0:void 0,f=l.some(y=>y.type==="isUnread")?!1:void 0,h=l.find(y=>y.type==="after"),b=l.find(y=>y.type==="before"),v=l.find(y=>y.type==="in"),p=Jg({matches:r,callerMailboxId:e,inTokenMailboxId:v?.mailboxId}),{data:x,isLoading:g}=ce({...zl({query:{query:i,mailboxId:p,limit:cx,...d!==void 0?{category:d}:{},...m!==void 0?{hasAttachment:m}:{},...f!==void 0?{isRead:f}:{},...h?{sentDateFrom:h.epochSeconds}:{},...b?{sentDateTo:b.epochSeconds}:{}}}),enabled:u,staleTime:6e4});return{hits:x?.items??[],isLoading:u&&g}}const mx=(e,t)=>e.createdAt!==t.createdAt?e.createdAt-t.createdAt:e.accountId.localeCompare(t.accountId),fx=e=>[...e].sort(mx);function cr(e){const t=e.authenticity?.dkimMismatch===!0;return{id:e.messageId,accountId:e.accountId??e.accountConfigId,mailboxId:e.mailboxId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:Dt(e.sentDate),sentDate:e.sentDate,isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:la(e.category),suspicious:t}}function hx(e,t){const s=new Set,a=[];for(const r of[...e,...t])s.has(r.id)||(s.add(r.id),a.push(r));return a.sort((r,o)=>(o.sentDate??0)-(r.sentDate??0))}const Ki=[{id:"personal",label:"Personal",category:rt.personal},{id:"transactional",label:"Transactional",category:rt.transactional},{id:"newsletter",label:"Newsletter",category:rt.newsletter},{id:"marketing",label:"Marketing",category:rt.marketing},{id:"social",label:"Social",category:rt.social},{id:"automated",label:"Automated",category:rt.automated},{id:"uncategorized",label:"Unclassified",category:rt.uncategorized}];function gx(e){const t=new Map(Ki.map(a=>[a.category,[]]));for(const a of e){const r=a.category??rt.uncategorized;(t.get(r)??t.get(rt.uncategorized))?.push(a)}const s=[];for(const a of Ki){const r=t.get(a.category);r&&r.length>0&&s.push({id:a.id,label:a.label,threads:r})}return s}function Bu(e,t){return e.fromName.toLowerCase().includes(t)||e.fromEmail.toLowerCase().includes(t)||e.subject.toLowerCase().includes(t)||e.snippet.toLowerCase().includes(t)}function Ku(e,t){return t.every(s=>{switch(s.type){case"from":{const a=s.value.toLowerCase();return e.fromEmail.toLowerCase().includes(a)||e.fromName.toLowerCase().includes(a)}case"hasAttachment":return e.hasAttachment===!0;case"isUnread":return!e.isRead;case"after":return e.sentDate!=null&&e.sentDate>=s.epochSeconds*1e3;case"before":return e.sentDate!=null&&e.sentDate<s.epochSeconds*1e3;case"in":return e.mailboxId===s.mailboxId;case"account":return e.accountId===s.accountId;default:return!1}})}const px={sender:"sender",recipient:"recipient",subject:"subject",attachment:"attachment",body:"body",entities:"entities"};function bx(e){return px[e]??e}function xx(e,t){const{folder:s}=zr(t,[e.mailboxId]);return{id:e.messageId,sender:e.fromName??e.fromEmail??"Unknown",subject:e.subject??"(No subject)",snippet:e.snippet??"",date:Dt(e.sentDate),unread:!e.isRead,flagged:e.hasStars===!0,threadId:e.threadId,mailboxId:e.mailboxId,...s?{folder:s}:{}}}function Uu(e,t){const{folder:s}=zr(t,e.mailboxId?[e.mailboxId]:[]);return{id:e.id,sender:e.fromName,subject:e.subject,snippet:e.snippet,date:e.timeLabel,unread:!e.isRead,flagged:e.starred===!0,...e.mailboxId?{mailboxId:e.mailboxId}:{},...s?{folder:s}:{}}}function vx(e,t){const{mailboxId:s,folder:a}=zr(t,e.mailboxIds);return{id:e.messageId,sender:e.fromName??"Unknown",subject:e.subject??"(No subject)",snippet:"",date:e.sentDate!=null?Dt(e.sentDate*1e3):"",threadId:e.threadId,matchedChunkLabel:bx(e.matchedChunkType),score:e.score,...s?{mailboxId:s}:{},...a?{folder:a}:{}}}function Hu(e,t,s){const a=new Set(t),r=[];for(const o of[...e].sort((i,l)=>l.score-i.score))a.has(o.threadId)||(a.add(o.threadId),r.push(vx(o,s)));return r}const yx=768,kx=1024,Wu=e=>e!=="desktop",fa=()=>{const e=or(`(min-width: ${yx}px)`);return or(`(min-width: ${kx}px)`)?"desktop":e?"tablet":"phone"},Vu="remit.recentSearches",wx=5;function ur(){try{const e=localStorage.getItem(Vu);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(s=>typeof s=="string"):[]}catch{return[]}}function Ui(e){const t=e.trim();if(!t)return ur();const s=[t,...ur().filter(a=>a!==t)].slice(0,wx);try{localStorage.setItem(Vu,JSON.stringify(s))}catch{return s}return s}const jx=e=>e.tier!=="phone"&&e.hasLiveInput&&!(e.bodyRendersCommittedResults&&e.hasCommittedQuery);function Sx(e){const{spam:t}=jc([...e]),s=new Map;for(const r of t)r.mailboxId&&s.set(r.mailboxId,(s.get(r.mailboxId)??0)+1);let a;for(const[r,o]of s)(!a||o>a.count)&&(a={mailboxId:r,count:o});return a}function Qu({title:e,unreadCount:t,children:s,footer:a,searchFilter:r,searchResults:o,searchLoading:i,relatedResults:l,relatedLoading:u,onSelectSearchResult:d,searchResultsLabel:m="Top matches",relatedResultsLabel:f="Related",searchResultsInBody:h=!1}){const{accounts:b,resultFolderIndex:v,searchQuery:p,searchInput:x,onSearchChange:g,onSearchClear:y,searchViewKey:k}=je(),w=zs(),E=ze(),T=Es(),C=fa(),[S,D]=c.useState(!1),[z,A]=c.useState(ur),P=c.useRef(k);c.useEffect(()=>{P.current!==k&&(P.current=k,D(!1))},[k]);const I=x.trim().length>0,j=As(x,w).tokens.map(K=>({label:lx(K),onRemove:()=>g(ix(x,K))})),M=o??[],$=l??[],R=I?[{id:"top",label:m,results:M},{id:"related",label:f,results:$}]:[],N=!(M.length+$.length>0)&&(i===!0||u===!0),{scope:L}=Zc(b),_=gt({select:K=>K.matches}),q=Xc(_),X=ep(_,L,q?v.get(q)?.role:void 0),ee=X.kind==="global"?Sx([...M,...$]):void 0,Y=ee?{kind:"global",onScopeToSpam:()=>E({to:"/mail/$mailboxId",params:{mailboxId:ee.mailboxId},search:{q:p||void 0,selectedMessageId:void 0,selectedThreadId:void 0}})}:X;if(C==="phone"&&S){const K=ae=>{A(Ui(x)),D(!1),d?.(ae)};return n.jsx(A1,{value:x,onChange:g,onClear:y,onCancel:()=>{D(!1),y()},filter:r,recentSearches:z,onPickRecent:g,sections:R,loading:N,onSelectResult:K,tokens:j,scope:Y})}const fe=jx({tier:C,hasLiveInput:I,hasCommittedQuery:p.trim().length>0,bodyRendersCommittedResults:h}),ue=K=>{A(Ui(x)),d?.(K)},te=n.jsx(Sc,{value:x,sections:R,loading:N,onSelectResult:ue,tokens:j,scope:Y}),U=fe?r?n.jsx(yr,{...r,children:te}):n.jsx("div",{className:"h-full overflow-y-auto",children:te}):s;return n.jsxs("section",{className:"flex h-full w-full flex-col bg-surface",children:[n.jsx(S1,{title:e,unreadCount:t,isDesktop:!1,showSearch:Wu(C),onMenuClick:()=>T?.openNav(),searchValue:x,onSearchChange:g,onSearchClear:y,searchOpen:S,onSearchOpenChange:D}),n.jsx("div",{className:"min-h-0 flex-1",children:U}),a]})}const io=({isOpen:e,title:t,description:s,confirmLabel:a,cancelLabel:r="Cancel",destructive:o=!1,isBusy:i=!1,onConfirm:l,onCancel:u})=>{const d=c.useRef(null),m=c.useCallback(f=>{f.key==="Escape"&&(f.preventDefault(),f.stopPropagation(),f.stopImmediatePropagation(),u())},[u]);return c.useEffect(()=>{if(e)return window.addEventListener("keydown",m,!0),()=>window.removeEventListener("keydown",m,!0)},[e,m]),c.useEffect(()=>{e&&d.current?.focus()},[e]),e?n.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",children:[n.jsx("div",{className:"absolute inset-0 bg-canvas/80 backdrop-blur-sm","aria-hidden":"true",onClick:u}),n.jsxs("div",{role:"dialog","aria-modal":"true","aria-label":t,className:ge("relative z-10 w-full max-w-sm","bg-surface border border-line rounded-sm shadow-lg","p-6"),onClick:f=>f.stopPropagation(),onKeyDown:f=>f.stopPropagation(),children:[n.jsx("h2",{className:"text-lg font-semibold",children:t}),s&&n.jsx("p",{className:"mt-2 text-sm text-fg-muted",children:s}),n.jsxs("div",{className:"mt-6 flex items-center justify-end gap-2",children:[n.jsx("button",{ref:d,type:"button",onClick:u,className:ge("min-h-11 inline-flex items-center justify-center px-4 rounded text-sm font-medium transition-colors","border border-line hover:bg-surface-raised"),children:r}),n.jsx("button",{type:"button",onClick:l,disabled:i,className:ge("min-h-11 inline-flex items-center justify-center px-4 rounded text-sm font-medium transition-colors",o?"bg-danger text-canvas hover:bg-danger/90":"bg-accent text-accent-fg hover:bg-accent-hover","disabled:opacity-50 disabled:cursor-not-allowed"),children:a})]})]})]}):null},Cx=(e,t,s)=>{const a=e.indexOf(s);if(a===-1)return[];const r=t===void 0?-1:e.indexOf(t);if(r===-1)return[s];const o=Math.min(r,a),i=Math.max(r,a);return e.slice(o,i+1)},Nx=(e,t,s,a)=>t!==void 0&&e.includes(t)?t:s!==void 0&&e.includes(s)?s:a,Ex=(e,t)=>{const s=new Set(t),a=new Set;for(const r of e)s.has(r)&&a.add(r);return a},Yu=(e,t,s)=>{if(e.length===0)return;const a=t===void 0?-1:e.indexOf(t);if(a===-1)return s>0?e[0]:e[e.length-1];const r=Math.min(Math.max(a+s,0),e.length-1);return e[r]},Gu=e=>{const[t,s]=c.useState(new Set),[a,r]=c.useState(void 0),o=c.useCallback(p=>t.has(p),[t]),i=c.useCallback(p=>{r(p),s(x=>{const g=new Set(x);return g.has(p)?g.delete(p):g.add(p),g})},[]),l=c.useCallback(p=>{r(p),s(x=>{if(x.has(p))return x;const g=new Set(x);return g.add(p),g})},[]),u=c.useCallback(p=>{s(x=>{if(!x.has(p))return x;const g=new Set(x);return g.delete(p),g})},[]),d=c.useCallback(p=>{s(new Set(p))},[]),m=c.useCallback(()=>{r(void 0),s(new Set)},[]),f=c.useCallback(p=>{s(x=>p.every(y=>x.has(y))?new Set:new Set(p))},[]),h=c.useCallback(p=>{r(p)},[]),b=c.useCallback(p=>{s(x=>{if(x.size===0)return x;const g=Ex(x,p);return g.size===x.size?x:g})},[]),v=c.useCallback((p,x,g)=>{const y=Nx(p,a,g,x);s(k=>{const w=Cx(p,y,x);if(w.length===0)return k;const E=new Set(k);for(const T of w)E.add(T);return E}),r(y)},[a]);return{selectedIds:t,selectedCount:t.size,hasSelection:t.size>0,isSelected:o,toggle:i,select:l,deselect:u,selectAll:d,clearSelection:m,toggleAll:f,selectRange:v,setAnchor:h,anchorId:a,intersectWith:b}},Xu=(e,t)=>!t&&e>0,Ix=(e,t)=>e==="BACK"&&t,Tx=({orderedIds:e,isDesktop:t,initialFocusedId:s,onExitSelection:a})=>{const[r,o]=c.useState(s),i=Gu(),{selectedCount:l,toggle:u,clearSelection:d,selectRange:m,setAnchor:f,selectAll:h}=i,b=Xu(l,t),v=c.useRef(null),p=c.useRef(!1),x=c.useCallback(()=>{a?.(),d()},[d,a]),g=c.useMemo(()=>r?e.indexOf(r):-1,[e,r]),y=c.useCallback(I=>{if(I<0||I>=e.length)return;const j=e[I];if(b){u(j);return}v.current=j,p.current=!1,o(j)},[e,b,u]),k=c.useCallback(()=>{e.length!==0&&y(g<0?0:Math.min(g+1,e.length-1))},[e.length,g,y]),w=c.useCallback(()=>{e.length!==0&&y(g<=0?0:g-1)},[e.length,g,y]),E=c.useCallback(()=>y(0),[y]),T=c.useCallback(()=>y(e.length-1),[y,e.length]),C=c.useCallback(()=>{r&&u(r)},[r,u]),S=c.useCallback((I,j)=>j.shiftKey?(m(e,I,r),!0):j.metaKey||j.ctrlKey?(u(I),!0):(x(),f(I),!1),[e,r,m,u,x,f]),D=c.useCallback(I=>{const j=Yu(e,r,I);j!==void 0&&(m(e,j),v.current=j,p.current=!1,o(j))},[e,r,m]),z=c.useCallback(()=>D(-1),[D]),A=c.useCallback(()=>D(1),[D]),P=c.useCallback(()=>{e.length>0&&h(e)},[e,h]);return{focusedMessageId:r,setFocusedMessageId:o,focusIndex:g,pendingDomFocusRef:v,cursorMovedByPointerRef:p,selection:i,isMultiSelectMode:b,exitSelection:x,moveFocusToIndex:y,focusNext:k,focusPrevious:w,focusFirst:E,focusLast:T,toggleFocusedSelection:C,extendRangeUp:z,extendRangeDown:A,selectAllLoaded:P,handleRowSelect:S}};function Ju(e,t){if(e.length!==0)return t!==void 0&&e.includes(t)?t:e[0]}const Zu=({selectedCount:e,onDelete:t,onClearSelection:s,onMarkAsRead:a,onMove:r,onOrganize:o,isDeleting:i=!1,isMoving:l=!1,accountId:u,currentMailboxId:d,moveDisabledHint:m,selectAll:f,statusLabel:h,isCounting:b=!1,progress:v,notice:p})=>{if(e===0)return null;const x=v!==void 0,g=i||l||x,y=!x&&!b,k=!!r&&!!u&&!!d,w=!!o&&!!u&&!!d&&!m&&!h,E=f?.checked?`All ${e} loaded selected`:`${e} ${e===1?"message":"messages"} selected`;return n.jsxs("div",{className:"sticky top-0 z-10 flex flex-col bg-surface-sunken border-b border-line",children:[n.jsxs("div",{className:"flex items-center justify-between px-3 py-2",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[n.jsx("button",{type:"button",onClick:s,className:"min-h-11 min-w-11 inline-flex items-center justify-center rounded hover:bg-surface-raised transition-colors","aria-label":"Clear selection",children:n.jsx(Ue,{className:"size-4 text-fg-muted"})}),f&&n.jsx("label",{className:"flex size-11 shrink-0 cursor-pointer items-center justify-center",children:n.jsx(on,{"aria-label":"Select all",checked:f.checked,indeterminate:f.indeterminate,onChange:f.onChange})}),n.jsx("span",{className:"text-sm font-medium",children:h??E}),m&&!p&&n.jsx("span",{className:"text-xs text-fg-muted",role:"status","aria-live":"polite",children:m})]}),n.jsxs("div",{className:"flex items-center gap-1",children:[w&&o&&n.jsxs("button",{type:"button",onClick:g?void 0:o,className:"min-h-11 inline-flex items-center justify-center gap-1.5 px-3 rounded text-sm font-medium transition-colors hover:bg-surface-raised","aria-label":"Organize similar messages",children:[n.jsx(bt,{className:"size-4"}),n.jsx("span",{className:"hidden sm:inline",children:"Organize"})]}),y&&a&&n.jsx("button",{type:"button",onClick:g?void 0:a,className:"min-h-11 min-w-11 inline-flex items-center justify-center rounded text-sm font-medium transition-colors hover:bg-surface-raised","aria-label":"Mark as read","aria-busy":g,children:n.jsx(Is,{className:"size-4"})}),y&&k&&r&&u&&d&&n.jsx(hn,{accountId:u,currentMailboxId:d,onMove:g?()=>{}:r,disabledHint:m,variant:"icon-only",label:"Move selected messages"}),y&&n.jsxs("button",{type:"button",onClick:g?void 0:t,className:ge("min-h-11 min-w-11 inline-flex items-center justify-center gap-1.5 px-3 rounded text-sm font-medium transition-colors","bg-danger text-canvas hover:bg-danger/90"),"aria-label":"Delete selected messages","aria-busy":i,children:[i?n.jsx(ut,{className:"size-4 animate-spin"}):n.jsx(st,{className:"size-4"}),n.jsx("span",{className:"hidden sm:inline",children:i?"Deleting...":"Delete"})]})]})]}),v&&n.jsx("div",{className:"px-3 pb-2",children:n.jsx(qr,{value:v.value,max:v.max,tone:v.tone})}),p&&n.jsx(Zt,{tone:p.tone,variant:"soft",role:"status","aria-live":"polite",className:"mx-3 mb-2",children:n.jsxs("div",{className:"flex items-center justify-between gap-2",children:[p.text&&n.jsx("span",{children:p.text}),p.action&&n.jsx("button",{type:"button",onClick:p.action.onClick,className:"-my-1 min-h-11 shrink-0 inline-flex items-center px-3 rounded text-sm font-medium transition-colors hover:bg-surface-raised",children:p.action.label})]})})]})},lo=c.createContext(null),Rx=e=>{const t=c.useContext(lo);return t?t.rowInteraction(e):null},Mx=()=>{const e=c.useContext(lo);if(!e)throw new Error("useThreadListSelection must be used inside <ThreadListInteraction>");return e},zx="[data-message-id]",Ax=e=>Array.from(e.querySelectorAll(zx)).map(t=>t.dataset.messageId).filter(t=>t!==void 0),Dx=(e,t)=>e.length===t.length&&e.every((s,a)=>s===t[a]),Ox=e=>{const[t,s]=c.useState([]);return c.useEffect(()=>{const a=e.current;if(!a)return;const r=()=>{const i=Ax(a);s(l=>Dx(l,i)?l:i)};r();const o=new MutationObserver(r);return o.observe(a,{childList:!0,subtree:!0}),()=>o.disconnect()},[e]),t};function ed({selectedMessageId:e,onOpen:t,onDeleteMessages:s,isDeleting:a=!1,commandsRef:r,onTriageContextChange:o,children:i}){const l=Lt(),u=c.useRef(null),d=Ox(u),m=Tx({orderedIds:d,isDesktop:l,initialFocusedId:e}),{focusedMessageId:f,setFocusedMessageId:h,pendingDomFocusRef:b,cursorMovedByPointerRef:v,selection:p,isMultiSelectMode:x,exitSelection:g,handleRowSelect:y}=m,{selectedIds:k,selectedCount:w,isSelected:E,toggle:T,select:C}=p,{intersectWith:S}=p;c.useEffect(()=>{S(d)},[S,d]),c.useEffect(()=>{const Y=b.current;Y!==null&&(b.current=null,u.current?.querySelector(`[data-message-id="${Y}"]`)?.focus())});const D=c.useCallback(Y=>{v.current=!0,h(Y)},[v,h]),z=c.useCallback(Y=>{l||C(Y)},[l,C]),A=c.useCallback(()=>{f&&t(f)},[f,t]),[P,I]=c.useState(null),j=c.useCallback(Y=>!s||Y.length===0?!1:(I(Y),!0),[s]),M=c.useCallback(()=>{j(Array.from(k))},[j,k]),$=c.useCallback(()=>P!==null?!0:w>0?j(Array.from(k)):f?j([f]):!1,[P,w,k,f,j]),R=c.useCallback(()=>{P!==null&&(s?.(P),I(null),g())},[P,s,g]),O=c.useCallback(()=>I(null),[]),N=c.useCallback(()=>w===0?!1:(g(),!0),[w,g]),L=d.length>0;c.useEffect(()=>{if(r){if(!L){r.current=null;return}return r.current={focusNext:m.focusNext,focusPrevious:m.focusPrevious,focusFirst:m.focusFirst,focusLast:m.focusLast,openFocused:A,toggleSelect:m.toggleFocusedSelection,extendSelectDown:m.extendRangeDown,extendSelectUp:m.extendRangeUp,selectAll:m.selectAllLoaded,clearSelection:N,requestDelete:$,toggleDensity:()=>{}},()=>{r.current=null}}},[r,L,m.focusNext,m.focusPrevious,m.focusFirst,m.focusLast,m.toggleFocusedSelection,m.extendRangeDown,m.extendRangeUp,m.selectAllLoaded,A,N,$]);const _=c.useMemo(()=>Array.from(k),[k]),q=P!==null;c.useEffect(()=>{o?.({focusedMessageId:f,selectedIds:_,orderedIds:d,hasList:L,blocksKeyboard:q})},[o,f,_,d,L,q]);const X=Ju(d,f),ee=c.useMemo(()=>({selectedIds:k,selectedCount:w,exitSelection:g,requestDeleteSelection:M,rowInteraction:Y=>({focused:Y===f,isTabStop:Y===X,isDesktop:l,onFocusRow:D,selection:{isChecked:E(Y),onToggleCheck:T,onRowSelect:y,isMultiSelectMode:x,onLongPress:z}})}),[k,w,g,M,f,X,l,D,E,T,y,x,z]);return n.jsxs(lo.Provider,{value:ee,children:[n.jsx("div",{ref:u,className:"contents",children:i}),n.jsx(io,{isOpen:q,title:_l(P?.length??0),description:"You can restore them from Trash later.",confirmLabel:"Move to Trash",destructive:!0,isBusy:a,onConfirm:R,onCancel:O})]})}function td({onMarkAsRead:e,isDeleting:t}){const{selectedIds:s,selectedCount:a,exitSelection:r,requestDeleteSelection:o}=Mx(),i=c.useCallback(()=>{e?.(Array.from(s)),r()},[e,s,r]);return n.jsx(Zu,{selectedCount:a,onDelete:o,onClearSelection:r,onMarkAsRead:e?i:void 0,isDeleting:t})}const Px=({thread:e,active:t=!1,focused:s,isTabStop:a,density:r="comfortable",isDesktop:o,badge:i,selection:l,inListbox:u=!1,linkMailboxId:d,onClick:m,onFocusRow:f})=>{const h=ye(),b=e.id,v=Rx(b),p=s??v?.focused??!1,x=a??v?.isTabStop??!1,g=l??v?.selection,y=f??v?.onFocusRow,k=o??v?.isDesktop??!0,w=g?.isChecked??!1,E=g?.isMultiSelectMode??!1,T=g?.onToggleCheck,C=g?.onRowSelect,S=g?.onLongPress,D=c.useCallback(N=>{N.preventDefault(),N.stopPropagation(),T?.(b)},[T,b]),z=c.useCallback(N=>{if(!k){if(E){N.preventDefault(),N.stopPropagation(),T?.(b);return}m?.();return}const L={shiftKey:N.shiftKey,metaKey:N.metaKey,ctrlKey:N.ctrlKey};if(C?.(b,L)){N.preventDefault(),N.stopPropagation(),L.shiftKey&&window.getSelection()?.removeAllRanges();return}m?.()},[k,E,T,C,m,b]),A=c.useCallback(N=>{k&&N.shiftKey&&N.preventDefault()},[k]),P=c.useCallback(()=>{S?.(b)},[S,b]),{longPressProps:I}=hc({onLongPress:P,delayMs:500,accessibilityDescription:w?"Deselect message":"Select message"}),j=c.useCallback(()=>{h.prefetchQuery(Mr({path:{messageId:b}}))},[h,b]),M=c.useCallback(()=>{j(),y?.(b)},[j,y,b]),$=nn({"data-list-row":"","data-message-row":!0,"data-message-id":b,...u?{role:"option","aria-selected":w}:{},tabIndex:x?0:-1,onClick:z,onMouseDown:A,onMouseEnter:j,onFocus:M},k||!g?{}:I),R=ge(r==="compact"?dc({active:t,focused:p}):ge("group",rn({active:t,focused:p})),"outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-inset",w&&"bg-accent-soft",!k&&"min-h-11 select-none [-webkit-touch-callout:none]"),O=r==="compact"?n.jsx(mc,{thread:e}):n.jsx(fc,{thread:e,badge:i,selection:g?{checked:w,alwaysVisible:E,onToggle:D}:void 0});return d===void 0?n.jsx("button",{type:"button",...$,className:R,children:O}):n.jsx(ht,{to:"/mail/$mailboxId",params:{mailboxId:d},search:N=>({...N,selectedMessageId:b}),...$,className:R,children:O})},co=c.memo(Px),Lx=200,$x={unread:e=>!e.isRead,attachment:e=>e.hasAttachment===!0,contacts:e=>e.trust==="vip"||e.trust==="wellknown",today:e=>e.sentDate!=null&&new Date(e.sentDate).toDateString()===new Date().toDateString()},Hi=()=>n.jsx("div",{className:"animate-pulse",children:Array.from({length:3}).map((e,t)=>n.jsxs("div",{className:"flex items-start gap-3 py-2 pl-5 pr-4 border-b border-line",children:[n.jsx("div",{className:"size-7 rounded-full bg-surface-sunken shrink-0 mt-0.5"}),n.jsxs("div",{className:"flex-1 space-y-1.5",children:[n.jsxs("div",{className:"flex justify-between gap-2",children:[n.jsx("div",{className:"h-3.5 bg-surface-sunken rounded w-28"}),n.jsx("div",{className:"h-3 bg-surface-sunken rounded w-12"})]}),n.jsx("div",{className:"h-3.5 bg-surface-sunken rounded w-48"}),n.jsx("div",{className:"h-3 bg-surface-sunken rounded w-full"})]})]},t))}),Fx=({accountEmail:e})=>{const t=ze();return n.jsxs("div",{className:"flex items-center gap-2 px-row-inset py-2 border-b border-line bg-danger-soft/40 text-xs text-danger",children:[n.jsx(Jt,{className:"size-3.5 shrink-0"}),n.jsxs("span",{className:"flex-1 truncate",children:[e," can't connect"]}),n.jsx("button",{type:"button",onClick:()=>t({to:"/settings/accounts"}),className:"shrink-0 underline text-danger hover:opacity-80",children:"Reconnect"})]})};function _x({accounts:e,selectedMessageId:t,onSelectMessage:s,onSelectSearchResult:a,commandsRef:r,onTriageContextChange:o,onDeleteMessages:i,onMarkMessagesRead:l}){const{searchQuery:u,resultFolderIndex:d}=je(),m=zs(),f=Lt(),h=c.useMemo(()=>fx(e.filter(U=>!U.muted?.value)),[e]),[b,v]=c.useState("all"),[p,x]=c.useState("all"),[g,y]=c.useState(new Set),[k,w]=c.useState(!1),E=c.useCallback(U=>{y(K=>{const ae=new Set(K);return ae.has(U)?ae.delete(U):ae.add(U),ae})},[]),{data:T,isLoading:C,isError:S,refetch:D}=ce({...Ya(),staleTime:6e4}),z=Pt({queries:h.map(U=>({...He({path:{accountId:U.accountId}}),staleTime:1/0,meta:{softError:!0}}))}),A=c.useMemo(()=>{const U=new Map;for(let K=0;K<h.length;K++){const ae=h[K].accountId,Te=(z[K]?.data?.items??[]).reduce((V,J)=>V+(J.unseenCount??0),0);U.set(ae,Te)}return U},[h,z]),P=c.useMemo(()=>h.filter((U,K)=>{const ae=z[K];return ae?.isError?!Ga(ae.error):!1}),[h,z]),{freeText:I,tokens:j}=As(u.trim().toLowerCase(),m),{data:M,isFetching:$}=ce({...Ya({query:{query:I,limit:Lx}}),enabled:I.length>0,staleTime:3e4}),R=c.useMemo(()=>{const U=(T?.items??[]).map(cr);return(I?hx(U.filter(ae=>Bu(ae,I)),(M?.items??[]).map(cr)):U).filter(ae=>(b==="all"||ae.accountId===b)&&Ku(ae,j))},[T,M,b,I,j]),O=c.useMemo(()=>gx(R),[R]),N=c.useMemo(()=>h.length<=1?[]:[{id:"all",label:"All",active:b==="all"},...h.map(U=>({id:U.accountId,label:U.email.split("@")[0]??U.email,count:A.get(U.accountId),active:b===U.accountId}))],[h,A,b]),L=c.useMemo(()=>e.filter(U=>U.muted?.value).length,[e]),_=c.useMemo(()=>Array.from(A.values()).reduce((U,K)=>U+K,0),[A]),q=c.useMemo(()=>{const U=Array.from(g).map(K=>$x[K]).filter(K=>K!=null);return R.filter(K=>(p==="all"||K.category===p)&&U.every(ae=>ae(K))).map(K=>Uu(K,d))},[R,p,g,d]),{hits:X,isLoading:ee}=qu(),Y=c.useMemo(()=>{const U=new Map;for(const ae of T?.items??[])U.set(ae.messageId,ae.threadId);const K=q.map(ae=>U.get(ae.id)).filter(ae=>ae!=null);return Hu(X,K,d)},[X,q,T,d]),fe=c.useMemo(()=>{const U=lh(N.map(K=>({id:K.id,label:K.label,count:K.count,active:K.active})));return{categories:U.categories,filters:U.filters,sources:U.sources,sourcesNote:L>0?`+${L} muted`:void 0,selectedCategory:p,activeFilters:g,expanded:k,onExpandedChange:w,onSelectCategory:K=>x(K),onSelectSource:v,onToggleFilter:E,onClear:()=>{x("all"),v("all"),y(new Set)}}},[N,L,p,g,k,E]),ue=O.length===0&&b==="all"&&I.length===0,te=C?n.jsxs("div",{className:"h-full overflow-y-auto",children:[n.jsx(Hi,{}),n.jsx(Hi,{})]}):S?n.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 py-12 text-sm text-fg-muted",children:[n.jsx(Jt,{className:"size-8 text-danger"}),n.jsx("p",{children:"Couldn't load your messages"}),n.jsxs("button",{type:"button",onClick:()=>D(),className:"flex items-center gap-1 text-accent underline text-xs",children:[n.jsx(rc,{className:"size-3.5"}),"Try again"]})]}):ue?n.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-2 py-12 text-center px-4",children:[n.jsx(bt,{className:"size-8 text-fg-subtle"}),n.jsx("p",{className:"text-sm font-medium text-fg",children:"You're caught up"}),n.jsx("p",{className:"text-xs text-fg-subtle",children:"Nothing needs attention."})]}):n.jsx(ed,{selectedMessageId:t,onOpen:U=>s?.(U),onDeleteMessages:i,commandsRef:r,onTriageContextChange:o,children:n.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[i?n.jsx(td,{onMarkAsRead:l}):null,n.jsx("div",{className:"min-h-0 flex-1",children:n.jsx(pl,{sections:O,Row:co,manageFocus:!1,briefCategory:p,onSelectBriefCategory:x,sources:N,sourcesNote:L>0?`+${L} muted`:void 0,onSelectSource:v,selectedThreadId:t,onSelectThread:s})})]})});return n.jsx(Qu,{title:"Daily brief",unreadCount:_,footer:f?n.jsx(cc,{}):void 0,searchFilter:fe,searchResults:q,searchLoading:C||$,relatedResults:Y,relatedLoading:ee,onSelectSearchResult:a,children:n.jsxs("div",{className:"flex h-full flex-col",children:[P.map(U=>n.jsx(Fx,{accountEmail:U.email,accountId:U.accountId},U.accountId)),n.jsx("div",{className:"min-h-0 flex-1",children:te})]})})}const qx=10,sd=e=>({q:e?.toLowerCase()??"",limit:qx}),Bx=(e,t)=>{if(!t)return;const s=t.toLowerCase();return e?.find(a=>a.normalizedEmail===s)};function Kx(e){const t=new Date(e),s=new Date;return t.toDateString()===s.toDateString()?"today":Fn(t,{month:"short",year:"numeric"})}function nd(e){if(!e)return!0;const[,t]=e.split("@");return t?!t.includes("."):!0}const Ux="We can't verify the sender of this email, which could mean it's from an insecure source.",Hx="We couldn't read this sender's address, so we can't confirm who really sent this message.";function Wx(e,t){return{name:e.fromName??e.fromEmail??"Unknown",email:e.fromEmail??"",trust:e.senderTrust,firstSeenLabel:t?Kx(t.createdAt):"unknown",inboundCount:t?.inboundCount,replyCount:t?.replyCount,addressUnverified:nd(e.fromEmail)}}function Vx(e){return e?.flags?{vip:e.flags.vip?.value===!0,muted:e.flags.muted?.value===!0,blocked:e.flags.blocked?.value===!0,unsubscribed:e.flags.unsubscribed?.value===!0}:{}}function Qx(e,t){const s=t>0?t:void 0;if(nd(e.fromEmail))return{verdict:"mismatch",fromDomain:"",addressUnreadable:!0,summary:Hx,similarCount:s};const a=e.authenticity;if(!a)return{verdict:"caution",fromDomain:e.fromEmail?.split("@")[1]??"",summary:Ux};if(!a.dkimMismatch)return{verdict:"aligned",fromDomain:a.fromDomain,dkimDomain:a.dkimDomain,summary:a.dkimDomain?`We verified this message was really sent by ${a.fromDomain}.`:"Nothing looks unusual about this sender."};const r=a.fromDomain,o=a.dkimDomain,i=e.fromName&&e.fromName!==e.fromEmail?e.fromName:void 0,l=i?`The display name claims "${i}", but this message was actually sent from ${o??"another sender"} — not ${r}. Real senders use their own address.`:`This message claims to be from ${r}, but it was actually sent from ${o??"a different sender"}.`;return{verdict:"mismatch",fromDomain:r,dkimDomain:o,claimedBrand:i,summary:l,similarCount:s}}function ad(e,t){const s=e?.fromEmail??null,a=e?.subject??"",{data:r,error:o}=ce({...El({query:sd(s??void 0)}),enabled:!!s,staleTime:3e4}),i=Bx(r?.items,s??void 0),l=[a,s].filter(Boolean).join(" "),{data:u,isLoading:d,error:m}=ce({...zl({query:{query:l,limit:5}}),enabled:!!(e&&l.length>3),staleTime:6e4,retry:1});return{data:c.useMemo(()=>{if(!e)return null;const h=(u?.items??[]).filter(g=>g.messageId!==e.messageId).map(g=>({id:g.messageId,mailboxId:t!=null&&g.mailboxIds.includes(t)?t:g.mailboxIds[0]??"",fromName:g.fromName??"",subject:g.subject??"(No subject)",timeLabel:g.sentDate!=null?Dt(g.sentDate*1e3):"",matched:g.matchedChunkType})),b=Wx(e,i),v=Qx(e,h.length),p={value:e.category??"personal",overridden:i?.flags?.category?.value!=null&&i.flags.category.value!==e.category},x=Vx(i);return{sender:b,authenticity:v,category:p,flags:x,similar:h}},[e,i,u,t]),isSimilarLoading:d,similarError:m,similarErrorIsFatal:Ga(m),addressErrorIsFatal:Ga(o),addressId:i?.addressId,address:i}}function Yx(e,t){const s={...e??{}};for(const[a,r]of Object.entries(t))r==null?delete s[a]:s[a]={...r,setAt:r.setAt??Date.now()};return s}function rd({addressId:e,senderEmail:t}){const s=ye(),{pushError:a}=Je(),r=R0({query:sd(t)}),{mutate:o,isPending:i}=xe({...Ml(),onMutate:async u=>{const d=u.body.flags??{};await s.cancelQueries({queryKey:r});const m=s.getQueryData(r);return s.setQueryData(r,f=>f&&{...f,items:f.items.map(h=>h.addressId===u.path.addressId?{...h,flags:Yx(h.flags,d)}:h)}),{previous:m}},onError:(u,d,m)=>{m?.previous!==void 0&&s.setQueryData(r,m.previous),a({title:"Couldn't update sender preference",detail:it(u),error:u})},onSettled:()=>{s.invalidateQueries({queryKey:r})}});return{updateFlags:c.useCallback(u=>{if(!e){Al(new Error(`Quick action fired but the sender's address record did not resolve (sender: ${t??"unknown"}). This should never happen — the address row exists.`));return}o({path:{addressId:e},body:{flags:u}})},[e,o,t]),isPending:i}}const Gx=e=>e==="vip"?"A sender you know":e==="wellknown"?"You've emailed them before":"Passed authentication",od=e=>e.senderTrust!=="vip"&&e.senderTrust!=="wellknown"?!1:e.authenticity?.dkimMismatch!==!0;function Xx(e,t){e.recordEvent("rescue.candidates_surfaced",{count:String(t)})}function Jx(e,t){e.recordEvent("rescue.flow_opened",{count:String(t)})}function Zx(e,t){e.recordEvent("rescue.committed",{selected:String(t.selected),total:String(t.total),destination:t.toInbox?"inbox":"other"})}function id(e,t){e.recordEvent("rescue.sent_to_junk",{count:String(t.count),senderTrust:t.senderTrust,wasRescuable:String(t.wasRescuable)})}const ev=["personal","newsletter","marketing","automated","transactional","social"],tv=e=>{const{mailboxId:t,junkMailboxId:s,inboxMailboxId:a}=e;return t?s&&t===s?a?"notSpam":null:s?"markSpam":null:null},sv=e=>{const{similarError:t,similarErrorIsFatal:s,isSimilarLoading:a}=e;return t&&!s?"error":a?"loading":"ready"};function nv(){return n.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[n.jsx(bt,{className:"size-3.5 text-fg-subtle"}),n.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),n.jsxs("div",{className:"flex-1 animate-pulse space-y-4 p-4",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),n.jsxs("div",{className:"flex gap-3",children:[n.jsx("div",{className:"size-10 rounded-full bg-surface shrink-0"}),n.jsxs("div",{className:"flex-1 space-y-1.5",children:[n.jsx("div",{className:"h-3 rounded bg-surface w-3/4"}),n.jsx("div",{className:"h-2.5 rounded bg-surface w-1/2"})]})]})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),n.jsx("div",{className:"h-8 rounded bg-surface"})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx("div",{className:"h-2.5 rounded bg-surface w-1/4"}),n.jsx("div",{className:"flex gap-1.5 flex-wrap",children:Array.from({length:5}).map((e,t)=>n.jsx("div",{className:"h-6 w-16 rounded bg-surface"},t))})]})]})]})}function av({isOpen:e,current:t,onSelect:s,onCancel:a}){return e?n.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center","aria-hidden":"true",onClick:a,children:[n.jsx("div",{className:"absolute inset-0 bg-canvas/80 backdrop-blur-sm"}),n.jsxs("div",{role:"dialog","aria-modal":"true","aria-label":"Reclassify sender",className:"relative z-10 w-full max-w-sm rounded-sm border border-line bg-surface p-6 shadow-lg",onClick:r=>r.stopPropagation(),onKeyDown:r=>r.stopPropagation(),children:[n.jsx("h2",{className:"text-lg font-semibold",children:"Reclassify this sender"}),n.jsx("p",{className:"mt-2 text-sm text-fg-muted",children:"Set a category override for future messages from this sender."}),n.jsx("div",{className:"mt-4 flex flex-col gap-1",children:ev.map(r=>n.jsxs("button",{type:"button",onClick:()=>s(r),className:`flex min-h-11 items-center justify-between rounded px-3 text-left text-sm capitalize transition-colors hover:bg-surface-raised ${r===t?"font-semibold text-accent":"text-fg"}`,children:[r,r===t&&n.jsx("span",{className:"text-2xs text-fg-subtle",children:"current"})]},r))}),n.jsx("div",{className:"mt-6 flex justify-end",children:n.jsx("button",{type:"button",onClick:a,className:"inline-flex min-h-11 items-center justify-center rounded border border-line px-4 text-sm font-medium transition-colors hover:bg-surface-raised",children:"Cancel"})})]})]}):null}function rv({thread:e,onClose:t,mailboxId:s,accountId:a,hideCloseButton:r}){const{data:o,addressId:i,isSimilarLoading:l,similarError:u,similarErrorIsFatal:d}=ad(e,s),[m,f]=c.useState(!1),[h,b]=c.useState(!1),v=e.fromEmail??void 0,{updateFlags:p,isPending:x}=rd({addressId:i,senderEmail:v}),{junkMailboxId:g}=ua(a),{inboxMailboxId:y}=to(a),{moveMessages:k}=Gt({mailboxId:s??"",threadId:e.threadId,accountId:a}),w=tn(),E=tv({mailboxId:s,junkMailboxId:g,inboxMailboxId:y}),T=c.useCallback(()=>{y&&k([e.messageId],y)},[y,k,e.messageId]),C=c.useCallback(()=>{g&&(id(w,{count:1,senderTrust:e.senderTrust,wasRescuable:od(e)}),k([e.messageId],g))},[g,k,e,w]),S=c.useCallback(()=>{},[]),D=c.useCallback(()=>{const N=o?.flags?.vip!==!0;p({vip:{value:N}})},[o?.flags?.vip,p]),z=c.useCallback(()=>{const N=o?.flags?.muted!==!0;p({muted:{value:N}})},[o?.flags?.muted,p]),A=c.useCallback(()=>{o?.flags?.blocked===!0?p({blocked:{value:!1}}):f(!0)},[o?.flags?.blocked,p]),P=c.useCallback(()=>{f(!1),p({blocked:{value:!0}})},[p]),I=c.useCallback(()=>{const N=o?.flags?.unsubscribed!==!0;p({unsubscribed:{value:N}})},[o?.flags?.unsubscribed,p]),j=c.useCallback(N=>{b(!1),p({category:{value:N}})},[p]),M=i!==void 0,$={onToggleVip:M?D:void 0,onToggleMute:M?z:void 0,onToggleBlock:M?A:void 0,onToggleUnsubscribe:M?I:void 0,onReclassify:M?()=>b(!0):void 0,onNotSpam:E==="notSpam"?T:void 0,onMarkSpam:E==="markSpam"?C:void 0},R=({mailboxId:N,messageId:L,className:_,ariaLabel:q,children:X})=>n.jsx(ht,{to:"/mail/$mailboxId",params:{mailboxId:N},search:ee=>({...ee,selectedMessageId:L}),className:_,"aria-label":q,children:X});if(!o)return n.jsx(nv,{});const O=sv({similarError:u,similarErrorIsFatal:d,isSimilarLoading:l});return n.jsxs(n.Fragment,{children:[n.jsx(lc,{data:o,onClose:t,hideCloseButton:r,onShowSimilar:S,actions:$,similarState:O,similarLinkComponent:R,className:"border-l-0 h-full w-full"}),n.jsx(io,{isOpen:m,title:"Block this sender?",description:`Messages from ${v??"this sender"} will never load images and will be flagged. You can undo this in Settings → Senders.`,confirmLabel:"Block sender",destructive:!0,isBusy:x,onConfirm:P,onCancel:()=>f(!1)}),n.jsx(av,{isOpen:h,current:o.category.value,onSelect:j,onCancel:()=>b(!1)})]})}const Ds=({onClose:e,thread:t,mailboxId:s,accountId:a,hideCloseButton:r})=>t?n.jsx(rv,{thread:t,onClose:e,mailboxId:s,accountId:a,hideCloseButton:r}):n.jsxs("aside",{className:"flex h-full w-full flex-col bg-surface-sunken",children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-1.5 border-b border-line px-row-inset",children:[n.jsx(bt,{className:"size-3.5 text-fg-subtle"}),n.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:"Intelligence"})]}),n.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center px-row-inset text-center",children:[n.jsx(bt,{className:"size-8 text-fg-subtle"}),n.jsx("p",{className:"mt-3 text-sm text-fg-muted",children:"Intelligence"}),n.jsx("p",{className:"mt-1 text-2xs text-fg-subtle",children:"Sender trust, authenticity and similar messages will appear here."})]})]}),Ka="Open a message first",uo=({hasThread:e,intelligenceOpen:t,canToggleIntelligence:s,onToggleIntelligence:a,onReply:r,onReplyAll:o,onForward:i,onDelete:l,canDelete:u,onToggleStar:d,isStarred:m,moveContext:f})=>{const[h,b]=c.useState(null),v=u??e,p=x=>()=>b(x);return n.jsx(Cf,{hasThread:e,isStarred:m,onUnavailable:x=>b(Ka),unavailableHint:h,replyTitle:`Reply ${hs("reply")}`,replyAllTitle:`Reply all ${hs("replyAll")}`,forwardTitle:`Forward ${hs("forward")}`,deleteTitle:`Move to Trash ${hs("delete")}`,flagTitle:`Star ${hs("toggleStar")}`,onReply:r,onReplyAll:o,onForward:i,onDelete:v?l:p(Ka),onToggleStar:d,onMove:p(Ka),moveSlot:f?n.jsx(hn,{accountId:f.accountId,currentMailboxId:f.currentMailboxId,onMove:f.onMove,label:"Move to mailbox"}):void 0,children:n.jsx(Sf,{open:t,enabled:s,onToggle:a})})},ld=()=>{const e=ye();return c.useCallback(t=>{const s=ts({path:{threadId:t.threadId}}),r=e.getQueriesData({queryKey:s}).flatMap(([,o])=>o?.items.map(i=>i.messageId)??[]);return r.length>0?r:[t.messageId]},[e])},Js=({thread:e,mailboxId:t,accountId:s,onAfterOptimisticRemove:a})=>{const r=t??e?.mailboxId,o=s??e?.accountConfigId,i=ld(),{deleteMessages:l}=Xt({mailboxId:r??"",threadId:e?.threadId,accountId:o,onAfterOptimisticRemove:a}),{moveMessages:u}=Gt({mailboxId:r??"",threadId:e?.threadId,accountId:o,onAfterOptimisticRemove:a}),{toggleStar:d}=Zr({threadId:e?.threadId??"",mailboxId:r??""}),m=c.useCallback(()=>{e&&l(i(e))},[e,i,l]),f=c.useCallback(x=>{e&&u(i(e),x)},[e,i,u]),h=c.useCallback(()=>{e&&d(e.messageId,e.hasStars)},[e,d]),[b,v]=c.useState(null),p=c.useCallback(()=>v(null),[]);return{mailboxId:r,accountId:o,isStarred:e?.hasStars,deleteThread:m,moveThread:f,toggleStar:h,composeRequest:b,requestCompose:v,clearComposeRequest:p}},_s={action:null,nextPrefix:null,preventDefault:!1},ov={b:"goBrief",i:"goInbox",s:"goSent",f:"goFlagged",",":"goSettings"},iv={j:{action:"focusNext"},k:{action:"focusPrevious"},arrowdown:{action:"focusNext"},arrowup:{action:"focusPrevious"},home:{action:"focusFirst"},end:{action:"focusLast"},enter:{action:"openFocused"}," ":{action:"toggleSelect"},delete:{action:"delete"},backspace:{action:"delete"},u:{action:"toggleRead"},x:{action:"toggleSelect"},r:{action:"reply"},a:{action:"replyAll"},f:{action:"forward"},"#":{action:"delete"},s:{action:"toggleStar"},m:{action:"muteSender"},b:{action:"blockSender"},v:{action:"vipSender"},"!":{action:"markJunk"},i:{action:"toggleIntelligence"},d:{action:"toggleDensity"},"/":{action:"focusSearch"},c:{action:"compose"},"?":{action:"help"}};function lv(e,t){const s=e.key.toLowerCase(),a=e.metaKey||e.ctrlKey;if(e.inEditable)return{..._s,nextPrefix:t==="g"?null:t};if(e.onControl&&(s==="enter"||s===" "))return{..._s,nextPrefix:t==="g"?null:t};if(a&&s==="n")return{action:"compose",nextPrefix:null,preventDefault:!0};if(a&&s==="a")return{action:"selectAll",nextPrefix:null,preventDefault:!0};if(a)return{..._s,nextPrefix:t==="g"?null:t};if(s==="escape")return{action:"back",nextPrefix:null,preventDefault:!1};if(t==="g"){const i=ov[s===","?",":s]??null;return{action:i,nextPrefix:null,preventDefault:i!==null}}if(s==="g"&&!e.shiftKey)return{action:null,nextPrefix:"g",preventDefault:!0};if(e.shiftKey){const o=s==="j"||s==="arrowdown";if(o||(s==="k"||s==="arrowup"))return{action:o?"extendSelectDown":"extendSelectUp",nextPrefix:null,preventDefault:!0}}const r=iv[s];if(r){const o=r.requireShift===!0,i=s.length===1&&!/[a-z0-9]/.test(s);return!o&&e.shiftKey&&!i?_s:{action:r.action,nextPrefix:null,preventDefault:!0}}return _s}function cv(e){if(!(e instanceof HTMLElement))return!1;const t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||e.isContentEditable}const uv="data-message-row",dv='button, a[href], summary, [role="button"], [role="menuitem"], [role="tab"], [role="switch"], [role="checkbox"]';function mv(e){if(!(e instanceof HTMLElement))return!1;const t=e.closest(dv);return t?!t.hasAttribute(uv):!1}function fv({handlers:e,enabled:t=!0,sequenceTimeoutMs:s=1e3}){const a=c.useRef(e);a.current=e;const r=c.useRef(null),o=c.useRef(null);c.useEffect(()=>{if(!t)return;const i=()=>{o.current!==null&&(clearTimeout(o.current),o.current=null)},l=u=>{const d=lv({key:u.key,shiftKey:u.shiftKey,metaKey:u.metaKey,ctrlKey:u.ctrlKey,altKey:u.altKey,inEditable:cv(u.target),onControl:mv(u.target)},r.current);if(i(),r.current=d.nextPrefix,d.nextPrefix!==null&&(o.current=setTimeout(()=>{r.current=null,o.current=null},s)),d.action===null)return;const m=a.current[d.action];m&&(d.preventDefault&&u.preventDefault(),m())};return window.addEventListener("keydown",l),()=>{window.removeEventListener("keydown",l),i(),r.current=null}},[t,s])}const Wi=(e,t,s)=>{if(!t)return null;const a=e.indexOf(t);if(a===-1)return null;const r=s==="next"?a+1:a-1;return r<0||r>=e.length?null:e[r]},mo=()=>{const[e,t]=c.useState(void 0),[s,a]=c.useState([]),[r,o]=c.useState([]),i=c.useRef(null),[l,u]=c.useState(!1),[d,m]=c.useState(!1),f=c.useCallback(h=>{t(h.focusedMessageId),a(h.selectedIds),h.orderedIds&&o(h.orderedIds),u(h.hasList),m(h.blocksKeyboard)},[]);return{listCommandsRef:i,onTriageContextChange:f,focusedMessageId:e,selectedIds:s,orderedIds:r,hasList:l,blocksKeyboard:d}},fo=({context:e,orderedIds:t,selectedMessageId:s,enabled:a=!0,onClose:r,handlers:o})=>{const{listCommandsRef:i,hasList:l,blocksKeyboard:u}=e,d=c.useCallback(()=>{i.current?.clearSelection()||s&&r()},[i,s,r]);return fv({enabled:a&&!u,handlers:{...l?{focusNext:()=>i.current?.focusNext(),focusPrevious:()=>i.current?.focusPrevious(),focusFirst:()=>i.current?.focusFirst(),focusLast:()=>i.current?.focusLast(),openFocused:()=>i.current?.openFocused(),toggleSelect:()=>i.current?.toggleSelect(),extendSelectDown:()=>i.current?.extendSelectDown(),extendSelectUp:()=>i.current?.extendSelectUp(),selectAll:()=>i.current?.selectAll(),toggleDensity:()=>i.current?.toggleDensity()}:{},back:d,...o}}),{goBack:d,nextMessageId:Wi(t,s,"next")??void 0,previousMessageId:Wi(t,s,"previous")??void 0}};function hv(e){return{threadId:e.threadId,mailboxId:e.mailboxId,subject:e.subject,messageId:e.messageId,authenticity:e.authenticity}}function cd(e,t){if(e)return hv(e);if(t.messageId&&t.threadId&&t.mailboxId)return{threadId:t.threadId,mailboxId:t.mailboxId,messageId:t.messageId}}const ud=c.createContext(null);function ha(){const e=c.useContext(ud);if(!e)throw new Error("BriefPane.* must be used inside <BriefPane>");return e}function gv({selectedMessageId:e,children:t}){const s=ze(),{searchInput:a}=je(),{selectedThreadId:r,selectedMailboxId:o}=ws({strict:!1}),{data:i}=ce({...Ya(),staleTime:6e4}),l=c.useMemo(()=>{if(e)return i?.items.find(z=>z.messageId===e)},[i,e]),u=c.useMemo(()=>cd(l,{messageId:e,threadId:r,mailboxId:o}),[l,e,r,o]),d=c.useCallback(z=>{s({to:"/mail",search:A=>({...A,selectedMessageId:z,selectedThreadId:void 0,selectedMailboxId:void 0})})},[s]),m=c.useCallback(z=>{s({to:"/mail",search:A=>({...A,q:a||void 0,selectedMessageId:z.id,selectedThreadId:z.threadId,selectedMailboxId:z.mailboxId})})},[s,a]),f=c.useCallback(z=>{e&&z.includes(e)&&s({to:"/mail",search:A=>({...A,selectedMessageId:void 0,selectedThreadId:void 0,selectedMailboxId:void 0})})},[e,s]),h=Js({thread:l,onAfterOptimisticRemove:f}),b=c.useCallback(()=>{s({to:"/mail",search:z=>({...z,selectedMessageId:void 0,selectedThreadId:void 0,selectedMailboxId:void 0})})},[s]),v=mo(),p=c.useMemo(()=>i?.items??[],[i]),{deleteMessages:x}=Xt({mailboxId:l?.mailboxId??"",messages:p,onAfterOptimisticRemove:f}),{toggleReadFor:g}=ia({mailboxId:l?.mailboxId??"",messages:p}),y=c.useCallback(z=>g(z,!0),[g]),k=v.focusedMessageId,E=c.useMemo(()=>i?.items.find(z=>z.messageId===k),[i,k])??l,T=Js({thread:E}),{nextMessageId:C,previousMessageId:S}=fo({context:v,orderedIds:v.orderedIds,selectedMessageId:e,onClose:b,handlers:{reply:()=>h.requestCompose("reply"),replyAll:()=>h.requestCompose("reply_all"),forward:()=>h.requestCompose("forward"),delete:()=>{v.listCommandsRef.current?.requestDelete()||T.deleteThread()},toggleStar:T.toggleStar,toggleRead:()=>{const z=v.selectedIds.length>0?v.selectedIds:E?[E.messageId]:[];z.length!==0&&g(z,!(E?.isRead??!1))},goFlagged:()=>s({to:"/mail/flagged"}),goSettings:()=>s({to:"/settings"})}}),D={selectedMessageId:e,selectedThread:l,conversation:u,onSelectMessage:d,onSelectSearchResult:m,onCloseThread:b,actions:h,triage:v,onDeleteMessages:x,onMarkMessagesRead:y,nextMessageId:C,previousMessageId:S};return n.jsx(ud.Provider,{value:D,children:t})}function dd(){const{selectedMessageId:e,onSelectMessage:t,onSelectSearchResult:s,triage:a,onDeleteMessages:r,onMarkMessagesRead:o}=ha(),{accounts:i}=je();return n.jsx(_x,{accounts:i,selectedMessageId:e,onSelectMessage:t,onSelectSearchResult:s,commandsRef:a.listCommandsRef,onTriageContextChange:a.onTriageContextChange,onDeleteMessages:r,onMarkMessagesRead:o})}function pv(){const{conversation:e,actions:t}=ha(),{intelligenceOpen:s,onToggleIntelligence:a}=je(),r=Es()?.showIntelligencePane??!1,o=!!e,i=r&&o;return n.jsxs("section",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[n.jsx(uo,{hasThread:o,intelligenceOpen:i&&s,canToggleIntelligence:i,onToggleIntelligence:a,onReply:o?()=>t.requestCompose("reply"):void 0,onReplyAll:o?()=>t.requestCompose("reply_all"):void 0,onForward:o?()=>t.requestCompose("forward"):void 0,onDelete:o?t.deleteThread:void 0,onToggleStar:o?t.toggleStar:void 0,isStarred:t.isStarred,moveContext:o&&t.accountId&&t.mailboxId?{accountId:t.accountId,currentMailboxId:t.mailboxId,onMove:t.moveThread}:void 0}),n.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:e?n.jsx(Ms,{threadId:e.threadId,mailboxId:e.mailboxId,subject:e.subject,selectedMessageId:e.messageId,authenticity:e.authenticity,composeRequest:t.composeRequest,onComposeClose:t.clearComposeRequest}):n.jsx(Rs,{})})]})}function bv(){const{selectedThread:e}=ha(),{onToggleIntelligence:t}=je();return n.jsx(Ds,{onClose:t,thread:e,mailboxId:e?.mailboxId,accountId:e?.accountId})}function xv(){const{selectedThread:e,conversation:t,onSelectMessage:s,onCloseThread:a,nextMessageId:r,previousMessageId:o}=ha(),{intelligenceOpen:i,onToggleIntelligence:l}=je();return t?n.jsxs(n.Fragment,{children:[n.jsx(Ms,{threadId:t.threadId,mailboxId:t.mailboxId,subject:t.subject,selectedMessageId:t.messageId,authenticity:t.authenticity,onBack:a,onOpenIntelligence:l,onSwipeNext:r?()=>s(r):void 0,onSwipePrevious:o?()=>s(o):void 0,mobileIntelligenceOpen:i}),n.jsx(Yr,{isOpen:i,onClose:l,ariaLabel:"Message details",side:"right",children:n.jsx(Ds,{onClose:l,thread:e,hideCloseButton:!0})})]}):n.jsx("div",{className:"h-full",children:n.jsx(dd,{})})}const qs=Object.assign(gv,{List:dd,Reading:pv,Intelligence:bv,Phone:xv}),vv=()=>Rl({query:{starred:!0,order:"desc"}});function md(){const{data:e,isLoading:t,isError:s,error:a,refetch:r,fetchNextPage:o,hasNextPage:i,isFetchingNextPage:l}=qc({queryKey:vv(),queryFn:async({pageParam:d})=>{const{data:m}=await M0({query:{starred:!0,order:"desc",continuationToken:d},throwOnError:!0});return m},initialPageParam:void 0,getNextPageParam:d=>d.continuationToken,staleTime:6e4});return{threads:c.useMemo(()=>(e?.pages??[]).flatMap(d=>d.items??[]),[e]),isLoading:t,isError:s,error:a,refetch:r,fetchNextPage:o,hasNextPage:i,isFetchingNextPage:l}}const yv=e=>{const t=new Set;return e.filter(s=>t.has(s.threadId)?!1:(t.add(s.threadId),!0))};function fd({title:e,unreadCount:t,preset:s,selectedCategory:a,activeFilters:r,onSelectCategory:o,onToggleFilter:i,onSelectSource:l,onClearFilters:u,children:d,footer:m,searchResults:f,searchLoading:h,relatedResults:b,relatedLoading:v,onSelectSearchResult:p,searchResultsLabel:x,relatedResultsLabel:g,searchResultsInBody:y}){const[k,w]=c.useState(!1),E={categories:s.categories,filters:s.filters,sources:s.sources,selectedCategory:a,activeFilters:r,expanded:k,onExpandedChange:w,onSelectCategory:o,onSelectSource:l,onToggleFilter:i,onClear:u};return n.jsx(Qu,{title:e,unreadCount:t,footer:m,searchFilter:E,searchResults:f,searchLoading:h,relatedResults:b,relatedLoading:v,onSelectSearchResult:p,searchResultsLabel:x,relatedResultsLabel:g,searchResultsInBody:y,children:n.jsx(yr,{...E,children:d})})}const kv={unread:e=>!e.isRead,attachment:e=>e.hasAttachment===!0};function wv({selectedMessageId:e,onSelectMessage:t,commandsRef:s,onTriageContextChange:a,onDeleteMessages:r,onMarkMessagesRead:o}){const{searchQuery:i,resultFolderIndex:l}=je(),u=zs(),d=Lt(),[m,f]=c.useState("all"),[h,b]=c.useState(new Set),v=c.useCallback(R=>{b(O=>{const N=new Set(O);return N.has(R)?N.delete(R):N.add(R),N})},[]),p=c.useCallback(()=>{f("all"),b(new Set)},[]),{threads:x,isLoading:g,isError:y,error:k,refetch:w,fetchNextPage:E,hasNextPage:T,isFetchingNextPage:C}=md(),{freeText:S,tokens:D}=As(i.trim().toLowerCase(),u),z=c.useMemo(()=>{const R=Array.from(h).map(O=>kv[O]).filter(O=>O!=null);return yv(x).map(cr).filter(O=>(m==="all"||O.category===m)&&R.every(N=>N(O))&&(!S||Bu(O,S))&&Ku(O,D))},[x,m,h,S,D]),A=c.useMemo(()=>uh(),[]),P=c.useMemo(()=>z.map(R=>Uu(R,l)),[z,l]),I=c.useMemo(()=>z.filter(R=>!R.isRead).length,[z]),j=g?"loading":y?"error":z.length===0?"empty":"ready",M=c.useCallback(()=>{const R=Ir(Er());window.open(R,"_blank","noopener,noreferrer")},[]),$=n.jsx(ed,{selectedMessageId:e,onOpen:R=>t?.(R),onDeleteMessages:r,commandsRef:s,onTriageContextChange:a,children:n.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[r?n.jsx(td,{onMarkAsRead:o}):null,n.jsxs("div",{className:"flex-1 overflow-y-auto",children:[n.jsx("div",{className:"divide-y divide-line",children:z.map(R=>n.jsx(co,{thread:R,active:R.id===e,onClick:()=>t?.(R.id)},R.id))}),T?n.jsx("button",{type:"button",className:"w-full py-3 text-sm text-muted hover:text-fg disabled:opacity-50",onClick:()=>E(),disabled:C,children:C?"Loading…":"Load more"}):null]})]})});return n.jsx(fd,{title:"Starred",unreadCount:I,preset:A,selectedCategory:m,activeFilters:h,onSelectCategory:f,onToggleFilter:v,onClearFilters:p,searchResults:P,searchLoading:g,onSelectSearchResult:R=>t?.(R.id),children:n.jsx(pc,{listTitle:"Starred",sections:[{id:"flagged",threads:z}],flatList:!0,hideHeader:!0,listState:j,searchQuery:S?i:void 0,errorMessage:y?$l(k):void 0,onRetry:()=>w(),onReportError:M,selectedThreadId:e,onSelectThread:t,onSelectBriefCategory:()=>{},isDesktop:d,listBody:j==="ready"?$:void 0})})}const hd=c.createContext(null);function ga(){const e=c.useContext(hd);if(!e)throw new Error("FlaggedPane.* must be used inside <FlaggedPane>");return e}function jv({selectedMessageId:e,children:t}){const s=ze(),{threads:a}=md(),r=c.useMemo(()=>{if(e)return a.find(w=>w.messageId===e)},[a,e]),o=c.useCallback(w=>{s({to:"/mail/flagged",search:E=>({...E,selectedMessageId:w})})},[s]),i=c.useCallback(()=>{s({to:"/mail/flagged",search:w=>({...w,selectedMessageId:void 0})})},[s]),l=c.useCallback(w=>{e&&w.includes(e)&&i()},[e,i]),u=Js({thread:r,onAfterOptimisticRemove:l}),d=mo(),{deleteMessages:m}=Xt({mailboxId:r?.mailboxId??"",messages:a,onAfterOptimisticRemove:l}),{toggleReadFor:f}=ia({mailboxId:r?.mailboxId??"",messages:a}),h=c.useCallback(w=>f(w,!0),[f]),b=d.focusedMessageId,p=c.useMemo(()=>a.find(w=>w.messageId===b),[a,b])??r,x=Js({thread:p}),{nextMessageId:g,previousMessageId:y}=fo({context:d,orderedIds:d.orderedIds,selectedMessageId:e,onClose:i,handlers:{reply:()=>u.requestCompose("reply"),replyAll:()=>u.requestCompose("reply_all"),forward:()=>u.requestCompose("forward"),delete:()=>{d.listCommandsRef.current?.requestDelete()||x.deleteThread()},toggleStar:x.toggleStar,toggleRead:()=>{const w=d.selectedIds.length>0?d.selectedIds:p?[p.messageId]:[];w.length!==0&&f(w,!(p?.isRead??!1))},goBrief:()=>s({to:"/mail"}),goSettings:()=>s({to:"/settings"})}}),k={selectedMessageId:e,selectedThread:r,onSelectMessage:o,onCloseThread:i,actions:u,triage:d,onDeleteMessages:m,onMarkMessagesRead:h,nextMessageId:g,previousMessageId:y};return n.jsx(hd.Provider,{value:k,children:t})}function gd(){const{selectedMessageId:e,onSelectMessage:t,triage:s,onDeleteMessages:a,onMarkMessagesRead:r}=ga();return n.jsx(wv,{selectedMessageId:e,onSelectMessage:t,commandsRef:s.listCommandsRef,onTriageContextChange:s.onTriageContextChange,onDeleteMessages:a,onMarkMessagesRead:r})}function Sv(){const{selectedThread:e,actions:t}=ga(),{intelligenceOpen:s,onToggleIntelligence:a}=je(),r=Es()?.showIntelligencePane??!1,o=!!e,i=r&&o;return n.jsxs("section",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[n.jsx(uo,{hasThread:o,intelligenceOpen:i&&s,canToggleIntelligence:i,onToggleIntelligence:a,onReply:o?()=>t.requestCompose("reply"):void 0,onReplyAll:o?()=>t.requestCompose("reply_all"):void 0,onForward:o?()=>t.requestCompose("forward"):void 0,onDelete:o?t.deleteThread:void 0,onToggleStar:o?t.toggleStar:void 0,isStarred:t.isStarred,moveContext:o&&t.accountId&&t.mailboxId?{accountId:t.accountId,currentMailboxId:t.mailboxId,onMove:t.moveThread}:void 0}),n.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:e?n.jsx(Ms,{threadId:e.threadId,mailboxId:e.mailboxId,subject:e.subject,authenticity:e.authenticity,composeRequest:t.composeRequest,onComposeClose:t.clearComposeRequest}):n.jsx(Rs,{})})]})}function Cv(){const{selectedThread:e}=ga(),{onToggleIntelligence:t}=je();return n.jsx(Ds,{onClose:t,thread:e,mailboxId:e?.mailboxId,accountId:e?.accountId})}function Nv(){const{selectedThread:e,onCloseThread:t,onSelectMessage:s,nextMessageId:a,previousMessageId:r}=ga(),{intelligenceOpen:o,onToggleIntelligence:i}=je();return e?n.jsxs(n.Fragment,{children:[n.jsx(Ms,{threadId:e.threadId,mailboxId:e.mailboxId,subject:e.subject,authenticity:e.authenticity,onBack:t,onOpenIntelligence:i,onSwipeNext:a?()=>s(a):void 0,onSwipePrevious:r?()=>s(r):void 0,mobileIntelligenceOpen:o}),n.jsx(Yr,{isOpen:o,onClose:i,ariaLabel:"Message details",side:"right",children:n.jsx(Ds,{onClose:i,thread:e,hideCloseButton:!0})})]}):n.jsx("div",{className:"h-full",children:n.jsx(gd,{})})}const Bs=Object.assign(jv,{List:gd,Reading:Sv,Intelligence:Cv,Phone:Nv}),Ev={reply:"Reply",reply_all:"Reply All",forward:"Forward",new:"New Message"},Iv=()=>{const e=c.useRef(!1);return c.useCallback(()=>{const s=document.querySelector("[data-subject-field]")?.value??"",o=(document.querySelector("[data-slate-editor]")?.textContent??"").replace(/--\s*/g,"").trim();return e.current=s.trim().length>0||o.length>0,e.current},[])},Tv=()=>{const{state:e,closeCompose:t}=zt(),s=Iv(),[a,r]=c.useState(!1),{isError:o,error:i,refetch:l}=ce({...xt(),staleTime:1/0}),u=c.useCallback(h=>{h||(s()?r(!0):t())},[t,s]),d=c.useCallback(()=>{r(!1),t()},[t]),m=c.useCallback(()=>{r(!1)},[]);if(!e.isOpen)return null;const f=Ev[e.mode]??"New Message";return n.jsxs(Xe.Root,{open:e.isOpen,onOpenChange:u,children:[n.jsxs(Xe.Portal,{children:[n.jsx(Xe.Overlay,{className:"fixed inset-0 z-40 bg-black/40"}),n.jsxs(Xe.Content,{className:"fixed inset-x-0 bottom-0 z-50 flex flex-col bg-canvas rounded-t-lg",style:{height:"95dvh"},children:[n.jsx(Xe.Handle,{className:"mx-auto mt-2 mb-1 h-1.5 w-12 rounded-full bg-fg-muted/30"}),n.jsx(Xe.Title,{className:"px-4 py-2 text-base font-semibold border-b border-line",children:f}),o?n.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:n.jsx(At,{title:"Couldn't load compose",error:i,onRetry:()=>{l()}})}):n.jsx("div",{className:"flex-1 overflow-hidden",children:n.jsx(Gr,{mode:e.mode,account:e.account,sourceMessage:e.sourceMessage,onClose:t})})]})]}),a&&n.jsx("div",{className:"fixed inset-0 z-[60] flex items-center justify-center bg-black/50",children:n.jsxs("div",{className:"mx-4 w-full max-w-sm rounded-xl bg-canvas p-6 shadow-xl",children:[n.jsx("h3",{className:"text-lg font-semibold",children:"Discard draft?"}),n.jsx("p",{className:"mt-2 text-sm text-fg-muted",children:"Your message has unsaved content. Are you sure you want to discard it?"}),n.jsxs("div",{className:"mt-4 flex justify-end gap-2",children:[n.jsx("button",{type:"button",onClick:m,className:"rounded-md px-4 py-2 text-sm font-medium hover:bg-surface-raised transition-colors",children:"Keep editing"}),n.jsx("button",{type:"button",onClick:d,className:"rounded-md bg-danger px-4 py-2 text-sm font-medium text-canvas hover:bg-danger/90 transition-colors",children:"Discard"})]})]})})]})},Rv={reply:"Reply",reply_all:"Reply All",forward:"Forward",new:"New Message"},pd=()=>{const{state:e,closeCompose:t}=zt(),s=Lt(),{isError:a,error:r,refetch:o}=ce({...xt(),staleTime:1/0});if(!s)return n.jsx(Tv,{});if(!e.isOpen)return null;const i=Rv[e.mode]??"New Message",l=n.jsxs("header",{className:"flex items-center justify-between gap-2 px-4 py-3 border-b border-line shrink-0",children:[n.jsx("div",{className:"flex items-center gap-2 min-w-0",children:n.jsx("h2",{className:"text-lg font-semibold truncate",children:i})}),n.jsx("button",{type:"button",onClick:t,className:"p-2 rounded-md hover:bg-surface-raised transition-colors min-h-11 min-w-11 inline-flex items-center justify-center","aria-label":"Close",children:n.jsx(Ue,{className:"size-5"})})]});return a?n.jsxs("div",{className:"h-full flex flex-col bg-canvas",children:[l,n.jsx("div",{className:"flex-1 flex items-center justify-center p-4",children:n.jsx(At,{title:"Couldn't load compose",error:r,onRetry:()=>{o()}})})]}):n.jsxs("div",{className:"flex h-full min-h-0 flex-col bg-canvas",children:[l,n.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:n.jsx(Gr,{mode:e.mode,account:e.account,sourceMessage:e.sourceMessage,onClose:t},e.outboxMessageId??"new")})]})};function Mv(e){const t=e.toAddresses.join(", ");return{id:e.outboxMessageId,accountId:e.accountId,fromName:e.fromName??e.fromAddress??"Me",fromEmail:e.fromAddress??"",subject:e.subject??"(No subject)",snippet:t?`To: ${t}`:"(No recipients)",timeLabel:Dt(e.updatedAt),isRead:!0}}function zv(e){return{id:e.messageId,accountId:e.accountConfigId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:Dt(e.sentDate),isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0}}function Av({outboxMessages:e,accountId:t,imapThreads:s}){const a=e.filter(i=>i.status==="draft"&&i.accountId===t).map(Mv),r=s.map(zv),o=[];return a.length>0&&o.push({id:"remit-drafts",label:"Not yet sent (Remit)",threads:a}),r.length>0&&o.push({id:"imap-drafts",label:"On the server",threads:r}),o}function ho(){const e=Es();return!e||e.showNavPane?null:n.jsx(G,{variant:"ghost",size:"sm",icon:n.jsx(Dr,{className:"size-4"}),onClick:e.openNav,"aria-label":"Open folders",className:"-ml-1 shrink-0"})}const Dv=({label:e,count:t})=>n.jsxs("div",{className:"sticky top-0 z-10 flex items-baseline justify-between border-b border-line bg-surface-sunken px-row-inset py-1",children:[n.jsx("span",{className:"text-2xs font-semibold uppercase tracking-wider text-fg-subtle",children:e}),n.jsx("span",{className:"text-2xs text-fg-subtle tabular-nums",children:t})]}),Ov=({row:e,isSelected:t,onOpen:s,onDelete:a,isDeleting:r})=>n.jsxs("button",{type:"button",onClick:()=>s(e.id),className:H("group",rn({active:t})),children:[n.jsx(yl,{className:"size-7 shrink-0 text-fg-muted mt-0.5"}),n.jsx(Ys,{thread:e}),n.jsx("div",{className:"flex items-center gap-1 shrink-0",children:n.jsx("button",{type:"button",onClick:o=>{o.stopPropagation(),a(e.id)},disabled:r,className:"p-1.5 rounded-md text-fg-muted hover:text-danger hover:bg-surface-raised transition-colors opacity-0 group-hover:opacity-100 focus:opacity-100",title:"Delete draft",children:n.jsx(st,{className:"size-3.5"})})})]}),Pv=({row:e,isSelected:t,onOpen:s})=>{const a=!e.isRead;return n.jsxs("button",{type:"button",onClick:()=>s(e.id),className:H("group",rn({active:t})),children:[a&&n.jsx("span",{className:"absolute left-1.5 top-1/2 size-1.5 -translate-y-1/2 rounded-full bg-accent"}),n.jsx(ct,{name:e.fromName,email:e.fromEmail,size:"sm"}),n.jsx(Ys,{thread:e})]})};function Lv({mailboxId:e,accountId:t,selectedMessageId:s,imapThreads:a,title:r,unreadCount:o}){const{openCompose:i,state:l}=zt(),u=ze(),d=ye(),{data:m}=ce(Xn()),f=c.useMemo(()=>Av({outboxMessages:m?.items??[],accountId:t,imapThreads:a}),[m?.items,t,a]),h=xe({...Jn(),onSuccess:()=>{d.invalidateQueries({queryKey:Ar()})}}),b=g=>{h.mutate({path:{outboxMessageId:g}})},v=g=>{s&&u({to:"/mail/$mailboxId",params:{mailboxId:e},search:{selectedMessageId:void 0}}),i({mode:"new",outboxMessageId:g})},p=g=>{u({to:"/mail/$mailboxId",params:{mailboxId:e},search:{selectedMessageId:g}})},x=f.length===0;return n.jsxs("section",{className:"flex h-full w-full flex-col bg-surface",children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line px-row-inset",children:[n.jsx(ho,{}),n.jsx("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:r}),(o??0)>0&&n.jsxs("span",{className:"shrink-0 text-2xs text-fg-subtle tabular-nums",children:[o," unread"]})]}),n.jsx("div",{className:"flex-1 overflow-y-auto",children:x?n.jsxs("div",{className:"flex flex-col items-center justify-center h-full gap-2 text-center px-4",children:[n.jsx(vr,{className:"size-8 text-fg-subtle"}),n.jsx("p",{className:"text-sm font-medium text-fg",children:"No drafts"}),n.jsx("p",{className:"text-xs text-fg-subtle",children:"Messages you start composing will appear here."})]}):f.map(g=>n.jsxs("div",{children:[g.label&&n.jsx(Dv,{label:g.label,count:g.threads.length}),n.jsx("div",{className:"divide-y divide-line",children:g.threads.map(y=>g.id==="remit-drafts"?n.jsx(Ov,{row:y,isSelected:l.isOpen&&y.id===l.outboxMessageId,onOpen:v,onDelete:b,isDeleting:h.isPending},y.id):n.jsx(Pv,{row:y,isSelected:y.id===s,onOpen:p},y.id))})]},g.id))})]})}function $v(e,t,s){const a=new Array(e);return new Proxy(a,{get(r,o,i){if(typeof o=="string"){const l=o.charCodeAt(0);if(l>=48&&l<=57){const u=+o;if(Number.isInteger(u)&&u>=0&&u<e){let d=r[u];if(!d){const m=t[u*2];d=r[u]={index:u,key:s(u),start:m,size:t[u*2+1],end:m+t[u*2+1],lane:0}}return d}}if(o==="length")return e}return Reflect.get(r,o,i)}})}function fs(e,t,s){let a=s.initialDeps??[],r,o=!0;function i(){const l=e();return(l.length!==a.length||l.some((d,m)=>a[m]!==d))&&(a=l,r=t(...l),s?.onChange&&!(o&&s.skipInitialOnChange)&&s.onChange(r),o=!1),r}return i.updateDeps=l=>{a=l},i}function Vi(e,t){if(e===void 0)throw new Error("Unexpected undefined");return e}const Fv=(e,t)=>Math.abs(e-t)<1.01,_v=(e,t,s)=>{let a;return function(...r){e.clearTimeout(a),a=e.setTimeout(()=>t.apply(this,r),s)}};let Ks;const Ua=()=>{if(Ks!==void 0)return Ks;if(typeof navigator>"u")return Ks=!1;if(/iP(hone|od|ad)/.test(navigator.userAgent))return Ks=!0;const e=navigator.maxTouchPoints;return Ks=navigator.platform==="MacIntel"&&e!==void 0&&e>0},Qi=e=>{const{offsetWidth:t,offsetHeight:s}=e;return{width:t,height:s}},qv=e=>e,Bv=e=>{const t=Math.max(e.startIndex-e.overscan,0),a=Math.min(e.endIndex+e.overscan,e.count-1)-t+1,r=new Array(a);for(let o=0;o<a;o++)r[o]=t+o;return r},Kv=(e,t)=>{const s=e.scrollElement;if(!s)return;const a=e.targetWindow;if(!a)return;const r=i=>{const{width:l,height:u}=i;t({width:Math.round(l),height:Math.round(u)})};if(r(Qi(s)),!a.ResizeObserver)return()=>{};const o=new a.ResizeObserver(i=>{const l=()=>{const u=i[0];if(u?.borderBoxSize){const d=u.borderBoxSize[0];if(d){r({width:d.inlineSize,height:d.blockSize});return}}r(Qi(s))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()});return o.observe(s,{box:"border-box"}),()=>{o.unobserve(s)}},Un={passive:!0},Uv=typeof window>"u"?!0:"onscrollend"in window,Hv=(e,t,s)=>{const a=e.scrollElement;if(!a)return;const r=e.targetWindow;if(!r)return;const o=e.options.useScrollendEvent&&Uv;let i=0;const l=o?null:_v(r,()=>t(i,!1),e.options.isScrollingResetDelay),u=f=>()=>{i=s(a),l?.(),t(i,f)},d=u(!0),m=u(!1);return a.addEventListener("scroll",d,Un),o&&a.addEventListener("scrollend",m,Un),()=>{a.removeEventListener("scroll",d),o&&a.removeEventListener("scrollend",m)}},Wv=(e,t)=>Hv(e,t,s=>{const{horizontal:a,isRtl:r}=e.options;return a?s.scrollLeft*(r&&-1||1):s.scrollTop}),Vv=(e,t,s)=>{if(s.options.useCachedMeasurements){const a=s.indexFromElement(e),r=s.options.getItemKey(a);return s.itemSizeCache.get(r)??s.options.estimateSize(a)}if(t?.borderBoxSize){const a=t.borderBoxSize[0];if(a)return Math.round(a[s.options.horizontal?"inlineSize":"blockSize"])}if(!t){const a=s.indexFromElement(e),r=s.options.getItemKey(a),o=s.itemSizeCache.get(r);if(o!==void 0)return o}return e[s.options.horizontal?"offsetWidth":"offsetHeight"]},Qv=(e,{adjustments:t=0,behavior:s},a)=>{var r,o;(o=(r=a.scrollElement)==null?void 0:r.scrollTo)==null||o.call(r,{[a.options.horizontal?"left":"top"]:e+t,behavior:s})},Yv=Qv;class Gv{constructor(t){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this._flatMeasurements=null,this.itemSizeCache=new Map,this.itemSizeCacheVersion=0,this.laneAssignments=new Map,this.pendingMin=null,this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.pendingScrollAnchor=null,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._intendedScrollOffset=null,this.elementsCache=new Map,this.now=()=>{var s,a,r;return((r=(a=(s=this.targetWindow)==null?void 0:s.performance)==null?void 0:a.now)==null?void 0:r.call(a))??Date.now()},this.observer=(()=>{let s=null;const a=()=>s||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:s=new this.targetWindow.ResizeObserver(r=>{r.forEach(o=>{const i=()=>{const l=o.target,u=this.indexFromElement(l);if(!l.isConnected){this.observer.unobserve(l);for(const[d,m]of this.elementsCache)if(m===l){this.elementsCache.delete(d);break}return}this.shouldMeasureDuringScroll(u)&&this.resizeItem(u,this.options.measureElement(l,o,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(i):i()})}));return{disconnect:()=>{var r;(r=a())==null||r.disconnect(),s=null},observe:r=>{var o;return(o=a())==null?void 0:o.observe(r,{box:"border-box"})},unobserve:r=>{var o;return(o=a())==null?void 0:o.unobserve(r)}}})(),this.range=null,this.setOptions=s=>{var a,r;const o={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:qv,rangeExtractor:Bv,onChange:()=>{},measureElement:Vv,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,anchorTo:"start",followOnAppend:!1,scrollEndThreshold:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:"estimate",useCachedMeasurements:!1};for(const h in s){const b=s[h];b!==void 0&&(o[h]=b)}const i=this.options;let l=null,u=null,d=!1;if(i!==void 0&&i.enabled&&o.enabled&&o.anchorTo==="end"&&this.scrollElement!==null){const h=i.count,b=o.count,v=this.getMeasurements(),p=h>0?((a=v[0])==null?void 0:a.key)??i.getItemKey(0):null,x=h>0?((r=v[h-1])==null?void 0:r.key)??i.getItemKey(h-1):null;if(b!==h||h>0&&b>0&&(o.getItemKey(0)!==p||o.getItemKey(b-1)!==x)){d=!0;const k=h>0?this.getVirtualItemForOffset(this.getScrollOffset())??v[0]:null;k&&(l=[k.key,this.getScrollOffset()-k.start]);const w=o.followOnAppend===!0?"auto":o.followOnAppend||null;w&&b>h&&this.isAtEnd(i.scrollEndThreshold)&&(h===0||o.getItemKey(b-1)!==x)&&(u=w)}}this.options=o,d&&(this.pendingMin=0,this.itemSizeCacheVersion++);let m=!1,f=0;if(l&&this.scrollOffset!==null){const[h,b]=l,v=this.getMeasurements(),{count:p,getItemKey:x}=this.options;let g=0;for(;g<p&&x(g)!==h;)g++;if(g<p){const y=v[g];if(y){const k=y.start+b;k!==this.scrollOffset&&(f=k-this.scrollOffset,this.scrollOffset=k,m=!0)}}}(m||u)&&(this.pendingScrollAnchor=[m?l[0]:null,m?l[1]:0,u,f])},this.notify=s=>{var a,r;(r=(a=this.options).onChange)==null||r.call(a,this,s)},this.maybeNotify=fs(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),s=>{this.notify(s)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(s=>s()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this._iosDeferredAdjustment=0,this._iosTouching=!1,this._iosJustTouchEnded=!1,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var s;const a=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==a){if(this.cleanup(),!a){this.maybeNotify();return}if(this.scrollElement=a,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((s=this.scrollElement)==null?void 0:s.window)??null,this.elementsCache.forEach(o=>{this.observer.observe(o)}),this.unsubs.push(this.options.observeElementRect(this,o=>{this.scrollRect=o,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(o,i)=>{if(i&&this._intendedScrollOffset===null&&o===this.scrollOffset)return;this._intendedScrollOffset!==null&&Math.abs(o-this._intendedScrollOffset)<1.5&&(o=this._intendedScrollOffset),this._intendedScrollOffset=null,this.scrollAdjustments=0;const l=this.getScrollOffset();this.scrollDirection=i?l===o?this.scrollDirection:l<o?"forward":"backward":null,this.scrollOffset=o,this.isScrolling=i,this._flushIosDeferredIfReady(),this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),"addEventListener"in this.scrollElement){const o=this.scrollElement,i=()=>{this._iosTouching=!0,this._iosJustTouchEnded=!1,this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)},l=()=>{this._iosTouching=!1,!(!Ua()||this.targetWindow==null)&&(this._iosJustTouchEnded=!0,this._iosTouchEndTimerId=this.targetWindow.setTimeout(()=>{this._iosJustTouchEnded=!1,this._iosTouchEndTimerId=null,this._flushIosDeferredIfReady()},150))};o.addEventListener("touchstart",i,Un),o.addEventListener("touchend",l,Un),this.unsubs.push(()=>{o.removeEventListener("touchstart",i),o.removeEventListener("touchend",l),this._iosTouchEndTimerId!==null&&this.targetWindow!=null&&(this.targetWindow.clearTimeout(this._iosTouchEndTimerId),this._iosTouchEndTimerId=null)})}this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}const r=this.pendingScrollAnchor;if(this.pendingScrollAnchor=null,r&&this.scrollElement&&this.options.enabled){const[o,i,l,u]=r;o!==null&&!l&&(Ua()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?u!==0&&(this._iosDeferredAdjustment+=u):this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})),l&&this.scrollToEnd({behavior:l})}},this._flushIosDeferredIfReady=()=>{if(this._iosDeferredAdjustment===0||this.isScrolling||this._iosTouching||this._iosJustTouchEnded)return;const s=this.getScrollOffset(),a=this.getMaxScrollOffset();if(s<0||s>a)return;const r=this._iosDeferredAdjustment;this._iosDeferredAdjustment=0,this._scrollToOffset(s,{adjustments:this.scrollAdjustments+=r,behavior:void 0})},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getMeasurementOptions=fs(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode,this.options.gap],(s,a,r,o,i,l,u,d)=>(this.prevLanes!==void 0&&this.prevLanes!==l&&(this.lanesChangedFlag=!0),this.prevLanes=l,this.pendingMin=null,{count:s,paddingStart:a,scrollMargin:r,getItemKey:o,enabled:i,lanes:l,laneAssignmentMode:u,gap:d}),{key:!1}),this.getMeasurements=fs(()=>[this.getMeasurementOptions(),this.itemSizeCacheVersion],({count:s,paddingStart:a,scrollMargin:r,getItemKey:o,enabled:i,lanes:l,laneAssignmentMode:u,gap:d},m)=>{const f=this.itemSizeCache;if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>s)for(const g of this.laneAssignments.keys())g>=s&&this.laneAssignments.delete(g);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMin=null),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(g=>{this.itemSizeCache.set(g.key,g.size)}));const h=this.lanesSettling?0:this.pendingMin??0;if(this.pendingMin=null,this.lanesSettling&&this.measurementsCache.length===s&&(this.lanesSettling=!1),l===1){const g=s*2;let y=this._flatMeasurements;if(!y||y.length<g){const E=new Float64Array(g);y&&h>0&&E.set(y.subarray(0,h*2)),y=E,this._flatMeasurements=y}let k;if(h===0)k=a+r;else{const E=h-1;k=y[E*2]+y[E*2+1]+d}for(let E=h;E<s;E++){const T=o(E),C=f.get(T),S=typeof C=="number"?C:this.options.estimateSize(E);y[E*2]=k,y[E*2+1]=S,k+=S+d}const w=$v(s,y,o);return this.measurementsCache=w,w}const b=this.measurementsCache.slice(0,h),v=new Array(l).fill(void 0),p=new Float64Array(l);let x=0;for(let g=0;g<h;g++){const y=b[g];y&&(v[y.lane]===void 0&&x++,v[y.lane]=g,p[y.lane]=y.end)}for(let g=h;g<s;g++){const y=o(g),k=this.laneAssignments.get(g);let w,E;const T=u==="estimate"||f.has(y);if(k!==void 0&&this.options.lanes>1){w=k;const z=v[w],A=z!==void 0?b[z]:void 0;E=A?A.end+d:a+r}else if(x===l){let z=0,A=p[0],P=v[0];for(let I=1;I<l;I++){const j=p[I];(j<A||j===A&&v[I]<P)&&(z=I,A=j,P=v[I])}w=z,E=A+d,T&&this.laneAssignments.set(g,w)}else w=g%this.options.lanes,E=a+r,T&&this.laneAssignments.set(g,w);const C=f.get(y),S=typeof C=="number"?C:this.options.estimateSize(g),D=E+S;b[g]={index:g,start:E,size:S,end:D,key:y,lane:w},v[w]===void 0&&x++,v[w]=g,p[w]=D}return this.measurementsCache=b,b},{key:!1,debug:()=>this.options.debug}),this.calculateRange=fs(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(s,a,r,o)=>s.length===0||a===0?(this.range=null,null):(this.range=Jv(s,a,r,o,o===1&&this._flatMeasurements!=null?this._flatMeasurements:null),this.range),{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=fs(()=>{let s=null,a=null;const r=this.calculateRange();return r&&(s=r.startIndex,a=r.endIndex),this.maybeNotify.updateDeps([this.isScrolling,s,a]),[this.options.rangeExtractor,this.options.overscan,this.options.count,s,a]},(s,a,r,o,i)=>o===null||i===null?[]:s({startIndex:o,endIndex:i,overscan:a,count:r}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=s=>{const a=this.options.indexAttribute,r=s.getAttribute(a);return r?parseInt(r,10):(console.warn(`Missing attribute name '${a}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=s=>{var a;if(!this.scrollState||this.scrollState.behavior!=="smooth")return!0;const r=this.scrollState.index??((a=this.getVirtualItemForOffset(this.scrollState.lastTargetOffset))==null?void 0:a.index);if(r!==void 0&&this.range){const o=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),i=Math.max(0,r-o),l=Math.min(this.options.count-1,r+o);return s>=i&&s<=l}return!0},this.measureElement=s=>{if(!s){this.elementsCache.forEach((i,l)=>{i.isConnected||(this.observer.unobserve(i),this.elementsCache.delete(l))});return}const a=this.indexFromElement(s),r=this.options.getItemKey(a),o=this.elementsCache.get(r);o!==s&&(o&&this.observer.unobserve(o),this.observer.observe(s),this.elementsCache.set(r,s)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(a)&&this.resizeItem(a,this.options.measureElement(s,void 0,this))},this.resizeItem=(s,a)=>{var r,o;if(s<0||s>=this.options.count)return;let i,l,u;const d=this._flatMeasurements;if(this.options.lanes===1&&d!==null)u=this.options.getItemKey(s),l=d[s*2],i=d[s*2+1];else{const h=this.measurementsCache[s];if(!h)return;u=h.key,l=h.start,i=h.size}const m=this.itemSizeCache.get(u)??i,f=a-m;if(f!==0){const h=this.options.anchorTo==="end"&&((r=this.scrollState)==null?void 0:r.behavior)!=="smooth"&&this.getVirtualDistanceFromEnd()<=this.options.scrollEndThreshold,b=h?this.getTotalSize():0,v=((o=this.scrollState)==null?void 0:o.behavior)!=="smooth"&&(this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(this.measurementsCache[s]??{index:s,key:u,start:l,size:i,end:l+i,lane:0},f,this):l<this.getScrollOffset()+this.scrollAdjustments&&(!this.itemSizeCache.has(u)||this.scrollDirection!=="backward"));(this.pendingMin===null||s<this.pendingMin)&&(this.pendingMin=s),this.itemSizeCache.set(u,a),this.itemSizeCacheVersion++,h?this.applyScrollAdjustment(this.getTotalSize()-b):v&&this.applyScrollAdjustment(f),this.notify(!1)}},this.getVirtualItems=fs(()=>[this.getVirtualIndexes(),this.getMeasurements()],(s,a)=>{const r=[];for(let o=0,i=s.length;o<i;o++){const l=s[o],u=a[l];r.push(u)}return r},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=s=>{const a=this.getMeasurements();if(a.length===0)return;const r=this._flatMeasurements,o=this.options.lanes===1&&r!=null,i=bd(0,a.length-1,o?l=>r[l*2]:l=>Vi(a[l]).start,s);return Vi(a[i])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if("scrollHeight"in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{const s=this.scrollElement.document.documentElement;return this.options.horizontal?s.scrollWidth-this.scrollElement.innerWidth:s.scrollHeight-this.scrollElement.innerHeight}},this.getVirtualDistanceFromEnd=()=>Math.max(this.getTotalSize()-this.getSize()-this.getScrollOffset(),0),this.getDistanceFromEnd=()=>Math.max(this.getMaxScrollOffset()-this.getScrollOffset(),0),this.isAtEnd=(s=this.options.scrollEndThreshold)=>this.getDistanceFromEnd()<=s,this.getOffsetForAlignment=(s,a,r=0)=>{if(!this.scrollElement)return 0;const o=this.getSize(),i=this.getScrollOffset();a==="auto"&&(a=s>=i+o?"end":"start"),a==="center"?s+=(r-o)/2:a==="end"&&(s-=o);const l=this.getMaxScrollOffset();return Math.max(Math.min(l,s),0)},this.getOffsetForIndex=(s,a="auto")=>{s=Math.max(0,Math.min(s,this.options.count-1));const r=this.getSize(),o=this.getScrollOffset(),i=this.measurementsCache[s];if(!i)return;if(a==="auto")if(i.end>=o+r-this.options.scrollPaddingEnd)a="end";else if(i.start<=o+this.options.scrollPaddingStart)a="start";else return[o,a];if(a==="end"&&s===this.options.count-1)return[this.getMaxScrollOffset(),a];const l=a==="end"?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(l,a,i.size),a]},this.scrollToOffset=(s,{align:a="start",behavior:r="auto"}={})=>{const o=this.getOffsetForAlignment(s,a),i=this.now();this.scrollState={index:null,align:a,behavior:r,startedAt:i,lastTargetOffset:o,stableFrames:0},this._scrollToOffset(o,{adjustments:void 0,behavior:r}),this.scheduleScrollReconcile()},this.scrollToIndex=(s,{align:a="auto",behavior:r="auto"}={})=>{s=Math.max(0,Math.min(s,this.options.count-1));const o=this.getOffsetForIndex(s,a);if(!o)return;const[i,l]=o,u=this.now();this.scrollState={index:s,align:l,behavior:r,startedAt:u,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:r}),this.scheduleScrollReconcile()},this.scrollBy=(s,{behavior:a="auto"}={})=>{const r=this.getScrollOffset()+s,o=this.now();this.scrollState={index:null,align:"start",behavior:a,startedAt:o,lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:a}),this.scheduleScrollReconcile()},this.scrollToEnd=({behavior:s="auto"}={})=>{if(this.options.count>0){this.scrollToIndex(this.options.count-1,{align:"end",behavior:s});return}this.scrollToOffset(Math.max(this.getTotalSize()-this.getSize(),0),{behavior:s})},this.getTotalSize=()=>{var s;const a=this.getMeasurements();let r;if(a.length===0)r=this.options.paddingStart;else if(this.options.lanes===1){const o=a.length-1,i=this._flatMeasurements;i!=null?r=i[o*2]+i[o*2+1]:r=((s=a[o])==null?void 0:s.end)??0}else{const o=Array(this.options.lanes).fill(null);let i=a.length-1;for(;i>=0&&o.some(l=>l===null);){const l=a[i];o[l.lane]===null&&(o[l.lane]=l.end),i--}r=Math.max(...o.filter(l=>l!==null))}return Math.max(r-this.options.scrollMargin+this.options.paddingEnd,0)},this.takeSnapshot=()=>{const s=[];if(this.itemSizeCache.size===0)return s;const a=this.getMeasurements();for(const r of a)r&&this.itemSizeCache.has(r.key)&&s.push({index:r.index,key:r.key,start:r.start,size:r.size,end:r.end,lane:r.lane});return s},this._scrollToOffset=(s,{adjustments:a,behavior:r})=>{this._intendedScrollOffset=s+(a??0),this.options.scrollToFn(s,{behavior:r,adjustments:a},this)},this.measure=()=>{this.pendingMin=null,this.itemSizeCache.clear(),this.laneAssignments.clear(),this.itemSizeCacheVersion++,this.notify(!1)},this.setOptions(t)}applyScrollAdjustment(t,s){t!==0&&(Ua()&&(this.isScrolling||this._iosTouching||this._iosJustTouchEnded)?this._iosDeferredAdjustment+=t:(this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=t,behavior:s}),this.scrollOffset!==null&&(this.scrollOffset+=this.scrollAdjustments,this.scrollAdjustments=0)))}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId==null&&(this.rafId=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()}))}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}const a=this.scrollState.index!=null?this.getOffsetForIndex(this.scrollState.index,this.scrollState.align):void 0,r=a?a[0]:this.scrollState.lastTargetOffset,o=1,i=r!==this.scrollState.lastTargetOffset;if(!i&&Fv(r,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=o){this.getScrollOffset()!==r&&this._scrollToOffset(r,{adjustments:void 0,behavior:"auto"}),this.scrollState=null;return}}else if(this.scrollState.stableFrames=0,i){const l=this.getSize()||600,u=Math.abs(r-this.getScrollOffset()),d=this.scrollState.behavior==="smooth"&&u>l;this.scrollState.lastTargetOffset=r,d||(this.scrollState.behavior="auto"),this._scrollToOffset(r,{adjustments:void 0,behavior:d?"smooth":"auto"})}this.scheduleScrollReconcile()}}const bd=(e,t,s,a)=>{for(;e<=t;){const r=(e+t)/2|0,o=s(r);if(o<a)e=r+1;else if(o>a)t=r-1;else return r}return e>0?e-1:0};function Xv(e,t,s){let a=0;for(;a<=t;){const r=(a+t)/2|0,o=e[r*2];if(o<s)a=r+1;else if(o>s)t=r-1;else return r}return a>0?a-1:0}function Jv(e,t,s,a,r){const o=e.length-1;if(e.length<=a)return{startIndex:0,endIndex:o};if(a===1&&r!==null){const d=Xv(r,o,s);let m=d;const f=s+t;for(;m<o&&r[m*2]+r[m*2+1]<f;)m++;return{startIndex:d,endIndex:m}}let l=bd(0,o,d=>e[d].start,s),u=l;if(a===1)for(;u<o&&e[u].end<s+t;)u++;else if(a>1){const d=Array(a).fill(0);for(;u<o&&d.some(f=>f<s+t);){const f=e[u];d[f.lane]=f.end,u++}const m=Array(a).fill(s+t);for(;l>=0&&m.some(f=>f>=s);){const f=e[l];m[f.lane]=f.start,l--}l=Math.max(0,l-l%a),u=Math.min(o,u+(a-1-u%a))}return{startIndex:l,endIndex:u}}const Ha=typeof document<"u"?c.useLayoutEffect:c.useEffect;function Zv({useFlushSync:e=!0,directDomUpdates:t=!1,directDomUpdatesMode:s="transform",...a}){const r=c.useReducer(d=>d+1,0)[1],o=c.useRef({enabled:t,mode:s,container:null,lastSize:null,lastPositions:new WeakMap,prevRange:null});o.current.enabled=t,o.current.mode=s;const i=d=>{const m=o.current;if(!m.enabled||!m.container)return;const f=d.getTotalSize();if(f!==m.lastSize){m.lastSize=f;const g=d.options.horizontal?"width":"height";m.container.style[g]=`${f}px`}const h=!!d.options.horizontal,b=m.mode==="transform",v=h?"left":"top",p=d.options.scrollMargin,x=d.getVirtualItems();for(const g of x){const y=g.start-p,k=d.elementsCache.get(g.key);k&&m.lastPositions.get(k)!==y&&(m.lastPositions.set(k,y),b?k.style.transform=h?`translate3d(${y}px, 0, 0)`:`translate3d(0, ${y}px, 0)`:k.style[v]=`${y}px`)}},l={...a,onChange:(d,m)=>{var f;const h=o.current;let b=!0;if(h.enabled){i(d);const v=d.range,p=h.prevRange;b=!p||p.isScrolling!==d.isScrolling||p.startIndex!==v?.startIndex||p.endIndex!==v?.endIndex,b&&(h.prevRange=v?{startIndex:v.startIndex,endIndex:v.endIndex,isScrolling:d.isScrolling}:null)}b&&(e&&m?jr.flushSync(r):r()),(f=a.onChange)==null||f.call(a,d,m)}},[u]=c.useState(()=>{const d=new Gv(l);return Object.assign(d,{containerRef:m=>{const f=o.current;if(f.container=m,f.lastSize=null,m&&f.enabled){const h=d.getTotalSize();f.lastSize=h;const b=d.options.horizontal?"width":"height";m.style[b]=`${h}px`}}})});return u.setOptions(l),Ha(()=>u._didMount(),[]),Ha(()=>u._willUpdate()),Ha(()=>{i(u)}),u}function ey(e){return Zv({observeElementRect:Kv,observeElementOffset:Wv,scrollToFn:Yv,...e})}const ty={delete:(e,t)=>`Deleting ${e} of ${t}…`,move:(e,t)=>`Moving ${e} of ${t}…`,markRead:(e,t)=>`Marking ${e} of ${t} as read…`},xd={delete:"moved to Trash",move:"moved",markRead:"marked as read"},vd={delete:"couldn't be deleted",move:"couldn't be moved",markRead:"couldn't be marked as read"},sy={delete:"Couldn't delete these messages",move:"Couldn't move these messages",markRead:"Couldn't mark these messages as read"},ny={delete:"The delete didn't finish.",move:"The move didn't finish.",markRead:"The update didn't finish."},ay=(e,t,s)=>ty[e](lt(t),lt(s)),Yi=(e,t)=>`${lt(t)} ${xd[e]}. Your mail server is still catching up.`,ry=(e,t,s)=>`${lt(t)} ${xd[e]}. ${lt(s)} ${vd[e]}.`,oy=(e,t)=>t>0?`Stopped after ${lt(t)} — some messages ${vd[e]}`:sy[e],iy=e=>ny[e],ly=e=>e==="delete"?"danger":"info",yd=100,Hn=async e=>e.then(t=>({ok:!0,value:t}),t=>({ok:!1,error:t})),cy=(e,t=yd)=>{if(e.length===0)return[];const s=[];for(let a=0;a<e.length;a+=t)s.push(e.slice(a,a+t));return s},uy=async(e,t,s,a)=>{const r=cy(e),o=e.length;let i=0;const l=[];for(let u=0;u<r.length;u++){if(a())return l.push(...r.slice(u).flat()),{done:i,failedIds:l,cancelled:!0};const d=r[u],m=await Hn(t(d));if(!m.ok)return l.push(...r.slice(u).flat()),s({done:i,total:o}),{done:i,failedIds:l,cancelled:!1,error:m.error};i+=d.length,s({done:i,total:o})}return{done:i,failedIds:l,cancelled:!1}},dy=async(e,t,s,a,r)=>{let o=0;const i=[];let l;do{if(r())return{done:o,failedIds:i,cancelled:!0};const u=await Hn(e(l));if(!u.ok)return{done:o,failedIds:i,cancelled:!1,error:u.error};const d=u.value;if(d.ids.length>0){const m=await Hn(s(d.ids));if(!m.ok)return{done:o,failedIds:i,cancelled:!1,error:m.error};o+=d.ids.length,a({done:o,total:t})}l=d.continuationToken}while(l);return{done:o,failedIds:i,cancelled:!1}},my=e=>({done:e.done,total:Math.max(e.total,e.done)}),fy=async(e,t,s)=>{let a=0,r;do{if(s())return{total:a,cancelled:!0};const o=await Hn(e(r));if(!o.ok)return{total:a,cancelled:!1,error:o.error};const i=o.value;a+=i.ids.length,t(a),r=i.continuationToken}while(r);return{total:a,cancelled:!1}},hy=e=>e.failedIds.length>0?{exit:!1,retryIds:e.failedIds}:e.cancelled||e.error?{exit:!1,retryIds:[]}:{exit:!0,retryIds:[]},gy=100,py=(e,t)=>e.kind==="move"?[t,e.destinationMailboxId]:[t],by=({mailboxId:e,accountId:t,enabled:s,predicateKey:a,searchQuery:r})=>{const[o,i]=c.useState({kind:"idle"}),[l,u]=c.useState(void 0),[d,m]=c.useState(void 0),f=c.useRef(!1),h=ye(),{pushError:b}=Je();c.useEffect(()=>{f.current=!0,i({kind:"idle"})},[s,a]);const v=c.useRef(r);v.current=r;const p=c.useCallback(async T=>{const{data:C}=await Dl({path:{mailboxId:e},query:{...v.current,continuationToken:T,limit:gy},throwOnError:!0});return{ids:(C.items??[]).map(S=>S.messageId),continuationToken:C.continuationToken}},[e]),x=c.useCallback(T=>async C=>{if(T.kind==="move"){const{data:D}=await z0({body:{messageIds:C,destinationMailboxId:T.destinationMailboxId},throwOnError:!0});return D}if(T.kind==="markRead"){const{data:D}=await A0({body:{messageIds:C,isRead:!0},throwOnError:!0});return D}const{data:S}=await D0({body:{messageIds:C},throwOnError:!0});return S},[]),g=c.useCallback(T=>{Ft(h,$t(py(T,e))),t&&h.invalidateQueries({queryKey:es({path:{accountId:t}})})},[h,e,t]),y=c.useCallback(()=>{f.current=!1,i({kind:"counting",countSoFar:0}),fy(p,T=>i({kind:"counting",countSoFar:T}),()=>f.current).then(T=>{if(T.error){b(Yt("Couldn't count matching messages","The count didn't finish.",T.error)),i({kind:"idle"});return}if(T.cancelled){i({kind:"idle"});return}i({kind:"escalated",total:T.total})})},[p,b]),k=c.useCallback(()=>{f.current=!0},[]),w=c.useCallback(()=>{f.current=!0,i({kind:"idle"})},[]),E=c.useCallback(async(T,C)=>{f.current=!1,u(T);const S=A=>m(my(A)),D=x(T),z=C!==void 0?await uy(C,D,S,()=>f.current):await dy(p,o.kind==="escalated"?o.total:0,D,S,()=>f.current);return u(void 0),m(void 0),i({kind:"idle"}),z.error&&b(Yt(oy(T.kind,z.done),iy(T.kind),z.error)),z.done>0&&g(T),z},[x,p,o,b,g]);return{phase:o,escalate:y,stop:k,clear:w,isRunning:l!==void 0,runningAction:l,progress:d,runAction:E}},kd=e=>e.query?`matching "${e.query}"`:e.from?`from "${e.from}"`:"matching your search",xy=e=>`Select all ${kd(e)}`,vy=(e,t)=>`All ${lt(t)} ${kd(e)} selected`,yy=e=>e.isRunning?"running":e.isCounting?"counting":e.isEscalated?"escalated":"idle",ky=2,wy=(e,t,s=!1)=>e>=ky||t!=="idle"||s;function jy(e,t){return e.endsWith(t)?e.length===t.length||e[e.length-t.length-1]===".":!1}function Sy(e,t){const s=e.length-t.length-2,a=e.lastIndexOf(".",s);return a===-1?e:e.slice(a+1)}function Cy(e,t,s){if(s.validHosts!==null){const r=s.validHosts;for(const o of r)if(jy(t,o))return o}let a=0;if(t.startsWith("."))for(;a<t.length&&t[a]===".";)a+=1;return e.length===t.length-a?null:Sy(t,e)}const Wa=/[\t\n\r]/g;let dr=!1;function Gi(e){return e>=97&&e<=122||e>=48&&e<=57||e>127||e>=65&&e<=90||e===45||e===95}function Xi(e,t,s){const a=s-t,r=e.charCodeAt(t)|32;if(a===2)return r===119&&(e.charCodeAt(t+1)|32)===115?1:0;if(a===3){const o=e.charCodeAt(t+1)|32,i=e.charCodeAt(t+2)|32;return r===119&&o===115&&i===115||r===102&&o===116&&i===112?1:0}else if(a===4){const o=e.charCodeAt(t+1)|32,i=e.charCodeAt(t+2)|32,l=e.charCodeAt(t+3)|32;return r===104&&o===116&&i===116&&l===112?1:r===102&&o===105&&i===108&&l===101?2:0}else if(a===5)return r===104&&(e.charCodeAt(t+1)|32)===116&&(e.charCodeAt(t+2)|32)===116&&(e.charCodeAt(t+3)|32)===112&&(e.charCodeAt(t+4)|32)===115?1:0;return 0}function Ws(e,t,s=!1){let a=0,r=e.length,o=!1,i=!1;if(dr=!1,!t){if(e.startsWith("data:"))return null;for(;a<e.length&&e.charCodeAt(a)<=32;)a+=1;for(;r>a+1&&e.charCodeAt(r-1)<=32;)r-=1;if(e.charCodeAt(a)===47&&e.charCodeAt(a+1)===47)a+=2;else{const x=e.indexOf(":/",a);if(x!==-1){const g=Xi(e,a,x);if(g===1)for(i=!0,a=x+2;e.charCodeAt(a)===47||e.charCodeAt(a)===92;)a+=1;else if(g===2){i=!0,a=x+1;let y=0;for(;(e.charCodeAt(a)===47||e.charCodeAt(a)===92)&&y<2;)a+=1,y+=1;if(y<2)return null}else{for(let y=a;y<x;y+=1){const k=e.charCodeAt(y)|32;if(!(k>=97&&k<=122||k>=48&&k<=57||k===46||k===45||k===43)){const w=e.charCodeAt(y);return w===9||w===10||w===13?Ws(e.replace(Wa,""),t,s):null}}if(e.charCodeAt(x+2)===47)a=x+3;else return null}}else if(e.charCodeAt(a)!==91){let g=-1;for(let y=a;y<r;y+=1){const k=e.charCodeAt(y);if(k===9||k===10||k===13)return Ws(e.replace(Wa,""),t,s);if(k===58){g=y;break}if(k===47||k===92||k===63||k===35)break}if(g!==-1){let y=!1;for(let k=g+1;k<r;k+=1){const w=e.charCodeAt(k);if(w===47||w===92||w===63||w===35)break;if(w===64){y=!0;break}}if(!y){let k=!0,w=g+1;for(;w<r;w+=1){const E=e.charCodeAt(w);if(E===47||E===92||E===63||E===35)break;if(E<48||E>57){k=!1;break}}if(w===g+1&&(k=!1),!k){const E=Xi(e,a,g);if(E===0){let T=!1;for(let C=g+1;C<r;C+=1){const S=e.charCodeAt(C);if(S===47||S===92||S===63||S===35)break;if(S===58){T=!0;break}}if(!T)return null}else if(i=!0,a=g+1,E===2){let T=0;for(;(e.charCodeAt(a)===47||e.charCodeAt(a)===92)&&T<2;)a+=1,T+=1;if(T<2)return null}else for(;e.charCodeAt(a)===47||e.charCodeAt(a)===92;)a+=1}}}}}let u=-1,d=-1,m=-1,f=-1,h=!1,b=s,v=a-1,p=-1;if(s&&a<r){const x=e.charCodeAt(a);(!(Gi(x)||x===46||x===95)||x===45)&&(b=!1)}for(let x=a;x<r;x+=1){const g=e.charCodeAt(x);if(g<64)if(g===47||g===35||g===63){r=x;break}else g===58?(f===-1&&(f=x),m=x):g===9||g===10||g===13?h=!0:s&&(g===46?((x-v>64||p===46||p===45)&&(b=!1),v=x):(g<48||g>57)&&(g!==45||p===46)&&(b=!1));else if(i&&g===92){r=x;break}else g===64?(u=x,f=-1):g===93?d=x:g>=65&&g<=90?o=!0:s&&!Gi(g)&&(b=!1);s&&(p=g)}if(h)return Ws(e.replace(Wa,""),t,s);if(u!==-1&&u>=a&&u<r&&(a=u+1),e.charCodeAt(a)===91)return d!==-1?e.slice(a+1,d).toLowerCase():null;if(m!==-1&&m>a&&m<r&&f===m&&(r=m),a>=r)return null;s&&b&&u===-1&&m===-1&&d===-1&&e.charCodeAt(r-1)!==46&&r-a<=255&&r-v-1<=63&&p!==45&&(dr=!0)}for(;r>a+1&&e.charCodeAt(r-1)===46;)r-=1;const l=a!==0||r!==e.length?e.slice(a,r):e;return o?l.toLowerCase():l}function Ny(e){if(e.length<7||e.length>15)return!1;let t=0;for(let s=0;s<e.length;s+=1){const a=e.charCodeAt(s);if(a===46)t+=1;else if(a<48||a>57)return!1}return t===3&&e.charCodeAt(0)!==46&&e.charCodeAt(e.length-1)!==46}function Ey(e){if(e.length<3)return!1;let t=e.startsWith("[")?1:0,s=e.length;if(e[s-1]==="]"&&(s-=1),s-t>39)return!1;let a=!1;for(;t<s;t+=1){const r=e.charCodeAt(t);if(r===58)a=!0;else if(!(r>=48&&r<=57||r>=97&&r<=102||r>=65&&r<=70))return!1}return a}function Iy(e){return Ey(e)||Ny(e)}function Ji(e){return e>=97&&e<=122||e>=48&&e<=57||e>127}function Zi(e){if(e.length>255||e.length===0||!Ji(e.charCodeAt(0))&&e.charCodeAt(0)!==46&&e.charCodeAt(0)!==95)return!1;let t=-1,s=-1;const a=e.length;for(let r=0;r<a;r+=1){const o=e.charCodeAt(r);if(o===46){if(r-t>64||s===46||s===45)return!1;t=r}else if(!(Ji(o)||o===45||o===95)||o===45&&s===46)return!1;s=o}return a-t-1<=63&&s!==45}function Ty({allowIcannDomains:e=!0,allowPrivateDomains:t=!1,detectIp:s=!0,detectSpecialUse:a=!1,extractHostname:r=!0,mixedInputs:o=!0,validHosts:i=null,validateHostname:l=!0}){return{allowIcannDomains:e,allowPrivateDomains:t,detectIp:s,detectSpecialUse:a,extractHostname:r,mixedInputs:o,validHosts:i,validateHostname:l}}const Ry=Ty({});function My(e){return Ry}function zy(){return{domain:null,domainWithoutSuffix:null,hostname:null,isIcann:null,isIp:null,isPrivate:null,isSpecialUse:null,publicSuffix:null,subdomain:null}}function Ay(e){e.domain=null,e.domainWithoutSuffix=null,e.hostname=null,e.isIcann=null,e.isIp=null,e.isPrivate=null,e.isSpecialUse=null,e.publicSuffix=null,e.subdomain=null}function Dy(e,t,s,a,r){const o=My();if(typeof e!="string")return r;let i=!1;return o.extractHostname?o.mixedInputs?(i=Zi(e),r.hostname=Ws(e,i,o.validateHostname)):r.hostname=Ws(e,!1,o.validateHostname):r.hostname=e,o.detectIp&&r.hostname!==null&&(r.isIp=Iy(r.hostname),r.isIp)?r:o.validateHostname&&o.extractHostname&&r.hostname!==null&&!(i&&r.hostname===e)&&!dr&&!Zi(r.hostname)?(r.hostname=null,r):(r.hostname===null||(s(r.hostname,o,r),r.publicSuffix===null)||(r.domain=Cy(r.publicSuffix,r.hostname,o)),r)}function Oy(e,t,s){if(!t.allowPrivateDomains&&e.length>3){const a=e.length-1,r=e.charCodeAt(a),o=e.charCodeAt(a-1),i=e.charCodeAt(a-2),l=e.charCodeAt(a-3);if(r===109&&o===111&&i===99&&l===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="com",!0;if(r===103&&o===114&&i===111&&l===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="org",!0;if(r===117&&o===100&&i===101&&l===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="edu",!0;if(r===118&&o===111&&i===103&&l===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="gov",!0;if(r===116&&o===101&&i===110&&l===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="net",!0;if(r===101&&o===100&&i===46)return s.isIcann=!0,s.isPrivate=!1,s.publicSuffix="de",!0}return!1}const Vt=new Uint8Array([1,2,1,1,1,1,1,1,1,1,1,1,0,2,2,2,0,2,2,0,2,0,0,1,0,0,2,1,1,1,1,1,1,0,0,0,1,0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,1,1,0,0,0,0,0,0,1,1,1,0,2,0,0,0,0,0,0,0,2,0,2,2,0,0,2,2,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,2,2,0,0,0,2,0,1,1,0,2,0,2,2,0,1,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,2,2,0,2,2,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,2,0,2,2,2,2,0,0,0,0,2,0,0,0,0,0,0,2,2,0,0,0,2,2,1,1,1,1,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,2,2,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,1,2,1,1,1,2,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0]),Wn=new Uint16Array([0,0,0,10,11,18,106,111,117,124,130,136,145,146,147,148,149,150,151,153,154,155,157,159,226,239,241,242,243,258,265,266,269,270,271,274,276,295,296,298,307,312,313,331,332,335,337,338,340,374,375,377,380,381,385,387,391,394,426,429,442,443,451,452,454,464,478,479,480,489,490,527,532,548,568,574,615,616,643,670,671,819,825,828,829,830,835,840,849,871,872,873,874,875,876,877,895,897,898,901,903,904,906,908,923,938,943,944,946,947,948,949,950,952,955,960,961,962,964,965,968,971,972,973,986,988,1e3,1011,1019,1021,1061,1064,1068,1069,1071,1074,1085,1087,1097,1099,1105,1107,1108,1110,1113,1114,1115,1167,1169,1171,1191,1192,1193,1194,1196,1207,1238,1249,1261,1270,1277,1282,1295,1306,1319,1320,1331,1365,1366,1367,1382,1397,1469,1470,1472,1473,1507,1508,1509,1512,1516,1518,1547,1548,1556,1557,1558,1560,1562,1563,1565,1566,1567,1578,1579,1580,1581,1582,1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1594,1595,1596,1598,2053,2056,2057,2059,2066,2073,2083,2087,2098,2099,2100,2112,2113,2115,2117,2118,2125,2126,2128,2129,2131,2132,2133,2134,2135,2209,2211,2232,2233,2234,2236,2262,2263,2314,2315,2317,2324,2330,2340,2350,2403,2404,2405,2415,2429,2430,2433,2440,2441,2449,2450,2451,2452,2453,2464,2465,2466,2468,2469,2470,2471,2473,2483,2495,2501,2533,2537,2539,2540,2542,2543,2554,2555,2557,2565,2572,2578,2583,2584,2590,2593,2599,2606,2607,2614,2622,2623,2624,2662,2668,2683,2684,2689,2707,2738,2756,2758,2761,2769,2771,2778,2830,2854,2855,2856,2857,2858,2859,2860,2861,2868,2869,2870,2871,2872,2873,2875,2876,2880,2964,2977,2978,3414,3418,3432,3484,3512,3534,3592,3614,3629,3692,3743,3781,3817,3842,3984,4030,4081,4100,4134,4149,4169,4199,4230,4253,4284,4314,4346,4373,4448,4470,4508,4518,4552,4571,4597,4639,4689,4715,4784,4785,4787,4810,4833,4869,4900,4917,4974,4987,5011,5040,5042,5076,5092,5120,5425,5434,5443,5450,5467,5471,5477,5516,5518,5525,5532,5541,5548,5549,5560,5563,5578,5579,5588,5589,5598,5607,5613,5615,5616,5617,5653,5654,5656,5664,5671,5684,5688,5690,5691,5697,5704,5718,5728,5733,5741,5749,5755,5756,5760,5762,5763,5775,5776,5777,5778,5780,5781,5784,5786,5789,5793,5794,5800,5801,5802,5804,5806,5808,5809,5810,5813,5815,5818,5819,5821,6019,6026,6027,6037,6042,6059,6073,6082,6083,6084,6088,6089,6091,6093,6099,6100,6103,6104,6106,6107,6108,7008,7009,7013,7031,7040,7043,7050,7051,7053,7054,7055,7057,7109,7110,7113,7114,7231,7232,7243,7254,7261,7264,7273,7274,7275,7290,7345,7536,7538,7539,7541,7546,7559,7574,7581,7590,7593,7596,7603,7611,7615,7616,7617,7631,7635,7644,7645,7646,7650,7685,7686,7703,7710,7718,7719,7724,7732,7776,7777,7783,7786,7797,7802,7803,7806,7839,7840,7846,7853,7854,7863,7872,7887,7891,7943,7944,7949,7951,7954,7956,7957,7958,7967,7981,7989,8003,8015,8016,8018,8020,8042,8053,8059,8060,8072,8084,8171,8183,8185,8194,8197,8203,8228,8231,8232,8233,8235,8238,8241,8252,8254,8256,8284,8358,8365,8369,8370,8379,8401,8402,8407,8408,8487,8489,8491,8500,8504,8510,8516,8522,8532,8537,8538,8556,8567,8572,8577,8587,8593,8597,8603,8609,10217,10218,10219,10226,10228]),Vn=new Uint8Array([3,3,3,3,3,3,3,3,5,8,8,2,2,3,3,3,3,3,8,5,5,5,5,5,3,3,5,5,9,12,19,8,19,8,11,9,9,8,7,7,6,8,9,16,10,7,7,11,8,6,6,9,7,11,7,14,4,4,4,4,4,4,10,7,6,6,6,6,10,10,6,10,10,22,11,9,10,10,10,9,10,8,7,7,7,8,21,13,11,11,9,10,9,13,10,8,8,9,12,9,7,10,7,7,13,7,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,8,6,3,3,3,3,3,3,2,5,3,3,3,7,2,2,2,2,2,2,3,3,3,1,1,7,8,5,2,2,7,2,2,1,4,1,11,9,9,5,5,8,5,5,5,5,5,5,5,3,3,3,3,3,5,11,9,9,13,7,14,7,6,6,6,7,6,6,6,6,6,10,7,11,9,4,4,4,4,4,4,6,6,6,6,6,8,7,10,9,9,9,8,9,8,10,6,9,9,8,10,10,7,8,1,9,10,12,12,12,10,9,9,10,10,9,9,1,1,5,3,3,3,3,3,3,3,3,3,3,3,3,6,6,6,4,3,3,3,7,4,4,4,3,3,6,7,3,4,1,2,2,2,6,1,2,2,2,2,2,12,5,3,8,9,13,4,4,13,9,9,11,7,3,12,9,2,2,2,3,3,3,3,3,8,2,2,3,3,3,3,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,3,7,10,15,7,15,15,20,15,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,7,8,6,8,8,6,8,13,8,8,6,13,8,11,13,8,6,13,8,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,9,9,9,10,14,14,11,13,13,9,9,9,9,9,9,2,6,9,2,2,3,3,3,3,3,3,3,3,3,4,4,4,2,3,3,3,3,3,3,7,7,2,3,2,2,5,3,3,3,3,3,3,4,2,2,2,2,2,2,3,3,3,3,3,3,3,4,5,7,2,2,12,8,10,8,10,7,18,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,2,2,3,3,3,5,5,3,8,8,6,8,6,6,4,6,7,7,7,10,11,2,5,5,3,3,3,3,3,3,5,5,6,11,10,7,7,7,4,4,4,2,3,3,3,3,3,2,7,5,5,3,3,3,3,3,3,3,3,7,7,7,11,7,6,9,6,6,8,10,8,6,8,13,4,4,4,4,4,10,8,11,8,8,8,10,10,7,10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,2,2,2,2,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,10,13,7,8,7,11,8,8,6,9,8,8,6,6,6,8,8,6,6,6,6,6,9,7,6,4,4,4,4,4,4,4,6,6,6,9,7,8,10,8,8,2,3,3,3,3,3,2,8,9,9,2,2,2,3,3,3,2,3,3,3,9,2,2,3,3,3,3,3,3,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,12,5,5,3,5,4,2,3,2,4,3,9,2,2,2,2,2,5,5,3,8,8,13,6,10,9,4,7,9,11,2,3,7,3,3,4,1,3,4,2,9,3,3,12,5,3,7,10,10,7,4,4,6,14,7,9,7,13,2,2,2,2,2,2,3,3,3,3,3,8,15,4,4,2,3,3,3,7,4,9,9,2,3,3,3,5,3,2,2,7,2,7,6,6,7,2,4,2,2,2,2,2,2,8,8,8,9,5,2,3,3,3,3,3,3,10,7,4,4,4,4,3,4,2,3,3,3,3,3,10,7,4,4,4,4,2,3,3,3,3,10,7,4,4,4,4,3,9,6,6,6,9,13,9,2,2,2,8,7,9,5,3,3,3,5,5,12,9,10,7,8,7,6,8,6,11,12,7,9,10,4,4,7,8,11,6,7,9,8,7,10,8,9,15,7,8,5,4,7,2,3,3,3,2,14,10,2,14,10,2,14,3,9,13,13,10,14,16,17,11,2,14,2,14,3,9,13,10,14,16,17,11,14,10,14,2,7,3,10,7,14,10,2,14,10,9,9,17,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,10,10,10,12,9,4,10,11,8,8,8,7,9,5,3,3,3,3,3,3,3,3,5,8,4,4,4,4,4,4,6,16,3,3,14,3,14,2,14,9,13,10,10,14,16,17,11,6,9,10,10,12,14,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,9,9,9,9,9,9,2,14,9,13,10,10,14,16,17,11,6,2,14,9,17,13,10,10,14,16,17,11,6,2,14,9,13,10,14,16,17,11,2,14,9,13,10,16,11,2,14,10,19,7,2,14,9,13,10,19,10,7,14,16,17,11,6,2,14,9,13,10,19,7,14,16,17,11,2,14,9,13,17,13,10,10,14,16,17,11,6,3,2,14,9,13,10,10,14,16,17,11,6,9,10,12,14,14,14,12,12,12,12,12,14,14,14,10,10,10,14,9,9,9,9,14,14,14,13,13,14,9,9,9,9,9,9,4,11,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,14,9,13,17,13,10,19,10,7,14,16,17,11,6,2,9,10,10,7,17,3,3,12,12,16,15,15,12,14,14,14,20,20,13,12,12,12,12,12,12,20,25,14,14,12,12,10,10,10,10,9,9,9,25,4,9,17,10,7,14,16,21,13,13,14,20,14,13,17,24,9,12,13,25,13,21,20,17,9,9,9,9,9,9,12,17,4,4,9,9,9,10,10,12,14,14,14,12,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,9,1,8,7,11,11,1,3,3,3,4,8,9,10,14,14,12,12,12,12,14,14,10,10,10,10,14,9,9,9,10,14,14,14,13,13,9,9,9,9,9,7,4,4,4,4,4,4,4,4,4,4,9,12,6,14,4,12,7,2,2,1,2,7,6,4,4,4,6,8,8,7,4,5,6,3,3,3,3,4,16,8,3,5,4,3,3,3,5,2,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,12,7,7,13,9,10,12,8,9,7,8,5,12,10,13,14,5,5,5,13,5,5,5,3,3,3,5,16,5,5,5,5,5,7,12,14,8,12,8,10,12,9,11,7,9,7,10,7,13,9,7,12,8,17,7,7,16,10,13,13,8,10,10,14,17,7,16,16,15,8,10,10,12,17,7,17,14,7,10,17,8,7,7,7,8,15,15,7,14,10,10,10,11,11,7,7,13,8,10,7,16,7,8,7,14,17,12,10,11,21,8,9,7,13,9,8,13,6,12,7,6,13,10,10,10,8,18,9,17,13,10,12,6,13,6,11,8,13,10,13,18,13,11,13,8,16,7,10,8,16,12,10,8,8,6,14,11,8,15,8,8,7,7,12,7,8,9,14,15,8,9,10,9,15,7,8,8,12,13,9,10,15,15,13,7,10,10,20,7,6,9,6,6,14,11,14,11,12,9,10,16,16,12,7,11,28,8,11,10,7,21,8,7,9,4,4,4,17,7,8,6,9,6,6,13,6,6,6,6,18,20,14,8,11,12,9,10,13,15,19,8,9,12,7,10,16,12,9,9,9,14,12,11,9,12,11,18,9,9,9,10,7,7,16,8,9,7,13,12,10,18,7,8,11,7,7,8,8,13,7,7,7,11,15,13,11,7,8,15,11,7,8,18,14,13,18,15,10,12,12,9,7,11,11,8,7,10,8,14,12,10,18,7,10,9,7,8,13,10,14,9,10,8,8,23,7,7,11,12,12,17,7,7,11,11,17,16,16,7,8,11,14,14,8,10,7,7,16,16,13,9,11,9,15,15,11,11,7,7,14,7,9,7,7,16,10,13,10,11,14,7,11,10,11,7,11,10,11,15,11,15,10,12,17,10,14,13,11,11,12,13,10,7,13,10,16,12,21,9,10,10,7,11,14,17,7,7,8,11,12,8,15,14,14,8,17,12,10,10,7,9,11,7,10,7,11,18,7,11,7,12,11,8,8,14,12,7,8,15,3,7,7,5,2,9,2,2,2,2,2,2,2,3,3,3,3,3,3,3,2,5,3,3,3,3,3,3,4,4,3,3,3,3,3,3,5,11,6,4,7,10,7,7,11,1,10,2,2,3,3,3,3,3,3,3,3,5,7,3,5,6,3,3,5,2,2,5,3,4,13,11,3,3,6,3,5,14,2,2,3,8,2,2,12,5,18,5,3,3,3,16,5,5,5,10,7,13,12,13,9,12,14,19,9,9,21,9,9,10,6,9,6,15,10,6,12,8,6,10,15,4,4,6,6,9,9,12,16,14,23,7,7,7,14,9,7,7,11,14,10,7,10,10,10,12,6,11,10,13,11,15,11,7,12,10,3,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,4,3,7,2,5,5,3,3,5,5,5,5,7,6,6,6,4,4,4,4,4,4,6,6,6,6,6,7,10,2,2,2,5,5,5,5,3,3,3,3,3,5,5,10,9,11,8,7,12,8,9,7,6,13,11,6,13,7,9,9,4,4,4,4,4,4,6,10,7,8,13,8,8,9,14,8,10,7,7,7,9,6,9,7,2,12,5,3,3,13,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,4,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,4,4,4,4,4,4,4,4,4,9,3,3,3,3,3,3,3,3,3,3,4,2,2,2,5,3,3,3,3,3,3,3,3,4,4,1,7,6,4,12,3,3,3,3,3,8,7,3,3,3,3,3,3,4,4,11,14,2,8,3,5,5,8,10,8,6,4,7,17,7,4,5,2,6,3,5,2,4,4,2,12,5,5,3,15,13,10,8,11,2,2,3,3,3,3,3,3,3,3,4,4,5,3,3,3,3,4,18,2,12,5,3,3,3,3,3,5,16,8,8,9,6,6,4,4,4,4,31,6,6,10,11,21,10,9,7,10,7,7,2,4,4,4,4,6,5,3,3,4,3,3,3,3,3,3,3,3,3,6,6,6,2,2,2,5,3,3,3,7,7,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,8,2,3,3,3,3,3,5,9,11,3,3,3,3,4,4,3,3,3,3,3,5,10,9,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,11,10,10,10,10,10,11,10,11,10,11,10,9,9,11,3,3,3,3,3,3,5,3,7,8,8,7,6,6,11,4,4,4,7,8,9,9,2,3,7,4,4,2,5,5,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,2,2,5,5,5,5,5,3,3,5,5,5,7,7,6,6,6,4,4,4,4,4,4,4,4,4,4,6,6,8,8,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,6,9,12,3,7,10,7,2,2,3,3,3,3,3,4,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,6,6,8,6,7,4,4,4,4,4,4,6,7,5,5,20,19,8,10,9,7,10,6,8,11,6,6,6,6,13,12,8,6,7,14,11,9,2,5,3,3,6,2,3,2,2,2,2,2,2,2,5,4,3,7,6,4,7,4,3,6,4,7,2,7,7,7,5,5,5,5,3,3,3,3,3,3,3,3,3,3,5,9,10,10,8,11,7,8,20,7,8,9,8,12,6,6,6,8,9,8,12,6,6,8,13,10,12,6,6,7,7,8,9,6,4,4,4,4,4,4,4,10,6,6,6,7,14,11,10,7,8,10,8,11,14,11,11,9,7,9,8,11,9,17,10,9,2,2,2,9,3,3,3,3,15,14,9,5,5,2,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,15,12,22,19,17,18,18,19,21,7,16,16,5,5,5,5,5,5,5,5,5,5,5,7,5,5,5,5,5,5,5,5,5,5,5,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,7,16,11,11,7,7,7,7,17,7,8,12,15,9,19,7,19,8,16,21,11,12,19,14,22,7,7,7,7,7,7,7,7,7,7,7,16,16,19,24,12,7,14,7,12,7,8,10,10,13,7,12,12,7,7,10,18,15,12,16,7,14,12,17,10,16,17,12,17,25,7,7,7,13,6,9,6,9,18,6,6,11,20,10,6,6,6,6,6,6,6,17,6,6,6,15,6,6,6,6,6,8,14,11,12,15,13,19,17,21,7,18,8,13,13,8,12,8,6,6,13,6,15,15,16,6,6,16,6,6,6,14,6,18,6,6,6,17,18,9,13,15,8,19,8,15,15,18,14,16,4,4,4,4,4,4,4,4,4,4,4,4,6,11,10,11,6,21,23,12,17,12,11,14,13,22,15,15,11,12,14,12,7,12,8,14,12,18,10,8,16,19,17,12,14,15,8,9,19,17,12,13,13,15,18,13,23,24,23,21,17,24,8,21,8,14,14,16,14,8,8,15,20,8,19,21,9,8,13,12,13,15,11,8,11,9,9,8,11,8,21,14,21,15,15,13,7,19,7,7,7,7,7,7,16,12,17,18,7,7,11,11,7,9,9,2,2,3,3,2,2,2,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,5,5,5,5,3,3,10,10,7,9,7,7,7,6,8,6,6,6,6,6,6,6,7,6,8,6,6,9,7,7,7,4,4,4,4,4,4,4,4,8,9,8,7,8,7,8,10,7,5,5,5,5,5,5,3,9,7,7,8,6,6,6,6,6,6,6,6,9,6,6,9,11,13,7,8,9,9,5,5,5,7,8,6,6,6,6,6,6,6,7,8,9,7,10,9,10,7,8,5,5,5,5,5,5,7,7,9,8,7,7,6,6,6,6,6,6,10,6,6,6,6,6,6,6,6,6,6,6,9,10,4,4,4,4,8,7,7,10,10,9,8,8,15,9,8,8,8,8,8,9,10,9,10,7,8,13,5,5,5,5,5,3,3,7,7,8,6,6,6,4,4,11,9,7,8,9,10,7,5,5,5,5,5,3,3,7,6,6,13,7,9,8,7,5,5,5,5,5,5,5,5,3,3,3,3,7,8,7,8,13,6,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,6,6,6,6,7,6,7,6,6,9,7,4,4,4,4,4,4,4,7,8,7,8,9,8,8,8,7,10,7,8,5,5,5,5,5,5,5,5,3,7,7,7,7,9,7,10,9,6,6,6,6,6,8,8,6,6,6,7,6,6,6,9,9,4,4,13,7,10,9,9,12,7,8,8,10,8,8,8,8,8,8,5,5,5,5,3,7,7,11,7,9,8,8,6,6,10,6,8,8,8,6,7,6,6,12,4,4,4,4,4,4,4,4,4,9,8,8,16,8,9,8,7,5,5,5,5,5,3,3,7,7,7,10,15,8,9,8,9,9,6,6,6,6,6,6,7,4,8,7,8,8,7,8,11,8,5,5,5,5,5,3,7,7,6,11,16,7,6,4,4,4,4,9,9,8,8,8,13,12,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,7,8,8,9,13,7,7,7,9,8,8,9,12,7,12,7,12,8,7,10,12,9,9,6,6,8,8,6,6,6,6,6,6,6,9,8,9,11,8,6,6,6,6,6,12,7,6,6,6,9,7,7,6,6,6,6,6,11,9,6,6,6,6,6,7,9,4,4,4,4,4,4,4,4,9,9,9,9,7,7,7,7,7,11,7,7,8,8,8,8,8,8,9,8,9,9,7,7,11,11,7,12,8,8,8,8,8,7,8,8,8,8,8,13,12,8,8,8,8,7,7,7,9,5,5,5,5,5,5,5,3,3,7,7,11,7,8,8,8,6,6,6,6,6,6,6,6,6,6,6,10,11,6,7,9,4,4,4,4,4,4,9,9,8,9,8,8,8,7,7,5,5,5,5,5,5,5,5,5,5,3,3,11,7,7,7,9,6,6,11,8,10,6,6,6,12,8,8,7,6,6,8,7,4,4,4,4,4,4,4,4,9,10,9,9,8,10,9,11,8,5,5,5,7,6,6,8,7,4,4,4,4,8,7,7,8,7,8,8,5,5,5,5,7,7,8,8,8,6,6,6,6,6,10,8,9,13,6,7,6,6,8,7,8,4,4,4,4,11,8,8,8,10,5,5,8,7,8,13,8,7,6,8,6,9,7,8,7,5,5,5,5,5,5,3,3,7,8,9,6,4,8,10,10,8,12,9,13,2,7,5,5,5,5,5,7,7,10,6,6,6,6,6,6,6,8,4,4,9,8,8,8,14,8,8,8,9,8,5,5,5,5,5,3,3,9,6,6,6,6,10,12,6,6,6,6,6,6,6,4,4,4,4,11,8,7,8,8,8,5,5,3,3,3,3,7,7,6,8,6,8,11,7,6,6,6,7,4,8,11,9,10,5,5,5,3,3,3,7,7,8,9,8,15,9,6,6,6,6,6,6,11,11,4,4,4,4,4,7,9,9,10,8,7,5,5,5,5,5,5,3,3,8,6,6,6,6,6,6,6,6,6,9,7,4,4,4,4,4,9,9,8,8,10,13,5,5,5,3,17,7,7,7,7,7,8,6,8,13,6,6,6,6,6,6,6,6,4,4,4,9,10,8,8,8,5,5,5,5,3,7,7,7,8,8,6,6,6,8,8,8,9,10,8,4,8,10,9,8,8,8,9,13,10,5,5,5,5,5,5,5,5,5,5,3,3,7,8,9,9,7,7,7,10,9,9,8,9,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,8,12,6,6,6,6,6,6,6,6,6,12,4,4,4,4,4,4,4,4,4,4,4,11,8,8,9,9,10,8,9,7,7,5,5,5,5,5,5,3,7,8,7,6,6,8,6,6,10,4,7,8,9,12,8,7,7,5,5,5,5,5,5,3,3,7,14,7,9,8,8,6,6,8,12,12,6,6,7,7,10,4,4,4,4,4,9,9,14,9,13,8,7,5,5,5,6,6,6,7,4,8,7,5,5,5,5,5,5,5,5,3,3,7,7,7,8,6,6,6,6,6,6,12,6,6,6,6,4,4,9,9,8,8,11,7,7,7,5,5,5,3,9,8,6,6,7,4,4,4,4,4,4,8,8,11,5,5,5,7,7,7,9,6,6,6,6,6,6,9,8,4,4,4,4,7,12,9,8,8,8,7,10,10,5,5,5,5,5,5,5,3,11,14,8,7,8,8,6,6,6,6,6,8,7,6,6,6,7,6,8,9,4,4,4,7,8,9,7,9,7,7,9,8,5,5,5,5,5,5,5,5,5,11,3,9,7,7,12,14,8,6,6,12,11,8,6,6,6,6,6,6,6,6,6,15,7,4,4,4,16,9,9,9,8,9,9,9,9,9,8,8,8,13,11,8,5,5,5,5,3,7,6,6,8,8,8,6,6,7,10,7,4,4,4,4,9,7,8,7,7,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,7,7,7,9,6,6,6,6,6,8,8,7,7,9,6,6,6,7,6,6,6,6,6,15,4,4,4,4,4,8,8,7,8,12,9,8,8,8,8,8,9,8,8,10,8,8,8,8,16,9,10,2,5,5,5,5,5,5,5,9,7,6,8,9,4,4,4,4,4,7,8,8,8,9,8,11,10,5,5,5,5,3,7,8,6,6,6,6,6,8,6,6,6,6,4,12,10,12,7,7,7,7,7,7,7,5,5,5,5,3,3,7,7,10,8,9,7,6,10,7,6,6,4,4,8,9,7,9,9,9,9,8,8,8,8,10,5,5,5,5,5,5,8,7,6,6,6,10,6,7,10,7,4,4,4,4,4,4,4,12,9,10,7,7,10,8,10,5,12,9,6,6,6,6,6,7,6,4,4,4,10,9,9,8,7,7,5,5,5,5,5,5,3,3,13,7,7,9,7,7,7,8,9,9,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,15,15,4,4,4,4,4,10,10,9,8,9,8,8,9,7,8,7,8,5,5,7,6,6,6,4,4,4,7,8,11,8,5,5,5,5,5,5,5,7,6,6,6,6,6,6,9,11,10,7,4,4,4,9,8,8,5,5,5,5,5,9,9,6,6,6,6,6,6,6,9,9,4,4,4,4,8,8,8,9,9,8,8,8,13,2,4,2,7,5,5,5,5,5,5,9,9,6,6,6,6,10,8,8,8,6,6,6,4,4,9,8,10,8,9,8,8,8,9,8,8,5,3,3,3,11,6,6,6,7,6,6,6,4,4,9,8,5,5,5,5,5,3,11,8,6,6,6,6,6,9,7,4,4,14,10,9,8,12,8,8,8,11,15,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,10,10,7,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,3,3,3,7,11,7,7,11,11,7,8,9,10,7,7,9,9,9,9,7,7,10,8,13,8,8,8,8,11,10,6,6,8,10,11,14,14,6,6,6,6,6,6,9,11,7,7,6,8,12,11,11,6,6,10,6,6,6,6,6,10,7,7,6,6,11,6,6,6,11,8,9,7,6,10,11,9,10,11,7,11,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,6,6,8,9,10,9,6,6,6,10,6,6,6,6,11,10,11,10,9,8,7,7,7,7,11,14,8,10,9,9,8,8,7,11,8,8,8,11,11,10,10,9,10,8,11,10,8,11,9,12,8,10,8,11,8,9,9,11,11,10,11,13,8,7,8,8,9,7,8,8,8,8,7,8,2,2,2,2,2,2,2,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,8,6,4,4,4,11,7,11,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,3,3,3,3,8,7,7,8,8,4,8,7,7,7,9,7,8,9,8,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,6,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,4,5,5,3,8,8,6,9,4,4,10,7,3,3,3,2,5,3,3,3,3,3,3,3,3,3,3,3,3,4,3,2,2,2,3,3,3,3,3,4,10,2,3,3,3,3,3,3,3,4,2,3,3,3,3,3,3,3,3,2,2,3,3,3,5,2,4,2,6,2,2,9,5,5,3,3,3,3,3,3,3,5,5,5,9,8,7,6,6,11,4,4,4,4,4,4,4,4,6,6,7,7,11,8,8,6,5,11,2,3,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,6,4,4,4,4,3,3,3,3,5,7,2,3,3,3,3,3,8,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,6,4,4,4,4,2,2,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,4,2,2,3,3,3,3,3,3,2,3,3,3,3,3,6,3,3,8,10,3,4,4,1,1,1,1,1,1,1,8,9,10,7,7,1,1,3,8,7,7,8,8,8,1,6,1,1,6,3,3,4,7,3,5,5,4,4,4,4,4,2,7,7,8,12,3,4,5,1,3,4,4,10,4,3,3,3,8,7,7,2,2,2,2,2,2,2,2,2,12,9,20,7,5,5,5,9,13,5,5,5,5,5,3,3,3,16,5,5,5,13,7,8,8,11,8,7,9,7,11,12,9,9,8,8,11,10,14,7,12,10,11,13,7,9,11,17,17,14,13,7,8,7,10,10,7,16,13,7,8,17,12,9,8,6,7,10,6,6,12,6,8,10,8,8,8,6,8,6,14,6,6,6,13,6,10,6,6,7,14,8,6,6,10,11,10,9,9,7,7,6,6,6,9,9,7,9,10,9,13,12,4,4,4,4,4,4,4,4,4,6,6,6,8,8,6,8,9,10,9,7,10,10,8,7,8,7,10,12,9,8,15,8,7,8,8,7,7,15,13,7,10,9,14,18,16,7,24,7,8,10,11,16,8,14,7,9,9,9,11,13,19,14,15,14,11,7,13,9,10,7,13,9,10,11,12,8,9,2,3,5,8,7,4,4,10,5,3,3,3,3,3,5,4,4,4,2,2,2,2,2,1,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,2,2,2,3,3,3,3,3,3,3,3,3,3,4,2,12,5,3,8,10,15,6,7,2,3,2,5,5,12,2,5,5,5,5,2,2,5,5,12,9,5,2,2,9,5,5,12,12,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,12,5,8,8,9,5,5,5,8,19,7,16,15,14,9,9,9,9,7,11,11,11,7,14,10,10,5,5,5,5,5,5,5,5,5,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,15,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,12,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,9,12,9,9,12,12,12,15,7,11,7,14,11,18,13,8,18,15,18,12,14,12,8,8,8,8,9,9,9,12,7,10,10,8,8,12,12,12,7,12,12,9,7,7,7,7,7,8,15,12,9,10,10,7,10,10,13,11,10,9,22,11,9,8,8,8,8,8,13,18,13,9,15,19,9,7,7,10,7,7,7,11,8,13,17,7,7,10,10,10,7,20,16,7,7,7,7,7,7,11,21,12,12,13,11,14,16,8,8,13,11,7,7,13,7,7,14,15,15,6,6,6,6,6,6,6,6,6,6,13,10,18,6,6,6,6,6,6,6,6,6,11,8,8,12,12,11,11,8,12,9,9,9,13,13,9,9,9,9,9,9,6,10,12,6,6,6,6,17,11,7,7,7,7,14,14,12,6,7,7,6,6,15,10,13,10,6,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,13,9,9,15,13,6,12,12,6,19,11,10,7,7,16,8,19,17,9,9,9,9,9,6,6,6,10,8,16,8,6,6,9,6,6,6,6,6,6,6,6,8,8,8,6,7,6,6,6,6,6,6,6,6,6,6,6,14,6,6,6,6,20,6,9,6,14,9,9,9,6,9,8,8,12,9,8,8,8,8,7,8,12,7,8,8,8,6,8,6,6,6,6,6,6,6,9,8,8,6,6,13,9,12,13,12,14,13,12,11,11,6,8,8,8,6,13,12,11,11,12,6,11,12,11,13,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,15,6,6,6,6,6,6,6,13,6,6,6,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,18,6,12,13,13,13,9,10,15,9,12,6,6,6,6,6,6,6,6,9,15,10,9,10,13,9,19,8,18,17,10,10,8,8,6,6,6,6,6,6,10,14,8,16,16,9,8,15,8,8,10,12,14,7,7,8,8,7,7,7,7,8,13,13,11,9,9,9,12,10,17,8,11,9,7,7,14,8,14,14,7,7,7,7,7,7,14,7,7,7,7,7,10,10,8,14,7,7,7,7,8,8,8,8,8,17,9,7,15,7,8,12,7,9,14,7,7,7,9,13,8,14,7,16,18,13,15,14,12,13,10,15,9,7,7,7,10,13,15,15,9,9,9,9,19,11,7,11,11,13,8,8,8,8,7,12,19,17,9,9,13,7,7,7,9,7,7,7,12,13,15,10,8,8,14,15,12,13,13,8,12,14,7,11,7,14,15,13,12,8,8,8,8,11,13,15,15,8,13,12,8,8,8,13,10,16,14,11,8,8,12,12,9,15,15,12,12,13,8,8,9,12,13,9,8,8,8,8,8,8,8,8,8,8,8,11,12,11,7,14,7,13,13,13,12,18,16,7,12,11,10,10,15,9,9,9,21,7,7,7,11,16,8,8,11,11,7,7,7,7,7,19,7,7,7,7,7,7,7,7,7,12,8,9,12,14,11,9,9,9,22,12,3,8,8,15,4,2,2,5,5,3,3,3,3,3,3,6,6,4,4,4,12,7,10,2,3,3,3,3,3,3,3,6,7,3,7,5,14,4,4,7,8,10,4,1,3,3,6,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,2,2,5,3,4,2,2,2,2,2,2,11,5,5,5,11,5,5,3,5,5,5,5,11,14,13,9,11,9,12,8,11,11,8,11,16,9,9,7,10,9,12,8,15,6,7,6,6,13,10,8,11,8,6,6,6,12,16,6,11,7,8,9,18,6,6,9,4,4,6,13,6,6,6,6,8,8,9,16,7,7,14,7,8,8,8,7,7,7,7,7,7,15,13,7,10,7,7,10,12,16,15,7,9,9,14,11,11,10,9,10,8,12,7,8,7,7,10,12,7,12,8,7,2,3,3,3,3,3,3,3,3,3,3,5,3,3,5,5,5,10,4,8,7,10,3,3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,7,4,5,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,8,2,2,2,8,12,7,7,5,5,5,5,5,5,5,5,5,5,5,5,8,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,7,11,9,8,8,8,7,8,9,7,7,9,7,7,7,10,7,7,10,9,10,6,6,6,6,6,6,15,7,8,9,9,8,6,6,10,9,6,8,13,9,7,6,6,6,6,6,6,12,6,6,7,6,7,6,6,6,10,10,7,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,14,6,6,7,7,9,6,6,6,6,9,9,8,9,10,9,8,9,12,7,7,7,8,7,10,12,11,9,10,7,7,7,9,10,10,8,12,9,7,7,9,8,8,8,10,7,7,8,9,9,7,7,7,8,2,4,6,3,4,2,3,3,3,3,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,3,3,3,3,3,3,3,3,5,8,6,4,7,3,3,3,3,3,3,3,12,3,3,3,3,3,3,4,4,2,3,5,3,4,7,3,3,3,3,3,3,4,3,3,3,3,3,3,3,4,3,3,6,4,3,4,2,2,2,5,3,3,3,3,3,5,4,4,4,4,7,6,8,9,2,2,2,2,3,3,3,5,7,2,3,3,8,7,7,2,2,8,5,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,8,8,7,7,6,10,6,9,7,11,4,6,8,8,7,8,4,5,5,5,3,3,11,8,9,6,6,8,7,4,4,7,8,7,2,2,3,3,3,3,4,3,3,3,3,3,3,3,3,7,2,2,5,3,3,2,3,3,3,3,3,3,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,12,5,5,3,3,3,5,10,12,6,15,4,6,6,7,14,9,3,3,3,3,3,8,2,2,3,5,3,3,3,3,3,3,8,8,8,7,5,8,4,6,11,2,2,6,7,2,9,8,5,5,3,3,5,5,7,7,6,6,10,6,6,8,9,7,4,4,4,4,7,6,6,7,7,10,9,8,11,8,3,3,3,3,3,4,4,2,3,3,3,3,3,7,6,2,5,6,7,6,4,8,9,11,2,2,3,3,3,3,3,3,3,2,2,5,3,3,3,3,3,9,9,6,4,8,7,7,5,9,8,6,8,7,8,5,5,5,5,5,3,3,3,16,8,7,7,7,8,7,7,7,7,9,6,9,6,10,7,7,7,6,10,8,9,11,11,8,4,4,10,8,8,6,9,6,11,8,8,8,15,7,8,9,5,3,3,3,3,3,5,11,2,2,3,8,9,10,3,2,2,2,2,2,2,3,6,4,2,2,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,11,5,3,3,3,3,3,3,3,3,6,7,4,4,2,3,3,3,3,3,3,3,3,12,7,4,12,4,6,5,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,2,3,3,3,3,3,3,3,3,4,4,11,10,6,4,6,10,8,3,3,3,3,3,3,3,3,5,4,4,4,2,2,2,2,2,2,2,2,5,3,4,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,5,5,5,5,5,5,3,3,3,3,3,3,3,3,7,8,8,7,13,12,10,10,8,8,7,7,9,12,11,6,6,8,8,9,7,7,7,10,15,10,4,4,4,4,4,11,8,8,9,7,9,14,14,12,2,2,2,2,2,2,2,3,3,3,3,3,2,2,12,5,5,5,8,11,10,7,9,3,8,7,3,15,13,11,4,4,2,2,2,19,7,5,5,3,3,3,3,3,3,3,5,22,18,6,14,17,4,4,19,16,18,2,3,3,2,3,2,3,3,6,4,2,3,3,2,5,3,3,3,3,3,3,3,9,9,2,3,2,2,2,3,3,3,5,7,14,7,7,12,9,13,6,11,6,10,9,7,7,8,12,12,8,8,8,10,7,7,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,5,8,10,7,8,11,8,12,9,4,7,7,9,13,2,3,3,3,3,3,3,2,3,3,3,1,2,2,3,3,3,3,3,3,5,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,8,4,4,4,3,2,3,3,3,3,5,2,2,2,2,5,5,5,5,3,3,3,3,3,3,3,3,3,7,7,7,7,7,8,8,8,8,8,12,9,8,8,9,8,6,17,6,6,6,8,8,6,6,6,6,6,6,6,6,6,6,6,7,4,4,8,8,9,9,9,7,7,7,7,7,7,7,9,9,9,7,8,8,8,10,7,13,10,8,9,3,3,5,13,3,3,3,3,3,7,7,6,6,10,13,11,11,8,8,9,8,9,9,10,10,10,11,10,10,13,13,16,15,11,12,9,9,10,9,11,10,9,9,14,7,8,3,10,7,7,3,2,2,2,5,3,3,3,3,3,3,3,3,3,3,3,3,6,7,2,2,3,3,3,3,3,3,3,3,4,11,6,7,4,6,2,2,3,3,3,1,3,3,3,3,3,3,6,4,4,2,2,2,3,3,3,3,4,4,6,6,6,6,5,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,9,11,6,10,9,12,7,7,11,14,9,7,12,3,3,7,12,11,12,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,9,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,11,5,5,5,5,5,5,5,5,11,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,5,5,5,5,5,5,5,5,5,5,5,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,5,5,5,5,5,5,5,5,5,5,5,5,3,10,3,3,3,11,3,5,9,11,8,12,14,9,7,8,7,7,11,11,7,7,10,9,8,10,9,7,7,7,7,7,7,8,8,7,11,8,8,8,7,7,10,8,7,13,12,7,17,10,8,8,11,7,11,11,14,7,11,7,8,6,9,20,8,7,9,16,7,10,6,11,10,8,9,7,16,11,11,9,8,9,8,8,8,11,8,15,8,8,9,7,8,8,11,10,7,5,7,10,10,15,7,7,7,8,7,8,8,10,11,10,10,10,11,11,7,8,6,8,8,8,10,6,8,6,6,7,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,16,6,15,6,7,11,11,7,9,10,11,13,10,6,16,8,10,12,11,6,6,6,6,6,6,6,10,6,10,7,7,7,7,11,7,11,6,6,6,6,6,6,17,7,7,6,6,12,22,6,6,6,6,6,8,6,6,6,6,7,6,6,5,6,6,8,11,6,9,14,11,9,11,7,7,8,6,6,6,8,10,9,6,6,6,6,9,7,6,6,6,6,6,15,6,4,4,4,6,4,17,8,11,6,6,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,6,6,6,6,10,6,10,6,6,6,6,12,8,6,6,6,6,6,6,6,6,6,9,6,6,6,6,18,6,6,6,8,9,10,7,8,9,10,11,7,13,6,8,8,6,6,14,7,7,7,7,10,7,14,9,6,6,9,15,9,7,14,6,11,14,13,7,12,8,7,7,7,7,7,12,7,10,9,16,6,8,6,5,17,6,8,10,4,6,4,10,15,17,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,4,4,11,7,4,4,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,19,17,6,10,11,6,6,6,6,18,6,6,11,4,4,4,5,6,6,6,9,5,6,4,6,6,4,6,6,6,6,10,6,6,4,6,6,10,6,10,6,6,6,6,11,6,6,10,6,6,8,6,6,6,8,6,11,4,11,9,10,9,11,4,8,4,11,12,7,9,8,6,7,7,8,12,12,11,13,10,11,7,7,7,9,7,11,10,7,7,7,16,11,10,11,17,9,9,8,8,7,7,7,9,7,7,7,14,7,13,9,11,10,14,10,10,12,11,10,7,10,5,14,8,8,8,9,7,8,7,7,9,8,7,8,7,7,7,7,7,7,7,11,8,10,8,7,8,14,11,8,9,9,9,8,24,10,10,12,7,7,15,11,8,8,12,11,8,9,9,7,8,9,10,11,10,11,7,12,7,7,11,9,8,14,13,12,8,11,10,8,8,7,7,14,9,10,8,9,11,7,14,8,8,13,8,8,12,7,10,14,14,11,9,10,9,9,7,7,11,11,13,9,13,5,5,5,7,9,5,11,12,14,8,7,7,11,10,9,7,8,8,7,10,11,11,5,5,7,5,5,5,7,7,15,7,7,8,7,15,12,12,10,7,8,7,11,7,7,7,23,11,8,8,11,10,7,8,11,7,19,7,7,6,9,9,9,11,3,4,7,8,6,6,4,10,8,2,2]),el=new Uint16Array([0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,17,1,1,1,12,1,12,1,12,13,1,1,1,1,12,1,12,1,1,1,1,1,14,21,1,1,1,1,1,1,1,19,12,1,1,1,1,1,1,1,20,1,1,1,16,1,18,1,1,15,1,1,1,1,12,1,1,1,1,1,1,22,1,1,1,12,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,1,24,25,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,12,12,12,12,1,32,0,0,0,1,1,1,1,35,34,1,1,1,1,1,33,1,1,1,1,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,38,0,0,0,0,39,40,0,0,0,41,0,12,1,1,12,1,1,1,1,44,45,45,45,44,45,44,44,46,45,44,45,44,44,44,44,44,44,46,44,44,44,44,44,44,45,47,47,45,44,44,44,44,44,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,52,50,50,50,52,50,51,50,53,50,51,51,50,50,50,51,53,51,53,50,51,51,12,55,55,54,56,51,53,50,50,48,49,57,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,60,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,67,1,12,1,1,66,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,76,79,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,12,1,1,1,1,89,1,91,1,1,1,1,1,1,1,1,94,1,1,1,1,1,1,1,1,1,1,1,1,0,1,97,97,1,1,12,1,100,1,1,1,1,1,1,1,98,1,99,1,101,1,1,1,1,1,102,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,110,111,1,1,1,1,1,1,113,113,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,121,122,1,1,1,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,1,122,1,1,1,1,1,1,1,1,1,126,123,125,120,1,124,1,1,114,1,1,1,1,117,1,127,1,1,1,1,1,119,1,108,1,109,1,12,128,106,1,112,1,1,1,1,1,107,115,1,12,12,12,118,116,1,1,1,1,1,1,0,0,0,0,1,12,12,1,1,1,1,1,12,134,1,1,1,1,1,1,1,1,1,1,1,12,136,1,1,1,1,1,1,1,1,137,138,12,12,135,133,45,45,140,50,50,139,142,141,1,1,0,0,0,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,1,0,144,132,1,0,1,12,12,1,1,1,1,1,0,0,0,0,0,0,0,1,148,147,20,1,1,12,12,1,20,12,12,1,1,1,1,1,134,1,1,152,1,1,1,1,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,136,1,1,152,1,1,1,1,153,1,1,134,1,1,1,152,1,1,1,1,153,1,1,134,1,1,1,1,1,1,1,1,134,1,1,1,1,1,1,1,1,1,1,1,160,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,1,1,1,1,1,134,1,1,1,1,152,1,1,1,1,153,1,1,1,134,1,1,152,1,1,1,1,164,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,167,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,1,160,1,1,1,1,1,152,1,1,1,1,1,153,1,154,158,158,12,1,12,166,1,1,1,1,1,158,158,158,154,1,1,1,157,158,161,165,1,1,1,1,157,157,1,1,156,154,154,157,170,156,170,1,1,168,1,156,155,157,1,1,1,1,157,1,159,1,1,1,12,1,162,1,162,1,1,1,162,161,163,169,156,154,1,1,1,1,1,1,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,173,172,173,172,172,172,172,174,174,172,173,172,173,172,172,12,12,12,12,12,1,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,193,1,1,1,1,12,199,200,201,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,151,1,1,1,1,1,1,1,1,1,1,1,196,1,1,1,184,1,210,1,1,1,208,1,1,205,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,12,1,1,1,1,1,1,1,1,190,1,1,1,186,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,182,1,1,1,1,1,1,1,191,1,1,1,1,195,1,1,1,1,171,1,1,189,1,1,1,192,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,180,1,12,1,1,12,1,1,1,1,183,1,1,1,188,1,203,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,209,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,194,1,1,1,1,1,12,1,1,1,1,1,1,1,1,176,12,1,1,1,178,12,1,1,1,1,1,1,1,198,1,1,1,1,1,1,1,1,1,1,177,1,1,1,1,1,1,204,1,1,1,181,1,1,1,187,1,12,1,1,12,1,1,1,1,1,1,1,1,1,1,191,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,175,1,1,1,1,1,1,1,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,206,1,1,1,1,1,1,1,1,1,1,1,1,1,207,1,1,12,1,1,1,1,179,1,1,1,185,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,1,1,197,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,1,1,1,1,1,1,1,1,1,202,1,1,12,1,1,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,220,0,0,0,0,0,221,0,0,0,0,0,0,1,12,1,1,1,225,1,1,1,0,226,223,224,1,1,1,1,1,1,231,1,233,1,1,1,1,1,1,1,1,1,1,1,229,1,1,1,1,1,235,1,1,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,234,1,1,1,12,1,1,1,1,230,1,1,1,228,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,232,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,241,13,1,1,1,12,12,238,239,1,1,1,1,240,1,1,12,1,1,1,1,1,1,1,242,1,1,12,16,1,1,1,1,1,1,1,243,1,1,1,12,12,1,1,1,1,1,243,12,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,256,256,1,0,0,0,0,0,1,12,0,0,0,0,0,0,0,0,172,261,262,1,12,1,1,1,1,12,264,1,1,263,1,1,266,1,1,1,1,1,1,1,1,1,0,1,1,1,271,272,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,12,1,0,1,0,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,12,0,283,0,0,284,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,12,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,60,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,1,0,308,0,0,0,0,0,0,0,0,0,310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,12,1,1,1,1,1,1,1,1,1,12,1,1,1,1,1,327,327,328,327,0,185,1,1,13,323,1,321,0,0,0,0,1,0,0,0,324,1,1,329,1,205,1,1,1,1,1,322,1,319,1,325,1,317,1,326,1,318,1,1,1,1,1,1,1,12,1,1,1,12,1,12,320,320,1,1,1,316,184,1,1,12,1,1,1,1,1,1,1,1,1,1,12,1,1,1,1,12,1,1,1,1,315,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,332,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,266,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,372,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,0,1,340,351,1,1,339,374,1,345,1,1,337,369,1,1,355,336,341,1,1,1,348,379,357,1,1,1,1,1,1,358,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,367,371,0,0,79,1,1,0,365,342,378,343,346,353,1,368,0,1,0,79,362,360,1,0,0,1,1,1,0,0,0,0,381,1,1,352,1,79,1,0,1,1,1,384,1,0,0,79,359,0,1,338,1,1,1,0,1,1,361,1,0,1,1,1,0,1,386,349,1,1,0,1,0,0,377,0,1,1,1,79,370,1,1,366,363,1,1,1,1,1,1,1,1,1,1,1,344,1,1,1,1,1,1,1,1,1,1,1,376,0,79,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,380,1,1,1,0,0,383,0,0,0,1,356,1,0,79,382,1,0,0,0,0,385,1,1,0,0,1,0,1,0,354,0,350,0,1,1,1,0,1,1,0,373,347,375,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,400,400,1,1,12,12,1,400,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,412,1,1,0,1,1,1,1,205,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,430,430,1,1,0,0,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,442,1,441,1,1,1,1,1,1,1,1,445,1,12,12,1,1,1,1,1,12,1,1,1,1,453,1,1,1,455,1,1,1,1,1,1,1,1,1,1,452,1,447,1,1,1,1,435,1,1,1,1,1,1,1,1,448,12,1,1,1,1,454,1,1,1,449,444,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,317,1,433,1,1,12,451,1,1,317,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,437,1,1,1,1,1,1,1,1,1,1,1,454,1,1,1,1,317,1,450,1,1,1,439,1,1,1,1,1,440,1,456,443,1,1,1,1,1,438,1,1,1,1,1,1,1,1,1,434,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,446,1,1,1,1,1,1,1,12,1,1,1,1,1,436,1,1,1,1,1,1,1,220,457,1,1,1,1,1,12,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,1,0,1,1,0,0,0,462,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,466,466,466,466,466,466,466,0,466,466,466,466,466,1,466,466,466,0,466,466,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,471,470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,475,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,477,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,474,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,478,473,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,467,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,466,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,476,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,12,1,1,1,1,1,1,1,1,1,1,1,1,488,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,198,198,1,492,1,1,1,491,1,1,1,1,487,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,489,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,493,1,1,490,1,1,1,1,1,1,1,1,372,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,494,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,1,0,0,0,505,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,12,1,507,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,12,12,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,60,1,1,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,526,1,1,1,1,1,1,1,527,1,1,1,1,1,1,1,525,1,1,12,1,529,239,1,1,12,12,1,1,12,1,12,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,533,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,539,1,1,1,1,1,1,1,1,1,1,1,1,1,1,132,1,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,107,1,1,12,1,1,1,12,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,548,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,144,1,1,1,228,1,1,12,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,1,572,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,577,1,220,1,328,1,1,1,1,1,1,1,1,1,0,0,578,1,1,1,1,0,580,0,79,0,579,0,1,1,1,0,1,1,1,1,1,1,12,0,0,0,0,1,0,0,0,0,0,0,586,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,582,582,0,585,583,582,582,582,582,582,587,582,582,591,582,582,582,582,582,582,582,582,582,582,588,585,582,582,585,582,582,582,582,582,582,582,582,582,582,582,582,582,583,582,582,582,582,582,589,582,582,582,582,582,582,0,0,0,1,590,1,1,1,1,584,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,12,595,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,12,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,12,1,1,12,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,65,280,306,411,535,0,4,68,236,254,282,307,334,388,413,0,499,519,536,597,9,0,61,88,398,409,429,575,0,497,518,532,612,0,30,6,0,461,500,602,560,70,0,7,285,255,389,463,416,538,79,598,0,576,309,418,465,9,105,288,506,6,30,0,311,79,391,79,483,10,6,131,248,275,0,613,509,0,563,0,64,6,6,251,95,2,432,399,410,596,0,6,0,6,286,103,6,561,501,540,0,464,390,273,287,8,71,104,599,543,392,312,300,419,146,74,290,546,510,601,564,335,330,479,6,75,149,11,0,249,522,547,565,514,551,570,611,36,6,260,295,333,304,218,30,528,553,218,42,216,265,296,305,406,423,481,274,0,73,562,0,403,417,299,79,247,79,0,581,545,504,292,421,79,393,387,0,0,0,9,555,571,217,0,424,407,531,516,573,615,85,218,43,297,396,425,569,0,511,293,276,79,215,80,28,390,30,6,394,331,303,604,592,524,550,513,0,258,81,30,405,422,0,30,426,0,219,593,517,9,408,427,218,248,86,222,594,574,557,482,428,397,250,227,87,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,82,0,129,0,0,84,549,0,0,0,0,0,0,0,27,0,552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,503,0,257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,294,0,0,0,0,0,0,0,617,0,0,0,0,0,616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,395,0,0,0,484,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,0,0,0,0,0,0,495,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,211,0,0,0,0,0,0,0,0,0,0,515,0,0,0,0,0,0,0,0,0,0,0,0,496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,269,281,0,0,0,0,0,530,277,0,0,0,0,0,0,0,0,0,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,458,0,0,0,314,0,0,0,0,0,0,253,0,0,0,0,0,0,23,0,0,0,0,568,0,0,0,0,600,521,0,0,0,0,244,0,0,0,0,0,0,0,0,0,480,0,0,0,0,0,62,0,0,0,267,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,246,0,0,0,0,0,279,610,0,72,0,0,0,0,0,0,0,0,0,619,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,278,0,0,0,0,0,0,567,0,0,0,0,0,0,523,0,0,0,0,0,0,0,0,0,566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,0,502,0,0,0,0,0,554,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,83,0,0,0,0,0,0,0,0,0,0,0,0,486,0,485,0,0,0,0,0,0,0,0,0,0,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,459,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,289,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,537,0,0,0,0,0,0,0,0,298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,69,237,0,0,0,0,0,0,0,0,0,0,84,0,606,0,0,0,0,0,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,609,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,520,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,498,0,614,0,0,431,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,544,0,93,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,29,92,0,0,0,0,0,0,0,0,0,0,0,0,291,0,0,0,214,0,0,0,0,0,0,558,0,270,0,0,130,0,0,0,0,0,559,0,0,0,0,0,0,0,414,420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,0,0,0,0,0,5,0,0,0,0,0,0,0,301,0,0,0,0,0,0,0,0,0,0,0,0,0,534,0,0,0,415,0,0,401,0,0,0,0,0,0,603,0,0,0,541,0,0,90,0,542,0,0,0,0,0,0,0,0,0,0,508,460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,608,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,618,0,0,0,0,0,556,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,605,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,623,623,623,623,623,623,623,622,624]),mr="orgmilcomschnetedugovdrrformsfeedbackofficialaccoorgmilschnetgovmagazinemediaunioncargopilotgroupcaarespressworksaerodromeworkinggroupair-traffic-controlaircraftaccident-preventioneducatormarketplaceambulanceinsurancecateringairportrepbodyenginesoftwaremodellingair-surveillanceconsultingchartertrainermaintenanceservicesdesignflightskydivingfreightassociationstudentgroundhandlingdgcafuelclubtaxicrewshowballooningexpresstraderbrokerauthoragentsairtrafficjournalistsafetyconsultantmicrolightaccident-investigationparachutingequipmentproductionfederationrecreationscientistnavigationengineertradingglidingleasingresearchpassenger-associationentertainmentparaglidinghangglidingaerobaticrotorcraftemergencycertificationgovernmentaeroclubexchangelogisticschampionshiphomebuiltcouncilconferencecontrolairlinecivilaviationjournalorgcomnetedugovcoorgcomnomnetobjofforgcomnetuwukiloappsframerorgmilcomnetedugovcoradioorgcomnetcommuneedogpbcoitgvorgedugov*spreviewfrontendrelayononstagingupid*mtls*privatelinktypedreamdeveloperbravemochawindsurfaivenmirenupsunwnextbegetngrokclerkwale2bwebcsbrunputerflutterflowspawnbaseshiptodaymagicpatternsnetlifyondigitaloceanrailwayhostedclaudehasurabotdashvercelgithubluyanigadgetreplitcloudflaretelebitedgecomputeevervaultdetaexponyatnoopencrpplxzeaburwasmerframerzeropsconvexmedusajsspritesonherculeseasypanelstreamlitsnowflakemesserliloginlinehackclubnorthflankbase44corespeedadaptableleapcellngrok-freeclerkstagelovableon-fleek*us-west-3ap-south-2us-central-2us-central-1eu-central-1ap-south-1us-west-2us-east-2eu-north-1ap-north-1us-west-1us-east-1*rcloudintsegorgmilcomgobbetnetintedugovturmusicasenasamutualcoopip6uriurnin-addre164homeirisgovdixdaemoncloudnssthwien*inexexkunden4accogvormymyspreadshop4lima2ixortsinfofuturecmsfuturehosting12hpprivfuturemailinglima-cityfunkfeuer123webseitednshomemelmyspreadshopcloudletswasantqldvicactnswtascatholicwasaqldvictasvpsidwasantozqldorgcomvicasnactnetedugovnswtasconfhrsncomairflowlambda-urltransfer-webappairflowtransfer-webapptransfer-webapptransfer-webapp-fipstransfer-webappeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1privatenotebookstudiolabelingnotebookstudionotebooknotebook-fipslabelingnotebookstudionotebook-fipsnotebookstudio-fipsnotebook-fipsnotebookstudionotebook-fipsnotebookstudioeu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2experimentsus-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1onrepostsagemakercopporgmilcompronetintedugovbiznameinfoshoprsorgmilcomnetedugovbrendlyresolvenzauscotvstoreorgcomnetedugovbizinfoidacaicoittvorgmilcomschnetedugovinfocloudezproxyacmymyspreadshopkuleuvenwebhostingtransurl123websitecloudnsinterhostsolutionsddns5476103298edgfacbmlonihkjutwvqpsryxzbarsycoororgcomedumyftpno-iporxcloud-ipfor-somemmafanfor-morewebhopselfipjozidyndnscloudnsdscloudfor-thefor-betteractivetrailcoeconorestooteorgcomeconeteduassurmoneyafricaarchitectesrestaurantloisirstourismavocatsinfoagrounivcoorgcomnetedugovtvdeportesaludtksatorgmilcomwebgobnetinteducienciaboliviarevistacooperativaempresanombreindustriamusicapatriamedicinademocraciapoliticapuebloindigenaplurinacionalarteblogwikiinfoagrotransportenoticiasprofesionalacademiaeconomiaecologiamovimientotecnologianaturalsimplesitecepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesmscepesebamapadfmgalampbacscpirngorotomtrjspaprrprrsesms*biaamfmtcmptvfeirasampajampanatalbelemananiradiog12medindfndbmdtrdthepoaggfjdfdefinfenflegsegongengcngorgzlgslglogppgmillelqslcimcomnomadmjabimbbibbsbabcrectecsjcetcpscpvhudieticriapipsiecnbiorioecogeoteoodoproatoartfstmatvetdetbetnetcntnotfotgrueduajuespappreptmpemparqsrvadvdevgovntrturagrjorfarjusmusdesvixxyzcozfozslzbhzmaringasantamariacampinagrandegoianiasorocabafloripasaobernardocuritibaboavistarecifeaparecidasaogoncasalvadorcuiabamorenamacapalondrinacontagemsocialfortalmaceioleilaoosascoriobranconiteroi9guacutcheblogflogvlogwikitaxicoopmanauspalmascaxiasjoinvillebaruericampinassantoandreribeiraoriopretoweorgcomnetedugovv0windsurfshiptodaycloudsitecoaccoorgnetgovofmilcomgovmediatechzacoorgcomnetedugsjgovmydnspenfnlabnbmbgcbcqconcontnuyksknsmyspreadshopno-ipawdevboxbarsyonidatemfuinabusavinstanceseceuguukussryzespawncsxcloud-ipmyphotosfantasyleaguetwmailcleverappsscrappingccwucloudnsftpaccessgame-serverccgovobjectsrmalpgcust*svcalp1aeappenginermalpgmyspreadshop4lima2ixsquare7cloudscale123websitefirenet12hpflowgotdnslinkyard-cloudcloudnslima-citydnskingobjectstorageedaccogoorusorgcomnetinteduaéroportxn--aroport-byaassogouvcomilgobgovcloudnses-1eu-west-1us-east-1euvipit1eurarubait1s3lbwebsites3websiteru-spbru-mskelasticcsrunstnukukcaukusnl-ams-1fr-par-1fr-par-2functionsnodess3ddlwhmrdbfnck8sifrs3-websitecockpitscblmgdbdtwhkafkpubprivs3ddlwhmrdbk8sifrs3-websitecockpitscblmgdbdtwhkafks3ddlrdbk8sifrs3-websitecockpitscblmgdbdtwhkafkk8sscalebookpl-wawfr-parnl-amsbaremetalsmartlabelinginstancesdechk2kuleuvenlaravelvoorloperurownoxazapscwhstgrvaporobservablehqelementorantagonistreclaimjoteluluencowaydiademjelasticmatlabmagentositetrendhostingaxarnetperspectajenv-arubajelejoteravendbemergenttrafficplexconvexkeliwebserveboltbegetcdnstaticson-rancherprimetelonstackitunison-servicesdnshomelinkyardbarsyjelecloudnscocomnetgovmycn-northwest-1cn-north-1s3s3-accesspoints3-websites3s3-accesspointrdsdualstacks3-deprecatedemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspoints3s3-accesspointrdsdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicn-northwest-1cn-north-1cn-northwest-1ebcomputeelbcn-north-1airflowcn-northwest-1cn-north-1oncn-northwest-1cn-north-1amazonawssagemakeramazonwebservicesdirectasgdsdhehahljlnmhbacscahqhshhihnlnynsnmofjbjzjxjtjhkcqtwgsjssxnxjxgxxzgz網絡网络公司orgmilcomnetedugovxn--55qx5dcanva-appsxn--io0a7iquickconnectcanvasitekhsjxn--od0algmyqnapcloudsrvrlessclustersrealtimestorageleadpagescarrdcrdorgmilcomnomnetedugovhidnssupabaserdpareplmypiumsoxmitotaplpagesfirewalledreplitowodevwebview-assetsvfswebview-assetss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websiteemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecateds3-websites3-object-lambdaexecute-apis3s3-accesspoints3-websites3-accesspoint-fipss3-fipss3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstackemrappui-prods3-websites3-accesspoint-fipss3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apis3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9vfss3s3-accesspointdualstackemrappui-prods3-websiteaws-cloud9emrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9eu-west-3ap-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1us-northeast-1ap-southeast-1me-south-1af-south-1ap-south-1ap-southeast-7us-west-2eu-west-2ap-east-2us-east-2ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ap-southeast-6ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1mrapaccesspoints3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3s3-accesspointdualstacks3-deprecatedanalytics-gatewayemrappui-prods3-websites3-accesspoint-fipsaws-cloud9s3-fipsemrstudio-prods3-object-lambdaemrnotebooks-prodexecute-apicloud9s3eu-west-3ap-south-2eu-south-2computes3-ap-northeast-2elbrdss3-ap-east-1s3-sa-east-1s3-us-gov-west-1s3-eu-central-1s3-ca-central-1eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3s3-website-us-west-2s3-website-eu-west-1s3-external-1eu-central-1me-central-1ca-central-1il-central-1s3-us-west-1s3-eu-west-1s3-website-sa-east-1s3-website-ap-southeast-2ap-northeast-1ap-southeast-1s3-us-west-2s3-eu-west-2me-south-1af-south-1eu-south-1ap-south-1us-west-2eu-west-2us-east-2s3-website-ap-southeast-1s3-1s3-globals3-ap-northeast-3eu-north-1airflowap-southeast-2s3-us-gov-east-1s3-fips-us-gov-east-1s3-me-south-1s3-ap-south-1ap-northeast-2s3-website-us-west-1ap-southeast-5s3-eu-north-1s3-ap-southeast-1s3-website-us-gov-west-1compute-1s3-eu-west-3us-gov-west-1s3-website-ap-northeast-1us-gov-east-1s3-fips-us-gov-west-1s3-website-us-east-1s3-ap-southeast-2ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1s3-us-east-2s3-ap-northeast-1authauthauth-fipsauth-fipseu-west-3ap-south-2eu-south-2eu-central-2ap-southeast-3ap-southeast-4ap-northeast-3eu-central-1mx-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1ca-west-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1rservicesbuilderstg-builderdev-builder*ociocpocsdemoinstanceeu-west-3eu-south-2ap-southeast-3ap-northeast-3eu-central-1me-central-1ca-central-1il-central-1ap-northeast-1ap-southeast-1me-south-1af-south-1eu-south-1ap-south-1ap-southeast-7us-west-2eu-west-2us-east-2eu-north-1ap-southeast-2ap-northeast-2ap-southeast-5us-gov-west-1us-gov-east-1us-west-1eu-west-1us-east-1ap-east-1sa-east-1previeweu-4us-4us-1eu-1us-2eu-2us-3eu-3appspaasrag-cloudrag-cloud-chjcloudjcloud-ver-jpcdemonodebalancermembersipeuxvsoncillaocelotonzayalilynxsphinxfentigercustomercaracalo365cloudstaticxendevapp001testcode-builder-stgplatformapimediasiteprojedrydpagesjsu2u2-localx0desazacncoitrueu4uhkukgrbrushatenadiarymyspreadshopfrom-flfrom-wvwebspace-hosttheworkpchatenablogservesarcasmapplinzisakuratanwixsiteappchizigiizeis-into-carsdnsiskinkyadobeaemcloudis-a-therapistpgfogmyvncdojinis-an-actress1kappfldrvkozowqa2jpnmexprgmrfirewall-gatewaydynnscafjsfbsbxooguyxnbayfrom-gawoltlab-demois-a-anarchistwiardwebteaches-yogadattowebtb-hostinglive-websiteservegamegotpantheonfrom-nhsubsc-payfrom-ohvipsinaappfrom-cadyndns-officehomelinuxfrom-mahercules-appservebbsstreakusercontentfrom-okfrom-wyfastly-terrariumis-a-llamaqualyhqportalserveexchangeon-vaporvivenushopciscofreakgrayjayleaguesmetaaiusercontentfrom-iais-a-libertariansaves-the-whalestaveusercontentyolasiteoperaunitepoint2thisis-a-catererlinodeusercontentfrom-vagithubusercontentsells-for-lesshosteurcanva-appsplaystation-cloudddnsfreefrom-pafrom-prfrom-waddnskingoutsystemscloudhotelwithflightmydattois-a-nascarfanmydbserverminiserverdamnserverservehumouris-a-playerfrom-nvfrom-nmemergentagentgentappsamplifyappfrom-kyis-an-accountantnfshostserveircfrom-akpythonanywherestackhero-networkpostman-echolikescandydyndns-mailobservableusercontentserveftpfreeboxosfrom-utcdn77-storageamazonawsneat-urldyndns-serverlinodeis-a-teacherfrom-vtgleezemythic-beastsus1-pleniteu1-plenitla1-plenitpaywhirlservecounterstrikejdevcloudhealth-carereformis-into-animegoogleapisis-a-painterafricaisa-hockeynutatmetais-an-actora2hostedis-a-democratdatadetectest-le-patrondigitaloceanspacesis-a-designeris-a-hunterlinodeobjectstemp-dnsissmarterthanyoufrom-arsimplesiteevennodetownnews-stagingis-a-liberalgooglecodejelasticservemp3stdlibqualyhqpartnerdyndns-free1cooldnsest-a-la-masiondrayddnsdynuddnsfrom-orfrom-miis-a-bloggerfrom-himydobisscanvacodeis-an-engineerest-a-la-maisonupsunappdevinappswafflecellmyasustorwpenginepoweredfrom-ctservep2psame-appmyshopblocksthingdustdatalikes-piediscordsezis-with-thebanddev-myqnapcloudlpusercontentis-leetshopitsite3utilitiesis-a-personaltrainersinaappladeskis-a-cheflogoipselfipbase44-sandboxnospamproxyalibabacloudcsmesswithdnsauthgearappsiamallamawithgooglelutrausercontentmochausercontentframercanvasmytabitdyndns-homew-credentialless-staticblitzcpserverdiscordsaysis-a-nurseappspotatlassian-isolated-3premotewdfrom-mtwixstudiocode0emm180rmyactivedirectoryawsappsmytuleapdnsabrpolyspaceqbuserrenderbuiltwithdarkboutirgotdnsabrdnsdopaascanva-hosted-embedawsglobalacceleratorhomesecuritypcmyiphostditchyouripclever-clouddyndns-ipon-aptibleis-a-musiciansecuritytacticsappspaceusercontenthomeunixstrapiappsame-previewcf-ipfsmycloudnaselasticbeanstalkis-certifieddontexistkasserverik-serverdrive-platformatlassian-3pfirebaseappherokuappawsapprunnerbarsycenteris-a-cubicle-slaveservehttpmyshopifyis-a-guruquicksytessiiitesorsitesmagicpatternsappis-a-cpameteorappfrom-wiis-a-rockstarbumbleshrimpdattolocalreadthedocs-hostedfrom-rifamilydsdyndns-picsplesknsbplaceddnsaliasdynaliasdyndns-remotedoomdnsip-ddnsblogdnsis-a-doctorroutingthecloudamazoncognitobarsyonlinedsmynasddnsgurucloudflare-ipfsdeus-canvasfrom-idsmushcdnpagespeedmobilizerdyndns-at-homeunusualpersonhosted-by-previderis-a-republicandyn-o-saurstreamlitappworkisboringonthewificprapidqualifioappis-uberleetis-slickgetmyipwpdevcloudtypeformdyndns-at-workgentlentapismynascloudw-corp-staticblitzfrom-ingeekgalaxyservebeerfrom-mdonrenderspace-to-rentaivencloudappspacehostedonfabricawafaicloudcodespotblogspotatlassian-3p-us-gov-modfrom-ndfrom-msis-a-techieis-a-studentcustomer-ociis-a-photographerdurumisfrom-ksmassivegriddyndns-wikiis-an-entertaineris-a-hard-workermysecuritycamerafrom-mnrackmazedyndns-blogis-a-bulls-fanwritesthisblogfreemyipsimple-urlfrom-sdreservdauthgear-stagingest-mon-blogueuris-into-gamesrice-labsxtooldevicesakurawebis-an-anarchistoraclecloudappsdyndns-worksells-for-urhcloudfrom-dcfastvps-serverwpmucdnis-a-geekscrysecfrom-txis-into-cartoonsmodelscapetrycloudflarelocaltonetstreak-linkbalena-devicesfrom-njforgeblocksfreebox-oswebadorsitefrom-ncdoesntexisthobby-sitestreaklinkshomesecuritymacownprovidertuleap-partnersdattorelaywphostedmailalpha-myqnapcloudservequakeis-a-socialistservehalflifepivohostingdynuhostingquipelementsw-staticblitzdyndns-webfrom-deproject-studyaliases121is-not-certifiedhercules-devis-a-financialadvisorservepicsis-a-greenloseyouripfrom-ilwithyoutubemwcloudnonprodwiredbladehostingdnsdojofrom-tnpixolinomyqnapcloudis-an-artisthostedpiis-a-landscaperauiusercontentoaiusercontenton-forgeis-a-conservativedreamhostersnet-freaksapps-1and1is-goneencoreapifastly-edgefrom-nesalesforcefrom-scdeployagentoraclegovcloudappsfrom-alis-a-lawyercechirevultrobjectsstufftoreadisa-geekddnsgeeklovableprojecttry-snowplowfrom-moblogsyteis-a-bookkeepernogmyforumravendbmyboxdeelementoredsaacficogoorinforgcomgobnatneteduidstoreorgcomnetintedudevnomepublorgcomneteduathgovtestscalculatorspaynowinfoquizzesresearchedcloudnsfunnelsassessmentsjscaleforcetmacltdorgmilcompronetgovbizpresseklogesrsccloudcustomfltusrcloude4corealmgovmunicontentproxy9metacentrumdyndyndyndnsdynpagespages-researchitionoccustomercomymyspreadshopipv64diskussionsbereich4limacomrub2ixfirewall-gatewayddnssspdnsbarsykeymachinesquare7myhome-serverspeedpartnercommunity-proschuldockxenonconnectgünstigliefernbwcloud-os-instancedyndnssecmy-routerxn--gnstigliefern-wobin-butterl-o-g-i-nisteingeekin-dslin-berlinin-brbfuettertdasnetzleitungsenin-vpnlcube-serverdyn-ip24logoipdyn-berlinruhr-uni-bochum12hpgoipsrvdnsfruskygit-repossvn-reposinternet-dnsgünstigbestellenhome-webserverxn--gnstigbestellen-zvbbplacedheimdnscosidnswebspaceconfiglima-citydyndns1istmeinvirtualuserschulplattformmy-gatewayddnsseclebtimnetztest-iservmein-iservvirtual-userhome64iservschuletaifun-dnstraeumtgeradeschulserverdynamisches-dns123webseitednshomehs-heilbronndnsupdaterbssgraphicdwadpdwdaepeweaawapaafpfwfabwbpbacwcpcciwebuserapiobjectsidsiskospockkimodorikerbonesteamsparisjanewaypicardglobaltarpitreedpikekiraworfsulukirkarchertuckerhackercanarywesleystagingprereleaset3r2lpbravepanelngrokiservstglclcrmerpflypagesbarsyvivenushoplocalcertlocalplayerbearbloggatewaydeno-stagingis-not-ais-a-goodbotdashvercelmocha-sandboxplatter-appreplitgithubpreviewworkersinbrowserevervaultdetais-ahrsndenoxmitmodxmyaddrstorageapipayloadgrebedocruncontainersstgstagelclstageloginlineis-a-fullstackleapcellngrok-freeis-coolstoragewebharemediatechlibp2pdiscourseimaginecomyspreadshopstoreregbiz123hjemmesidefirmcoorgcomnetedugovsldorgmilcomwebgobartnetedugovtmorgpolcomsocartnetedugovassoagrondiscoodontk12medcuegyecpaabgengorgmilgalsaltulcomadmesmgobpubdocmonfindgnriouioproartlatvetnetfotedulojgovntrturibrbarxxxofficialbasechefprofmktgpsictechinfoarqtcontdentrrpppsiqgit-pagesritmedfieorgcomlibprieduaipgovriikmeactvsportorgmilcomscieunnetedugovnameinfopintouchtawktotawkmyspreadshoporgcomnomgobedu123miwebcomputeorgcomnetedugovbiznameinfocognito-idpeusc-de-east-1onjelasticnxaspdnsbarsydirectwpdeuxfleurstransurldogadoprvwcloudnsamazonwebservicesdnshomeuserpartycokoobinmkmstorjfidemopaasdymyspreadshopalandkapsiikixn--hkkinen-5wacloudplatformdatacenterhäkkinen123kotisivuidacorgmilcompronetedugovbiznameinforadioorgcomneteduuserexperts-comptablestmmyspreadshopgretaprdcomnomynhccifbxoshuissier-justicenotairesaeroportfreeboxoson-webavocatassoportgouvkdnschirurgiens-dentistes-en-franceavouesfbx-os123sitewebveterinairechirurgiens-dentistespharmacienchambagrimedecinfreebox-osdediboxgoupilemszicpyicpvicppleysheezypagesedugovcnpyorgcomcybllcpvtnetedugovtnxonlineschooldaemond6atcopanelorgnetplybotdashstackitkaasorgmilcomnetedugovbizmodltdorgcomedugovcoorgcomneteduappwriteacorgcomnetedugovcloudtranslateusercontentorgcomnetedumobiassoorgcomnetedugovbarsysimplesitediscourseindorgmilcomgobneteduorgcomwebnetedugovguaminfonxhra教育敎育網絡网絡组織組織网络網络组织組织公司政府個人个人箇人ltdorgcomincneteduidvgovxn--uc0ay4axn--55qx5dxn--mk0axixn--io0a7ixn--uc0atvxn--zf0avxxn--lcvr32dxn--od0algxn--wcvs22dxn--gmqw5axn--od0aq3bxn--mxtq1mxn--ciqpnxn--tn0agxn--gmq050iorgmilcomgobneteduiservwp2tempurlmircloudfreesitewpmudevmyfastgadgetcloudaccessjelehalfboltfastvpsemergenteasypanelopencraftizcombrendlynamefromrtpersoadultmedorgpolrelcomproartnetedufirminfoassoshopcoopgouvtmcomediahotelforumvideosportorgsexagrargameslakaseroticaerotikatozsdereklamcasino2000filmsuliinfoboltshopprivnewsszexcityutazasjogaszkonyveloingatlaneacaicogoormyᬩᬮᬶmilwebschnetkopbizzonedesaponpesxn--9tfkymyspreadshopgovmytabittabitorderravpageaccok12idforgnetgovmuniltdplcaccotttvorgcomnetmeca6g5gpgamubacaicniocoukuptverdruscsdelhiindorgmilcomwebnicfingenpronetintedugovresbizbiharbarsyinternetbusinessschooltravelsupabasealumnigujaratfirminfoaeropostbankcoopindevscloudnsno-ipbarsybarrell-of-knowledgebarrel-of-knowledgensupdategroks-thisdnsupdatefor-ourknowsitalldvrcammittwalddynamic-dnsv-infowebhopselfipdyndnshere-for-moreilovecollegemayfirstforumzcloudnsmittwaldservertypo3servergroks-theeusekd1uk0cdndyndnsidrawsainaueuapjpusstagemocksysdevicesclientcustreservdcustdevdisrecprodtestingcobeebyteutwenteboxfusebravepstmndedynngrokorgmilcomnomhzcnetedugovqcxqzzbarsythingdustmo-siemensrb-hostingprotonetfh-muenstergitbookbluebitecloudbeesusercontentnodeartkiloappsforgerockdarklangresinstagingapigeebubbleb-datascryptedhypernodedappnodepantheonsitegitlabgithubkeeneticvirtualservercleverappshostyhostingon-rioedugitticketstelebiton-acornwixstudioon-k3sicp0icp12038jeleqotobigvlairbubbleappsmyaddrstolosmyrdbxwebflowdrive-platformbeagleboardhasura-applolipopdefinimavaporcloudmusicianwebflowtestazurecontainerresindevicereadthedocsloginlineeditorxmoonscalesandcatsbasicserverwebthingsbrowsersafetymarkbeebyteappbitbucketidaccovistablogorgschnetgovxn--mgba3a4f16axn--mgba3a4fraarvanedgeايرانایرانjclaspeziapdudcefegelemeperetevebacanatavaparasabgagfgogrgpgalclblimfmrmcbmbvbfclcmcvcrcpcchlimifibicivipirisimncnbnanenrnpntnnolomobocoaogorosopotoptvtatctbtmtltotpulunutpspapaqsvpvvvtvavvrtrsrprgrfrcrbrarorkrvstsssbscsmsispzczbzbozen-suedtirolmyspreadshopxn--bulsan-sdtirol-nsbxn--valledaoste-ebbtrentinoaltoadigetrentin-sued-tirolxn--forlcesena-c8axn--forl-cesena-fcbxn--bozen-sdtirol-2obtriestetrentinsuedtiroltrentino-s-tirollecceudineaostesienaparmaluccapaviagenoapaduaaostamonzaabruzzoternirietiturinmilanbozenlaziofermoleccocuneonuoropratola-speziavdataaligfvgpugmolcalcamlomumbsicpmnvenvaoedugovabrsarmaremrbastoslazibxosfirenzetrentinosüdtirolval-d-aostavalle-aostamessinacremonaravennatoscanatrentin-suedtirolbolognacalabriaurbinopesarofriuli-v-giuliaogliastraxn--valle-aoste-ebblaquilaandriatranibarlettasyncloudtrentinosudtirolxn--valle-d-aoste-ehbaostavalleyvalled-aostatrentino-alto-adigevallee-d-aostexn--balsan-sdtirol-nsbpistoiasicilialucaniacataniaiserniaperugiabresciaveneziagorizialiguriaimperiabulsan-suedtirolbalsan-suedtirolbarlettatraniandriaxn--trentino-sdtirol-szbforlì-cesenatuscanyvallée-d-aostemantovavallée-aostecasertapiemontevalleaostaval-daostafriulivgiuliatrevisoforli-cesenavalléedaosteferrarapescaravald-aostatrentino-altoadigefriuli-vegiuliavallee-aostecarboniaiglesiastarantomediocampidanovalleedaostetrentinosud-tirolcampobassotrentinsüd-tiroltrentinosüd-tirolmonzabrianzatrentino-südtirolxn--trentino-sd-tirol-c3bpotenzacosenzavicenzaemiliaromagnavenicefrosinonemarchepordenonetrentinosued-tirolvaresemolisevalléeaostefriuli-veneziagiuliabasilicatalatinaanconasavonaveronamodenaaquilabiellabolzano-altoadigepugliafoggiaumbriatrentino-stirolgenovapadovamateranovararagusapiacenzatrentinostirolvalleeaostetempio-olbiatrentinsudtirolmassa-carrarafriuliveneziagiuliatrentinosuedtirolandria-barletta-tranitrapanixn--cesenaforl-i8amaceratacaltanissettaascoli-picenobrindisicarraramassacagliaririmininapolivibo-valentiachietibulsan-sudtirolbalsan-sudtiroltrentino-a-adigebulsanbalsaniglesiascarboniamilanotorinoteramodell-ogliastraarezzotrentinoalto-adigerovigotrentovenetoiglesias-carboniatrentino-sud-tirolaltoadigereggio-emiliareggio-calabriasardegnatranibarlettaandriapiedmontxn--sdtirol-n2amedio-campidanotrentino-süd-tirolfriuli-vgiuliafriuli-ve-giuliaromeennaromapisa32-b16-b64-blodiastibarineencomonaplesforlicesenailiadboxosalessandriasicilytrani-barletta-andriaxn--trentin-sdtirol-7vbpesarourbinotrentinsued-tirolcesena-forliforlìcesenaemilia-romagnamonzaebrianzaxn--trentinsdtirol-nsbtrentinos-tiroltrentinsüdtirolvalledaostaolbia-tempiocampidanomediovibovalentiasassarivalle-daostalombardyfriulivegiuliareggioemiliamonzaedellabrianzaalto-adigevercellitrentin-sudtiroltraniandriabarlettatrentino-sudtirolascolipicenobozen-südtirolfriulive-giuliaflorencevaldaostaxn--cesena-forl-mcbcarbonia-iglesiasaosta-valleycarrara-massadellogliastratrentinoa-adigexn--valleaoste-e7apesaro-urbinoxn--trentinosdtirol-7vbxn--trentin-sd-tirol-rzbxn--trentinsd-tirol-6vbtrani-andria-barlettatrentin-süd-tirolxn--trentinosd-tirol-rzbgrossetomonza-e-della-brianzasüdtirolreggiocalabriatrentinoaadigetrentin-südtirolfriuliv-giuliaverbaniacampaniatrentino-aadigefriulivenezia-giuliasardiniaandriabarlettatranibarletta-trani-andriacatanzarooristanourbino-pesarocesena-forlìvalle-d-aostacampidano-medio123homepagesiracusatempioolbiasuedtirollombardiaavellinocesenaforlìtrentinofriuli-venezia-giuliabozen-sudtirolandria-trani-barlettabulsan-südtirolbalsan-südtirolmonza-brianzabolzanotrentino-sued-tirolbellunosalernolivornocrotonesondriodnshometrentinsud-tirolmassacarraratrentin-sud-tiroltrentino-suedtirolviterbobergamocesenaforliolbiatempiopalermobeneventoagrigentoofcoorgnetfmaitvphdengorgmilcomschnetedugovperagrikanieasukehandachitatokaiaisaikonanoharuamaobuhigashiuraowariasahiinuyamatobishimaiwakurashitarainazawatoyonegamagorimihamatoyotataharakariyayatomioguchikomakimiyoshinishiotokonamekiyosuchiryutoyohashiokazakiisshikikasugaikotakiratoeianjotogofusosetohazutsushimashinshirotakahamanisshinshikatsuhekinantoyokawaichinomiyatoyoakeodateogataakitaikawakyowahonjoogayurihonjonoshirokamiokakatagamimitanegojomeyokotekosakadaisenkazunonikahohonjyomoriyoshimisatohappoukamikoanihachirogatahigashinarusesembokufujisatokitaakitaitayanagiowanitakkomutsutsurutahirosakigonoheoirasetowadamisawanohejiaomorishingohiranairokunohehashikamitsugarushichinohehachinohenakadomarisannohekuroishisakaeisumiasahiotakiinzaiabikomatsudoyachiyomutsuzawakujukuriomigawakashiwatoganemihamanaritasakuranagaramobarahanamigawachoshishiroichoseikozakishisuikatorimidorichonankyonanfuttsuonjukufunabashinagareyamanodasosatakochuotohnoshourayasukimitsuyokaichibayotsukaidosodegauratateyamakamagayayokoshibahikariyachimatakatsuuratomisatokisarazukamogawaichikawanarashinoichinomiyashimofusaminamibososhirakoichiharaoamishirasatoikatahonaiainansaijoseiyoiyoozuuwajimaniihamanamikatamasakiuchikokihokutobetoonshikokuchuomatsuyamaimabarikamijimakumakogenyawatahamamatsunosabaeikedaobamasakaifukuiohionotsurugamihamawakasaminamiechizeneiheijikatsuyamatakahamaechizensoedaukihaomutaokawanishiogoribuzenonojosueumiokiotochikugosasagurisaigawamizumakishinyoshitomikurumekurateyamadakasuganakamamiyamanogatatakatahakataiizukakawaratagawakasuyaashiyainatsukimunakataminamitsuikishonaikurogifukuchikeisenhigashimiyakoshinguyukuhashiokagakiyamekogaongausuikahotohochuotoyotsumiyawakadazaifuhisayamatachiaraiyanagawanakagawahirokawachikujochikushinochikuhochikuzennamieotamaokumashowateneiiwakikoorinangoononishigoshimogoomotegomishimafukushimaasakawakagamiishishirakawaiitatefutabahiratayugawahanawakitakatakawamatakunimiyabukibandaihigashihironoyamatomiharuyamatsuriaizubangedatesomaaizuwakamatsuyanaizuaizumisatonishiaizuizumizakikitashiobarataishinkaneyamakoriyamainawashirotanagurafurudonosamegawasukagawaishikawatamakawaikedaogakitaruiginanenahashimahichisonakatsugawaibigawashirakawamizunamiminokamomitakekawauesekigaharatomikasakahogikitagatayamagatatajimianpachimotosuyaotsukakamigaharahidakanisekitokigujominogodoyorogifukasamatsutakayamawanouchihigashishirakawakasaharashimonitatsumagoichiyodakannakanrashowameiwakiryuotaoratomiokafujiokaitakuranaganoharahigashiagatsumatakasakishibukawaminakamikatashinatsukiyonokawabanumataannakaoizumimidorishintoisesakiuenoyoshiokakusatsutakayamanakanojonanmokutamamuratatebayashimaebashiotakekaitadaiwahongofuchukuietajimashobaramiharahatsukaichihigashihiroshimamiyoshikumanokurenakasakaseraseranishiasaminamifukuyamashinichionomichiosakikamijimajinsekikogentakeharaotobenanaeikedatohmaozoraobiraabirakyowaeniwataikibibaisharirebunerimohiroooketootarupippunishiokoppechitosefurubirahakodateshiranukakitahiroshimakushiroobihironanporoiwamizawaniikappukunneppufukushimanakasatsunaitoyourakuromatsunaiakabirakamisunagawashibechaurakawakamifuranonakatombetsuasahikawashimokawakayabeokoppebiratoriabashirisaromaatsumanumatahidakabifukamukawamikasahorokanaitoyotomisarufutsuhigashikawaishikarikitamiyoichiesashiiwanaitomariminamifuranoakkeshifuranotoyakoyakumootoineppushikaoishiraoinemuronayorohaboroashorobihororishirifujiutashinaihokutotakasuebetsuurausuassabukikonaishimamakinaiedatetoyabieinikiesanuryuoumuteshikagarikubetsuashibetsukimobetsuaibetsutobetsusobetsuembetsushimizuchippubetsurishirihokuryuhoronobeshintokutsubetsushibetsuhonbetsumombetsutsukigatakuriyamakoshimizushiriuchikutchanmurorannoboribetsukamishihorowassamushinshinotsukembuchiwakkanaikamoenaikiyosatotakinoueshikabesunagawafukagawanakagawatakikawakamikawahigashikagurahamatonbetsumatsumaemoseushirankoshishakotanimakanemashikeotofuketomakomaisandatambaitamiawajikasaiasagoshisoonoakoyashirotoyookaminamiawajiinagawafukusakitakasagokamigorikasugaharimayokawaashiyahimejiakashitaishiaogakisannantakinosumototakarazukanishinomiyashingugoshikinishiwakiyokatakaaioimikisayoyabukawanishiamagasakisasayamashinonsenkakogawaichikawakamikawatatsunotsukubaiwamaogawaasahisakaitokaioaraiitakobandodaigosuifuinaamikasumigaurakashimaomitamayachiyoshimodatetomobetoridehitachinakainashikisakuragawakasamayawaramoriyahitachiomiyanamegatayamagatahitachikamisuushikutakahagiibarakitonekoganakasowayukimihojosomitoryugasakishimotsumafujishirotsuchiurachikuseihitachiotashirosatotamatsukuriuchiharashikahakuinanaotsubatawajimakahokukawakitatsurugikaganominotosuzuuchinadakomatsuanamizunakanotohakusannonoichikanazawaiwateshiwafudaikawaimoriokaofunatohanamakikuzumakikitakamininohekunoheyamadayahabasumitaichinosekitanohatahiraizumirikuzentakatajobojiotsuchihironomiyakoiwaizumikarumaiichinohenodakujitonooshushizukuishifujisawamizusawakamaishikanegasakimannoutazukotohiraayagawazentsujihigashikagawauchinomikanonjisanukimarugamemitoyotakamatsutadotsunaoshimatonoshoakuneamamiizumihiokiyusuikinkoisasookouyamanakatanekagoshimakanoyaisenkawanabeminamitanemakurazakitarumizunishinoomotematsumotosatsumasendaioimatsudaayaseebinamiurazushinakaiodawaraiseharasagamiharahakoneaikawakaiseiatsugitsukuihadanoyamatoyamakitazamaoisochigasakininomiyayokosukakamakuraminamiashigarafujisawasamukawakiyokawahiratsukayugawaraokawaumajikochitsunootoyoakiinonishitosayasudahidakamiharasakawaniyodogawahigashitsunokagamigeiseisusakiotsukinaharisukumomurototosakamiochitoyotosashimizumotoyamanankokunakamurakitagawayusuharaogunichoyoukiasoutoozugyokutoamakusamifunetakamoriyamagaminamataminamiogunikikuchisumotoyamatonagasumashikiaraokumamotokamiamakusanishiharayatsushiroayabeseikasakyoideineujinakagyokameokakyotangokyotanabekyotambaminamiyamashiroyamashinatanabeyawatawazukaminaminantanmiyazuhigashiyamafukuchiyamakitamukokamojoyokizumaizuruujitawaraoyamazakinagaokakyokumiyamakawagoeinabeshimameiwaasahitaikiudonoisetsukisosakikuwanamihamamiyamasuzukatamakimisuginabarikumanokomonominamiisewataraitobakiwatakikihotadomatsusakayokkaichikameyamaureshinoishinomakishichikashukuohirataiwaosakizaohigashimatsushimashikamaiwanumashibataogawaraonagawakawasakiseminemarumoriminamisanrikukakudamuratawakuyatomiyanatoriwataritagajomisatotomekamirifushiroishimatsushimayamamotoshiogamafurukawahyugaebinotsunosaitoayakushimanobeokakitauramiyazakitakazakigokaseshiibamimatashintomikunitomikitakatakobayashikawaminamitakaharukijotakanabemiyakonojonishimeranichinankitagawakadogawamorotsukakisofukushimaminamimakisakaeobuseikedaogawamiasaokayaasahiotakiotarichinoinaomichikumakomaganechikuhokukaruizawayasuokaooshikaikusakaminamiaikitogakushimatsukawakawakamitateshinatakamorikitaaikishiojirimiyadahakubaiizunaiijimaiiyamamiyotasuzakayasakatoguraookuwanagawaminowahirayayamagataminamiminowafujimiomachisakakitakaginaganonakanosakuhokomoronagisoshinanomachiwadauedaiidaharasuwatomiachiaokianankisosakunozawaonsenagematsutakayamashimosuwamatsumotoyamanouchinakagawamochizukiazuminotatsunoobamaomuraseihiunzenosetofutsuikichijiwanagasakiisahayahasamisaikaikawatanasasebohiradokuchinotsugototogitsutsushimashimabarashinkamigotomatsuurayamazoekashibaikomakawaitenrioyodosangokoryoudaojiikarugayamatokoriyamatenkawakatsuragikurotakikawakamimiyakemitsuetakatorikamikitayamayamatotakadahegurishinjokanmakisakuraitawaramotogoseoudanarasoniandokawanishishimoichihigashiyoshinokashiharashimokitayamanosegawayoshinomintsivorytopazsakuragehirnsumomoaseinetopalmail-boxmokurenyoitamuikaojiyagosensanjoaganomyokoseiroagaomishibataniigatanagaokamurakamiuonumayuzawakariwatagamitainaitsunanminamiuonumatochioyahikojoetsuseiroukamosadoizumozakitokamachiitoigawasekikawakashiwazakitsubamemitsukekokonoesaikiusukibeppuusahimeshimakunisakihasamataketatsukumihitaoitahijikusuyufukujukamitsuebungoonobungotakadaibaraniimibizentsuyamaokayamakasaokahayashimayakagemaniwaakaiwamisakishinjotamanotakahashikibichuowakesojanagishookumenannishiawakurakurashikiasakuchisetouchikagaminosatoshotomigusukunakagusukuyaeseizenaurumaiheyaaguniogiminanjokinminamidaitokitanakagusukuyonaguniokinawaishigakikunigamiurasoekadenataramahiraraginozataketomishimojizamamitonakiitomanhigashimotobuyonabarugushikamionnanahanagohaebarukumejimakitadaitonakijinnishiharayomitanginowantokashikiishikawaikedasuitaminohizuminishisakaikananabenodaitoosakasayamayaokishiwadatadaokakaizukatondabayashichihayaakasakakumatorikadomasayamahigashiosakashijonawatehirakatataishimisakitajirihannansennankatanotoyonominatosettsuhigashiyodogawaibarakinosekitachuohigashisumiyoshifujiiderakashiwaraizumiotsutoyonakamatsubaramoriguchiizumisanoshimamototakatsukineyagawahabikinotakaishikawachinaganoyoshinogarikamiminearitaouchiimarihizenogikashimaariakekiyamafukudomikitagatakitahataomachigenkaikanzakinishiaritakyuragisagataratosutakushiroishikaratsuhamatamakouhokukawagoeyoshidasatteogoseirumaasakaurawaogawaniizaomiyayoriiotakishikihonjooganohannohanyuinasaitamaokegawaarakawayoshikawayokozehasudasayamahidakafukayachichibuiwatsukiryokamiyoshimikamiizumifujimiwarabiranzanmiyoshiminanoyashiosakadosugitomisatohigashichichibutodasokakukiyonokazoshiraokakasukabekounosukawajimatsurugashimamiyashirokitamotohatoyamamoroyamahatogayakumagayakawaguchinagatorokamisatomatsubushinamegawatokigawakamikawafujiminohigashimatsuyamakoshigayatokorozawas3isk01isk02ryuohkoseikonanaishorittotakashimamaibarahikonetorahimenishiazaikokagamokotoyasuotsukusatsunagahamamoriyamatoyosatotakatsukinotogawaomihachimanhigashiomiakagiunnanizumogotsuamayatsukakakinokimatsuehamadamasudahikawahikimiokuizumoyasugiyakumomisatotamayuohdahigashiizumookinoshimanishinoshimatsuwanoshimaneshimadafujiedayoshidashimodagotembaiwataatamikosaiyaizuitoizumishimahaibaramakinoharaomaezakikawanehonkannamisusonohigashiizufukuroinumazukawazufujiaraishizuokahamamatsushimizuizunokunimatsuzakimorimachiminamiizunishiizukikugawakakegawafujikawafujinomiyaujiietsugaoyamayaitaohiranikkoashikagakuroisokanumasakurashioyakarasuyamamotegiichikaikaminokawatochigihagamokanogisanobatonasumibunasushiobaranishikatautsunomiyaiwafunemashikoshimotsukeohtawaratakanezawaitanokomatsushimatokushimaichibaminamiaizumiwajikikainanmiyoshinarutomimamugiananmatsushigesanagochishishikuinakagawamachidachiyodakomaefussainagitaitochofufuchuomeotahigashiyamatotoshimaokutamaaogashimakodairaedogawaarakawahachiojishinagawatachikawashibuyasuginamihinodekiyosesumidaoshimanerimamitakahamuraadachinakanomizuhobunkyomegurominatokoganeihigashikurumekokubunjihigashimurayamamusashimurayamatamakitahinochuokotokatsushikakouzushimaogasawaraakishimakunitachishinjukusetagayamusashinohachijoitabashiakirunohinoharachizunanbukotouramisasawakasayonagokogehinoyazutottorinichinansakaiminatokawaharaoyabetairainamiasahinantoimizufuchutakaokakurobeyamadajohanatoyamatonaminyuzenfunahashinakaniikawanamerikawaunazukitogahimiuozufukumitsutateyamakamiichiiwadearidayuasainamitaijikatsuragiaridagawatanabemihamahidakakainankiminomisatoshingushirahamakamitondayurakozakoyagobokitayamawakayamakudoyamahashimotokushimotokozagawahirogawakinokawanachikatsuurarsuseroeoishidasagaeoguniasahinagaitendonanyoobanazawanishikawasakataohkuratozawamikawamamurogawayamagatafunagatatakahatashonaishinjokahokuiideyuzakawanishitsuruokakaminoyamayamanobeshiratakamurayamanakayamakaneyamahigashineyonezawasakegawamitouubeyuuabushimonosekitabuseoshimatoyotaiwakunihikarishunannagatohagihofukudamatsutokuyamashowadoshitsurunanbukoshukaiminami-alpsnirasakikosugeotsukioshinohokutominobuyamanashifuefukichuokofuichikawamisatoyamanakakonakamichitabayamanishikatsuranarusawafujikawahayakawafujiyoshidafujikawaguchikouenohara長野京都岐阜大阪三重群馬千葉滋賀佐賀奈良adednelgaccogogror秋田愛知高知埼玉沖縄栃木熊本岩手青森山梨新潟島根鳥取長崎香川宮城石川大分宮崎茨城山口兵庫山形徳島広島福島福岡岡山富山静岡愛媛福井東京xn--4it168dhatenadiaryxn--vgu402ckawaiishophatenablogcocottenamaste北海道penneehimeiwateversestabachibashigagonnagunmapermahaccaakitaosakauh-ohblushkochiaichifukuikuroncapooitigohyogotokyokyotopunyuthickcheap0t00g00j0mie2-ddaapyawjg0amfemsubxiiboomoobutchueekpgwrgrherskrboyrdyupperunderflierchipsmydnsheavyangryhippygirlyrulez神奈川鹿児島和歌山bambinaxn--nit225kokayamasaitamaxn--k7yn95exn--1lqs03nsapporoparasitelolipopmcxn--efvn9sniigatafukuokatokushimafukushimahiroshimakagoshimafakefurokinawaxn--8pvr4ucoolblogxn--0trq7p7nnkawasakinagasakimiyazakichilloutxn--8ltr62kxn--klty5xpeeweezombiecutegirlxn--rny31hxn--uuwu58axn--ntso0iqx3axn--djrs72d6uytoyamanikitanyantakagawamimozanagoyaboyfriendxn--2m4a15egreaterchowderegoismyamagatafashionstorexn--elqq16hxn--pssu33lsendaimiyagixn--rht27zpecoriaomorisaloonwatsonvivianxn--djty4knobushipigboatnaganopinokoxn--f6qx53asadistvelvetsecretxn--5js045dchicappayamanashiibarakidigickgirlfriendxn--1lqs71dmongolianxn--c3s14mxn--qqqt11mtochigixn--5rtq34kparallelo0o0mondkobesagabonadecaoitanarafoolkilldecimainhiholomosblokilociaoundopupugifutankcrapflopnooroopsmodsholyjeezstripperpepperbittershizuokaxn--rht3dkitakyushureadymadeicurusversusmatrixxn--rht61ehungryfloppygloomycrankyhandcraftedlittlestarxn--klt787dxn--kltx9awhitesnowsunnydaytottorilovepoptheshopbuyshopxn--5rtp49cxn--d5qv7z876cwebaccelxn--kbrq7oxn--4pvxsxn--1ctwolovesickkumamotocatfoodxn--tor131oyokohamawakayamatonkotsuxn--ehqz56nxn--uist22hxn--6btw5axn--kltp7dyamaguchifrenchkisspussycatxn--4it797kxn--uisz3gbabybluexn--zbx025dnetgamersxn--7t0a264ckanagawaxn--6orx2rishikawaxn--ntsq17ghalfmoonschoolbusjellybeanxn--mkru45iusercontentlolitapunkxn--32vp30hsakurastoragehokkaidoshimanecandypopbabymilksupersaleweblikeraindropbackdropwebsozaikikirarahateblodaynightmeneacsccogoormobiinfoaeusxxorgmilcomnetedugovorgcomnetedugovbizinfotmprdorgmilcomnomedugovassnotairespresseassocoopgouvveterinairemedecinpharmaciensorgnetedugovtraorgcomedurepgovmeneperekgacscaiiocogoitoresmshsseoulbusanulsandaeguc01milvkimmvchungnamjeonnamjeonbukeliv-dnsgyeonggijejueliv-cdnincheondaejeongangwongyeongbukgwangjuchungbukgyeongnameliv-apicoeduindorgcomembnetedugovorgmilcomnetedugovjcloudorgcomnetintedugovperbnrinfocooyorgcomnetedugovipfscanvamypepw3sstorachakeeneticjoinmcinbrowserdwebcyonnftstoragemyfritzaemewphlxachotelltdorgcomwebsocschngonetintedugrpgovassnomgacsccoorgnetedugovbizinfo123websiteidorgmilcomasnnetedugovconfidmedorgcomplcschnetedugovaccoorgnetgovpresstmassoirseproxaccosoundcasthoptocraftvp4c66orgnetedugovitsmcdirmyboxbarsyedgestacksynologylogintonohostwebhopdiskstationi234tcp4hoocgroknoipprivmydsddnsdnsforlohmustransipdscloudfilegear-sgbrasiliafilegearframerbarsybarsyonlinecoprdorgmilcomnomedugovinforgcomnetedugovnameacprorgcomartnetedugovpresseinfoassoinstgouvorgnycedugovbarsydscloudjuorgcomnetedugovminisiteaccoororgcomnetgovorgmilcompronetintedugovbizmuseumnameinfoaerocoopaccoorgcomnetintedugovbizcooporgcomgobneteduorgmilcomnetedugovbiznameaccoorgmilneteduadvgovcoorgcomnetaltgovforgotherhiskeeneticispmanagernomassoprod5476132eastasiacentraluswesteuropewestus2eastus2rucdnwest1-usfra1-desandboxjls-sto1jls-sto3jls-sto2aglobalabglobalsslmapprodfreetlsmaplon-1lon-2ny-1fr-1sg-1ny-2paassnwebpaashostingjelasticnordeste-idcsocuserpagescwebfileblobservicebuscoreatlricnjsjelasticwebsitestoragesezagbinruhuukjptsmyspreadshopmynetnameakamaiorigin-stagingfrom-coipv64dynv6cdn77serveblogadobeaemcloudhicamsprytdnsupno-ipownipde5ovhicpfirewall-gatewaysytesmypsxbarsyusgovcloudapimyamazemyradwebakamaihdsaveincloudfastlylbfrom-lasubsc-paysquare7in-the-bandblackbaudcdnhomelinuxoninfernoctfcloudservebbsdns-dynamiccloudfrontakamai-stagingipifonyham-radio-opsenseeringclickrisingcommunity-profrom-nylocalcertgrafana-devedgesuite-stagingcloudflareanycasteating-organicatlassian-devmydattofeste-iplocaltotorprojectknx-serveredgekeycloudflareglobalcloudyclustercasacamserveftpakamaized-stagingakamaiorigindns-cloudmyeffectboomlabotdashbuyshousestwmailhetemlazure-mobilein-dslthruhereredirectmedynuddnsbouncemesupabaseluyanicloudappakamaicloudfunctionsdebiannhlfanpgafanstatic-accessin-vpnmysynologymafeloappudohomeftptrafficmanagersiteleafseidatmemsetcloudflarecloudaccesskeyword-onazure-apiis-a-chefdoes-itgets-itwebhopselfiphomeipkicks-assedgesuitewindowsserver-ontunnelmolemydissentscrapper-sitecloudflarecnuni5srcfggffiobbzabcdenodynuopikddnsvpndnsakadnselastxkinghostvps-hostfastlyhomeunixazureedgeshopselectdontexistmyfritzcloudjiffyalwaysdatasells-itsquaresbroke-itazurefddattolocalat-band-campmeinforumfamilydsazurestaticappsdefinimabplaceddnsaliasdynaliasnow-dnsblogdnsroutingthecloudendofinternetdsmynasakamaiedgemymediapcadobeio-staticakamaiedge-stagingakamaihd-stagingddns-ipprivatizehealthinsurancelive-onkrellianschokokeksmassivegridmysecuritycamerarackmazeserveminecraftfrom-azis-a-geekakamaizedmoonscalecryptonomicoffice-on-theusgovtrafficmanageradobeioruntimeedgekey-stagingreserve-onlinechannelsdvrdnsdojousgovcloudappcdn77-sslapps-1and1podzoneazurewebsitesdynathomescaleforceyandexcloudvusercontentisa-geekcdn-edgescoaemalcesappwriteazimuthtlonarvonoticeablestorecomwebrecnetperotherfirminfoartslgdloncogoiltdorgmilcolcomplcschgenngonetedugovbiznamefirmmobiacincoorgmilcomnomwebgobnetintedubizinfocomyspreadshopdemongovtransurl123websitehosting-clusterkhplaycistrongsnesosvalervålerxn--vler-qoaossandeheroysandeherøybøboheroyherøyxn--hery-iraxn--b-5gavalerbøboxn--b-5gasandesandexn--hery-iraxn--vler-qoavålerhåreålaahavaofsfvfhlolnlalrlhmfmtmahcostntbuåstrmreigersundmyspreadshopgálsáeidsvolltingvollgildeskalflorøvadsøvardøvanylvenxn--bhccavuotna-k7astrandaxn--kvnangen-k0axn--sknland-fxaxn--mosjen-eyarakkestadhyllestadnannestadvevelstadvaapstenordre-landsondre-landsøndre-landtjieltexn--vrggt-xqadsør-aurdalsor-aurdalheradstordmoldefordeførdeseljefedjeryggehemnexn--krehamn-dxasognegranesøgnebrynetjomevallebykletokkegiskedovretjømehobølvoldasaudatolgasømnaviknadønnasomnadonnatranafrananesnaraumasmolatrænafrænalesjasmølaørstaorstahitrafloraaukraloppafrøyarissasnasahalsagalsaromsaraisaráisafroyasnåsagronghobolfjelltydalårdalardalaskimharamkraanghkekråanghkesorumbarumhurumbærumsørummodumsálátbálátfrognbjugnvåganvagangulenskienløtenlotenstrynvefsnxn--merker-kuaskaunsveiobømlobomloskjåkvardoflorovadsosalatbalatsálatklæbuklabuselbubarduulvikskjakklepprisørxn--nttery-byaeflåeidflahofmilgolholsellomskifetvikdepvgsfhsaskerrisorhamarasnesåsnesrørosrorosxn--slat-5namasoynaroyvaroyluroydyroyaskoyradoyandoyrodoymeloyradøyandøyrødøymeløyaskøylurøydyrøymåsøyværøynærøyhoylandethøylandetdivtasvuodnalørenskoglorenskognesoddtangenxn--tjme-hraxn--smla-hraxn--stjrdal-s1aunjargalillehammerunjárgaxn--hamary-fyadavvenjargaxn--bearalvhki-y4a123hjemmesidegjerdrumxn--brnnysund-m8acxn--tnsberg-q1axn--mlatvuopmi-s4axn--snsa-roaxn--skierv-utaxn--brum-voatysfjordkvafjordeidfjordkvæfjordsongdalenmjondalenmjøndalenxn--gls-elackragerogáŋgaviikagangaviikasørreisasorreisasør-varangersor-varangerxn--risr-iraskiervaxn--frna-woaxn--trna-woakvinesdalleksvikleirvikrøyrvikroyrviksvelvikvenneslaevje-og-hornnessandnessjøenmarnardalvindafjordsandefjordenebakksnillfjordullensvangxn--trany-yuabrønnøysundnamsskoganaustevollxn--stjrdalshalsen-sqbnord-aurdalnord-frontrøgstadtrogstadgrimstadflakstadgjerstadxn--sandy-yuaxn--leagaviika-52bnore-og-uvdalvegarsheixn--rlingen-mxaxn--ggaviika-8ya47hvegårsheikarlsoykvitsoymasfjordenhamaroyinderoyosteroydavvenjárgasauheradguovdageaidnuxn--vre-eiker-k8abronnoysiellakkrødsheradkrodsheradkvinnheradbrønnøyxn--mtta-vrjjat-k7afxn--lrenskog-54akvitsøyvárggátkarlsøyosterøyinderøyhamarøybronnoysundxn--aurskog-hland-jnbbahccavuotnabáhccavuotnagiehtavuoatnastor-elvdalmidtre-gauldalxn--gildeskl-g0akarasjokevenassixn--bievt-0qaxn--yer-znalebesbynessebyxn--hbmer-xqamalselvmålselvxn--unjrga-rtamøre-og-romsdalmore-og-romsdalhareidmelandørlandorlandstrandålgårdsolundalgardafjordåfjorddielddanuorrikautokeinoxn--stre-toten-zcbskodjeaejriestangeliernebamblestokkefauskesnåasesnaasekongsvingerlangevagberlevagxn--flor-jrahattfjelldalostre-totenøstre-totenvestfoldxn--mely-iraálaheadjualaheadjunordreisaxn--troms-zuaxn--lgrd-poacporsangerflatangerstavangerleikangerbremangersamnangergieldakarasjohkaxn--rdy-0nabfrostautsirasnoasatromsaxn--sr-aurdal-l8aflekkefjordjølsterjolsteraremarkhedmarknååmesjevuemienaamesjevuemiexn--vard-jrarollagmeråkermerakerorskogørskogxn--bdddj-mrabdákŋoluoktaxn--osyro-wuaaknoluoktatrysilskjervøymandaljondalbindalrindalmeldalsuldalorkdalsigdalalvdallærdalhurdalsirdalverdallerdallardaloppdalåseralaseralhadselkragerødivttasvuotnaoverhallasteinkjerxn--hnefoss-q1askedsmokorsettromsøxn--dyry-iravestre-totenmuseumxn--sandnessjen-ogbrahkkeravjufylkesbiblbájddarbajddarxn--laheadju-7yarennesøyxn--koluokta-7ya57hxn--hgebostad-g3aleirfjordstorfjordbalsfjordbåtsfjordbatsfjordmuosátbievátloabátkárášjohkanøtterøyxn--mjndalen-64anordkappláhppilahppialstahaugsiljanverranrøykenroykenhaldenlyngenbergenhortenhønefosshonefosstroandinbeiarnvarggatosoyroosøyrotromsoidrettmuosatbievatruovatloabatvoagattynsetnessetxn--indery-fyaskánitskanitraholtråholtxn--ystre-slidre-ujbandebusarpsborgbearduxn--karlsy-fyahordalandjorpelandjørpelanddeatnuringsakersør-odalsor-odalxn--slt-elabringerikeaudnedalnittedalnissedalhemsedalslattumsurnadalxn--blt-elabelverumstjørdalnaustdalhjartdalgjøvikfyresdalhasviknarviklarvikgjovikmalvikgamviklenvikporsgrunnstjordalengerdaldrobakdrøbakxn--msy-ula0hvestvagoyxn--vgan-qoaxn--ryken-vuaxn--lten-graxn--stfold-9xaxn--hpmir-xqaxn--lury-iramálatvuopmimalatvuopmitysværkirkenesbirkenesmoskenesbáidárxn--fjord-lraxn--rdal-poabahcavuotnabáhcavuotnaxn--frde-gralindåsbearalvahkixn--hobl-iraráhkkerávjuxn--loabt-0qavågåáltábodøsundlundraderådeetnetimeholeauregrueoddavagavegaranatanaarnasolasulaaltalekafusavangbergkvamåmliamlibokntinnroangranosenoslobodorøstroststatåmotamotivguprivøyeroyerliermossvossxn--nvuotna-hwalusterlunnermarkerhábmerhabmerhvalerfjalerxn--rholt-mratysvarbaidarfitjargaularhápmirhapmirmelhusfosnesøksnesoksnestysneshemnesevenesflesbergeidsbergtonsbergtønsberglindasxn--sndre-land-0cbnamsosxn--srum-graøystre-slidreoystre-slidrevestre-slidretrondheimbalestrandxn--langevg-jxaaustrheimxn--skjk-soavagsoyaveroysandoykarmoyfinnoytranoyvestbytranbysykkylvenxn--hyanger-q1aspjelkavikandasuoloxn--fl-ziaxn--drbak-wuastathellexn--sr-varanger-ggbtelemarkxn--bhcavuotna-s4axn--porsgu-sta26fčáhcesuolocahcesuoloakrehamnåkrehamnsandøykarmøyfinnøytranøyvågsøyaverøynamdalseidxn--lesund-huabadaddjaxn--vegrshei-c0axn--btsfjord-9zagildeskålporsanguxn--trgstad-r1anávuotnanavuotnahammerfestxn--sgne-graxn--brnny-wuacibestadharstadnarviikaevenáššivestnesgjemnessandnesagdenesrennesoyxn--avery-yuaxn--tysvr-vrabearalváhkikongsbergspydebergrandabergxn--andy-iradavvesiidaxn--krdsherad-m8aporsáŋgufredrikstadbjerkreimringeburennebuaurskog-holandnotteroyxn--vgsy-qoa0jxn--rmskog-byaskierváivelandbyglandfrolandaurlandforsandxn--bjddar-ptamidsundålesundalesundfetsundfarsundovre-eikerøvre-eikerakershusxn--moreke-juasørfoldøstfoldostfoldsorfoldhøyangerhoyangerlevangerorkangertanangerxn--vestvgy-ixa6olillesandulsteinxn--rennesy-v1agranvinskjervoyxn--klbu-woalavagisxn--h-2faxn--ryrvik-byakafjordkåfjordseljordfolkebiblxn--gjvik-wuajevnakerxn--kfjord-iuabudejjuxn--kranghke-b0axn--davvenjrga-y4axn--rland-uuaxn--ldingen-q1axn--mlselv-iuaxn--rady-iraxn--linds-prabrumunddalxn--ygarden-p1amo-i-ranaeidskogrømskogromskoghjelmelandxn--finny-yuaxn--sr-odal-q1axn--skjervy-v1aballangenkvanangenkvænangengratangenxn--hmmrfeasta-s4acvossevangensuohkanxn--rde-ulaxn--mli-tlaxn--ksnes-uuanordlandskanlandskånlandsortlandfuoiskuxn--rros-graxn--hcesuolo-7ya35bxn--eveni-0qa01gagaivuotnagáivuotnaxn--seral-lradrammenmodalenmosjoenjan-mayentorskensteigengloppenxn--snes-poamatta-varjjatxn--sr-fron-q1aomasvuotnajessheimbådåddjåxn--krager-gyaxn--kvfjord-nxaxn--asky-iraxn--snase-nraxn--bidr-5nacholtålenxn--vads-jraxn--jlster-byamosjøenxn--rst-0nastavernxn--ostery-fyaxn--oppegrd-ixaxn--sknit-yqaxn--risa-5naoppegårdskiptvetrendalenholtalenxn--mot-tlaxn--lhppi-xqaxn--holtlen-hxaxn--srreisa-q1akopervikxn--muost-0qaxn--bmlo-grahokksundkvalsundegersundxn--karmy-yuaullensakerxn--hylandet-54axn--kvitsy-fyaxn--bod-2nalangevågberlevågkristiansandxn--rsta-frahornindalstjørdalshalsenstjordalshalsensandnessjoenhámmárfeastaxn--lrdal-srasør-fronsor-fronnord-odalkristiansundmátta-várjjatvestvågøynesoddennotoddenbuskerudøygardenoygardensalangenlavangenralingenrælingenlodingenlødingenleaŋgaviikalaakesvuemieleangaviikauenorgexn--srfold-byaaskvollxn--rskog-uuaxn--nry-yla5gxn--vry-yla5ghammarfeastaxn--rhkkervju-01afxn--givuotna-8yakommunekrokstadelvanedre-eikerhagebostadhægebostadxn--berlevg-jxakviteseidxn--s-1faxn--l-1faxn--nmesjevuemie-tcbafuosskomoårekemoarekexn--lt-liacxn--jrpeland-54asvalbardoppegardholmestrandtvedestrandsogndalsokndalarendalsunndalfolldalxn--krjohka-hwab49jlyngdaletnedalnorddalsaltdalgausdalskedsmovaksdalgjesdalstordalxn--frya-hraaarbortedrangedalxn--smna-graaurskog-hølandxn--vg-yiabtjeldsundhaugesundlindesnesxn--mre-og-romsdal-qqbxn--dnna-gradynmerseineshacknetenterprisecloudmineaccomaorimāoriorgmilcriiwigennetschoolhealthkiwigovtgeekxn--mori-qsacloudnsparliamentcomedorgcompronetedugovmuseumwebsitekinservicebarsywebsitebuildereerobookheimdnsleapcelleero-stagetechcrscsslorigingohomecdbedeeeiemesecabgngilnlalplchfisiincnnoroptatitmtltruauhulumkdkukskjplvtrgrfrkrhrusesismycynzcznetinteduassoososcloudstgbetaaezaeuhkusjshatenadiarycdn77hoptozaptois-a-knightmyftpno-ipjpnddnssdpdnsspdnsbarsysweetpepperis-a-bruinsfanis-very-sweetservegameis-a-soxfanhomelinuxcdn77-secureservebbsmisconfusedwebredirectblogsitefreedesktopcouchpotatofriestoolforgeaccesscamis-lostreadmyblogsmall-webfedorapeopleserveftpis-a-celticsfanmywirepotagertwmailin-dslsellsyourhomeread-booksfreeddnscable-modemis-savednflfanufcfanmlbfanstuff-4-saleendoftheinternetin-vpnmy-firewallhomeftpis-localis-a-chefboldlygoingnowherewebhopselfipkicks-assroxatunkcamdvrfedoraprojectgotdnsdvrdnsdyndnspubtlspimientahomeunixdontexistfedorainfracloudwmflabsfspagesbmoattachmentsteckidsfamilydsdnsaliasdynaliasnow-dnscloudnsdoomdnsduckdnsblogdnshomednsroutingthecloudendofinternetdsmynasip-dynamicpoivronhttpbinmyfirewallis-very-evilmysecuritycamerais-a-linux-userwmcloudis-a-geektuxfamilyis-a-candidatedoesntexistis-very-badhobby-sitegame-hostaltervistais-foundis-a-patsfandnsdojohepforgepodzonedynservcollegefanis-very-goodfrom-meis-very-niceisa-geeknerdpolacmedsldingorgcomnomgobabonetedupleskaemhlxmyboxrockyprvcydeuxfleurspdnscodebergheyflowstatichostorgmilcomnomgobneteduorgcomeduiorgmilcomngonetedugovcloudns1337ngrokacorggogfamcomwebgobnetedugokgopgkpgovgosbizpasaugumicsopozpapuwmwsrprusiskwpspkppspkmpspokeoiawsawifoumsdnskokwpmuppuppsppiwwiwoowuzswkzoschrzpisdnwzmiuwwitdpssewsseumigugimoirmpinbwinbwiihupporzgwgriwupowwskrwioswuozstarostwokonsulattmpccopruszkowmyspreadshopostrodakartuzyopolegminamediaustkazgorajgoraolawailawalomzawloclradombytomjaworznotargilubinkoninzagantorunkutnokepnonakloczestsopotsanokturekplockslasksklepzarowlukowmedaidgdaorgmilrelcomnomatmgsmartneteduelkgovwawsossexbiztgorysejnytychypomorzeboleslawiechomesklepsdscloudunicloudzakopanelegnicarawa-mazbydgoszczswidnikkrasnikwloclawekbielawamragowograjeworealestatebeskidykaszubymalopolskaprzeworskswiebodzinlecznadfirmaszkolawarmiagdyniamiastakazimierz-dolnymalborkswidnicadlugolekaostrolekapodlasieelblagtravelsimplesitezachpomormielecszczecinnieruchomosciwalbrzychlezajsklublinbedzinpoznanwielunmielnooleckostarachowicedkontopowiatwroclawrybniksuwalkileborkslupskgdanskostrowwlkptarnobrzegtourismwegrowkrakowglogowyou2pilanysamailwrocinfoagroautobeepshopprivlapypiszlodzcfolksecommerce-shopmazurypulawyskoczowrzeszowpomorskiezgierzkaliszolkuszlowiczostrowiecsosnowiecmazowszewodzislawbialowiezazgorzeleckatowicepabianicejelenia-gorawolominkarpaczsieradznowarudaczeladzkonskowolaskierniewiceswinoujscieturystykabieszczadycieszynketrzynolsztynbialystokbabia-goraprochowicewarszawastalowa-wolapolkowicegorlicegliwiceponiatowalimanowalubartowaugustowkobierzyceopocznognieznoszczytnokolobrzegshoparenapodhalebielskoklodzkostargardatwithplayitownnamecoorgnetedugovacorgcomproestnetedugovbiznameislaprofinforechtngrokmedaaaacacpaenglawjurbarbarsykeeneticavocatacctcloudnsorgcomsecplonetedugov123paginaweborgcomnetintedugovnomepublidkinbarsygovx443cloudnsorgmilcomnetedugovcooporgmilcomschnetedugovnamecomcannetlibassoaemclantmcontstoreorgcomnomrecwwwbarsyfirminfoshopartsstackitmyddnswebspacelima-cityacincooxorgedugovbarsybrendlyhbvpsvpsspectrumlandinghostingacppmordoviamcprecbgorgmilcomspbnetintedumsknovgovbirrasmcdirmytismircloudvladimirnalchikadygeyamarinepyatigorskmyjinobashkiriaeurodirvladikavkazna4ugroznykustanaikalmykiacldmaildagestaniranbuildcanvaliaravalwixdevelopmentappwritemigrationneedleverceldatabasestackitcodereplravendbonporterlovableaccoorgmilnetgovcoopmedorgcompubschnetedugovservicemecomygovorggovtvmedorgcomnetedugovinfoedgfacbmlonihkutwpsryxzbdtmacfhppmyspreadshopbrandpartiorgcomfhvpress123minsidaitcouldbeworlanbibkommunalforbundfhskiopsyskomvuxkomforbnaturbruksgymnloginlineorgcomnetedugovenscaledeuusentbotdaorgmilcomnetgovnowteleporthashbangplatformlovablebarsyshopwarebasehoplixbarsyonlinemsf5gitappgitpagecofigma-govcaffeinefigmacanvasoltstputerbarsysupportchatgptsquareomniweopensocialcpanelnotionnovecorewpsquaredpreviewjelecyonbyensrhtfastvpspieboxconvexjouwwebheyflowplatformshloginlinemadethissourcecraftclouderaorgorgcomartedugouvunivmeorgcomnetedugovsurveysstatichfheiyuxs4allprojectmyfastubervibehostapp-ionosdeployagentmecoorgcomschnetedugovbizcncostoreorgmilcomneteduembaixadaconsuladokiraranohoprincipesaotomeheliohobarsystorebaseshopwaresellfyabkhaziavologdamordoviapenzalenugsochinavoiexnetspbmsknovnorth-kazakhstanashgabadkareliaarmeniageorgiavladimirnalchikivanovobukharaadygeyakhakassiakalugakrasnodarjambylaktyubinsktroitskbryanskobninskkurganazerbaijanpokrovskbashkiriatselinogradvladikavkazmurmansktulatuvamangyshlaktashkentchimkentgroznykaragandatermezarkhangelskkustanaikalmykiabalashoveast-kazakhstankaracoldagestantogliattibarsyredorgcomgobedumirenknightpointaccoorgjelasticdiscoursecleverappsschacmiincogoornetonlineshopcogoorgmilcomwebnicnetintedugovbiznametestcoorgmilcomnomnetedugovorangecloudpersoindorgcomfinnatnetgovensmincomtourismintlinfox0611oyaorgmilcomnetedugovquickconnectvpnplusnettprequalifymeaddrmyaddrntdllwadlnctvavdrk12orgmilpolbeltelcomwebgennetedutskkepgovbbsbiznameinfocoorgmilcompronetedugovbiznameinfobetter-thanworse-thansakurafromdyndnson-the-webmymailerorgmilurlcomneteduidvgovmydnsgameclubebizmeneacsccogotvorhotelmilmobiinfovodteiflgplkmsmsbcckhincndnvncoztltmkckppzpdprvcvkvlvcrkrkscxuzchernovtsyrivneyaltaodesavolynrovnolutskltdinforgcomnetedugovbizvinnicazhitomirternopilpoltavakropyvnytskyizaporizhzhiasevastopolsebastopoluzhgoroduzhhorodkharkovkharkivvinnytsiakhmelnytskyizaporizhzhecrimeaodessazhytomyrnikolaevcherkassydonetskluganskluhanskkirovogradivano-frankivskchernivtsikrymkievkyivlvivsumyzakarpattiamykolaivcherkasychernigovkhersonchernihivdnipropetrovskdnepropetrovskkhmelnitskiyneacsccogoorusorgmilcomedugovvmdhmyspreadshopadimono-ipbarsybytemarkbarsyonlinelayershiftnh-servretrosnubapicampaignservicelugaffinitylotteryweeklylotteryraffleentrygluglugsmeaccoindependent-inquestnimsitecopropymntltdorgplcschnetgovnhsbarsyindependent-commissionindependent-reviewpolicepublic-inquiryindependent-panelconnhospindependent-inquiryroyal-commissionoraclegovcloudappscck12libccphxcclibpvtparochchtrcck12libcceatonk12coglibtecgendstmusann-arborwashtenawcck12glghcck12sealibforksolympiabainbridge-islkeyporthoquiamyarrow-pointcentraliaport-townsendsequimport-ludlowrentonsilverdalebremertonredmondsheltonbellevueport-orchardport-angeleskingstonchehalisaberdeengig-harborseattlepoulsboidmdndsddemenegacalamaiavawapailalflnmdcncscohnhmihiviwiriinmntnmocoutvtctmtgunjokakwvnvprarorasmskstxwynykyazisadninsnngosrvis-bymircloudservernamepointtoenscaledland-4-salefreeddnsstuff-4-saleazure-apinoipcloudnsgolffanheliohostazurewebsitesgvorgmilcomgubneteducoorgcomnetd0egvorgmilcomnetedugovmydnsiacostoree12orgmilcomnomwebgobbibrectecnetintedugovraremprendefirminfoartseducok12orgcomnethidnsidacaiiosonlahanamhanoicamauhueorgcompronetintedugovbizbacninhtayninhhoabinhnamdinhtravinhhaiphongvinhlonghaiduongquangnamquangtrithuathienhuequangninhbacgianghaugiangquangbinhsoctrangbentrethanhphohochiminhdanangkontumhatinhkhanhhoathanhhoahealthgialailaocaiyenbaibackanngheanlonganphuyenphuthocanthodaklakdongnainameinfovinhphucdongthapkiengiangtiengiangquangngailaichaulangsonlamdongdaknonghagiangangiangcaobangbinhduongninhthuanbinhthuanbaclieuthaibinhninhbinhbinhdinhtuyenquanghungyenbaria-vungtauthainguyendienbienbinhphuocschbizputerimagine-proxyorgcomnetedugovcloud66advisormypetsdyndnsxn--8dbq2axn--4dbgdty6cxn--5dbhl8dxn--hebda8bxn--80auxn--d1atxn--c1avgxn--o1acxn--o1achxn--90azhxn--55qx5dxn--uc0atvxn--od0algxn--wcvs22dxn--gmqw5axn--mxtq1mxn--12c1fe0brxn--h3cuzk1dixn--12co0c3b4evaxn--12cfi8ixb8lxn--o3cyx2axn--m3ch0j3axn--j1adpxn--90amcxn--90a1afxn--h1ahnxn--j1ael8bxn--h1alizxn--c1avgxn--j1aefxn--80aaa0cvacxn--41acaffeineexeopentunnelbotdashtelebitorgtmaccoagricorgmilnomwebnicngonetaltedugovlawnisschoolgrondaraccoorgmilcomschnetedugovbizinfoprg1-zeropstritonstackitlimazeropsaccoorgmilgovяспборгкоммскбизмирсамаракрымсочиакодпроргобрупрצהלממשלישובאקדמיהองค์กรธุรกิจรัฐบาลศึกษาทหารเน็ต教育網絡組織公司政府個人닷넷한국澳门新闻澳門联通家電嘉里招聘通販닷컴삼성コムგეбгрфеюadcdbdgdidmdsdtdaebedeeegeiejekemenepereseveyegabacalamanauavapaqasazacfbfafgfnfpfwftfbgcgagggegkgngmgsgpgvgtgugilmlnlalclglplsltlhmimjmkmmmomambmcmdmfmgmzmpmsmtmgbbblbsbecccacnclcmcvctcscmhkhghchbhthphshlinikifigiaibicivisikninhnmncnbngnsnpnvntnjoionomobocoaofodorosotoptstttytatbtetgtithtmtltrusuvuaucueuguhulumunufjdjbjtjsjlkmkhkfkdkcktkukskpkgpmpnpkpjpgqaqmqiqsvtvcvbvmvlvrwpwtwzwbwcwawgwkwmwtrsrprgrfrercrbrarnrmrlrkrirhrwsusrssspsgsesbsaslsmsissxmxaxcxuypysylymykygybycyuztzsznzmzkzdzczbzazελευ世界台灣购物公益点看臺灣网络書籍在线网站手机机构大拿游戏信息台湾谷歌慈善商标香港中国餐厅网址中國商城食品微博政务移动集团公司八卦商店健康网店政府时尚佛山中信娱乐广东企业homedepotengineeringاماراتrepublicankuokgroupversicherungchannelcitadelxn--pgbs0dhxn--b4w605ferdstatebankwebsitexn--mgb9awbf亚马逊淡马锡alibabaxn--ngbc5azdxn--mgbbh1axn--45br5cyltoshibabuildworldcloudtradeguideplacespacedancemoviephoneprimesmilebiblestyleappleazurestoreskypegripexn--l1accdrivelottehorsehouseleasechasereisestadahondaomegaaetnaamicaninjanokiamediadeltavodkaedekaosakapizzaslingemailgmailtirolshelltmallfinallegaltotalhotelamfamforumrehabmusicciticricohcoachwatchboschearthfaithirishmiamiarchidubaiguccipraxiみんなストアセールcanonsalononionnikonepsonkoelngreensevencrownikanoradioaudioweiboglobopromogalloyahoociscorodeovideomangobingotokyovolvolottokyotophotosmartsportquesttrusthyattjetztadultcymrubaidutushuxn--kprw13dubankclickblackmerckgroupsharpcheapnowtvxn--h2brj9cקוםհայоргсрбмонкомбелмкдқазрусукрمصرقطرعربكومdadcfdmedwedredphdthdbidpidkrdmsdltdiceonewmeglemoerwecfageacbanbambaaaammakianraspacpaaxawtfbcgaegongingaigvigorgdogdhlmilrilonlaolloluoljllcalgalnflafltelsrlfrllplkimibmcamcombommomifmabbjcbscbcabnabtabmlbpubabcbbcnecincpncllcstcwtcpwcnyckfhbzhovhmoiskiobisbitcifyituipinvinwinxincbnbcnmanfangdnmenrenkpnmtnyunrunfununobiojioriohbogmofooboooooacoecoceongoproartistottnttbbtcateatlatvetpetbetnethktmitfitintjothotgotdotbotprueduicujnjyouinknhktdkappsapgapmapdnptopgopllpjmpzipvipripesqtrvdtvitvdevmovgovhivnrwlawsewnewbmwwownowhowdvrftrmtrsfrbarcartvscrseusawsupsubssbsadsddsldssasbmsmlsxxxboxfoxgmxtjxsextaxbuyflydiysoyjoyskypaydaygayxyzanzbizwebersenerpokerlameractortatarsolarລາວคอมไทยtourslocusnexuslexusgiftsbeatsboatspartspressglassswissकॉमनेटtiresgivescodeshomesgamestunesshoescardswalesloansvegastoolsdealsautosparisファッションworkssucksrocksxeroxforexfedexpartylillymoneystudyrugbytoraytoday中文网xn--unup4y天主教飞利浦新加坡enterprises我爱你嘉里大酒店christmasxn--fct429kholdingsxn--8y0a063axn--mgbx4cd0ablifestyleabogadoallstatenetbankكاثوليكxn--s9brj9cxn--gk3at1ebestbuycharityxn--55qx5dmicrosoftpropertybasketballhomegoodscorsicajewelrygallerygrocerysurgerycountrybrusselsverisignferreroxn--czr694bhdfcbankcommbanksoftbankپاكستانپاکستانnextdirectالسعوديهالعليانxn--h2brj9c8cxn--80adxhksshikshaxn--mgbai9azgqp6jcuisinellabarclayscatholicxn--kpry57dcompanyxn--xhq521bblackfridayxn--mgba3a3ejtsandvikxn--d1acj3bacademydownloadمليسياxn--j1amhxn--w4r85el8fhu5dnraipirangaathletaxn--fhbeixn--mgbqly7cvafrzuerichxn--c2br7gஇலங்கைcontractorsxn--io0a7igraphicsinsurancetemasekxn--xkc2al3hye2amotorcyclesphotographydirectoryplumbingxn--vhquvclothingtrainingcleaningwilliamhilllightingxn--mgba3a4f16ashoppingcateringeducationokinawapicturesventuresproductionsxn--9et52uwalmartഭാരതംsupportrealestatecapitalonexn--nqv7fs00emaauspostfloristdentistxn--qxamgodaddybradescobargainsmitsubishikerryhotelsxn--9dbq2axn--3pxu8kimmobilienxn--fjq720axn--mgbtx2bholidaymckinseymadridbusinessbuildershelsinkixn--4gbrimмоскваالسعودیةcoffeedegreelacaixapartnersalsaceofficeabbvievoyageorangegeorgeonlinechromemobilekindlegoogleoraclecircleschulesecureinsurexn--mgba7c0bbn0aestatexn--mgbc0a9azcgcruisehangoutxn--vuq861bxn--42c2d9arexrothfirestoneuniversityxn--nnx388alifeinsuranceextraspaceонлайнvermögensberatersoftwarexn--fiqs8sxn--mgbab2bdxn--w4rs40ltiendaभारतम्africatoyotaotsukasakuracameracreditcardnagoyaconsultingnetworkjunipertheatermonsterprogressivepioneerxn--55qw42gracingdatingvotingvikinglivinggivingxn--bck1b9a5dre4cbrotherweatherjoburgفلسطينlplfinancialxn--clchc0ea0b2g2a9gcdfutbolschoolsocialglobaldentalwoodsidechanelairtelmatteltravelrealtorwebcamstreamభారత్unicomalstomxn--nodexn--6frz82gmuseumfurniturexn--rvc1e0am3exn--mix891faccenturexn--11b4c3dismailineustardiscountquebeccomsecclinicservicesxn--y9a3aqxn--c1avgswatchchurchsearchالاردنmarketingcontacthealthmonashshoujisanofitaipeiamericanexpresssuzukiアマゾンクラウドポイントbhartiグーグルxn--mgberp4a5d4armemorialxn--1qqw23alondonmormoninstitutevisionbostonnortoncouponmaisonamazonvirginberlindesigndurbanolayannissananquanxihuanhitachikaufengardenreisenbayerntechnologydatsunxn--90a3aclatinocasinostudiophysioxn--ngbe9e0apharmacytattootaobaoaramcoexpertreportabbottdirectselectimamatfairwindspictettargetmarketintuittravelersinsurancecreditdupontryukyusuppliesxn--tckwebnpparibasschmidtmerckmsdyodobashirestaurantbridgestonecricketxn--fpcrj9c3dbostikbroadwayattorneylefrakemerckxn--fiq228c5hscareersfarmerswinnersflowersxn--wgbh1cguitarsxn--54b7fta0ccxn--p1acfmakeupgalluplandroverxn--kcrx77d1x4agoldpointbauhausxn--mgbayh7gpahiphopplaystationxn--mgba3a4fraxn--eckvdtc9dhyundaixn--gckr3f0fistanbulticketsmarketsflightschintaireviewsxn--3e0b707ewindowsxn--fiqz9sfinancialxn--fzys8d69uvgmابوظبيdiscoverreviewবাংলাxn--5su34j936bgsgmoscowobserverapartmentsдетиارامكوсайтeurovisionxn--i1b6b1a6a2exn--xkc2dl3a5ee0hتونسموقعبارتڀارتشبكةعمانبيتكعراقreadkredbondlandbandfundfoodprodgoldfordtubecafesafelifeggeeieeefreefagepagegugezonewinememenamegamesaleablebikenikelikecarecbreherefiresaveloveliveblueartedatesitevotecaseluxebofamodaltdaasdatiaayogasinavanashiaasiajavabbvatevavivadatazaraarpacasavisasncfprofmaifsurfgolfdvagsongbingpingwangkpmggoogblogpohlfailcooldellcalldeallidlsarlfilmteamroomfarmimdbarabclubhdfcicbchsbcgmbhrichtechfishdishcashminiernikddiaudiwikimobitaxicitikiwidesiqponskinloanakdnwienopenporncerntownimmolimoolloinfonicofidolegosaxozeroaerovivoautovotomotofastbestresthostpostnextlgbtchatseatgiftmeetdietreitmintrentgentspotscotguruitausohumenucyoubanklinkpinkdclktalksilkbookseekworkrsvpaarpjeepshopcoophelpcamppccwshowbeerstarruhrflirweirhaircarsparsjprshausplusnewstipstoysjobskidsfanspicsdocsxboxamexsexynavycitysonyarmyallybabyplaydeliverybuzzgbizlamborghiniphilipsලංකාಭಾರತfitnessexpresslanxesspfizercenterwalterlawyersoccercareerkosherbrokerlockerdealerdoctorauthorxn--mgbqly7c0a67fbcvermögensberatungjaguarxn--pssy2uxn--hxt814eflickrrepairrogersairbusxn--mgbai9a5eva00beventsyachtsxn--t60b56aভাৰতভারতभारतभारोतviajeshermeshughesxn--j1aefसंगठनvillasଭାରତclaimshotelsભારતzapposphotosjuegoscondostatamotorsgratistennisਭਾਰਤtkmaxxtjmaxxschaeffleryandexxn--80aswgrealtysafetybeautyluxuryxn--3ds443gsupplyfamilyxn--o3cw4hhockeysydneyxn--90aenissayalipayenergycomputeragencyxn--rovu88b電訊盈科xn--gecrj9cstatefarmaccountantaquarelleolayangroup香格里拉xn--p1ai组织机构xn--1ck2e1bxn--mgbt3dhdschwarzموريتانياabudhabinowruzkomatsufujitsuhospitalxn--80asehdbxn--mgbtf8flxn--j6w193gxn--yfro4i67oprudentialxn--flw351ecruisescoursesrecipesxn--e1a4cferrarixn--ses554gxn--wgbl6awatchesstaplessinglesxn--mgbcpq6gpa1axn--otu796dpropertiescreditunionxn--mgbah1a3hjkrdstockholmhisamitsuالسعوديةstcgroupdomainsoriginscouponsbloombergclubmedfroganslimitedxn--80aqecdr1aexposedinternationalequipmentbarclaycardxn--q7ce6axn--mgbi4ecexpprotectionassociatesconstructionxn--cck2b3bxn--45q11candroidfoundationישראלxn--mgbca7dzdocliniqueboutiqueengineerxn--qxa6asystemsfirmdalefashionauctionxn--nqv7finfinitirentalsreliancetradingweddingfishinghostinggentingbookingcookingxn--3hcrj9cgraingerxn--czrs0tdemocratsamsungyokohamaxn--h2breg3evexn--nyqy26alundbeckmelbournevacationssolutionsfrontierxn--vermgensberatung-pwbmanagementxn--cg4bkixn--mgb2ddeslincolnhamburgsandvikcoromantblockbusterairforcebarefootxn--4dbrk0ceinvestmentsfeedbackcommunityxn--ngbrxالبحرينdiamondsamsterdamhealthcareredumbrellaxn--mxtq1mxn--2scrj9cagakhanxn--mgbpl2fhкатоликcaravanசிங்கப்பூர்richardlimortgageamericanfamilyxn--fzc2c9e2cscholarshipssaarlandxn--imr513nvlaanderensamsclubgoodyearkitchenஇந்தியாweatherchannelallfinanzxn--kput3iالسعودیۃxn--90aisxn--efvy88hالجزائرxn--mgbaam7a8hexchangejpmorganxn--tiq49xqyjfidelitysecurityxn--mk1bu44cwanggouxn--fiq64bxn--6qq986b3xlxn--mgbbh1a71exn--80ao21amarshallsxn--5tzm5gtravelerspanasoniclatrobeyoutubeaccountantsxn--rhqv96gxn--cckwcxetdanalyticsxn--ygbi2ammxبازاربھارتسوريةorganicfreseniusسورياxn--9krt00axn--qcka1pmcxn--jlq480n2rgdeloittesciencefinancexn--jvr189mxn--30rr7yhomesensehotmailbaseballfootballleclercboehringerxn--q9jyb4cxn--mix082fاليمنهمراهpolitieسودانايرانایرانnetflixyamaxunxn--lgbbat1ad8jcollegestoragecapetowncolognekerrypropertiesxn--mgbgu82axn--ogbpf8flxn--czru2dwhoswhociprianilasallexn--g2xx48cforsalebanamexaudiblexn--vermgensberater-ctbxn--zfr164bericssonvanguardxn--45brj9cindustriestheatremarriottxn--3bst00mcomparexn--mgberp4a5d4a87gcapitaldigitalالمغربbarcelonashangrilaxn--d1alfcalvinkleinwwwcitysapporokawasakinagoyasendaikobekitakyushuyokohamackjp",Py=621,Ly=625,wd=Vt.length,jd=Vn.length,Sd=new Uint32Array(jd),Ln=new Uint32Array(jd),fr=new Int32Array(wd).fill(-1);for(let e=0,t=0;e<wd;e+=1)for(let s=Wn[e];s<Wn[e+1];s+=1){Sd[s]=t;const a=t+Vn[s];let r=5381;for(let o=a-1;o>=t;o-=1)r=r*33^mr.charCodeAt(o);Ln[s]=r>>>0,Vn[s]===1&&mr.charCodeAt(t)===42&&(fr[e]=s),t=a}let pt=-1,hr=0,gr=0;function tl(e,t,s,a){if(Vn[e]!==a)return!1;const r=Sd[e];for(let o=0;o<a;o+=1)if(mr.charCodeAt(r+o)!==t.charCodeAt(s+o))return!1;return!0}function sl(e,t,s,a,r){let o=Wn[e],i=Wn[e+1];for(;o<i;){const l=o+i>>>1,u=Ln[l];if(u<t)o=l+1;else if(u>t)i=l;else{for(let d=l;d>=o&&Ln[d]===t;d-=1)if(tl(d,s,a,r))return d;for(let d=l+1;d<i&&Ln[d]===t;d+=1)if(tl(d,s,a,r))return d;return-1}}return-1}function nl(e,t,s){let a=t,r=e.length,o=5381;pt=-1;for(let l=e.length-1;l>=0;l-=1){const u=e.charCodeAt(l);if(u===46){const d=l+1;let m=sl(a,o>>>0,e,d,r-d);if(m===-1&&(m=fr[a]),m===-1)return pt!==-1;a=el[m],(Vt[a]&s)!==0&&(pt=a,hr=d,gr=r),r=l,o=5381}else o=o*33^u}let i=sl(a,o>>>0,e,0,r);return i===-1&&(i=fr[a]),i!==-1&&(a=el[i],(Vt[a]&s)!==0&&(pt=a,hr=0,gr=r)),pt!==-1}function $y(e,t,s){if(Oy(e,t,s))return;const a=(t.allowPrivateDomains?2:0)|(t.allowIcannDomains?1:0);if(nl(e,Ly,a)){s.isIcann=(Vt[pt]&1)!==0,s.isPrivate=(Vt[pt]&2)!==0,s.publicSuffix=e.slice(gr+1);return}if(nl(e,Py,a)){s.isIcann=(Vt[pt]&1)!==0,s.isPrivate=(Vt[pt]&2)!==0,s.publicSuffix=e.slice(hr);return}s.isIcann=!1,s.isPrivate=!1;const r=e.lastIndexOf(".");s.publicSuffix=r===-1?e:e.slice(r+1)}const al=zy();function Fy(e,t){return Ay(al),Dy(e,3,$y,t,al).domain}const go=e=>{const t=new Set,s=[];for(const a of e){const r=a.trim();if(r==="")continue;const o=r.toLowerCase();t.has(o)||(t.add(o),s.push(r))}return s},_y=e=>{const t=e.lastIndexOf("@");return t>=0?e.slice(t+1):e},qy=e=>{const t=go(e);if(t.length<2)return null;let s=null;for(const a of t){const r=Fy(_y(a));if(r===null)return null;if(s===null)s=r;else if(s!==r)return null}return s},po=e=>{const t=qy(e);return t!==null?[{field:"FromDomain",value:t}]:go(e).map(s=>({field:"From",value:s}))},By=e=>({matchOperator:"Or",literalClauses:po(e)}),Cd=(e,t,s)=>{const a=xe(Ol()),{mutate:r,reset:o}=a,[i,l]=c.useState(!1),u=c.useMemo(()=>go(s),[s]),d=c.useCallback(()=>{!e||!t||(l(!1),r({path:{accountId:e},body:_n({anchorMessageId:t,matchOperator:"And",literalClauses:[]})}))},[e,t,r]),m=c.useCallback(()=>{l(!1),o()},[o]),f=a.data,h=f?.semanticUnavailable===!0&&!i&&u.length>0;c.useEffect(()=>{!h||!e||(l(!0),r({path:{accountId:e},body:_n(By(u))}))},[h,e,u,r]);const b=i||(f?.semanticUnavailable??!1),v=a.isPending||h,p=i?{matchOperator:"Or",literalClauses:po(u)}:{...t?{anchorMessageId:t}:{},matchOperator:"And",literalClauses:[]};return{preview:d,reset:m,matchedCount:v?void 0:f?.matchedCount,messageIds:v?void 0:f?.messageIds,semanticUnavailable:b,senderFallback:i,senders:u,matchPredicate:p,isPending:v,isError:a.isError,error:a.error}},Ky=({entry:e,hasSeed:t,previewStatus:s,matchedCount:a})=>{if(e==="something-else"&&!t)return{kind:"something-else"};if(s==="error")return{kind:"error"};if(s!=="success")return{kind:"widening"};const r=a??0;return{kind:"organize",matchedCount:r,fallback:r===0}},Uy=new Set(["Complete","Failed"]),rl=e=>e!==void 0&&Uy.has(e),Hy=1e3,Wy=15e3,Vy=e=>{const t=Math.max(0,e),s=Hy*2**t;return Math.min(s,Wy)},Qy=e=>{const[t,s]=c.useState(),a=xe({...O0(),onSuccess:f=>s(f.organizeJobId)}),{mutate:r}=a,o=ce({...P0({path:{accountId:e??"",organizeJobId:t??""}}),enabled:!!e&&!!t,refetchInterval:f=>{const h=f.state.data?.state;return rl(h)?!1:Vy(f.state.dataUpdateCount)}}),i=c.useCallback(f=>{e&&(s(void 0),r({path:{accountId:e},body:_n(f)}))},[e,r]),l=o.data,u=l?.state??a.data?.state,d=rl(l?.state),m={state:u,matchedCount:l?.matchedCount??0,appliedCount:l?.appliedCount??0,failedCount:l?.failedCount??0,errorMessage:l?.errorMessage??""};return{start:i,progress:m,isStarting:a.isPending,isRunning:!!t&&!d,isDone:d,isError:a.isError||o.isError,error:a.error??o.error}},ol=["From","Subject","HasWords","ListId","FromDomain"],Yy=e=>{const t=e.trim(),s=t.match(/<([^>]+)>/);return(s?s[1]:t).trim().toLowerCase()},Gy=(e,t)=>e==="ListId"?Yy(t):t.trim(),Xy=e=>e==="all"?"And":"Or",Jy=e=>{const t=e.seedScope??"once";return e.semanticUnavailable?{clauses:po(e.senders).map((a,r)=>({id:`derived-${r}`,field:a.field,value:a.value,derived:!0})),matchOperator:"any",moveMailboxId:e.seedMailboxId,scope:t,name:""}:{clauses:[],matchOperator:"all",widen:e.anchorMessageId?{anchorCount:Math.max(e.selectionCount,1)}:void 0,moveMailboxId:e.seedMailboxId,scope:t,name:""}},Nd=(e,t)=>{const s=e.widen!==void 0&&!e.widen.inactive,a=e.clauses.map(r=>({field:r.field,value:r.value}));return{...s&&t?{anchorMessageId:t}:{},matchOperator:Xy(e.matchOperator),literalClauses:a}},Zy=e=>JSON.stringify({anchor:e.anchorMessageId??null,operator:e.matchOperator,clauses:e.literalClauses.map(t=>`${t.field} ${t.value}`)}),e2=(e,t)=>{const s=Nd(e,t);return{...s.anchorMessageId?{anchorMessageId:s.anchorMessageId}:{},matchOperator:s.matchOperator,literalClauses:s.literalClauses,moveMailboxId:e.moveMailboxId,expiresAt:e.scope==="until"?tm(e.until??""):void 0}},t2=(e,t)=>e.error!==void 0&&e.errorSignature===t?{status:"error",reason:e.error}:e.count===void 0?{status:"loading"}:e.previewedSignature===t?{status:"ready",count:e.count}:{status:"ready",count:e.count,stale:!0},s2=350,n2=(e,t,s)=>{const a=xe(Ol()),{mutateAsync:r}=a,o=Zy(t),[i,l]=c.useState(()=>({count:s,previewedSignature:o})),u=c.useRef(t);u.current=t;const d=c.useRef(o);return c.useEffect(()=>{if(!e||o===i.previewedSignature||o===i.errorSignature)return;const m=setTimeout(()=>{const f=o;d.current=f,r({path:{accountId:e},body:_n({...u.current})}).then(h=>{d.current===f&&l({count:h.matchedCount,previewedSignature:f})}).catch(h=>{d.current===f&&l(b=>({...b,error:h instanceof Error?h.message:"Couldn't count matches.",errorSignature:f}))})},s2);return()=>clearTimeout(m)},[e,o,i.previewedSignature,i.errorSignature,r]),t2(i,o)};function Ed({accountId:e,selectedMessageIds:t,seedCount:s,semanticUnavailable:a=!1,senders:r=[],seedMailboxId:o,seedScope:i,onClose:l}){const u=t[0],d=a&&r.length>0,[m,f]=c.useState(()=>Jy({anchorMessageId:u,semanticUnavailable:a,senders:r,selectionCount:t.length,seedMailboxId:o,seedScope:i})),[h,b]=c.useState(),v=c.useRef(0),{data:p}=ce({...He({path:{accountId:e}}),staleTime:Number.POSITIVE_INFINITY}),x=c.useMemo(()=>ma(p?.items??[]).map(O=>({id:O.mailboxId,label:ks(O.fullPath)})),[p?.items]),g=n2(e,Nd(m,u),s),y=Qy(e),k=sm(e),w=()=>b({mode:"add",draft:{field:ol[0],value:""}}),E=O=>{const N=m.clauses.find(L=>L.id===O);N&&b({mode:"edit",clauseId:O,draft:{field:N.field,value:N.value}})},T=O=>b(N=>N&&{...N,draft:{...N.draft,field:O}}),C=O=>b(N=>N&&{...N,draft:{...N.draft,value:O}}),S=()=>{if(!h)return;const O=h.draft.field,N=Gy(O,h.draft.value);N!==""&&(f(L=>h.mode==="edit"&&h.clauseId?{...L,clauses:L.clauses.map(_=>_.id===h.clauseId?{id:_.id,field:O,value:N}:_)}:(v.current+=1,{...L,clauses:[...L.clauses,{id:`clause-${v.current}`,field:O,value:N}]})),b(void 0))},D=O=>f(N=>({...N,clauses:N.clauses.filter(L=>L.id!==O)})),z=()=>f(O=>({...O,widen:{anchorCount:Math.max(t.length,1)}})),A=()=>f(O=>({...O,widen:void 0})),P=O=>f(N=>({...N,matchOperator:O})),I=O=>f(N=>({...N,moveMailboxId:O||void 0})),j=O=>f(N=>({...N,scope:O})),M=O=>f(N=>({...N,name:O})),$=O=>f(N=>({...N,until:O})),R=()=>{const O=e2(m,u);if(m.scope==="once"){y.start(O);return}k.createFilter(O,m.scope==="standing"?"standing":"temporary",(m.name??"").trim())};return y.isStarting||y.isRunning||y.isDone?n.jsx(a2,{progress:y.progress,isDone:y.isDone,senderFallback:d,onClose:l}):k.isPending?n.jsx(r2,{}):k.isSuccess?n.jsx(o2,{onClose:l}):k.isError?n.jsx(i2,{onRetry:k.reset,onClose:l}):n.jsx(L0,{rule:m,folders:x,preview:g,semanticAvailable:!a,clauseFields:ol,clauseEdit:h,onStartAddClause:w,onStartEditClause:E,onRemoveClause:D,onChangeDraftField:T,onChangeDraftValue:C,onSubmitClause:S,onCancelClause:()=>b(void 0),onAddWiden:z,onRemoveWiden:A,onChangeMatchOperator:P,onChangeMove:I,onChangeScope:j,onChangeName:M,onChangeUntil:$,onCommit:R,onCancel:l})}function a2({progress:e,isDone:t,senderFallback:s,onClose:a}){const r=e.state==="Failed";return n.jsxs("div",{className:"flex flex-col items-center gap-3 px-5 py-8 text-center",children:[t?r?n.jsx("span",{className:"text-sm font-semibold text-danger",children:"Organize failed"}):n.jsx(Or,{className:"size-8 text-positive"}):n.jsx(ut,{className:"size-8 animate-spin text-accent-2"}),!t&&n.jsx("p",{className:"text-sm font-medium text-fg",children:s?"Organizing mail from these senders…":"Organizing similar mail…"}),t&&!r&&n.jsxs("div",{className:"text-sm text-fg",children:[n.jsx("p",{className:"font-medium",children:"Done"}),n.jsxs("p",{className:"mt-1 text-xs text-fg-muted",children:[e.appliedCount," of ",e.matchedCount," moved",e.failedCount>0?` · ${e.failedCount} failed`:"","."]})]}),t&&r&&n.jsx("p",{className:"max-w-xs text-xs text-fg-muted",children:e.errorMessage||"Something went wrong. Please try again."}),t&&n.jsx(G,{variant:"primary",onClick:a,className:"mt-2",children:"Done"})]})}function r2(){return n.jsxs("div",{className:"flex flex-col items-center gap-3 px-5 py-10 text-center",children:[n.jsx(ut,{className:"size-8 animate-spin text-accent-2"}),n.jsx("p",{className:"text-sm font-medium text-fg",children:"Saving rule…"})]})}function o2({onClose:e}){return n.jsxs("div",{className:"flex flex-col items-center gap-3 px-5 py-8 text-center",children:[n.jsx(Or,{className:"size-8 text-positive"}),n.jsx("p",{className:"text-sm font-medium text-fg",children:"Filter saved"}),n.jsx("p",{className:"max-w-xs text-xs text-fg-muted",children:"You can see it, and when it expires, under Settings › Filters."}),n.jsx(G,{variant:"primary",onClick:e,className:"mt-2",children:"Done"})]})}function i2({onRetry:e,onClose:t}){return n.jsxs("div",{className:"flex flex-col items-center gap-3 px-5 py-8 text-center",children:[n.jsx("p",{className:"text-sm font-medium text-danger",children:"Couldn't save the rule"}),n.jsx("p",{className:"max-w-xs text-xs text-fg-muted",children:"Please try again."}),n.jsxs("div",{className:"mt-2 flex gap-2",children:[n.jsx(G,{variant:"primary",onClick:e,children:"Try again"}),n.jsx(G,{variant:"ghost",onClick:t,children:"Not now"})]})]})}const il=(e,t)=>e.find(s=>s.label.toLowerCase()===t),l2=(e,t)=>{const s=[],a=il(e,"inbox");a&&s.push({id:"keep-inbox",label:"Always keep in Inbox",seed:{moveMailboxId:a.id,scope:"standing"}});const r=il(e,"archive");r&&s.push({id:"file-archive",label:"File in Archive",seed:{moveMailboxId:r.id}});const o=t?e.find(i=>i.id===t):void 0;return o&&s.push({id:"move-junk",label:`Move to ${o.label}`,seed:{moveMailboxId:o.id}}),s},c2=(e,t)=>{const s=e.toLowerCase(),a=t.find(o=>s.includes(o.label.toLowerCase())),r=/\b(always|keep|future|from now)\b/.test(s);return{moveMailboxId:a?.id,scope:r?"standing":void 0}};function u2({folderOptions:e,junkMailboxId:t,onSeed:s}){const[a,r]=c.useState(""),o=c.useMemo(()=>l2(e,t),[e,t]),i=()=>{const l=a.trim();l&&s(c2(l,e))};return n.jsxs("div",{className:"flex min-h-0 flex-col",children:[n.jsxs("div",{className:"border-b border-line px-5 py-3",children:[n.jsx("h2",{className:"text-sm font-semibold text-fg",children:"What should Remit do?"}),n.jsx("p",{className:"mt-0.5 text-xs text-fg-muted",children:"Pick a shortcut or say it in your own words."})]}),n.jsx("div",{className:"min-h-0 flex-1 space-y-2 overflow-y-auto px-5 py-4",children:o.map(l=>n.jsx(G,{variant:"secondary",onClick:()=>s(l.seed),className:"h-12 w-full justify-start px-4",children:l.label},l.id))}),n.jsxs("div",{className:"flex items-center gap-2 border-t border-line px-5 py-3",children:[n.jsx(kl,{value:a,onChange:l=>r(l.target.value),onKeyDown:l=>l.key==="Enter"&&i(),placeholder:"Tell Remit what to do…","aria-label":"Tell Remit what to do",className:"flex-1"}),n.jsx(G,{variant:"primary","aria-label":"Send",onClick:i,disabled:!a.trim(),icon:n.jsx(Km,{className:"size-4"}),className:"size-9 shrink-0 px-0"})]})]})}const d2=e=>e?.scope==="standing"?"standing":void 0,m2=(e,t,s)=>e?"error":t?"pending":s!==void 0?"success":"idle";function f2({entry:e,accountId:t,selectedMessageIds:s,selectedSenders:a,junkMailboxId:r,onClose:o}){const i=s[0],[l,u]=c.useState(),{preview:d,matchedCount:m,semanticUnavailable:f,senders:h,isPending:b,isError:v,error:p}=Cd(t,i,a);c.useEffect(()=>{d()},[d]);const{data:x}=ce({...He({path:{accountId:t}}),staleTime:Number.POSITIVE_INFINITY}),g=c.useMemo(()=>ma(x?.items??[]).map(k=>({id:k.mailboxId,label:ks(k.fullPath)})),[x?.items]),y=Ky({entry:e,hasSeed:l!==void 0,previewStatus:m2(v,b,m),matchedCount:m});return n.jsxs(kc,{open:!0,onClose:o,dismissLabel:"Dismiss organize",children:[y.kind==="something-else"&&n.jsx(u2,{folderOptions:g,junkMailboxId:r,onSeed:u}),y.kind==="widening"&&n.jsx(h2,{}),y.kind==="error"&&n.jsxs("div",{className:"flex flex-col items-center gap-3 px-5 py-10 text-center",children:[n.jsx("p",{className:"text-sm font-medium text-danger",children:"Couldn't find similar messages"}),n.jsx("p",{className:"max-w-xs text-xs text-fg-muted",children:p instanceof Error?p.message:"Please try again."}),n.jsx(G,{variant:"ghost",onClick:o,className:"mt-2",children:"Close"})]}),y.kind==="organize"&&n.jsx(Ed,{accountId:t,selectedMessageIds:s,seedCount:y.matchedCount,seedScope:d2(l),seedMailboxId:l?.moveMailboxId,semanticUnavailable:f,senders:h,onClose:o})]})}function h2(){return n.jsxs("div",{className:"flex flex-col items-center gap-3 px-5 py-10 text-center",children:[n.jsx(ut,{className:"size-8 animate-spin text-accent-2"}),n.jsx("p",{className:"text-sm font-medium text-fg",children:"Finding similar messages…"})]})}function g2({open:e,accountId:t,selectedMessageIds:s,selectedSenders:a,onClose:r}){const o=s[0],{preview:i,reset:l,matchedCount:u,semanticUnavailable:d,senders:m,isPending:f,isError:h,error:b}=Cd(t,o,a);c.useEffect(()=>{e&&i()},[e,i]);const v=()=>{l(),r()};return e?n.jsx(vl,{open:e,onClose:v,title:"Filter rule",children:f||u===void 0?h?n.jsxs("div",{className:"flex flex-col items-center gap-3 px-5 py-8 text-center",children:[n.jsx("p",{className:"text-sm font-medium text-danger",children:"Couldn't find similar messages"}),n.jsx("p",{className:"max-w-xs text-xs text-fg-muted",children:b instanceof Error?b.message:"Please try again."}),n.jsx(G,{variant:"ghost",onClick:v,className:"mt-2",children:"Close"})]}):n.jsxs("div",{className:"flex flex-col items-center gap-3 px-5 py-10 text-center",children:[n.jsx(ut,{className:"size-8 animate-spin text-accent-2"}),n.jsx("p",{className:"text-sm font-medium text-fg",children:"Finding similar messages…"})]}):n.jsx(Ed,{accountId:t,selectedMessageIds:s,seedCount:u,semanticUnavailable:d,senders:m,onClose:v})}):null}const p2=(e,t)=>({id:e.messageId,accountId:e.accountConfigId,mailboxId:e.mailboxId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:Dt(e.sentDate),isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:la(e.category),messageCount:t,suspicious:e.authenticity?.dkimMismatch===!0}),b2=({thread:e,mailboxId:t,accountId:s,isSelected:a,isFocused:r,isTabStop:o,onFocusRow:i,isChecked:l,onToggleCheck:u,onRowSelect:d,messageCount:m,isMultiSelectMode:f,onLongPress:h,isDesktop:b,density:v})=>n.jsx(co,{thread:p2(e,m),linkMailboxId:t,inListbox:!0,active:a,focused:r,isTabStop:o,density:v,isDesktop:b,onFocusRow:i,selection:{isChecked:l,onToggleCheck:u,onRowSelect:d,isMultiSelectMode:f,onLongPress:h},badge:e.autoMoved?n.jsx(du,{accountId:s,messageId:e.messageId,threadId:e.threadId,mailboxId:e.mailboxId,autoMoved:e.autoMoved,size:"sm"}):void 0}),x2=c.memo(b2),v2=e=>{const t=e.authenticity?.dkimMismatch===!0;return{id:e.messageId,accountId:e.accountConfigId,fromName:e.fromName??e.fromEmail??"Unknown",fromEmail:e.fromEmail??"",subject:e.subject??"(No subject)",snippet:e.snippet??"",timeLabel:Dt(e.sentDate),isRead:e.isRead,hasAttachment:e.hasAttachment,starred:e.hasStars===!0,trust:e.senderTrust,category:la(e.category),suspicious:t}},y2=({thread:e,mailboxId:t,accountId:s,isSelected:a,isFocused:r,isTabStop:o,onFocusRow:i,isChecked:l,onToggleCheck:u,onRowSelect:d,isMultiSelectMode:m,onLongPress:f,isDesktop:h,onDelete:b,onToggleRead:v,density:p})=>{const[x,g]=c.useState("none"),y=c.useCallback(E=>{navigator.vibrate?.(10),E==="trailing"?b(e.messageId):v(e.messageId,e.isRead),g("none")},[b,v,e.messageId,e.isRead]),k=c.useCallback(()=>{f(e.messageId)},[f,e.messageId]),w=c.useCallback(()=>{u(e.messageId)},[u,e.messageId]);return h||m?n.jsx(x2,{thread:e,mailboxId:t,accountId:s,isSelected:a,isFocused:r,isTabStop:o,onFocusRow:i,isChecked:l,onToggleCheck:u,onRowSelect:d,isMultiSelectMode:m,onLongPress:f,isDesktop:h,density:p}):n.jsx(gc,{thread:v2(e),selectionMode:!1,checked:!1,active:a,peek:x,onPeek:g,onToggleCheck:w,onLongPress:k,onOpen:()=>{},onAct:y,linkComponent:({onOpenClick:E,children:T,...C})=>n.jsx(ht,{...C,to:"/mail/$mailboxId",params:{mailboxId:t},search:S=>({...S,selectedMessageId:e.messageId}),"data-message-row":!0,onClick:E,children:T})})},k2=72,w2=32,j2=5,Id="remit:list-density",S2={kind:"delete"},ll={kind:"markRead"},C2=()=>{try{const e=localStorage.getItem(Id);if(e==="compact"||e==="comfortable")return e}catch{}return"comfortable"},N2=({query:e,count:t})=>n.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-line bg-surface-sunken/30",children:[n.jsx(sn,{className:"size-4 text-fg-muted"}),n.jsxs("span",{className:"text-sm text-fg-muted",children:[t," ",t===1?"result":"results"," for “",e,"”"]})]}),E2=({mailboxId:e,threads:t,selectedMessageId:s,isLoading:a,isError:r=!1,error:o,onRetry:i,searchQuery:l,searchPredicate:u,onDeleteMessages:d,onMoveMessages:m,isDeleting:f=!1,isMoving:h=!1,onLoadMore:b,hasMore:v=!1,isLoadingMore:p=!1,accountId:x,listTitle:g,listMeta:y,onTriageContextChange:k,commandsRef:w,hideHeader:E=!1})=>{const T=c.useRef(null),C=ze(),S=Lt(),[D,z]=c.useState(!1),[A,P]=c.useState(null),I=!!l?.trim(),[j,M]=c.useState(s),[$,R]=c.useState(C2),O=c.useCallback(()=>{R(F=>{const se=F==="comfortable"?"compact":"comfortable";try{localStorage.setItem(Id,se)}catch{}return se})},[]),{toggleReadFor:N}=ia({mailboxId:e}),{junkMailboxId:L}=ua(x),{selectedIds:_,selectedCount:q,hasSelection:X,isSelected:ee,toggle:Y,select:fe,clearSelection:ue,selectRange:te,setAnchor:U,selectAll:K,toggleAll:ae,intersectWith:Pe}=Gu(),Te=Xu(q,S);c.useEffect(()=>{q===0&&P(null)},[q]);const[V,J]=c.useState(null),re=I&&!!u,de=`${e}|${JSON.stringify(u??{})}`,B=by({mailboxId:e,accountId:x,enabled:re,predicateKey:de,searchQuery:u??{}}),We=B.phase.kind,Le=B.clear,pe=c.useCallback(()=>{We==="escalated"&&Le(),ue()},[ue,Le,We]),[ke,Ve]=c.useState(null),[ns,$e]=c.useState(null),Ze=c.useRef(null),Fe=c.useRef(!1),_e=c.useRef(null),dt=!a&&t.length>0,Ne=V!==null,as=c.useCallback((F,se)=>{const{exit:wt,retryIds:Ge}=hy(se);if(wt){$e(Yi(F.kind,se.done)),Ve(null),pe();return}if(Ge.length>0){Ve({action:F,succeeded:se.done}),K(Ge);return}Ve(null)},[pe,K]),qe=ey({count:t.length,getScrollElement:()=>T.current,estimateSize:()=>$==="compact"?w2:k2,overscan:j2}),_t=s?t.findIndex(F=>F.messageId===s):-1,Se=j?t.findIndex(F=>F.messageId===j):-1,Be=c.useCallback(F=>{if(F<0||F>=t.length)return;const se=t[F];if(Te){Y(se.messageId);return}Ze.current=se.messageId,Fe.current=!1,M(se.messageId)},[t,Te,Y]),mt=c.useCallback(()=>{if(t.length===0)return;const F=Se<0?0:Math.min(Se+1,t.length-1);Be(F)},[t.length,Se,Be]),rs=c.useCallback(()=>{if(t.length===0)return;const F=Se<=0?0:Se-1;Be(F)},[t.length,Se,Be]),qt=c.useCallback(()=>Be(0),[Be]),Z=c.useCallback(()=>Be(t.length-1),[Be,t.length]),ie=c.useCallback(()=>{j&&Y(j)},[j,Y]),ne=c.useMemo(()=>t.map(F=>F.messageId),[t]),oe=c.useMemo(()=>{const F=[];for(const se of t)_.has(se.messageId)&&se.fromEmail&&F.push(se.fromEmail);return F},[t,_]),he=c.useCallback((F,se)=>se.shiftKey?(te(ne,F,j),!0):se.metaKey||se.ctrlKey?(Y(F),!0):(pe(),U(F),!1),[ne,j,te,Y,pe,U]),me=c.useCallback(F=>{!d||F.length===0||(_e.current=j??null,J({source:"ids",ids:F}))},[d,j]),ve=c.useCallback(()=>{B.phase.kind==="escalated"&&(_e.current=j??null,J({source:"predicate",total:B.phase.total}))},[B.phase,j]),Ae=c.useCallback(F=>{const se=Yu(ne,j,F);se!==void 0&&(te(ne,se),Ze.current=se,Fe.current=!1,M(se))},[ne,j,te]),Re=c.useCallback(()=>Ae(-1),[Ae]),Ke=c.useCallback(()=>Ae(1),[Ae]),Me=c.useCallback(()=>{ne.length>0&&K(ne)},[ne,K]),Ee=c.useCallback(()=>V!==null?!0:d?q>0?(me(Array.from(_)),!0):j?(me([j]),!0):!1:!1,[V,d,q,_,j,me]),Qe=c.useCallback(()=>{j&&C({to:"/mail/$mailboxId",params:{mailboxId:e},search:F=>({...F,selectedMessageId:j})})},[j,C,e]),Ye=c.useCallback(()=>{q>0&&me(Array.from(_))},[me,q,_]),et=c.useCallback(async(F,se)=>{const wt=await B.runAction(F,se);as(F,wt)},[B,as]),Bt=c.useCallback(async F=>{J(null),_e.current=null,await et(S2,F)},[et]),ba=c.useCallback(()=>{if(!V)return;if(V.source==="predicate"){Bt(void 0);return}const{ids:F}=V;if(F.length===0){J(null);return}if(F.length>yd){Bt(F);return}const se=new Set(F),wt=t.findIndex(Oe=>se.has(Oe.messageId));let Ge;for(let Oe=wt+1;Oe<t.length;Oe++)if(!se.has(t[Oe].messageId)){Ge=t[Oe].messageId;break}if(Ge===void 0){for(let Oe=wt-1;Oe>=0;Oe--)if(!se.has(t[Oe].messageId)){Ge=t[Oe].messageId;break}}d?.(F),pe(),_e.current=null,J(null),Ge!==void 0&&(Ze.current=Ge,Fe.current=!1,M(Ge),S&&C({to:"/mail/$mailboxId",params:{mailboxId:e},search:Oe=>({...Oe,selectedMessageId:Ge}),replace:!0})),S||$e(Yi("delete",F.length))},[V,t,d,pe,C,e,S,Bt]),yt=c.useCallback(()=>{const F=_e.current;_e.current=null,J(null),F!==null&&(Ze.current=F,Fe.current=!1,M(F))},[]),gn=c.useCallback(()=>{if(B.phase.kind==="escalated"){et(ll);return}q!==0&&et(ll,Array.from(_))},[B.phase,et,q,_]),os=c.useCallback(F=>{if(B.phase.kind==="escalated"){et({kind:"move",destinationMailboxId:F});return}!m||q===0||(m(Array.from(_),F),pe())},[B.phase,et,m,q,_,pe]),xa=c.useCallback(()=>{L&&os(L)},[L,os]),Kt=c.useMemo(()=>{if(q===0)return;const F=new Set;for(const se of t)_.has(se.messageId)&&F.add(se.accountConfigId);if(F.size>1)return"Move only works within one account — clear selection or pick messages from a single account"},[q,_,t]),va=c.useCallback(F=>{d?.([F])},[d]),ya=c.useCallback((F,se)=>{N([F],!se)},[N]),ka=c.useCallback(F=>{S||fe(F)},[S,fe]),kt=c.useCallback(()=>{if(B.phase.kind==="escalated"){ve();return}Ye()},[B.phase,ve,Ye]),Os=c.useCallback(()=>{if(B.isRunning||B.phase.kind==="counting"){B.stop();return}pe()},[B,pe]),pn=c.useCallback(()=>{B.clear()},[B]),wa=c.useCallback(()=>{if(!ke)return;const F=Array.from(_);if(ke.action.kind==="delete"){Bt(F);return}et(ke.action,F)},[ke,Bt,et,_]);c.useEffect(()=>{if(Fe.current||!S&&s)return;const F=Se>=0?Se:_t;F>=0&&qe.scrollToIndex(F,{align:"auto"})},[Se,_t,qe,S,s]),c.useEffect(()=>{s&&(Fe.current=!1,M(s))},[s]),c.useEffect(()=>{j&&(t.some(F=>F.messageId===j)||M(t[0]?.messageId))},[t,j]),c.useEffect(()=>{k?.({focusedMessageId:j,selectedIds:Array.from(_),hasList:dt,blocksKeyboard:Ne})},[j,_,dt,Ne,k]);const bn=c.useRef(k);bn.current=k,c.useEffect(()=>()=>bn.current?.({focusedMessageId:void 0,selectedIds:[],hasList:!1,blocksKeyboard:!1}),[]),c.useEffect(()=>{B.phase.kind!=="idle"||B.isRunning||Pe(t.map(F=>F.messageId))},[t,Pe,B.phase,B.isRunning]);const xn=c.useRef(e);c.useEffect(()=>{xn.current!==e&&(xn.current=e,pe())},[e,pe]),Bg({shouldBlockFn:({action:F})=>Ix(F,X)?(pe(),!0):!1,enableBeforeUnload:!1,disabled:!X}),c.useEffect(()=>{const F=T.current;if(!F||!v||!b)return;const se=()=>{if(p)return;const{scrollTop:wt,scrollHeight:Ge,clientHeight:Oe}=F;wt+Oe>=Ge-200&&b()};return F.addEventListener("scroll",se,{passive:!0}),se(),()=>F.removeEventListener("scroll",se)},[v,p,b]),c.useEffect(()=>{const F=Ze.current;if(!F)return;const se=T.current?.querySelector(`[data-message-id="${F}"]`);se&&(Ze.current=null,se.focus({preventScroll:!0}))}),c.useEffect(()=>{if(w){if(!dt){w.current=null;return}return w.current={focusNext:mt,focusPrevious:rs,focusFirst:qt,focusLast:Z,openFocused:Qe,toggleSelect:ie,extendSelectDown:Ke,extendSelectUp:Re,selectAll:Me,clearSelection:()=>X?(pe(),!0):!1,requestDelete:Ee,toggleDensity:O},()=>{w.current=null}}},[w,dt,mt,rs,qt,Z,Qe,ie,Ke,Re,Me,X,pe,Ee,O]);const vn=a?"loading":r?"error":t.length===0?"empty":"ready",ja=r?$l(o):void 0,Q=c.useCallback(()=>{const F=Ir(Er());window.open(F,"_blank","noopener,noreferrer")},[]),tt=[{id:"inbox",threads:[]}],De=ne.length>0&&ne.every(F=>_.has(F)),Fd=re&&v&&De&&!f&&!h&&B.phase.kind==="idle"&&!B.isRunning,_d=f||h||B.isRunning,Sa=B.phase.kind==="escalated"?B.phase.total:q,vo=B.runningAction?ay(B.runningAction.kind,B.progress?.done??0,B.progress?.total??0):B.phase.kind==="counting"?B.phase.countSoFar>=5e3?`Counting… ${lt(B.phase.countSoFar)} so far. This is a big result set.`:`Counting… ${lt(B.phase.countSoFar)} so far`:B.phase.kind==="escalated"?vy(u??{},B.phase.total):void 0,yo=B.phase.kind!=="escalated"&&ne.length>0?{checked:De,indeterminate:q>0&&!De,onChange:()=>ae(ne)}:void 0,ko=B.runningAction&&B.progress?{value:B.progress.done,max:B.progress.total,tone:ly(B.runningAction.kind)}:void 0,wo=B.phase.kind==="counting"?{tone:"info",text:"",action:{label:"Stop",onClick:B.stop}}:B.phase.kind==="escalated"&&!B.isRunning?{tone:"info",text:"",action:{label:"Clear selection",onClick:pn}}:Fd?{tone:"info",text:"",action:{label:xy(u??{}),onClick:B.escalate}}:ke!==null&&q>0?{tone:"danger",text:ry(ke.action.kind,ke.succeeded,q),action:{label:`Retry ${lt(q)}`,onClick:wa}}:void 0,jo=wo??(Kt?{tone:"warning",text:Kt}:void 0),So=yy({isRunning:B.isRunning,isCounting:B.phase.kind==="counting",isEscalated:B.phase.kind==="escalated"}),Co=!S&&Te&&wy(Sa,So,jo!==void 0),qd=(m||B.phase.kind==="escalated")&&x&&e?n.jsx(hn,{accountId:x,currentMailboxId:e,onMove:f||h?()=>{}:os,disabledHint:Kt,label:"Move selected messages"}):void 0,No=A&&x&&!S&&q>0?n.jsx(f2,{entry:A,accountId:x,selectedMessageIds:Array.from(_),selectedSenders:oe,junkMailboxId:L,onClose:()=>{P(null),pe()}}):void 0,Eo=Co?n.jsx(rh,{count:Sa,mode:So,onCancel:Os,onDelete:kt,onJunk:L&&L!==e&&!Kt?xa:void 0,onMarkRead:gn,onSelectSimilar:x?()=>P("select-similar"):void 0,onSomethingElse:x?()=>P("something-else"):void 0,moveSlot:qd,isBusy:_d,selectAll:yo,statusLabel:vo,progress:ko,notice:jo}):void 0,Bd=Eo||No?n.jsxs(n.Fragment,{children:[Eo,No]}):void 0,Kd=X&&S?n.jsx(Zu,{selectedCount:Sa,onDelete:kt,onClearSelection:Os,onMarkAsRead:gn,onMove:m?os:void 0,onOrganize:()=>z(!0),isDeleting:f,isMoving:h,accountId:x,currentMailboxId:e,moveDisabledHint:Kt,selectAll:re?yo:void 0,statusLabel:vo,isCounting:B.phase.kind==="counting",progress:ko,notice:wo}):void 0,Ud=Ju(ne,j),Hd=c.useCallback(F=>{Fe.current=!0,M(F)},[]),Wd=n.jsxs(n.Fragment,{children:[I&&l&&n.jsx(N2,{query:l,count:t.length}),n.jsxs("div",{ref:T,role:"listbox","aria-multiselectable":!0,"aria-label":g,className:"flex-1 overflow-y-auto",style:Co?{paddingBottom:Hs}:void 0,children:[n.jsx("div",{role:"presentation",className:"relative w-full",style:{height:`${qe.getTotalSize()}px`},children:qe.getVirtualItems().map(F=>{const se=t[F.index];return n.jsx("div",{role:"presentation","data-index":F.index,ref:qe.measureElement,className:ge("absolute left-0 top-0 w-full border-b border-line",B.isRunning&&"pointer-events-none opacity-50"),style:{transform:`translateY(${F.start}px)`},children:n.jsx(y2,{thread:se,mailboxId:e,accountId:x,isSelected:s===se.messageId,isFocused:j===se.messageId,isTabStop:Ud===se.messageId,onFocusRow:Hd,isChecked:ee(se.messageId),onToggleCheck:Y,onRowSelect:he,isMultiSelectMode:Te,onLongPress:ka,isDesktop:S,onDelete:va,onToggleRead:ya,density:$})},F.key)})}),p&&n.jsx("div",{className:"flex justify-center py-4",children:n.jsx("div",{className:"h-5 w-5 animate-spin rounded-full border-2 border-fg-muted border-t-transparent"})})]})]}),Vd=V?V.source==="ids"?V.ids.length:V.total:0,Io=V?.source==="predicate";return n.jsxs(n.Fragment,{children:[ns&&!S&&n.jsx(Zt,{tone:"success",variant:"soft",className:"m-2 rounded-md",onDismiss:()=>$e(null),children:ns}),n.jsx(pc,{listTitle:g,listMeta:y,sections:tt,flatList:!0,listState:vn,searchQuery:I?l:void 0,errorMessage:ja,onRetry:i,onReportError:Q,density:$,selectedThreadId:s,onSelectThread:F=>C({to:"/mail/$mailboxId",params:{mailboxId:e},search:se=>({...se,selectedMessageId:F})}),onSelectBriefCategory:()=>{},isDesktop:S,hideHeader:E,selectionBar:Kd,selectionSheet:Bd,listBody:vn==="ready"?Wd:void 0}),n.jsx(io,{isOpen:V!==null,title:_l(Vd,Io),description:Io?"This count is a snapshot — new mail arriving during the delete won't be included. You can restore what's deleted from Trash later.":"You can restore them from Trash later.",confirmLabel:"Move to Trash",destructive:!0,isBusy:f,onConfirm:ba,onCancel:yt}),D&&x&&n.jsx(g2,{open:D,accountId:x,selectedMessageIds:Array.from(_),selectedSenders:oe,onClose:()=>z(!1)})]})},I2=e=>es({path:{accountId:e}}),T2=e=>{const t=ye(),s=tn(),a=xe({...$0(),onSuccess:()=>{s.recordEvent("sync.triggered"),t.invalidateQueries({queryKey:I2(e)})}});return{trigger:()=>{a.mutate({path:{accountId:e}})},triggerAsync:()=>a.mutateAsync({path:{accountId:e}}),isPending:a.isPending,error:a.error,reset:a.reset}},R2=({accountId:e,children:t})=>{const{triggerAsync:s,isPending:a}=T2(e);return n.jsx(q1,{onRefresh:s,isRefreshing:a,children:t})};function M2({accountId:e,currentMailboxId:t,candidates:s,onMove:a,children:r}){const[o,i]=c.useState(!1),l=tn(),{t:u}=Gn("mail",{useSuspense:!1}),d=c.useCallback((y,k)=>u(y,{defaultValue:k}),[u]),{inboxMailboxId:m}=to(e),f=uu(e),{data:h}=ce({...He({path:{accountId:e}}),staleTime:1/0}),b=c.useMemo(()=>{const y=ma(h?.items??[],f),k=Ns(f);return y.map(w=>({id:w.mailboxId,label:ys(w,k.get(w.mailboxId),d),searchValue:w.fullPath,isCurrent:w.mailboxId===t}))},[h?.items,f,t,d]),v=c.useMemo(()=>m||(b.find(k=>k.label.toLowerCase()==="inbox")?.id??b.find(k=>!k.isCurrent)?.id??""),[m,b]),p=c.useRef(!1);c.useEffect(()=>{p.current||(p.current=!0,Xx(l,s.length))},[l,s.length]);const x=c.useCallback(()=>{Jx(l,s.length),i(!0)},[l,s.length]),g=c.useCallback((y,k)=>{Zx(l,{selected:y.length,total:s.length,toInbox:k===m}),a(y,k)},[l,s.length,m,a]);return n.jsxs("div",{className:"relative flex h-full min-h-0 flex-col",children:[n.jsx("div",{className:"shrink-0 px-row-inset pt-2",children:n.jsx(U1,{count:s.length,onReview:x})}),n.jsx("div",{className:"min-h-0 flex-1",children:r}),n.jsx(eh,{open:o,candidates:s,defaultDestinationId:v,availableFolders:b,onConfirmMove:g,onCancel:()=>i(!1)})]})}const z2="We can verify this sender";function A2(e){const{data:t}=ce({...F0({path:{mailboxId:e??""},query:{senderTrust:["vip","wellknown"],dkimMismatch:!1,results:!0,limit:500}}),enabled:!!e,staleTime:6e4});return{candidates:(t?.items??[]).map(a=>({id:a.messageId,senderName:a.fromName||a.fromEmail||"Unknown sender",senderAddress:a.fromEmail??"",subject:a.subject||"(no subject)",snippet:a.snippet??"",trustReason:z2,trustSubReason:Gx(a.senderTrust),senderTrust:a.senderTrust}))}}const D2=e=>{const t=new Set,s=[];for(const a of e)t.has(a.threadMessageId)||(t.add(a.threadMessageId),s.push(a));return s},Td="remit:intelligence-open";function O2(){try{return localStorage.getItem(Td)!=="closed"}catch{return!0}}function cl(e){try{localStorage.setItem(Td,e?"open":"closed")}catch{}}const P2=(e,t)=>e!==t,L2=(e,t,s)=>{if(!(s||!t))return e.find(a=>a.messageId===t)},$2={unread:e=>!e.isRead,flagged:e=>e.hasStars===!0,attachment:e=>!!e.hasAttachment};function F2(e,t,s){const a=Array.from(s).map(r=>$2[r]).filter(r=>r!=null);return t==="all"&&a.length===0?e:e.filter(r=>(t==="all"||r.category===t)&&a.every(o=>o(r)))}const Rd=c.createContext(null);function pa(){const e=c.useContext(Rd);if(!e)throw new Error("MailboxPane.* must be used inside <MailboxPane>");return e}function _2({mailboxId:e,selectedMessageId:t,children:s}){const a=ze(),o=fa()==="desktop",i=tn(),{accounts:l,searchQuery:u,searchInput:d,intelligenceOpen:m,onToggleIntelligence:f,onSetIntelligenceOpen:h}=je(),b=zs(),v=oo(u),p=v.length>0,{freeText:x,tokens:g}=As(v,b),y=g.find(Q=>Q.type==="from"),k={order:"desc",...x?{query:x}:{},...y?{from:y.value}:{},...g.some(Q=>Q.type==="hasAttachment")?{attachments:!0}:{},...g.some(Q=>Q.type==="isUnread")?{unread:!0}:{}},w=p?Tl({path:{mailboxId:e},query:k}):Rr({path:{mailboxId:e},query:{order:"desc"}}),{data:E,isLoading:T,isError:C,error:S,refetch:D,fetchNextPage:z,hasNextPage:A,isFetchingNextPage:P}=qc({queryKey:w,queryFn:async({pageParam:Q})=>{if(p){const{data:De}=await Dl({path:{mailboxId:e},query:{...k,continuationToken:Q},throwOnError:!0});return De}const{data:tt}=await q0({path:{mailboxId:e},query:{order:"desc",continuationToken:Q},throwOnError:!0});return tt},initialPageParam:void 0,getNextPageParam:Q=>Q.continuationToken,enabled:p?v.length>0:!0,placeholderData:_0}),I=c.useCallback(Q=>{t&&Q.includes(t)&&a({to:"/mail/$mailboxId",params:{mailboxId:e},search:tt=>({...tt,selectedMessageId:void 0,selectedThreadId:void 0})})},[t,e,a]),{deleteMessages:j,isPending:M}=Xt({mailboxId:e,onAfterOptimisticRemove:I}),{accountId:$}=lu(e),R=Jc({accounts:l}),{moveMessages:O,isPending:N}=Gt({mailboxId:e,accountId:$,onAfterOptimisticRemove:I}),L=eb(D2(E?.pages.flatMap(Q=>Q.items??[])??[])),[_,q]=c.useState("all"),[X,ee]=c.useState(new Set),Y=c.useMemo(()=>F2(L,_,X),[L,_,X]),fe=c.useCallback(Q=>{q(Q)},[]),ue=c.useCallback(Q=>{ee(tt=>{const De=new Set(tt);return De.has(Q)?De.delete(Q):De.add(Q),De})},[]),te=c.useCallback(()=>{q("all"),ee(new Set)},[]),U=P2(d,u),K=L2(L,t,U),{selectedThreadId:ae}=ws({strict:!1}),Pe=c.useMemo(()=>cd(K,{messageId:t,threadId:U?void 0:ae,mailboxId:e}),[K,t,ae,U,e]),Te=mo(),{listCommandsRef:V,onTriageContextChange:J,focusedMessageId:re,selectedIds:de}=Te,B=Y.find(Q=>Q.messageId===re)??K,We=c.useRef(null);c.useEffect(()=>{const Q=K?.messageId??null;Q&&We.current!==Q&&K?.authenticity?.dkimMismatch&&(We.current=Q,m||f())},[K?.messageId,K?.authenticity?.dkimMismatch,m,f]);const Le=c.useRef(!1);c.useEffect(()=>{Le.current||o&&K?.messageId&&(Le.current=!0,O2()&&!m&&h(!0))},[o,K?.messageId,m,h]);const ke=tp({accounts:l})??L.filter(Q=>!Q.isRead).length,Ve=ye(),{pushError:ns}=Je(),$e=Js({thread:K,mailboxId:e,accountId:$,onAfterOptimisticRemove:I}),{draftsMailboxId:Ze}=Jp($),Fe=Ze!==void 0&&Ze===e,{archiveMailboxId:_e}=Xp($),dt=ld(),{requestCompose:Ne}=$e,as=c.useCallback(()=>{Ne("reply")},[Ne]),qe=c.useCallback(()=>{Ne("reply_all")},[Ne]),_t=c.useCallback(()=>{Ne("forward")},[Ne]),{state:Se,openCompose:Be,closeCompose:mt}=zt(),rs=c.useCallback(()=>{Be({mode:"new"})},[Be]),qt=xe({...Jn(),onError:Q=>{ns(Yt("Couldn't discard draft","The draft wasn't deleted.",Q))}}),Z=c.useCallback(()=>{const Q=Se.outboxMessageId;Q&&(qt.mutate({path:{outboxMessageId:Q}}),Ve.invalidateQueries({queryKey:Ar()}),mt())},[Se.outboxMessageId,qt,Ve,mt]),ie=c.useCallback(()=>{a({to:"/mail/$mailboxId",params:{mailboxId:e},search:Q=>({...Q,selectedMessageId:void 0,selectedThreadId:void 0})})},[e,a]),ne=c.useCallback(Q=>Q?dt(Q):[],[dt]),{toggleStar:oe}=Zr({threadId:B?.threadId??"",mailboxId:e}),{toggleReadFor:he}=ia({mailboxId:e,accountId:$}),{junkMailboxId:me}=ua($),ve=me!=null&&me===e,{candidates:Ae}=A2(ve?me:void 0),{moveMessages:Re}=Gt({mailboxId:e,threadId:B?.threadId,accountId:$,onAfterOptimisticRemove:I}),{deleteMessages:Ke}=Xt({mailboxId:e,threadId:B?.threadId,onAfterOptimisticRemove:I}),{addressId:Me,address:Ee}=ad(B),{updateFlags:Qe}=rd({addressId:Me,senderEmail:B?.fromEmail??void 0}),Ye=c.useCallback(()=>t||!re?!1:(a({to:"/mail/$mailboxId",params:{mailboxId:e},search:Q=>({...Q,selectedMessageId:re})}),!0),[t,re,e,a]),et=c.useCallback(()=>{Ye()||K&&Ne("reply")},[Ye,K,Ne]),Bt=c.useCallback(()=>{Ye()||K&&Ne("reply_all")},[Ye,K,Ne]),ba=c.useCallback(()=>{Ye()||K&&Ne("forward")},[Ye,K,Ne]),yt=c.useCallback(()=>de.length>0?de:ne(B),[de,ne,B]),gn=c.useCallback(()=>{if(V.current?.requestDelete())return;const Q=yt();Q.length>0&&Ke(Q)},[V,yt,Ke]),os=c.useCallback(()=>{if(!me)return;const Q=yt();Q.length!==0&&(id(i,{count:Q.length,senderTrust:B?.senderTrust??"unknown",wasRescuable:B?od(B):!1}),Re(Q,me))},[me,yt,Re,i,B]),xa=c.useCallback(()=>{if(de.length>0){const Q=!(B?.hasStars??!1),tt=new Set(de);for(const De of Y)tt.has(De.messageId)&&De.hasStars!==Q&&oe(De.messageId,De.hasStars);return}B&&oe(B.messageId,B.hasStars)},[de,Y,B,oe]),Kt=c.useCallback(()=>{const Q=yt();if(Q.length===0)return;const tt=!(B?.isRead??!1);he(Q,tt)},[yt,B,he]),va=c.useCallback(()=>{if(!Me)return;const Q=Ee?.flags?.muted?.value!==!0;Qe({muted:{value:Q}})},[Me,Ee,Qe]),ya=c.useCallback(()=>{if(!Me)return;const Q=Ee?.flags?.vip?.value!==!0;Qe({vip:{value:Q}})},[Me,Ee,Qe]),ka=c.useCallback(()=>{m||f()},[m,f]),kt=c.useCallback(Q=>{a({to:Q})},[a]),Os=Fe?"drafts":_e===e?"archive":me===e?"junk":"inbox",pn=c.useRef("");c.useEffect(()=>{const Q=pn.current;pn.current=v,v.length>0&&Q.length===0&&i.recordEvent("search.submitted",{mailboxType:Os})},[v,Os,i]);const wa=Fe&&Se.isOpen&&!!Se.outboxMessageId&&!K,{goBack:bn,nextMessageId:xn,previousMessageId:vn}=fo({context:Te,orderedIds:Y.map(Q=>Q.messageId),selectedMessageId:t,enabled:!Se.isOpen,onClose:ie,handlers:{reply:et,replyAll:Bt,forward:ba,delete:gn,toggleStar:xa,toggleRead:Kt,muteSender:va,blockSender:ka,vipSender:ya,markJunk:os,toggleIntelligence:K?f:void 0,compose:rs,goBrief:()=>kt("/mail"),goInbox:()=>kt("/mail"),goSent:()=>kt("/mail"),goFlagged:()=>kt("/mail/flagged"),goSettings:()=>kt("/settings")}});Xr({enabled:Se.isOpen,bindings:[{key:"Escape",handler:mt,preventDefault:!0}]});const ja={mailboxId:e,selectedMessageId:t,selectedThread:K,conversation:Pe,threads:Y,isLoading:T,isError:C,error:S,mailboxAccountId:$,mailboxName:R,unreadCount:ke,isDraftsMailbox:Fe,isSpamFolder:ve,rescueCandidates:Ae,filterCategory:_,filterAttributes:X,onSelectFilterCategory:fe,onToggleFilterAttribute:ue,onClearFilters:te,intelligenceOpen:m,onToggleIntelligence:f,searchPredicate:p?k:void 0,onDeleteMessages:j,onMoveMessages:O,isDeleting:M,isMoving:N,onLoadMore:z,hasMore:A,isLoadingMore:P,onTriageContextChange:J,listCommandsRef:V,onRetry:()=>D(),toolbarComposeRequest:$e.composeRequest,onToolbarReply:as,onToolbarReplyAll:qe,onToolbarForward:_t,onClearComposeRequest:$e.clearComposeRequest,onToolbarDelete:$e.deleteThread,onToolbarStar:$e.toggleStar,onToolbarDiscardDraft:Z,onToolbarMove:$e.moveThread,composeState:Se,closeCompose:mt,hasRemitDraftOpen:wa,onBack:bn,nextMessageId:xn,previousMessageId:vn};return n.jsx(Rd.Provider,{value:ja,children:s})}function Md(){const{mailboxId:e,selectedMessageId:t,threads:s,isLoading:a,isError:r,error:o,onDeleteMessages:i,onMoveMessages:l,isDeleting:u,isMoving:d,onLoadMore:m,hasMore:f,isLoadingMore:h,mailboxAccountId:b,mailboxName:v,unreadCount:p,isDraftsMailbox:x,isSpamFolder:g,rescueCandidates:y,onTriageContextChange:k,listCommandsRef:w,onRetry:E,filterCategory:T,filterAttributes:C,onSelectFilterCategory:S,onToggleFilterAttribute:D,onClearFilters:z,searchPredicate:A}=pa(),{searchQuery:P,searchInput:I,accounts:j,resultFolderIndex:M}=je(),$=fa(),R=ze(),O=v??"Inbox",N=c.useMemo(()=>ch(),[]),L=c.useMemo(()=>s.map(U=>xx(U,M)),[s,M]),{hits:_,isLoading:q}=qu({mailboxId:e,filterCategory:T}),X=c.useMemo(()=>Hu(_,s.map(U=>U.threadId),M),[_,s,M]),ee=c.useCallback(U=>R({to:"/mail/$mailboxId",params:{mailboxId:U.mailboxId??e},search:K=>({...K,q:I||void 0,selectedMessageId:U.id,selectedThreadId:U.threadId})}),[e,R,I]);if(x&&b)return n.jsx(Lv,{mailboxId:e,accountId:b,selectedMessageId:t,imapThreads:s,title:v??"Drafts",unreadCount:p??void 0});const Y=n.jsx(E2,{mailboxId:e,threads:s,selectedMessageId:t,isLoading:a,isError:r,error:o,onRetry:E,searchQuery:P,searchPredicate:A,onDeleteMessages:i,onMoveMessages:l,isDeleting:u,isMoving:d,onLoadMore:m,hasMore:f,isLoadingMore:h,accountId:b,listTitle:O,hideHeader:!0,onTriageContextChange:k,commandsRef:w}),fe=j[0]?.accountId,ue=$==="phone"&&fe?n.jsx(R2,{accountId:fe,children:Y}):Y,te=g&&y.length>0&&b?n.jsx(M2,{accountId:b,currentMailboxId:e,candidates:y,onMove:l,children:ue}):ue;return n.jsx(fd,{title:O,unreadCount:p,preset:N,selectedCategory:T,activeFilters:C,onSelectCategory:S,onToggleFilter:D,onClearFilters:z,searchResults:L,searchLoading:a,relatedResults:X,relatedLoading:q,onSelectSearchResult:ee,searchResultsInBody:!0,children:te})}function q2(){const{mailboxId:e,mailboxAccountId:t,selectedThread:s,conversation:a,hasRemitDraftOpen:r,intelligenceOpen:o,onToggleIntelligence:i,toolbarComposeRequest:l,onToolbarReply:u,onToolbarReplyAll:d,onToolbarForward:m,onClearComposeRequest:f,onToolbarDelete:h,onToolbarStar:b,onToolbarDiscardDraft:v,onToolbarMove:p,composeState:x}=pa(),g=Es()?.showIntelligencePane??!1,y=!!a,k=g&&y,w=x.isOpen&&!a?n.jsx(pd,{}):a?n.jsx(Ms,{threadId:a.threadId,mailboxId:a.mailboxId,subject:a.subject,selectedMessageId:a.messageId,authenticity:a.authenticity,onOpenIntelligence:a.authenticity?.dkimMismatch?i:void 0,composeRequest:l,onComposeClose:f}):n.jsx(Rs,{});return n.jsxs("section",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[n.jsx(uo,{hasThread:y,intelligenceOpen:k&&o,canToggleIntelligence:k,onToggleIntelligence:i,onReply:y?u:void 0,onReplyAll:y?d:void 0,onForward:y?m:void 0,canDelete:y||r,onDelete:y?h:r?v:void 0,onToggleStar:y?b:void 0,isStarred:s?.hasStars,moveContext:y&&t?{accountId:t,currentMailboxId:e,onMove:p}:void 0}),n.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:w})]})}function B2(){const{mailboxId:e,mailboxAccountId:t,selectedThread:s,onToggleIntelligence:a}=pa();return n.jsx(Ds,{onClose:a,thread:s,mailboxId:e,accountId:t})}function K2(){const{mailboxId:e,selectedThread:t,conversation:s,intelligenceOpen:a,onToggleIntelligence:r,onBack:o,nextMessageId:i,previousMessageId:l,composeState:u}=pa(),d=ze();if(s){const m=f=>d({to:"/mail/$mailboxId",params:{mailboxId:e},search:h=>({...h,selectedMessageId:f,selectedThreadId:void 0})});return n.jsxs(n.Fragment,{children:[n.jsx(Ms,{threadId:s.threadId,mailboxId:s.mailboxId,subject:s.subject,selectedMessageId:s.messageId,authenticity:s.authenticity,onBack:o,onOpenIntelligence:r,onSwipeNext:i?()=>m(i):void 0,onSwipePrevious:l?()=>m(l):void 0,mobileIntelligenceOpen:a}),n.jsx(Yr,{isOpen:a,onClose:r,ariaLabel:"Message details",side:"right",children:n.jsx(Ds,{onClose:r,thread:t,hideCloseButton:!0})})]})}return u.isOpen?n.jsx("div",{className:"h-full",children:n.jsx(pd,{})}):n.jsx(Md,{})}const Us=Object.assign(_2,{List:Md,Reading:q2,Intelligence:B2,Phone:K2}),zd=e=>e==="failed"||e==="blocked",Ad=e=>e!=="draft"&&e!=="sent",bo="remit.savedSearches",U2=25;function Qn(){try{const e=localStorage.getItem(bo);if(!e)return[];const t=JSON.parse(e);return Array.isArray(t)?t.filter(s=>typeof s=="string"):[]}catch{return[]}}function H2(e){const t=e.trim();if(!t)return Qn();const s=[t,...Qn().filter(a=>a!==t)].slice(0,U2);try{localStorage.setItem(bo,JSON.stringify(s))}catch{return s}return s}function W2(e){const t=Qn().filter(s=>s!==e);try{localStorage.setItem(bo,JSON.stringify(t))}catch{return t}return t}const ul=e=>/^\d/.test(e),V2=(e,t)=>{const s=ul(e),a=ul(t);return s&&!a?-1:!s&&a?1:e.localeCompare(t,void 0,{sensitivity:"base",numeric:!0})};function Q2(e,t,s){const a=[],r=[];for(const o of e)t.has(o.mailboxId)?a.push(o):r.push(o);return r.sort((o,i)=>V2(ys(o,void 0,s),ys(i,void 0,s))),{system:a,labels:r}}function Y2(e,t,s){const a=B0(t)&&e.unseenCount>0;return{id:e.mailboxId,name:ys(e,t,s),unseen:a?e.unseenCount:void 0,role:t,fullPath:e.fullPath}}function G2(){const e=ra(),t=Tr({strict:!1});return e.pathname.startsWith("/settings")?"settings":e.pathname.startsWith("/mail/outbox")?"outbox":e.pathname.startsWith("/mail/flagged")?"flagged":t.mailboxId?t.mailboxId:e.pathname==="/mail"||e.pathname==="/mail/"?"brief":""}function dl({accounts:e,onMailboxSelect:t,variant:s="desktop"}){const a=ye(),r=ze(),o=G2(),{searchInput:i,onSearchChange:l}=je(),[u,d]=c.useState(Qn),{t:m}=Gn("mail",{useSuspense:!1}),f=c.useCallback((S,D)=>m(S,{defaultValue:D}),[m]),h=Pt({queries:e.map(S=>({...He({path:{accountId:S.accountId}}),staleTime:1/0}))}),{data:b}=ce(Xn()),v=c.useMemo(()=>(b?.items??[]).filter(S=>Ad(S.status)).length,[b?.items]),p=c.useMemo(()=>e.map((S,D)=>{const z=h[D],A=z?.data?.items??[],P=Ns(S.folderAppointments),{system:I,labels:j}=Q2(A,P,f),M=z?.isError?"error":z?.isLoading?"loading":"ready";return{id:S.accountId,label:S.email,email:S.email,muted:!!S.muted,outboxPending:v,status:M,onRetry:()=>z?.refetch(),mailboxes:[...I,...j].map($=>Y2($,P.get($.mailboxId),f))}}),[e,h,v,f]),x=S=>{a.invalidateQueries({queryKey:Rr({path:{mailboxId:S},query:{order:"desc"}})})},g=({navId:S,className:D,ariaLabel:z,title:A,children:P,onClick:I})=>S==="brief"?n.jsx(ht,{to:"/mail",search:{q:void 0,selectedMessageId:void 0},onClick:()=>I?.(),className:D,"aria-label":z,title:A,children:P}):S==="outbox"?n.jsx(ht,{to:"/mail/outbox",search:{q:void 0,selectedOutboxMessageId:void 0},onClick:()=>I?.(),className:D,"aria-label":z,title:A,children:P}):S==="flagged"?n.jsx(ht,{to:"/mail/flagged",search:{q:void 0,selectedMessageId:void 0},onClick:()=>I?.(),className:D,"aria-label":z,title:A,children:P}):S==="settings"?n.jsx(ht,{to:"/settings/accounts",onClick:()=>I?.(),className:D,"aria-label":z,title:A,children:P}):n.jsx(ht,{to:"/mail/$mailboxId",params:{mailboxId:S},search:{q:void 0,selectedMessageId:void 0},onClick:()=>{x(S),I?.()},className:D,"aria-label":z,title:A,children:P}),y=()=>{l(""),t?.()},k=i.trim(),w=k.length>0&&!u.includes(k)?k:void 0,E=c.useCallback(()=>{w&&d(H2(w))},[w]),T=c.useCallback(S=>{d(W2(S))},[]),C=c.useCallback(S=>{l(S),r({to:"/mail",search:{q:S,selectedMessageId:void 0}}),t?.()},[l,r,t]);return n.jsx(i1,{accounts:p,selectedNavId:o,onSelectNav:y,linkComponent:g,variant:s,savedSearches:u,saveableQuery:w,onSaveCurrentSearch:E,onSelectSavedSearch:C,onRemoveSavedSearch:T})}function X2({accounts:e,onMailboxSelect:t}){return Es()?.showNavPane??!0?n.jsx(dl,{accounts:e}):n.jsxs("div",{className:"flex h-full flex-col",children:[n.jsx("div",{className:"flex-1 overflow-y-auto",children:n.jsx(dl,{accounts:e,onMailboxSelect:t,variant:"drawer"})}),n.jsxs("div",{className:"border-t border-line px-2 py-2",children:[n.jsxs(ht,{to:"/settings/accounts",onClick:t,className:"flex w-full items-center gap-2 rounded-md px-2 py-1 text-sm text-fg-muted transition-colors hover:bg-surface hover:text-fg",children:[n.jsx(_r,{className:"size-4 shrink-0"}),n.jsx("span",{className:"flex-1 truncate text-left",children:"Settings"})]}),n.jsx(Hc,{variant:"drawer"}),n.jsx(Uc,{children:({signOut:r})=>n.jsxs("button",{type:"button",onClick:()=>{t?.(),r()},className:"flex min-h-11 w-full items-center gap-2 rounded-md px-2 py-1 text-sm text-fg-muted transition-colors hover:bg-surface hover:text-fg","data-testid":"sign-out-button",children:[n.jsx(ac,{className:"size-4 shrink-0"}),n.jsx("span",{className:"flex-1 truncate text-left",children:"Sign out"})]})})]})]})}function J2(e,t){const s=t.trim().toLowerCase();if(s.length===0)return!0;const a=[e.subject,e.fromAddress,e.fromName,...e.toAddresses??[],...e.ccAddresses??[]].filter(r=>typeof r=="string").join(" ").toLowerCase();return s.split(/\s+/).every(r=>r.length===0||a.includes(r))}function Z2(e){return e.tokens.length>0&&e.freeText.trim().length===0}const Dd={queued:{icon:Fr,label:"Queued",className:"text-warning"},sending:{icon:ut,label:"Sending…",className:"text-accent-2"},sent:{icon:Zl,label:"Sent",className:"text-positive"},failed:{icon:Jt,label:"Failed",className:"text-danger"},blocked:{icon:kr,label:"Blocked",className:"text-warning"}},ek=e=>em(e).toDateString()===new Date().toDateString()?Fn(e,{hour:"numeric",minute:"2-digit"}):Fn(e,{month:"short",day:"numeric"}),ml=e=>Fn(e,{dateStyle:"medium",timeStyle:"short"}),tk=e=>{const t=e.toAddresses??[];return t.length===0?"No recipients":t.length===1?t[0]:`${t[0]} +${t.length-1}`},Od=(e,t)=>t?"The outbox cannot filter on those terms":e?"No matching outbox messages":"No outbox messages",Pd=c.createContext(null);function xo(){const e=c.useContext(Pd);if(!e)throw new Error("OutboxPane.* must be used inside <OutboxPane>");return e}function sk({children:e}){const t=ze(),{selectedOutboxMessageId:s}=ws({strict:!1}),{data:a,isLoading:r}=ce(Xn()),{searchQuery:o}=je(),i=zs(),l=oo(o),u=As(l,i),d=l.length>0,m=Z2(u),f=c.useMemo(()=>m?[]:(a?.items??[]).filter(p=>Ad(p.status)).filter(p=>J2(p,u.freeText)),[a,u.freeText,m]),h=c.useMemo(()=>f.find(p=>p.outboxMessageId===s),[f,s]),b=c.useCallback(p=>{t({to:"/mail/outbox",search:x=>({...x,selectedOutboxMessageId:p})})},[t]),v={messages:f,hasQuery:d,unsupportedQuery:m,isLoading:r,selectedMessageId:s,selectedMessage:h,onSelectMessage:b};return n.jsx(Pd.Provider,{value:v,children:e})}function Ld({message:e,isSelected:t,onSelect:s}){const a=ye(),{openCompose:r}=zt(),{pushError:o}=Je(),i=c.useCallback(()=>{a.invalidateQueries({queryKey:Ar()})},[a]),l=xe({...Il(),onSuccess:i,onError:f=>{o(Yt("Couldn't resend message","The message wasn't sent.",f))}}),u=xe({...Jn(),onSuccess:i,onError:f=>{o(Yt("Couldn't delete message","The message wasn't deleted.",f))}}),d=e.status;if(!Dd[d])return null;const m=zd(e.status);return n.jsx(F1,{recipients:tk(e),subject:e.subject||"",time:ek(e.sentAt??e.updatedAt),status:d,error:m?e.lastError??void 0:void 0,selected:t,onSelect:s,onRetry:d==="failed"?()=>l.mutate({path:{outboxMessageId:e.outboxMessageId}}):void 0,retrying:l.isPending,onEdit:()=>r({mode:"new",outboxMessageId:e.outboxMessageId}),onDelete:()=>u.mutate({path:{outboxMessageId:e.outboxMessageId}}),deleting:u.isPending})}function $d({message:e,onBack:t}){const s=e.status,a=Dd[s],r=a?.icon??en,o=e.sentAt?ml(e.sentAt):ml(e.updatedAt);return n.jsxs("div",{className:"h-full overflow-y-auto bg-canvas",children:[n.jsxs("div",{className:"border-b border-line p-4",children:[t&&n.jsxs("button",{type:"button",onClick:t,className:"mb-3 inline-flex items-center gap-1 text-sm text-fg-muted hover:text-fg",children:[n.jsx(Xl,{className:"size-4"}),n.jsx("span",{children:"Back"})]}),n.jsx("h1",{className:"text-xl font-semibold mb-3",children:e.subject||"(No subject)"}),n.jsxs("div",{className:"space-y-1 text-sm",children:[n.jsxs("div",{className:"flex gap-2",children:[n.jsx("span",{className:"text-fg-muted shrink-0 w-12",children:"From:"}),n.jsx("span",{className:"text-fg",children:e.fromName?`${e.fromName} <${e.fromAddress}>`:e.fromAddress})]}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx("span",{className:"text-fg-muted shrink-0 w-12",children:"To:"}),n.jsx("span",{className:"text-fg",children:(e.toAddresses??[]).join(", ")})]}),e.ccAddresses&&e.ccAddresses.length>0&&n.jsxs("div",{className:"flex gap-2",children:[n.jsx("span",{className:"text-fg-muted shrink-0 w-12",children:"Cc:"}),n.jsx("span",{className:"text-fg",children:e.ccAddresses.join(", ")})]}),n.jsxs("div",{className:"flex gap-2",children:[n.jsx("span",{className:"text-fg-muted shrink-0 w-12",children:"Date:"}),n.jsx("span",{className:"text-fg",children:o})]}),a&&n.jsxs("div",{className:"flex items-center gap-2 pt-2",children:[n.jsx(r,{className:ge("size-4",a.className,s==="sending"&&"animate-spin")}),n.jsx("span",{className:ge("text-xs font-medium",a.className),children:a.label}),zd(e.status)&&e.lastError&&n.jsxs("span",{className:"text-xs text-fg-muted",children:["— ",e.lastError]})]})]})]}),n.jsx("div",{className:"p-4",children:n.jsx($u,{html:e.htmlBody,text:e.textBody})})]})}function nk(){const{messages:e,hasQuery:t,unsupportedQuery:s,isLoading:a,selectedMessageId:r,onSelectMessage:o}=xo(),i=c.useRef(null);return Yn({containerRef:i,itemSelector:xr}),a?n.jsx("div",{className:"flex h-full items-center justify-center bg-canvas",children:n.jsx("span",{className:"text-fg-muted",children:"Loading..."})}):e.length===0?n.jsx("div",{className:"flex h-full bg-surface",children:n.jsx(Rs,{message:Od(t,s),showHints:!1})}):n.jsxs("div",{className:"h-full flex flex-col bg-canvas",children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line px-row-inset",children:[n.jsx(ho,{}),n.jsx("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:"Outbox"}),n.jsxs("span",{className:"shrink-0 text-2xs text-fg-subtle",children:[e.length," ",e.length===1?"message":"messages"]})]}),n.jsx("div",{ref:i,className:"flex-1 overflow-y-auto",children:e.map(l=>n.jsx(Ld,{message:l,isSelected:r===l.outboxMessageId,onSelect:()=>o(l.outboxMessageId)},l.outboxMessageId))})]})}function ak(){const{selectedMessage:e}=xo();return n.jsxs("section",{className:"flex h-full w-full min-w-0 flex-col bg-canvas",children:[n.jsx("header",{className:"flex h-pane-header shrink-0 items-center border-b border-line px-3"}),n.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:e?n.jsx($d,{message:e}):n.jsx(Rs,{message:"Select a message to read",showHints:!1})})]})}function rk(){const{messages:e,hasQuery:t,unsupportedQuery:s,isLoading:a,selectedMessageId:r,selectedMessage:o,onSelectMessage:i}=xo(),l=c.useRef(null);return Yn({containerRef:l,itemSelector:xr}),a?n.jsx("div",{className:"flex h-full items-center justify-center bg-canvas",children:n.jsx("span",{className:"text-fg-muted",children:"Loading..."})}):o?n.jsx($d,{message:o,onBack:()=>i(void 0)}):e.length===0?n.jsx("div",{className:"flex h-full bg-surface",children:n.jsx(Rs,{message:Od(t,s),showHints:!1})}):n.jsxs("div",{className:"h-full flex flex-col bg-canvas",children:[n.jsxs("header",{className:"flex h-pane-header shrink-0 items-center gap-2 border-b border-line px-row-inset",children:[n.jsx(ho,{}),n.jsx("h1",{className:"min-w-0 flex-1 truncate text-sm font-semibold text-fg",children:"Outbox"}),n.jsxs("span",{className:"shrink-0 text-2xs text-fg-subtle",children:[e.length," ",e.length===1?"message":"messages"]})]}),n.jsx("div",{ref:l,className:"flex-1 overflow-y-auto",children:e.map(u=>n.jsx(Ld,{message:u,isSelected:r===u.outboxMessageId,onSelect:()=>i(u.outboxMessageId)},u.outboxMessageId))})]})}const Mn=Object.assign(sk,{List:nk,Reading:ak,Phone:rk}),ok=({isOpen:e,onClose:t})=>{const s=c.useCallback(a=>{a.key==="Escape"&&(a.preventDefault(),t())},[t]);return c.useEffect(()=>{if(e)return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[e,s]),e?n.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center",role:"dialog","aria-modal":"true","aria-label":"Keyboard shortcuts",onClick:t,onKeyDown:a=>a.key==="Escape"&&t(),children:[n.jsx("div",{className:"absolute inset-0 bg-canvas/80 backdrop-blur-sm"}),n.jsxs("div",{className:ge("relative z-10 max-h-[85vh] w-full max-w-2xl overflow-y-auto","rounded-lg border border-line bg-surface shadow-lg","p-6"),onClick:a=>a.stopPropagation(),onKeyDown:a=>{a.key!=="Escape"&&a.stopPropagation()},children:[n.jsxs("div",{className:"mb-6 flex items-center justify-between",children:[n.jsx("h2",{className:"text-lg font-semibold",children:"Keyboard shortcuts"}),n.jsx("button",{type:"button",onClick:t,className:"p-1 text-fg-muted transition-colors hover:text-fg","aria-label":"Close",children:n.jsx(Ue,{className:"size-5"})})]}),n.jsx("div",{className:"grid gap-x-8 gap-y-6 sm:grid-cols-2",children:eu.map(a=>n.jsxs("div",{children:[n.jsx("h3",{className:"mb-3 text-sm font-medium text-fg-muted",children:a.title}),n.jsx("div",{className:"space-y-2",children:a.hints.map(r=>n.jsxs("div",{className:"flex items-center justify-between gap-4",children:[n.jsx("span",{className:"text-sm",children:r.description}),n.jsx("span",{className:"flex shrink-0 items-center gap-1",children:r.keys.map((o,i)=>n.jsxs(c.Fragment,{children:[i>0&&r.keys[0]==="g"&&n.jsx("span",{className:"text-2xs text-fg-subtle",children:"then"}),n.jsx(bs,{children:o})]},o))})]},`${r.action}-${r.keys.join("+")}`))})]},a.title))}),n.jsx("div",{className:"mt-6 border-t border-line pt-4",children:n.jsxs("p",{className:"text-center text-xs text-fg-muted",children:["Press ",n.jsx(bs,{children:"Esc"})," to close"]})})]})]}):null};function ik(e){const t=new Map;for(const s of e){const a=s.email.toLowerCase(),r=a.split("@")[0];r&&!t.has(r)&&t.set(r,s.accountId),t.has(a)||t.set(a,s.accountId)}return t}function lk(e){const t=new Map;for(const s of e)for(const a of s){const r=a.fullPath?.toLowerCase();if(!r)continue;const o=r.split("/").pop();t.has(r)||t.set(r,a.mailboxId),o&&!t.has(o)&&t.set(o,a.mailboxId)}return t}function ck(e){const t=Pt({queries:e.map(s=>({...He({path:{accountId:s.accountId}}),staleTime:1/0}))});return c.useMemo(()=>lk(t.map(s=>s.data?.items??[])),[t])}const uk=e=>e.map(t=>t.data?.items??[]);function dk(e){const t=Pt({queries:e.map(s=>({...He({path:{accountId:s.accountId}}),staleTime:1/0})),combine:uk});return c.useMemo(()=>K0(e.map((s,a)=>({folderAppointments:s.folderAppointments,mailboxes:t[a]??[]}))),[e,t])}var zn={exports:{}},fl;function mk(){if(fl)return zn.exports;fl=1;const e=(t,s,a)=>new Promise((r,o)=>{if(a=Object.assign({concurrency:1/0},a),typeof s!="function")throw new TypeError("Mapper function is required");const{concurrency:i}=a;if(!(typeof i=="number"&&i>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${i}\` (${typeof i})`);const l=[],u=t[Symbol.iterator]();let d=!1,m=!1,f=0,h=0;const b=()=>{if(d)return;const v=u.next(),p=h;if(h++,v.done){m=!0,f===0&&r(l);return}f++,Promise.resolve(v.value).then(x=>s(x,p)).then(x=>{l[p]=x,f--,b()},x=>{d=!0,o(x)})};for(let v=0;v<i&&(b(),!m);v++);});return zn.exports=e,zn.exports.default=e,zn.exports}var fk=mk();const hk=U0(fk),gk=900*1e3,pk=300,bk=(e,t)=>{if(!e)return t;const s=Number.parseInt(e,10);return Number.isFinite(s)&&s>0?s:t},xk=60*1e3,vk=e=>Math.max(bk(e,pk)*1e3,xk),$n=vk(V0().mailboxPollIntervalSeconds),yk=5,pr=new Set,kk=(e,t,s=gk)=>e.filter(a=>{const r=a.lastSyncAt;return r==null?!0:t-r>s}).map(a=>a.accountId),wk=(e,t,s=$n)=>e-t>=s,jk=(e,t)=>e.filter(s=>!t.has(s)),hl=(e,t)=>{if(pr.delete(e),W0(t,{softError:!0})){Al(t);return}console.warn("[remit] background mailbox sync failed",{accountId:e,error:t})},gl=(e,t)=>H0({path:{accountId:e},throwOnError:!0}).then(()=>{t.invalidateQueries({queryKey:es({path:{accountId:e}})})}),Sk=e=>{const t=ye(),s=c.useRef(e);s.current=e;const a=e.map(r=>r.accountId).join(",");c.useEffect(()=>{const r=Date.now(),i=kk(s.current,r).filter(l=>!pr.has(l));if(i.length!==0)for(const l of i)pr.add(l),gl(l,t).catch(u=>{hl(l,u)})},[a,t]),c.useEffect(()=>{let r=Date.now(),o;const i=new Set,l=()=>{r=Date.now();const m=jk(s.current.map(f=>f.accountId),i);for(const f of m)i.add(f);hk(m,f=>gl(f,t).catch(h=>{hl(f,h)}).finally(()=>{i.delete(f)}),{concurrency:yk})},u=()=>{if(document.visibilityState==="visible"){l(),o=setTimeout(u,$n);return}},d=()=>{document.visibilityState==="visible"&&wk(Date.now(),r)&&(o!==void 0&&clearTimeout(o),l(),o=setTimeout(u,$n))};return o=setTimeout(u,$n),document.addEventListener("visibilitychange",d),()=>{o!==void 0&&clearTimeout(o),document.removeEventListener("visibilitychange",d)}},[a,t])};function Ck(e,t,s){if(e!==t)return s}function Nk(e,t){return e===""?"":t}function Ek(e,t,s){return t!==e?!1:t!==s}function Ik(){const{q:e=""}=ws({from:"/mail"}),t=ze(),s=fa(),a=Wu(s),[r,o]=c.useState(!1),[i,l]=c.useState(!1),[u,d]=c.useState(!1),m=c.useCallback(te=>{d(te),cl(te)},[]),[f,h]=c.useState(e),b=Pl(f,200),v=Nk(f,b),p=c.useRef(e);p.current=e;const x=gt({select:te=>Gg(te.matches)}),[g,y]=c.useState(x);if(g!==x){const te=Ck(g,x,e);y(x),te!==void 0&&h(te)}c.useEffect(()=>{Ek(f,v,p.current)&&t({to:".",search:te=>{const U=te.q===v;return{...te,q:v||void 0,...v&&!U?{selectedMessageId:void 0,selectedThreadId:void 0,selectedMailboxId:void 0}:{}}},replace:!0})},[f,v,t]);const{data:k,isLoading:w,isError:E,error:T,refetch:C}=ce({...xt(),staleTime:1/0}),S=!!(k&&(k.accounts?.length??0)===0);c.useEffect(()=>{S&&t({to:"/onboarding",replace:!0})},[S,t]),Xr({enabled:!r,bindings:[{key:"?",handler:()=>o(!0),noModifiers:!1,preventDefault:!0}]});const D=c.useCallback(te=>{h(te)},[]),z=c.useCallback(()=>{h("")},[]),A=c.useCallback(()=>{h("")},[]),P=c.useCallback(()=>{d(te=>{const U=!te;return cl(U),U})},[]),I=k?.accounts??[],j=ck(I),M=dk(I),$=c.useMemo(()=>ik(I),[I]),R=gt({select:te=>te.matches.find(K=>"mailboxId"in K.params)?.params.mailboxId}),{selectedMessageId:O}=ws({strict:!1}),N=gt({select:te=>Qr(te.matches)}),L=gt({select:te=>ln(te.matches)}),_=gt({select:te=>oa(te.matches)});Sk(I);const q=c.useCallback(()=>{l(!1)},[]),X={accounts:I,mailboxNameIndex:j,accountNameIndex:$,resultFolderIndex:M,searchQuery:v,searchInput:f,searchViewKey:x,onSearchChange:D,onSearchClear:z,onSearchClearQuery:A,intelligenceOpen:u,onToggleIntelligence:P,onSetIntelligenceOpen:m},ee=n.jsx(X2,{accounts:I,onMailboxSelect:q}),Y=a?n.jsx(Vg,{accounts:I}):void 0,fe=a?void 0:n.jsx(ap,{accounts:I}),ue={navOpen:i,onOpenNav:()=>l(!0),onCloseNav:()=>l(!1)};return n.jsxs(Q0.Provider,{value:X,children:[E?n.jsx("div",{className:"flex h-full items-center justify-center bg-canvas p-4",children:n.jsx(At,{title:"Couldn't load your account",error:T,onRetry:()=>{C()}})}):N?n.jsx(qs,{selectedMessageId:O,children:a?n.jsx(jt,{nav:ee,list:n.jsx(qs.Phone,{}),intelligenceOpen:u,overlay:Y,skeleton:n.jsx(ft,{}),isLoading:w||S,...ue}):n.jsx(jt,{nav:ee,topBar:fe,list:n.jsx(qs.List,{}),reading:n.jsx(qs.Reading,{}),intelligence:n.jsx(qs.Intelligence,{}),intelligenceOpen:u,hasThread:!!O,overlay:Y,skeleton:n.jsx(ft,{}),isLoading:w||S,...ue})}):L?n.jsx(Bs,{selectedMessageId:O,children:a?n.jsx(jt,{nav:ee,list:n.jsx(Bs.Phone,{}),intelligenceOpen:u,overlay:Y,skeleton:n.jsx(ft,{}),isLoading:w||S,...ue}):n.jsx(jt,{nav:ee,topBar:fe,list:n.jsx(Bs.List,{}),reading:n.jsx(Bs.Reading,{}),intelligence:n.jsx(Bs.Intelligence,{}),intelligenceOpen:u,hasThread:!!O,overlay:Y,skeleton:n.jsx(ft,{}),isLoading:w||S,...ue})}):R?n.jsx(Us,{mailboxId:R,selectedMessageId:O,children:a?n.jsx(jt,{nav:ee,list:n.jsx(Us.Phone,{}),intelligenceOpen:u,overlay:Y,skeleton:n.jsx(ft,{}),isLoading:w||S,...ue}):n.jsx(jt,{nav:ee,topBar:fe,list:n.jsx(Us.List,{}),reading:n.jsx(Us.Reading,{}),intelligence:n.jsx(Us.Intelligence,{}),intelligenceOpen:u,hasThread:!!O,overlay:Y,skeleton:n.jsx(ft,{}),isLoading:w||S,...ue})}):_?n.jsx(Mn,{children:a?n.jsx(jt,{nav:ee,list:n.jsx(Mn.Phone,{}),intelligenceOpen:!1,overlay:Y,skeleton:n.jsx(ft,{}),isLoading:w||S,...ue}):n.jsx(jt,{nav:ee,topBar:fe,list:n.jsx(Mn.List,{}),reading:n.jsx(Mn.Reading,{}),intelligenceOpen:!1,overlay:Y,skeleton:n.jsx(ft,{}),isLoading:w||S,...ue})}):n.jsx(ft,{}),n.jsx(ok,{isOpen:r,onClose:()=>o(!1)}),n.jsx(Y0,{})]})}const Kk=Object.freeze(Object.defineProperty({__proto__:null,component:Ik,useMailContext:je},Symbol.toStringTag,{value:"Module"}));export{Bk as S,tf as U,Kk as m};
|