diff --git a/frontend/dist/VERSION b/frontend/dist/VERSION index 72a8bb4c..f5895470 100644 --- a/frontend/dist/VERSION +++ b/frontend/dist/VERSION @@ -1 +1 @@ -0.9.302 +0.9.303 diff --git a/frontend/dist/assets/AnalyzerFilterPanel-BWsROE43.js b/frontend/dist/assets/AnalyzerFilterPanel-BUuyWAmX.js similarity index 96% rename from frontend/dist/assets/AnalyzerFilterPanel-BWsROE43.js rename to frontend/dist/assets/AnalyzerFilterPanel-BUuyWAmX.js index 903ff320..dc2c911e 100644 --- a/frontend/dist/assets/AnalyzerFilterPanel-BWsROE43.js +++ b/frontend/dist/assets/AnalyzerFilterPanel-BUuyWAmX.js @@ -1,4 +1,4 @@ -import{d as U,a6 as J,R as q,bY as G,r as d,j as n,bk as K,B as Y}from"./index-BOwCLZTK.js";import{c as Q}from"./node-types-C6okL8rE.js";import{M as V}from"./monitor-smartphone-Dd11JEL9.js";import{C as Z}from"./circle-question-mark-XDnZ1ChV.js";import{F as W}from"./funnel-CWx99rlN.js";import{S as ee}from"./search-Ba9CRHru.js";/** +import{d as U,a8 as J,R as q,c0 as G,r as d,j as n,bo as K,B as Q}from"./index-CvSa8h-C.js";import{c as V}from"./node-types-BJsOTMm_.js";import{M as Y}from"./monitor-smartphone-D-7zPu_H.js";import{C as Z}from"./circle-question-mark-DDUlGgWh.js";import{F as W}from"./funnel-DLa9oQpD.js";import{S as ee}from"./search-BZtD4Hr8.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. @@ -8,7 +8,7 @@ import{d as U,a6 as J,R as q,bY as G,r as d,j as n,bk as K,B as Y}from"./index-B * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const ne=[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]],oe=U("droplets",ne);function xe(){return{timeStart:null,timeEnd:null,deviceTypes:new Set,nodeIds:new Set,disabledNodeIds:new Set,nodeFilterMode:"source"}}function re(c,l){const{timeStart:u,timeEnd:t,deviceTypes:o,nodeIds:x,disabledNodeIds:v,nodeFilterMode:w}=c,m=!0,N=o.size>0;let h;if(v.size>0){h=new Set;for(const j of x)v.has(j)||h.add(j)}else h=x;const S=h.size>0;let k=null;if(S){k=new Set;for(const j of h)k.add(J(j))}return{hasTime:m,hasDevice:N,hasNode:S,tStart:u??l.start,tEnd:t??l.end,deviceTypes:o,effectiveNodeIds:h,nodeIdPrefixes:k,nodeFilterMode:w,needsDisambiguation:N||S}}function ae(c,l,u){if(c.timestampl.tEnd)return!1;if(l.needsDisambiguation){const t=u(c);if(l.hasDevice&&!l.deviceTypes.has(t.type))return!1;if(l.hasNode){if(l.nodeFilterMode==="observed"){let o=!1;if(t.hash&&l.effectiveNodeIds.has(t.hash)&&(o=!0),!o&&c.dst_hash&&(l.effectiveNodeIds.has(c.dst_hash)||l.nodeIdPrefixes.has(J(c.dst_hash)))&&(o=!0),!o){const x=c.forwarded_path??c.original_path;if(x&&Array.isArray(x))for(const v of x){const w=String(v).toUpperCase();if(l.nodeIdPrefixes.has(w)){o=!0;break}}}if(!o)return!1}else if(!t.hash||!l.effectiveNodeIds.has(t.hash))return!1}}return!0}function he(c,l,u,t){const o=re(l,t);return c.filter(x=>ae(x,o,u))}function X(c,l){const u=new Date(c*1e3),t=v=>v.toString().padStart(2,"0"),o=`${t(u.getHours())}:${t(u.getMinutes())}`;return l<24?o:`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][u.getMonth()]} ${u.getDate()} ${o}`}const le=[{type:"repeater",label:"Repeater",icon:q,buttonColor:"primary",iconColor:"text-sys-blue",hoverClass:"hover:border-sys-blue hover:text-sys-blue hover:!bg-transparent"},{type:"companion",label:"Companion",icon:V,buttonColor:"indigo",iconColor:"text-sys-indigo",hoverClass:"hover:border-sys-indigo hover:text-sys-indigo hover:!bg-transparent"},{type:"room_server",label:"Room",icon:G,buttonColor:"purple",iconColor:"text-sys-purple",hoverClass:"hover:border-sys-purple hover:text-sys-purple hover:!bg-transparent"},{type:"unknown",label:"Unknown",icon:Z,buttonColor:"zinc",iconColor:"text-zinc-400",hoverClass:"hover:border-zinc-400 hover:text-zinc-400 hover:!bg-transparent"}],D=60,E=.005;function ie({min:c,max:l,valueStart:u,valueEnd:t,onChange:o}){const x=d.useRef(null),[v,w]=d.useState(null),m=d.useRef({valueStart:u,valueEnd:t,min:c,max:l});m.current={valueStart:u,valueEnd:t,min:c,max:l};const N=d.useRef({offset:0,width:0}),h=l-c||1,S=h/3600,k=u??c,j=t??l,C=(k-c)/h*100,F=(j-c)/h*100,_=u!==null||t!==null,I=d.useCallback(i=>{const a=x.current.getBoundingClientRect(),e=Math.max(0,Math.min(1,(i-a.left)/a.width)),{min:s,max:r}=m.current;return Math.round(s+e*(r-s||1))},[]),R=d.useCallback((i,a)=>{a.preventDefault(),a.stopPropagation();const e=a.currentTarget;e.setPointerCapture(a.pointerId),w(i);const s=f=>{const g=I(f.clientX),{valueStart:y,valueEnd:b,min:p,max:L}=m.current,z=L-p||1;if(i==="start"){const M=Math.min(g,(b??L)-D);o(M<=p+z*E?null:M,b)}else{const M=Math.max(g,(y??p)+D);o(y,M>=L-z*E?null:M)}},r=()=>{w(null),e.removeEventListener("pointermove",s),e.removeEventListener("pointerup",r),e.removeEventListener("pointercancel",r)};e.addEventListener("pointermove",s),e.addEventListener("pointerup",r),e.addEventListener("pointercancel",r)},[I,o]),$=d.useCallback(i=>{i.preventDefault(),i.stopPropagation();const a=i.currentTarget;a.setPointerCapture(i.pointerId),w("range");const e=m.current.valueStart??m.current.min,s=m.current.valueEnd??m.current.max;N.current={offset:I(i.clientX)-e,width:s-e};const r=g=>{const y=I(g.clientX),{min:b,max:p}=m.current,{offset:L,width:z}=N.current;let M=y-L;M=Math.max(b,Math.min(p-z,M));const O=M+z;o(Math.round(M)<=b?null:Math.round(M),Math.round(O)>=p?null:Math.round(O))},f=()=>{w(null),a.removeEventListener("pointermove",r),a.removeEventListener("pointerup",f),a.removeEventListener("pointercancel",f)};a.addEventListener("pointermove",r),a.addEventListener("pointerup",f),a.addEventListener("pointercancel",f)},[I,o]),H=d.useCallback(i=>{const a=I(i.clientX),{valueStart:e,valueEnd:s,min:r,max:f}=m.current,g=f-r||1,y=e??r,b=s??f;if(Math.abs(a-y)<=Math.abs(a-b)){const p=Math.min(a,b-D);o(p<=r+g*E?null:p,s)}else{const p=Math.max(a,y+D);o(e,p>=f-g*E?null:p)}},[I,o]),A=d.useCallback(()=>o(null,null),[o]),T=d.useCallback((i,a)=>{const e=a.key==="ArrowRight"||a.key==="ArrowUp"?1:a.key==="ArrowLeft"||a.key==="ArrowDown"?-1:0;if(!e)return;a.preventDefault();const s=(a.shiftKey?.1:.01)*h,{valueStart:r,valueEnd:f,min:g,max:y}=m.current,b=y-g||1;if(i==="start"){const p=Math.max(g,Math.min((r??g)+e*s,(f??y)-D));o(p<=g+b*E?null:p,f)}else{const p=Math.min(y,Math.max((f??y)+e*s,(r??g)+D));o(r,p>=y-b*E?null:p)}},[h,o]),P=i=>{const a=i==="start"?u!==null:t!==null,e=v===i;return["absolute top-1/2 -translate-y-1/2 -translate-x-1/2 w-1 h-4 rounded-full","before:content-[''] before:absolute before:-inset-x-3 before:-inset-y-1","touch-none outline-none",e?"cursor-grabbing":"cursor-ew-resize",e?"bg-sys-blue shadow-[0_0_8px_var(--sys-blue)] scale-x-150 z-20":a?"bg-sys-blue shadow-[0_0_4px_var(--sys-blue)] hover:shadow-[0_0_8px_var(--sys-blue)] hover:scale-x-150 z-10":"bg-edge-subtle hover:bg-fg-muted hover:scale-x-150 z-10",e?"":"transition-[transform,box-shadow,background-color] duration-150 ease-out","focus-visible:ring-2 focus-visible:ring-sys-blue/50"].filter(Boolean).join(" ")};return n.jsxs("div",{className:"flex flex-col gap-0.5 min-w-[160px] sm:min-w-[220px]",children:[n.jsxs("div",{className:"flex items-center justify-between type-data-xs text-fg-muted tabular-nums select-none",children:[n.jsx("span",{className:_&&u!==null?"text-sys-blue":"",children:X(k,S)}),n.jsx("span",{className:_&&t!==null?"text-sys-blue":"",children:X(j,S)})]}),n.jsxs("div",{ref:x,className:"relative h-5 select-none",onPointerDown:H,onDoubleClick:A,children:[n.jsx("div",{className:"absolute inset-x-0 top-1/2 -translate-y-1/2 h-1.5 rounded-full bg-white/[0.06] pointer-events-none"}),_?n.jsx("div",{className:["group/band absolute inset-y-0 touch-none",v==="range"?"cursor-grabbing":"cursor-grab"].join(" "),style:{left:`${C}%`,right:`${100-F}%`},onPointerDown:$,children:n.jsx("div",{className:["absolute inset-x-0 top-1/2 -translate-y-1/2 h-1.5 rounded-full pointer-events-none transition-colors",v==="range"?"bg-sys-blue/40":"bg-sys-blue/25 group-hover/band:bg-sys-blue/35"].join(" ")})}):n.jsx("div",{className:"absolute inset-x-0 top-1/2 -translate-y-1/2 h-1.5 rounded-full bg-white/[0.04] pointer-events-none"}),n.jsx("div",{role:"slider",tabIndex:0,"aria-label":"Range start","aria-valuenow":k,className:P("start"),style:{left:`${C}%`},onPointerDown:i=>R("start",i),onKeyDown:i=>T("start",i)}),n.jsx("div",{role:"slider",tabIndex:0,"aria-label":"Range end","aria-valuenow":j,className:P("end"),style:{left:`${F}%`},onPointerDown:i=>R("end",i),onKeyDown:i=>T("end",i)})]})]})}function fe({parentStartTs:c,parentEndTs:l,neighbors:u,filter:t,onChange:o,scatterDotSize:x,onScatterDotSizeChange:v,scatterOpacity:w,onScatterOpacityChange:m}){const[N,h]=d.useState(""),[S,k]=d.useState(!1),j=d.useRef(null);d.useEffect(()=>{function e(s){j.current&&!j.current.contains(s.target)&&k(!1)}if(S)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[S]);const C=d.useMemo(()=>Object.entries(u).map(([e,s])=>{const r=Q(s);return{hash:e,name:s.name??s.node_name??e.slice(0,8),type:r.type,label:r.label}}).sort((e,s)=>e.name.localeCompare(s.name)),[u]),F=d.useMemo(()=>{if(!N)return C;const e=N.toLowerCase();return C.filter(s=>s.name.toLowerCase().includes(e)||s.hash.toLowerCase().includes(e))},[C,N]),_=t.timeStart!==null||t.timeEnd!==null||t.deviceTypes.size>0||t.nodeIds.size>0,I=d.useCallback((e,s)=>{o({...t,timeStart:e,timeEnd:s})},[t,o]),R=d.useCallback(e=>{const s=new Set(t.deviceTypes);s.has(e)?s.delete(e):s.add(e),o({...t,deviceTypes:s})},[t,o]),$=d.useCallback(e=>{const s=new Set(t.nodeIds);s.has(e)?s.delete(e):s.add(e),o({...t,nodeIds:s}),h("")},[t,o]),H=d.useCallback(e=>{const s=new Set(t.nodeIds);s.delete(e);const r=new Set(t.disabledNodeIds);r.delete(e),o({...t,nodeIds:s,disabledNodeIds:r})},[t,o]),A=d.useCallback(e=>{const s=new Set(t.disabledNodeIds);s.has(e)?s.delete(e):s.add(e),o({...t,disabledNodeIds:s})},[t,o]),T=d.useCallback(()=>{o({...t,nodeFilterMode:t.nodeFilterMode==="source"?"observed":"source"})},[t,o]),P=d.useCallback(()=>{o({timeStart:null,timeEnd:null,deviceTypes:new Set,nodeIds:new Set,disabledNodeIds:new Set,nodeFilterMode:"source"}),h("")},[o]),i=d.useMemo(()=>{const e=new Map;for(const s of t.nodeIds){const r=u[s];e.set(s,(r==null?void 0:r.name)??(r==null?void 0:r.node_name)??s.slice(0,8))}return e},[t.nodeIds,u]),a=!!(v&&m);return n.jsxs("div",{className:"flex flex-col gap-2 card-padding",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[a&&n.jsxs(n.Fragment,{children:[n.jsx(B,{icon:n.jsx(se,{className:"w-3 h-3"}),label:"Size",value:x??.8,onChange:v,min:.3,max:3,step:.1,format:e=>e.toFixed(1)}),n.jsx(B,{icon:n.jsx(oe,{className:"w-3 h-3"}),label:"Opacity",value:w??50,onChange:m,min:5,max:100,step:5,format:e=>`${Math.round(e)}%`}),n.jsx("div",{className:"w-px h-4 bg-edge-subtle shrink-0 hidden sm:block"})]}),n.jsx("div",{className:"flex items-center gap-1.5 text-fg-muted shrink-0",children:n.jsx(W,{className:"w-3.5 h-3.5"})}),n.jsx("div",{className:"flex-1 min-w-[120px]",children:n.jsx(ie,{min:c,max:l,valueStart:t.timeStart,valueEnd:t.timeEnd,onChange:I})}),_&&n.jsxs("button",{type:"button",onClick:P,className:"flex items-center gap-1 px-2 py-0.5 rounded-full type-data-xs text-fg-muted hover:text-fg-primary border border-edge-subtle hover:border-fg-muted/40 transition-colors shrink-0",title:"Clear all filters",children:[n.jsx(K,{className:"w-3 h-3"}),n.jsx("span",{className:"hidden sm:inline",children:"Clear"})]})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx("div",{className:"flex items-center gap-1.5 overflow-x-auto pb-0.5 -mb-0.5 shrink-0",children:le.map(({type:e,label:s,icon:r,buttonColor:f,iconColor:g,hoverClass:y})=>{const b=t.deviceTypes.has(e);return n.jsxs(Y,{color:b?f:"zinc",outline:!b,className:`!h-8 !py-0 ${b?"":y}`,onClick:()=>R(e),title:`Filter by ${s}`,children:[n.jsx(r,{"data-slot":"icon",className:b?"":g}),n.jsx("span",{className:`hidden sm:inline ${b?"":"text-fg-muted"}`,children:s})]},e)})}),n.jsx("div",{className:"w-px h-4 bg-edge-subtle shrink-0 hidden md:block"}),n.jsxs("div",{className:"relative flex items-center gap-1.5 flex-1 min-w-[120px] sm:min-w-[180px] h-8 px-2 rounded-md border border-edge-subtle bg-white/[0.03] transition-colors focus-within:border-sys-blue",ref:j,children:[n.jsx(ee,{className:"w-3 h-3 text-fg-muted/50 shrink-0"}),n.jsx("input",{type:"text",className:"flex-1 min-w-[60px] type-data-xs py-0.5 bg-transparent text-fg-secondary placeholder:text-fg-muted/40 border-none focus:outline-none",placeholder:"Search nodes...",value:N,onChange:e=>{h(e.target.value),k(!0)},onFocus:()=>k(!0)}),S&&F.length>0&&n.jsx("div",{className:"absolute top-full left-0 right-0 mt-1 z-[200] surface-popover border border-edge-subtle radius-inner max-h-48 overflow-y-auto",children:F.slice(0,20).map(e=>{const s=t.nodeIds.has(e.hash);return n.jsxs("button",{type:"button",onClick:()=>$(e.hash),className:` + */const ne=[["path",{d:"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z",key:"1ptgy4"}],["path",{d:"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97",key:"1sl1rz"}]],oe=U("droplets",ne);function xe(){return{timeStart:null,timeEnd:null,deviceTypes:new Set,nodeIds:new Set,disabledNodeIds:new Set,nodeFilterMode:"source"}}function re(c,l){const{timeStart:u,timeEnd:t,deviceTypes:o,nodeIds:x,disabledNodeIds:v,nodeFilterMode:w}=c,m=!0,N=o.size>0;let h;if(v.size>0){h=new Set;for(const j of x)v.has(j)||h.add(j)}else h=x;const S=h.size>0;let k=null;if(S){k=new Set;for(const j of h)k.add(J(j))}return{hasTime:m,hasDevice:N,hasNode:S,tStart:u??l.start,tEnd:t??l.end,deviceTypes:o,effectiveNodeIds:h,nodeIdPrefixes:k,nodeFilterMode:w,needsDisambiguation:N||S}}function ae(c,l,u){if(c.timestampl.tEnd)return!1;if(l.needsDisambiguation){const t=u(c);if(l.hasDevice&&!l.deviceTypes.has(t.type))return!1;if(l.hasNode){if(l.nodeFilterMode==="observed"){let o=!1;if(t.hash&&l.effectiveNodeIds.has(t.hash)&&(o=!0),!o&&c.dst_hash&&(l.effectiveNodeIds.has(c.dst_hash)||l.nodeIdPrefixes.has(J(c.dst_hash)))&&(o=!0),!o){const x=c.forwarded_path??c.original_path;if(x&&Array.isArray(x))for(const v of x){const w=String(v).toUpperCase();if(l.nodeIdPrefixes.has(w)){o=!0;break}}}if(!o)return!1}else if(!t.hash||!l.effectiveNodeIds.has(t.hash))return!1}}return!0}function he(c,l,u,t){const o=re(l,t);return c.filter(x=>ae(x,o,u))}function X(c,l){const u=new Date(c*1e3),t=v=>v.toString().padStart(2,"0"),o=`${t(u.getHours())}:${t(u.getMinutes())}`;return l<24?o:`${["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"][u.getMonth()]} ${u.getDate()} ${o}`}const le=[{type:"repeater",label:"Repeater",icon:q,buttonColor:"primary",iconColor:"text-sys-blue",hoverClass:"hover:border-sys-blue hover:text-sys-blue hover:!bg-transparent"},{type:"companion",label:"Companion",icon:Y,buttonColor:"indigo",iconColor:"text-sys-indigo",hoverClass:"hover:border-sys-indigo hover:text-sys-indigo hover:!bg-transparent"},{type:"room_server",label:"Room",icon:G,buttonColor:"purple",iconColor:"text-sys-purple",hoverClass:"hover:border-sys-purple hover:text-sys-purple hover:!bg-transparent"},{type:"unknown",label:"Unknown",icon:Z,buttonColor:"zinc",iconColor:"text-zinc-400",hoverClass:"hover:border-zinc-400 hover:text-zinc-400 hover:!bg-transparent"}],D=60,E=.005;function ie({min:c,max:l,valueStart:u,valueEnd:t,onChange:o}){const x=d.useRef(null),[v,w]=d.useState(null),m=d.useRef({valueStart:u,valueEnd:t,min:c,max:l});m.current={valueStart:u,valueEnd:t,min:c,max:l};const N=d.useRef({offset:0,width:0}),h=l-c||1,S=h/3600,k=u??c,j=t??l,C=(k-c)/h*100,F=(j-c)/h*100,_=u!==null||t!==null,I=d.useCallback(i=>{const a=x.current.getBoundingClientRect(),e=Math.max(0,Math.min(1,(i-a.left)/a.width)),{min:s,max:r}=m.current;return Math.round(s+e*(r-s||1))},[]),R=d.useCallback((i,a)=>{a.preventDefault(),a.stopPropagation();const e=a.currentTarget;e.setPointerCapture(a.pointerId),w(i);const s=f=>{const g=I(f.clientX),{valueStart:y,valueEnd:b,min:p,max:L}=m.current,z=L-p||1;if(i==="start"){const M=Math.min(g,(b??L)-D);o(M<=p+z*E?null:M,b)}else{const M=Math.max(g,(y??p)+D);o(y,M>=L-z*E?null:M)}},r=()=>{w(null),e.removeEventListener("pointermove",s),e.removeEventListener("pointerup",r),e.removeEventListener("pointercancel",r)};e.addEventListener("pointermove",s),e.addEventListener("pointerup",r),e.addEventListener("pointercancel",r)},[I,o]),$=d.useCallback(i=>{i.preventDefault(),i.stopPropagation();const a=i.currentTarget;a.setPointerCapture(i.pointerId),w("range");const e=m.current.valueStart??m.current.min,s=m.current.valueEnd??m.current.max;N.current={offset:I(i.clientX)-e,width:s-e};const r=g=>{const y=I(g.clientX),{min:b,max:p}=m.current,{offset:L,width:z}=N.current;let M=y-L;M=Math.max(b,Math.min(p-z,M));const O=M+z;o(Math.round(M)<=b?null:Math.round(M),Math.round(O)>=p?null:Math.round(O))},f=()=>{w(null),a.removeEventListener("pointermove",r),a.removeEventListener("pointerup",f),a.removeEventListener("pointercancel",f)};a.addEventListener("pointermove",r),a.addEventListener("pointerup",f),a.addEventListener("pointercancel",f)},[I,o]),H=d.useCallback(i=>{const a=I(i.clientX),{valueStart:e,valueEnd:s,min:r,max:f}=m.current,g=f-r||1,y=e??r,b=s??f;if(Math.abs(a-y)<=Math.abs(a-b)){const p=Math.min(a,b-D);o(p<=r+g*E?null:p,s)}else{const p=Math.max(a,y+D);o(e,p>=f-g*E?null:p)}},[I,o]),A=d.useCallback(()=>o(null,null),[o]),T=d.useCallback((i,a)=>{const e=a.key==="ArrowRight"||a.key==="ArrowUp"?1:a.key==="ArrowLeft"||a.key==="ArrowDown"?-1:0;if(!e)return;a.preventDefault();const s=(a.shiftKey?.1:.01)*h,{valueStart:r,valueEnd:f,min:g,max:y}=m.current,b=y-g||1;if(i==="start"){const p=Math.max(g,Math.min((r??g)+e*s,(f??y)-D));o(p<=g+b*E?null:p,f)}else{const p=Math.min(y,Math.max((f??y)+e*s,(r??g)+D));o(r,p>=y-b*E?null:p)}},[h,o]),P=i=>{const a=i==="start"?u!==null:t!==null,e=v===i;return["absolute top-1/2 -translate-y-1/2 -translate-x-1/2 w-1 h-4 rounded-full","before:content-[''] before:absolute before:-inset-x-3 before:-inset-y-1","touch-none outline-none",e?"cursor-grabbing":"cursor-ew-resize",e?"bg-sys-blue shadow-[0_0_8px_var(--sys-blue)] scale-x-150 z-20":a?"bg-sys-blue shadow-[0_0_4px_var(--sys-blue)] hover:shadow-[0_0_8px_var(--sys-blue)] hover:scale-x-150 z-10":"bg-edge-subtle hover:bg-fg-muted hover:scale-x-150 z-10",e?"":"transition-[transform,box-shadow,background-color] duration-150 ease-out","focus-visible:ring-2 focus-visible:ring-sys-blue/50"].filter(Boolean).join(" ")};return n.jsxs("div",{className:"flex flex-col gap-0.5 min-w-[160px] sm:min-w-[220px]",children:[n.jsxs("div",{className:"flex items-center justify-between type-data-xs text-fg-muted tabular-nums select-none",children:[n.jsx("span",{className:_&&u!==null?"text-sys-blue":"",children:X(k,S)}),n.jsx("span",{className:_&&t!==null?"text-sys-blue":"",children:X(j,S)})]}),n.jsxs("div",{ref:x,className:"relative h-5 select-none",onPointerDown:H,onDoubleClick:A,children:[n.jsx("div",{className:"absolute inset-x-0 top-1/2 -translate-y-1/2 h-1.5 rounded-full bg-white/[0.06] pointer-events-none"}),_?n.jsx("div",{className:["group/band absolute inset-y-0 touch-none",v==="range"?"cursor-grabbing":"cursor-grab"].join(" "),style:{left:`${C}%`,right:`${100-F}%`},onPointerDown:$,children:n.jsx("div",{className:["absolute inset-x-0 top-1/2 -translate-y-1/2 h-1.5 rounded-full pointer-events-none transition-colors",v==="range"?"bg-sys-blue/40":"bg-sys-blue/25 group-hover/band:bg-sys-blue/35"].join(" ")})}):n.jsx("div",{className:"absolute inset-x-0 top-1/2 -translate-y-1/2 h-1.5 rounded-full bg-white/[0.04] pointer-events-none"}),n.jsx("div",{role:"slider",tabIndex:0,"aria-label":"Range start","aria-valuenow":k,className:P("start"),style:{left:`${C}%`},onPointerDown:i=>R("start",i),onKeyDown:i=>T("start",i)}),n.jsx("div",{role:"slider",tabIndex:0,"aria-label":"Range end","aria-valuenow":j,className:P("end"),style:{left:`${F}%`},onPointerDown:i=>R("end",i),onKeyDown:i=>T("end",i)})]})]})}function fe({parentStartTs:c,parentEndTs:l,neighbors:u,filter:t,onChange:o,scatterDotSize:x,onScatterDotSizeChange:v,scatterOpacity:w,onScatterOpacityChange:m}){const[N,h]=d.useState(""),[S,k]=d.useState(!1),j=d.useRef(null);d.useEffect(()=>{function e(s){j.current&&!j.current.contains(s.target)&&k(!1)}if(S)return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[S]);const C=d.useMemo(()=>Object.entries(u).map(([e,s])=>{const r=V(s);return{hash:e,name:s.name??s.node_name??e.slice(0,8),type:r.type,label:r.label}}).sort((e,s)=>e.name.localeCompare(s.name)),[u]),F=d.useMemo(()=>{if(!N)return C;const e=N.toLowerCase();return C.filter(s=>s.name.toLowerCase().includes(e)||s.hash.toLowerCase().includes(e))},[C,N]),_=t.timeStart!==null||t.timeEnd!==null||t.deviceTypes.size>0||t.nodeIds.size>0,I=d.useCallback((e,s)=>{o({...t,timeStart:e,timeEnd:s})},[t,o]),R=d.useCallback(e=>{const s=new Set(t.deviceTypes);s.has(e)?s.delete(e):s.add(e),o({...t,deviceTypes:s})},[t,o]),$=d.useCallback(e=>{const s=new Set(t.nodeIds);s.has(e)?s.delete(e):s.add(e),o({...t,nodeIds:s}),h("")},[t,o]),H=d.useCallback(e=>{const s=new Set(t.nodeIds);s.delete(e);const r=new Set(t.disabledNodeIds);r.delete(e),o({...t,nodeIds:s,disabledNodeIds:r})},[t,o]),A=d.useCallback(e=>{const s=new Set(t.disabledNodeIds);s.has(e)?s.delete(e):s.add(e),o({...t,disabledNodeIds:s})},[t,o]),T=d.useCallback(()=>{o({...t,nodeFilterMode:t.nodeFilterMode==="source"?"observed":"source"})},[t,o]),P=d.useCallback(()=>{o({timeStart:null,timeEnd:null,deviceTypes:new Set,nodeIds:new Set,disabledNodeIds:new Set,nodeFilterMode:"source"}),h("")},[o]),i=d.useMemo(()=>{const e=new Map;for(const s of t.nodeIds){const r=u[s];e.set(s,(r==null?void 0:r.name)??(r==null?void 0:r.node_name)??s.slice(0,8))}return e},[t.nodeIds,u]),a=!!(v&&m);return n.jsxs("div",{className:"flex flex-col gap-2 card-padding",children:[n.jsxs("div",{className:"flex items-center gap-3",children:[a&&n.jsxs(n.Fragment,{children:[n.jsx(B,{icon:n.jsx(se,{className:"w-3 h-3"}),label:"Size",value:x??.8,onChange:v,min:.3,max:3,step:.1,format:e=>e.toFixed(1)}),n.jsx(B,{icon:n.jsx(oe,{className:"w-3 h-3"}),label:"Opacity",value:w??50,onChange:m,min:5,max:100,step:5,format:e=>`${Math.round(e)}%`}),n.jsx("div",{className:"w-px h-4 bg-edge-subtle shrink-0 hidden sm:block"})]}),n.jsx("div",{className:"flex items-center gap-1.5 text-fg-muted shrink-0",children:n.jsx(W,{className:"w-3.5 h-3.5"})}),n.jsx("div",{className:"flex-1 min-w-[120px]",children:n.jsx(ie,{min:c,max:l,valueStart:t.timeStart,valueEnd:t.timeEnd,onChange:I})}),_&&n.jsxs("button",{type:"button",onClick:P,className:"flex items-center gap-1 px-2 py-0.5 rounded-full type-data-xs text-fg-muted hover:text-fg-primary border border-edge-subtle hover:border-fg-muted/40 transition-colors shrink-0",title:"Clear all filters",children:[n.jsx(K,{className:"w-3 h-3"}),n.jsx("span",{className:"hidden sm:inline",children:"Clear"})]})]}),n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx("div",{className:"flex items-center gap-1.5 overflow-x-auto pb-0.5 -mb-0.5 shrink-0",children:le.map(({type:e,label:s,icon:r,buttonColor:f,iconColor:g,hoverClass:y})=>{const b=t.deviceTypes.has(e);return n.jsxs(Q,{color:b?f:"zinc",outline:!b,className:`!h-8 !py-0 ${b?"":y}`,onClick:()=>R(e),title:`Filter by ${s}`,children:[n.jsx(r,{"data-slot":"icon",className:b?"":g}),n.jsx("span",{className:`hidden sm:inline ${b?"":"text-fg-muted"}`,children:s})]},e)})}),n.jsx("div",{className:"w-px h-4 bg-edge-subtle shrink-0 hidden md:block"}),n.jsxs("div",{className:"relative flex items-center gap-1.5 flex-1 min-w-[120px] sm:min-w-[180px] h-8 px-2 rounded-md border border-edge-subtle bg-white/[0.03] transition-colors focus-within:border-sys-blue",ref:j,children:[n.jsx(ee,{className:"w-3 h-3 text-fg-muted/50 shrink-0"}),n.jsx("input",{type:"text",className:"flex-1 min-w-[60px] type-data-xs py-0.5 bg-transparent text-fg-secondary placeholder:text-fg-muted/40 border-none focus:outline-none",placeholder:"Search nodes...",value:N,onChange:e=>{h(e.target.value),k(!0)},onFocus:()=>k(!0)}),S&&F.length>0&&n.jsx("div",{className:"absolute top-full left-0 right-0 mt-1 z-[200] surface-popover border border-edge-subtle radius-inner max-h-48 overflow-y-auto",children:F.slice(0,20).map(e=>{const s=t.nodeIds.has(e.hash);return n.jsxs("button",{type:"button",onClick:()=>$(e.hash),className:` w-full flex items-center gap-2 px-2.5 py-1.5 type-data-xs text-left transition-colors ${s?"bg-sys-indigo/15 text-sys-indigo":"text-fg-secondary hover:bg-subtle-fill"} `,children:[n.jsx("span",{className:"flex-1 truncate",children:e.name}),n.jsx("span",{className:"text-fg-muted type-data-xs shrink-0",children:e.label})]},e.hash)})})]})]}),t.nodeIds.size>0&&n.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[Array.from(t.nodeIds).map(e=>{const s=t.disabledNodeIds.has(e);return n.jsxs("span",{role:"button",tabIndex:0,onClick:()=>A(e),onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),A(e))},className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full type-data-xs border transition-colors select-none ${s?"bg-zinc-500/10 text-fg-muted border-edge-subtle cursor-pointer hover:bg-zinc-500/15":"bg-sys-indigo/15 text-sys-indigo border-sys-indigo/25 cursor-pointer hover:bg-sys-indigo/25"}`,title:e,children:[i.get(e)??e.slice(0,8),n.jsx("button",{type:"button",onClick:r=>{r.stopPropagation(),H(e)},className:"hover:text-fg-primary transition-colors -mr-0.5",title:"Remove from filter",children:n.jsx(K,{className:"w-3 h-3"})})]},e)}),n.jsx("button",{type:"button",onClick:T,className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full type-data-xs border transition-colors ${t.nodeFilterMode==="observed"?"bg-sys-blue/15 text-sys-blue border-sys-blue/25 hover:bg-sys-blue/25":"bg-white/[0.04] text-fg-muted border-edge-subtle hover:text-fg-secondary hover:border-fg-muted/40"}`,title:t.nodeFilterMode==="source"?"Source Only — showing packets sent by selected node(s)":"Total Observed — showing all packets where selected node(s) appear (source, path, or destination)",children:t.nodeFilterMode==="source"?"Source Only":"Total Observed"})]})]})}const B=d.memo(function({icon:l,label:u,value:t,onChange:o,min:x,max:v,step:w,format:m}){return n.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[n.jsxs("div",{className:"flex items-center gap-1.5 text-fg-muted shrink-0",children:[l,n.jsx("span",{className:"type-data-xs font-medium hidden sm:inline",children:u})]}),n.jsx("input",{type:"range",min:x,max:v,step:w,value:t,onChange:N=>o(parseFloat(N.target.value)),className:"flex-1 h-1 min-w-[60px] bg-subtle-fill rounded appearance-none cursor-pointer [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-2.5 [&::-webkit-slider-thumb]:h-2.5 [&::-webkit-slider-thumb]:bg-sys-blue [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:cursor-pointer"}),n.jsx("span",{className:"type-data-xs text-fg-secondary tabular-nums shrink-0 w-8 text-right",children:m?m(t):t})]})});export{fe as A,le as D,he as a,ie as b,xe as c}; diff --git a/frontend/dist/assets/BasemapLayer-B-5TmAfZ.js b/frontend/dist/assets/BasemapLayer-NuqTvOvz.js similarity index 97% rename from frontend/dist/assets/BasemapLayer-B-5TmAfZ.js rename to frontend/dist/assets/BasemapLayer-NuqTvOvz.js index 37ff0b9d..b9577f89 100644 --- a/frontend/dist/assets/BasemapLayer-B-5TmAfZ.js +++ b/frontend/dist/assets/BasemapLayer-NuqTvOvz.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BOwCLZTK.js","assets/index-DH0lUVGm.css"])))=>i.map(i=>d[i]); -import{r as i,_ as $,aK as B,e as K}from"./index-BOwCLZTK.js";const H=i.createContext(null);function G(){var s;const e=(s=i.useContext(H))==null?void 0:s.maps,t=i.useContext(w);return i.useMemo(()=>({...e,current:t==null?void 0:t.map}),[e,t])}function Y(e,t){const n=Array.isArray(e)?e[0]:e?e.x:0,s=Array.isArray(e)?e[1]:e?e.y:0,o=Array.isArray(t)?t[0]:t?t.x:0,r=Array.isArray(t)?t[1]:t?t.y:0;return n===o&&s===r}function v(e,t){if(e===t)return!0;if(!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n{let o=null;"interactive"in s&&(o=Object.assign({},s),delete o.interactive);const r=t[s.ref];if(r){o=o||Object.assign({},s),delete o.ref;for(const a of J)a in r&&(o[a]=r[a])}return o||s});return{...e,layers:n}}const A={version:8,sources:{},layers:[]},U={mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",click:"onClick",dblclick:"onDblClick",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",mouseout:"onMouseOut",contextmenu:"onContextMenu",touchstart:"onTouchStart",touchend:"onTouchEnd",touchmove:"onTouchMove",touchcancel:"onTouchCancel"},F={movestart:"onMoveStart",move:"onMove",moveend:"onMoveEnd",dragstart:"onDragStart",drag:"onDrag",dragend:"onDragEnd",zoomstart:"onZoomStart",zoom:"onZoom",zoomend:"onZoomEnd",rotatestart:"onRotateStart",rotate:"onRotate",rotateend:"onRotateEnd",pitchstart:"onPitchStart",pitch:"onPitch",pitchend:"onPitchEnd"},N={wheel:"onWheel",boxzoomstart:"onBoxZoomStart",boxzoomend:"onBoxZoomEnd",boxzoomcancel:"onBoxZoomCancel",resize:"onResize",load:"onLoad",render:"onRender",idle:"onIdle",remove:"onRemove",data:"onData",styledata:"onStyleData",sourcedata:"onSourceData",error:"onError"},X=["minZoom","maxZoom","minPitch","maxPitch","maxBounds","projection","renderWorldCopies"],Q=["scrollZoom","boxZoom","dragRotate","dragPan","keyboard","doubleClickZoom","touchZoomRotate","touchPitch"];class b{constructor(t,n,s){this._map=null,this._internalUpdate=!1,this._hoveredFeatures=null,this._propsedCameraUpdate=null,this._styleComponents={},this._onEvent=o=>{const r=this.props[N[o.type]];r?r(o):o.type==="error"&&console.error(o.error)},this._onCameraEvent=o=>{if(this._internalUpdate)return;o.viewState=this._propsedCameraUpdate||P(this._map.transform);const r=this.props[F[o.type]];r&&r(o)},this._onCameraUpdate=o=>this._internalUpdate?o:(this._propsedCameraUpdate=P(o),z(o,this.props)),this._onPointerEvent=o=>{(o.type==="mousemove"||o.type==="mouseout")&&this._updateHover(o);const r=this.props[U[o.type]];r&&(this.props.interactiveLayerIds&&o.type!=="mouseover"&&o.type!=="mouseout"&&(o.features=this._hoveredFeatures||this._queryRenderedFeatures(o.point)),r(o),delete o.features)},this._MapClass=t,this.props=n,this._initialize(s)}get map(){return this._map}setProps(t){const n=this.props;this.props=t;const s=this._updateSettings(t,n),o=this._updateSize(t),r=this._updateViewState(t);this._updateStyle(t,n),this._updateStyleComponents(t),this._updateHandlers(t,n),(s||o||r&&!this._map.isMoving())&&this.redraw()}static reuse(t,n){const s=b.savedMaps.pop();if(!s)return null;const o=s.map,r=o.getContainer();for(n.className=r.className;r.childNodes.length>0;)n.appendChild(r.childNodes[0]);o._container=n;const a=o._resizeObserver;a&&(a.disconnect(),a.observe(n)),s.setProps({...t,styleDiffing:!1}),o.resize();const{initialViewState:c}=t;return c&&(c.bounds?o.fitBounds(c.bounds,{...c.fitBoundsOptions,duration:0}):s._updateViewState(c)),o.isStyleLoaded()?o.fire("load"):o.once("style.load",()=>o.fire("load")),o._update(),s}_initialize(t){const{props:n}=this,{mapStyle:s=A}=n,o={...n,...n.initialViewState,container:t,style:O(s)},r=o.initialViewState||o.viewState||o;if(Object.assign(o,{center:[r.longitude||0,r.latitude||0],zoom:r.zoom||0,pitch:r.pitch||0,bearing:r.bearing||0}),n.gl){const c=HTMLCanvasElement.prototype.getContext;HTMLCanvasElement.prototype.getContext=()=>(HTMLCanvasElement.prototype.getContext=c,n.gl)}const a=new this._MapClass(o);r.padding&&a.setPadding(r.padding),n.cursor&&(a.getCanvas().style.cursor=n.cursor),a.transformCameraUpdate=this._onCameraUpdate,a.on("style.load",()=>{var c;this._styleComponents={light:a.getLight(),sky:a.getSky(),projection:(c=a.getProjection)==null?void 0:c.call(a),terrain:a.getTerrain()},this._updateStyleComponents(this.props)}),a.on("sourcedata",()=>{this._updateStyleComponents(this.props)});for(const c in U)a.on(c,this._onPointerEvent);for(const c in F)a.on(c,this._onCameraEvent);for(const c in N)a.on(c,this._onEvent);this._map=a}recycle(){const n=this.map.getContainer().querySelector("[mapboxgl-children]");n==null||n.remove(),b.savedMaps.push(this)}destroy(){this._map.remove()}redraw(){const t=this._map;t.style&&(t._frame&&(t._frame.cancel(),t._frame=null),t._render())}_updateSize(t){const{viewState:n}=t;if(n){const s=this._map;if(n.width!==s.transform.width||n.height!==s.transform.height)return s.resize(),!0}return!1}_updateViewState(t){const n=this._map,s=n.transform;if(!n.isMoving()){const r=z(s,t);if(Object.keys(r).length>0)return this._internalUpdate=!0,n.jumpTo(r),this._internalUpdate=!1,!0}return!1}_updateSettings(t,n){const s=this._map;let o=!1;for(const r of X)if(r in t&&!v(t[r],n[r])){o=!0;const a=s[`set${r[0].toUpperCase()}${r.slice(1)}`];a==null||a.call(s,t[r])}return o}_updateStyle(t,n){if(t.cursor!==n.cursor&&(this._map.getCanvas().style.cursor=t.cursor||""),t.mapStyle!==n.mapStyle){const{mapStyle:s=A,styleDiffing:o=!0}=t,r={diff:o};"localIdeographFontFamily"in t&&(r.localIdeographFontFamily=t.localIdeographFontFamily),this._map.setStyle(O(s),r)}}_updateStyleComponents({light:t,projection:n,sky:s,terrain:o}){var c,u;const r=this._map,a=this._styleComponents;r.style._loaded&&(t&&!v(t,a.light)&&(a.light=t,r.setLight(t)),n&&!v(n,a.projection)&&n!==((c=a.projection)==null?void 0:c.type)&&(a.projection=typeof n=="string"?{type:n}:n,(u=r.setProjection)==null||u.call(r,a.projection)),s&&!v(s,a.sky)&&(a.sky=s,r.setSky(s)),o!==void 0&&!v(o,a.terrain)&&(!o||r.getSource(o.source))&&(a.terrain=o,r.setTerrain(o)))}_updateHandlers(t,n){const s=this._map;for(const o of Q){const r=t[o]??!0,a=n[o]??!0;v(r,a)||(r?s[o].enable(r):s[o].disable())}}_queryRenderedFeatures(t){const n=this._map,{interactiveLayerIds:s=[]}=this.props;try{return n.queryRenderedFeatures(t,{layers:s.filter(n.getLayer.bind(n))})}catch{return[]}}_updateHover(t){var o;const{props:n}=this;if(n.interactiveLayerIds&&(n.onMouseMove||n.onMouseEnter||n.onMouseLeave)){const r=t.type,a=((o=this._hoveredFeatures)==null?void 0:o.length)>0,c=this._queryRenderedFeatures(t.point),u=c.length>0;!u&&a&&(t.type="mouseleave",this._onPointerEvent(t)),this._hoveredFeatures=c,u&&!a&&(t.type="mouseenter",this._onPointerEvent(t)),t.type=r}else this._hoveredFeatures=null}}b.savedMaps=[];const ee=["setMaxBounds","setMinZoom","setMaxZoom","setMinPitch","setMaxPitch","setRenderWorldCopies","setProjection","setStyle","addSource","removeSource","addLayer","removeLayer","setLayerZoomRange","setFilter","setPaintProperty","setLayoutProperty","setLight","setTerrain","setFog","remove"];function te(e){if(!e)return null;const t=e.map,n={getMap:()=>t};for(const s of ne(t))!(s in n)&&!ee.includes(s)&&(n[s]=t[s].bind(t));return n}function ne(e){const t=new Set;let n=e;for(;n;){for(const s of Object.getOwnPropertyNames(n))s[0]!=="_"&&typeof e[s]=="function"&&s!=="fire"&&s!=="setEventedParent"&&t.add(s);n=Object.getPrototypeOf(n)}return Array.from(t)}const oe=typeof document<"u"?i.useLayoutEffect:i.useEffect;function re(e,t){const{RTLTextPlugin:n,maxParallelImageRequests:s,workerCount:o,workerUrl:r}=t;if(n&&e.getRTLTextPluginStatus&&e.getRTLTextPluginStatus()==="unavailable"){const{pluginUrl:a,lazy:c=!0}=typeof n=="string"?{pluginUrl:n}:n;e.setRTLTextPlugin(a,u=>{u&&console.error(u)},c)}s!==void 0&&e.setMaxParallelImageRequests(s),o!==void 0&&e.setWorkerCount(o),r!==void 0&&e.setWorkerUrl(r)}const w=i.createContext(null);function se(e,t){const n=i.useContext(H),[s,o]=i.useState(null),r=i.useRef(),{current:a}=i.useRef({mapLib:null,map:null});i.useEffect(()=>{const l=e.mapLib;let d=!0,f;return Promise.resolve(l||$(()=>import("./maplibre-gl-C4v-QlFl.js").then(m=>m.m),__vite__mapDeps([0,1]))).then(m=>{if(!d)return;if(!m)throw new Error("Invalid mapLib");const y="Map"in m?m:m.default;if(!y.Map)throw new Error("Invalid mapLib");re(y,e),e.reuseMaps&&(f=b.reuse(e,r.current)),f||(f=new b(y.Map,e,r.current)),a.map=te(f),a.mapLib=y,o(f),n==null||n.onMapMount(a.map,e.id)}).catch(m=>{const{onError:y}=e;y?y({type:"error",target:null,originalEvent:null,error:m}):console.error(m)}),()=>{d=!1,f&&(n==null||n.onMapUnmount(e.id),e.reuseMaps?f.recycle():f.destroy())}},[]),oe(()=>{s&&s.setProps(e)}),i.useImperativeHandle(t,()=>a.map,[s]);const c=i.useMemo(()=>({position:"relative",width:"100%",height:"100%",...e.style}),[e.style]),u={height:"100%"};return i.createElement("div",{id:e.id,ref:r,style:c},s&&i.createElement(w.Provider,{value:a},i.createElement("div",{"mapboxgl-children":"",style:u},e.children)))}const Me=i.forwardRef(se),ae=/box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;function L(e,t){if(!e||!t)return;const n=e.style;for(const s in t){const o=t[s];Number.isFinite(o)&&!ae.test(s)?n[s]=`${o}px`:n[s]=o}}function Z(e,t){if(e===t)return null;const n=D(e),s=D(t),o=[];for(const r of s)n.has(r)||o.push(r);for(const r of n)s.has(r)||o.push(r);return o.length===0?null:o}function D(e){return new Set(e?e.trim().split(/\s+/):[])}const be=i.memo(i.forwardRef((e,t)=>{const{map:n,mapLib:s}=i.useContext(w),o=i.useRef({props:e}),r=i.useMemo(()=>{let E=!1;i.Children.forEach(e.children,h=>{h&&(E=!0)});const k={...e,element:E?document.createElement("div"):void 0},p=new s.Marker(k);return p.setLngLat([e.longitude,e.latitude]),p.getElement().addEventListener("click",h=>{var g,_;(_=(g=o.current.props).onClick)==null||_.call(g,{type:"click",target:p,originalEvent:h})}),p.on("dragstart",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDragStart)==null||S.call(_,g)}),p.on("drag",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDrag)==null||S.call(_,g)}),p.on("dragend",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDragEnd)==null||S.call(_,g)}),p},[]);i.useEffect(()=>(r.addTo(n.getMap()),()=>{r.remove()}),[]);const{longitude:a,latitude:c,offset:u,style:l,draggable:d=!1,popup:f=null,rotation:m=0,rotationAlignment:y="auto",pitchAlignment:C="auto"}=e;i.useEffect(()=>{L(r.getElement(),l)},[l]),i.useImperativeHandle(t,()=>r,[]);const T=o.current.props;(r.getLngLat().lng!==a||r.getLngLat().lat!==c)&&r.setLngLat([a,c]),u&&!Y(r.getOffset(),u)&&r.setOffset(u),r.isDraggable()!==d&&r.setDraggable(d),r.getRotation()!==m&&r.setRotation(m),r.getRotationAlignment()!==y&&r.setRotationAlignment(y),r.getPitchAlignment()!==C&&r.setPitchAlignment(C),r.getPopup()!==f&&r.setPopup(f);const x=Z(T.className,e.className);if(x)for(const E of x)r.toggleClassName(E);return o.current.props=e,B.createPortal(e.children,r.getElement())})),xe=i.memo(i.forwardRef((e,t)=>{const{map:n,mapLib:s}=i.useContext(w),o=i.useMemo(()=>document.createElement("div"),[]),r=i.useRef({props:e}),a=i.useMemo(()=>{const c={...e},u=new s.Popup(c);return u.setLngLat([e.longitude,e.latitude]),u.once("open",l=>{var d,f;(f=(d=r.current.props).onOpen)==null||f.call(d,l)}),u},[]);if(i.useEffect(()=>{const c=u=>{var l,d;(d=(l=r.current.props).onClose)==null||d.call(l,u)};return a.on("close",c),a.setDOMContent(o).addTo(n.getMap()),()=>{a.off("close",c),a.isOpen()&&a.remove()}},[]),i.useEffect(()=>{L(a.getElement(),e.style)},[e.style]),i.useImperativeHandle(t,()=>a,[]),a.isOpen()){const c=r.current.props;(a.getLngLat().lng!==e.longitude||a.getLngLat().lat!==e.latitude)&&a.setLngLat([e.longitude,e.latitude]),e.offset&&!v(c.offset,e.offset)&&a.setOffset(e.offset),(c.anchor!==e.anchor||c.maxWidth!==e.maxWidth)&&(a.options.anchor=e.anchor,a.setMaxWidth(e.maxWidth));const u=Z(c.className,e.className);if(u)for(const l of u)a.toggleClassName(l);r.current.props=e}return B.createPortal(e.children,o)}));function M(e,t,n,s){const o=i.useContext(w),r=i.useMemo(()=>e(o),[]);return i.useEffect(()=>{const a=t,c=null,u=typeof t=="function"?t:null,{map:l}=o;return l.hasControl(r)||(l.addControl(r,a==null?void 0:a.position),c&&c(o)),()=>{u&&u(o),l.hasControl(r)&&l.removeControl(r)}},[]),r}function ie(e){const t=M(({mapLib:n})=>new n.AttributionControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(ie);function ce(e){const t=M(({mapLib:n})=>new n.FullscreenControl({container:e.containerId&&document.getElementById(e.containerId)}),{position:e.position});return i.useEffect(()=>{L(t._controlContainer,e.style)},[e.style]),null}i.memo(ce);function le(e,t){const n=i.useRef({props:e}),s=M(({mapLib:o})=>{const r=new o.GeolocateControl(e),a=r._setupUI;return r._setupUI=()=>{r._container.hasChildNodes()||a()},r.on("geolocate",c=>{var u,l;(l=(u=n.current.props).onGeolocate)==null||l.call(u,c)}),r.on("error",c=>{var u,l;(l=(u=n.current.props).onError)==null||l.call(u,c)}),r.on("outofmaxbounds",c=>{var u,l;(l=(u=n.current.props).onOutOfMaxBounds)==null||l.call(u,c)}),r.on("trackuserlocationstart",c=>{var u,l;(l=(u=n.current.props).onTrackUserLocationStart)==null||l.call(u,c)}),r.on("trackuserlocationend",c=>{var u,l;(l=(u=n.current.props).onTrackUserLocationEnd)==null||l.call(u,c)}),r},{position:e.position});return n.current.props=e,i.useImperativeHandle(t,()=>s,[]),i.useEffect(()=>{L(s._container,e.style)},[e.style]),null}i.memo(i.forwardRef(le));function ue(e){const t=M(({mapLib:n})=>new n.NavigationControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(ue);function fe(e){const t=M(({mapLib:r})=>new r.ScaleControl(e),{position:e.position}),n=i.useRef(e),s=n.current;n.current=e;const{style:o}=e;return e.maxWidth!==void 0&&e.maxWidth!==s.maxWidth&&(t.options.maxWidth=e.maxWidth),e.unit!==void 0&&e.unit!==s.unit&&t.setUnit(e.unit),i.useEffect(()=>{L(t._container,o)},[o]),null}const ke=i.memo(fe);function de(e){const t=M(({mapLib:n})=>new n.TerrainControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(de);function me(e){const t=M(({mapLib:n})=>new n.LogoControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(me);function R(e,t){if(!e)throw new Error(t)}let ye=0;function ge(e,t,n){if(e.style&&e.style._loaded){const s={...n};return delete s.id,delete s.children,e.addSource(t,s),e.getSource(t)}return null}function he(e,t,n){var a,c,u;R(t.id===n.id,"source id changed"),R(t.type===n.type,"source type changed");let s="",o=0;for(const l in t)l!=="children"&&l!=="id"&&!v(n[l],t[l])&&(s=l,o++);if(!o)return;const r=t.type;if(r==="geojson")e.setData(t.data);else if(r==="image")e.updateImage({url:t.url,coordinates:t.coordinates});else switch(s){case"coordinates":(a=e.setCoordinates)==null||a.call(e,t.coordinates);break;case"url":(c=e.setUrl)==null||c.call(e,t.url);break;case"tiles":(u=e.setTiles)==null||u.call(e,t.tiles);break;default:console.warn(`Unable to update prop: ${s}`)}}function Re(e){const t=i.useContext(w).map.getMap(),n=i.useRef(e),[,s]=i.useState(0),o=i.useMemo(()=>e.id||`jsx-source-${ye++}`,[]);i.useEffect(()=>{if(t){const a=()=>setTimeout(()=>s(c=>c+1),0);return t.on("styledata",a),a(),()=>{var c;if(t.off("styledata",a),t.style&&t.style._loaded&&t.getSource(o)){const u=(c=t.getStyle())==null?void 0:c.layers;if(u)for(const l of u)l.source===o&&t.removeLayer(l.id);t.removeSource(o)}}}},[t]);let r=t&&t.style&&t.getSource(o);return r?he(r,e,n.current):r=ge(t,o,e),n.current=e,r&&i.Children.map(e.children,a=>a&&i.cloneElement(a,{source:o}))||null}function pe(e,t,n,s){if(R(n.id===s.id,"layer id changed"),R(n.type===s.type,"layer type changed"),n.type==="custom"||s.type==="custom")return;const{layout:o={},paint:r={},filter:a,minzoom:c,maxzoom:u,beforeId:l}=n;if(l!==s.beforeId&&e.moveLayer(t,l),o!==s.layout){const d=s.layout||{};for(const f in o)v(o[f],d[f])||e.setLayoutProperty(t,f,o[f]);for(const f in d)o.hasOwnProperty(f)||e.setLayoutProperty(t,f,void 0)}if(r!==s.paint){const d=s.paint||{};for(const f in r)v(r[f],d[f])||e.setPaintProperty(t,f,r[f]);for(const f in d)r.hasOwnProperty(f)||e.setPaintProperty(t,f,void 0)}v(a,s.filter)||e.setFilter(t,a),(c!==s.minzoom||u!==s.maxzoom)&&e.setLayerZoomRange(t,c,u)}function ve(e,t,n){if(e.style&&e.style._loaded&&(!("source"in n)||e.getSource(n.source))){const s={...n,id:t};delete s.beforeId,e.addLayer(s,n.beforeId)}}let _e=0;function Ie(e){const t=i.useContext(w).map.getMap(),n=i.useRef(e),[,s]=i.useState(0),o=i.useMemo(()=>e.id||`jsx-layer-${_e++}`,[]);if(i.useEffect(()=>{if(t){const a=()=>s(c=>c+1);return t.on("styledata",a),a(),()=>{t.off("styledata",a),t.style&&t.style._loaded&&t.getLayer(o)&&t.removeLayer(o)}}},[t]),t&&t.style&&t.getLayer(o))try{pe(t,o,e,n.current)}catch(a){console.warn(a)}else ve(t,o,e);return n.current=e,null}const V="pymc-basemap-mode",j="dark";function Le(){if(typeof window>"u")return j;try{const e=localStorage.getItem(V);if(e==="light"||e==="dark")return e}catch{}return j}function W(e){if(!(typeof window>"u"))try{localStorage.setItem(V,e)}catch{}}const q=K(e=>({mode:Le(),toggle:()=>e(t=>{const n=t.mode==="light"?"dark":"light";return W(n),{mode:n}}),setMode:t=>{W(t),e({mode:t})}})),Te=()=>q(e=>e.mode),Pe=()=>q(e=>e.toggle),Ce={light:"https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",dark:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json"},Se={light:"basemap-light-",dark:"basemap-dark-"},I={};async function Ee(e){if(I[e])return I[e];const n=await(await fetch(Ce[e])).json();return I[e]=n,n}function ze({mode:e}){const{current:t}=G(),[n,s]=i.useState(null),o=i.useRef({light:!1,dark:!1}),r=i.useRef({light:[],dark:[]});i.useEffect(()=>{const l=()=>{var y;const m=(y=t==null?void 0:t.getMap)==null?void 0:y.call(t);m&&!n&&s(m)};l();const d=setInterval(l,50),f=setTimeout(()=>clearInterval(d),5e3);return()=>{clearInterval(d),clearTimeout(f)}},[t,n]);const a=i.useCallback(async(l,d,f)=>{var E,k;if(o.current[d])return;const m=Se[d],y=await Ee(d),C=[];for(const[p,h]of Object.entries(y.sources||{})){const g=m+p;l.getSource(g)||l.addSource(g,h)}const x=(k=(((E=l.getStyle())==null?void 0:E.layers)||[]).find(p=>!p.id.startsWith("basemap-light-")&&!p.id.startsWith("basemap-dark-")))==null?void 0:k.id;for(const p of y.layers||[]){const h=m+p.id;if(C.push(h),l.getLayer(h))continue;const g={...p,id:h};"source"in g&&typeof g.source=="string"&&(g.source=m+g.source),g.layout||(g.layout={}),g.layout.visibility=f?"visible":"none";try{l.addLayer(g,x)}catch(_){console.warn(`[BasemapLayer] Failed to add layer ${h}:`,_)}}r.current[d]=C,o.current[d]=!0},[]),c=i.useCallback((l,d,f)=>{const m=r.current[d],y=f?"visible":"none";for(const C of m)if(l.getLayer(C))try{l.setLayoutProperty(C,"visibility",y)}catch{}},[]),u=i.useCallback(l=>{var m;const f=(((m=l.getStyle())==null?void 0:m.layers)||[]).filter(y=>!y.id.startsWith("basemap-light-")&&!y.id.startsWith("basemap-dark-"));for(const y of f)try{l.moveLayer(y.id)}catch{}},[]);return i.useEffect(()=>{if(!n)return;const l=d=>{n.hasImage(d.id)||n.addImage(d.id,{width:1,height:1,data:new Uint8Array([0,0,0,0])})};return n.on("styleimagemissing",l),()=>{n.off("styleimagemissing",l)}},[n]),i.useEffect(()=>{if(!n)return;let l=!1;const d=async()=>{if(!l)try{await Promise.all([a(n,"light",e==="light"),a(n,"dark",e==="dark")]),l||u(n)}catch(m){console.error("[BasemapLayer] Setup error:",m)}};n.isStyleLoaded()?d():(n.once("style.load",d),n.once("load",()=>{!l&&!o.current.light&&d()}));const f=()=>{l||setTimeout(()=>{!l&&o.current.light&&o.current.dark&&u(n)},100)};return n.on("styledata",f),()=>{l=!0,n.off("styledata",f)}},[n,a,u,e]),i.useEffect(()=>{n&&(!o.current.light||!o.current.dark||(c(n,"light",e==="light"),c(n,"dark",e==="dark")))},[n,e,c]),null}export{ze as B,Ie as L,Me as M,xe as P,Re as S,be as a,G as b,Pe as c,ke as d,Te as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CvSa8h-C.js","assets/index-1OCG5H5s.css"])))=>i.map(i=>d[i]); +import{r as i,_ as $,aO as B,e as G}from"./index-CvSa8h-C.js";const H=i.createContext(null);function K(){var s;const e=(s=i.useContext(H))==null?void 0:s.maps,t=i.useContext(w);return i.useMemo(()=>({...e,current:t==null?void 0:t.map}),[e,t])}function Y(e,t){const n=Array.isArray(e)?e[0]:e?e.x:0,s=Array.isArray(e)?e[1]:e?e.y:0,o=Array.isArray(t)?t[0]:t?t.x:0,r=Array.isArray(t)?t[1]:t?t.y:0;return n===o&&s===r}function v(e,t){if(e===t)return!0;if(!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n{let o=null;"interactive"in s&&(o=Object.assign({},s),delete o.interactive);const r=t[s.ref];if(r){o=o||Object.assign({},s),delete o.ref;for(const a of J)a in r&&(o[a]=r[a])}return o||s});return{...e,layers:n}}const A={version:8,sources:{},layers:[]},U={mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",click:"onClick",dblclick:"onDblClick",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",mouseout:"onMouseOut",contextmenu:"onContextMenu",touchstart:"onTouchStart",touchend:"onTouchEnd",touchmove:"onTouchMove",touchcancel:"onTouchCancel"},F={movestart:"onMoveStart",move:"onMove",moveend:"onMoveEnd",dragstart:"onDragStart",drag:"onDrag",dragend:"onDragEnd",zoomstart:"onZoomStart",zoom:"onZoom",zoomend:"onZoomEnd",rotatestart:"onRotateStart",rotate:"onRotate",rotateend:"onRotateEnd",pitchstart:"onPitchStart",pitch:"onPitch",pitchend:"onPitchEnd"},N={wheel:"onWheel",boxzoomstart:"onBoxZoomStart",boxzoomend:"onBoxZoomEnd",boxzoomcancel:"onBoxZoomCancel",resize:"onResize",load:"onLoad",render:"onRender",idle:"onIdle",remove:"onRemove",data:"onData",styledata:"onStyleData",sourcedata:"onSourceData",error:"onError"},X=["minZoom","maxZoom","minPitch","maxPitch","maxBounds","projection","renderWorldCopies"],Q=["scrollZoom","boxZoom","dragRotate","dragPan","keyboard","doubleClickZoom","touchZoomRotate","touchPitch"];class b{constructor(t,n,s){this._map=null,this._internalUpdate=!1,this._hoveredFeatures=null,this._propsedCameraUpdate=null,this._styleComponents={},this._onEvent=o=>{const r=this.props[N[o.type]];r?r(o):o.type==="error"&&console.error(o.error)},this._onCameraEvent=o=>{if(this._internalUpdate)return;o.viewState=this._propsedCameraUpdate||P(this._map.transform);const r=this.props[F[o.type]];r&&r(o)},this._onCameraUpdate=o=>this._internalUpdate?o:(this._propsedCameraUpdate=P(o),z(o,this.props)),this._onPointerEvent=o=>{(o.type==="mousemove"||o.type==="mouseout")&&this._updateHover(o);const r=this.props[U[o.type]];r&&(this.props.interactiveLayerIds&&o.type!=="mouseover"&&o.type!=="mouseout"&&(o.features=this._hoveredFeatures||this._queryRenderedFeatures(o.point)),r(o),delete o.features)},this._MapClass=t,this.props=n,this._initialize(s)}get map(){return this._map}setProps(t){const n=this.props;this.props=t;const s=this._updateSettings(t,n),o=this._updateSize(t),r=this._updateViewState(t);this._updateStyle(t,n),this._updateStyleComponents(t),this._updateHandlers(t,n),(s||o||r&&!this._map.isMoving())&&this.redraw()}static reuse(t,n){const s=b.savedMaps.pop();if(!s)return null;const o=s.map,r=o.getContainer();for(n.className=r.className;r.childNodes.length>0;)n.appendChild(r.childNodes[0]);o._container=n;const a=o._resizeObserver;a&&(a.disconnect(),a.observe(n)),s.setProps({...t,styleDiffing:!1}),o.resize();const{initialViewState:c}=t;return c&&(c.bounds?o.fitBounds(c.bounds,{...c.fitBoundsOptions,duration:0}):s._updateViewState(c)),o.isStyleLoaded()?o.fire("load"):o.once("style.load",()=>o.fire("load")),o._update(),s}_initialize(t){const{props:n}=this,{mapStyle:s=A}=n,o={...n,...n.initialViewState,container:t,style:O(s)},r=o.initialViewState||o.viewState||o;if(Object.assign(o,{center:[r.longitude||0,r.latitude||0],zoom:r.zoom||0,pitch:r.pitch||0,bearing:r.bearing||0}),n.gl){const c=HTMLCanvasElement.prototype.getContext;HTMLCanvasElement.prototype.getContext=()=>(HTMLCanvasElement.prototype.getContext=c,n.gl)}const a=new this._MapClass(o);r.padding&&a.setPadding(r.padding),n.cursor&&(a.getCanvas().style.cursor=n.cursor),a.transformCameraUpdate=this._onCameraUpdate,a.on("style.load",()=>{var c;this._styleComponents={light:a.getLight(),sky:a.getSky(),projection:(c=a.getProjection)==null?void 0:c.call(a),terrain:a.getTerrain()},this._updateStyleComponents(this.props)}),a.on("sourcedata",()=>{this._updateStyleComponents(this.props)});for(const c in U)a.on(c,this._onPointerEvent);for(const c in F)a.on(c,this._onCameraEvent);for(const c in N)a.on(c,this._onEvent);this._map=a}recycle(){const n=this.map.getContainer().querySelector("[mapboxgl-children]");n==null||n.remove(),b.savedMaps.push(this)}destroy(){this._map.remove()}redraw(){const t=this._map;t.style&&(t._frame&&(t._frame.cancel(),t._frame=null),t._render())}_updateSize(t){const{viewState:n}=t;if(n){const s=this._map;if(n.width!==s.transform.width||n.height!==s.transform.height)return s.resize(),!0}return!1}_updateViewState(t){const n=this._map,s=n.transform;if(!n.isMoving()){const r=z(s,t);if(Object.keys(r).length>0)return this._internalUpdate=!0,n.jumpTo(r),this._internalUpdate=!1,!0}return!1}_updateSettings(t,n){const s=this._map;let o=!1;for(const r of X)if(r in t&&!v(t[r],n[r])){o=!0;const a=s[`set${r[0].toUpperCase()}${r.slice(1)}`];a==null||a.call(s,t[r])}return o}_updateStyle(t,n){if(t.cursor!==n.cursor&&(this._map.getCanvas().style.cursor=t.cursor||""),t.mapStyle!==n.mapStyle){const{mapStyle:s=A,styleDiffing:o=!0}=t,r={diff:o};"localIdeographFontFamily"in t&&(r.localIdeographFontFamily=t.localIdeographFontFamily),this._map.setStyle(O(s),r)}}_updateStyleComponents({light:t,projection:n,sky:s,terrain:o}){var c,u;const r=this._map,a=this._styleComponents;r.style._loaded&&(t&&!v(t,a.light)&&(a.light=t,r.setLight(t)),n&&!v(n,a.projection)&&n!==((c=a.projection)==null?void 0:c.type)&&(a.projection=typeof n=="string"?{type:n}:n,(u=r.setProjection)==null||u.call(r,a.projection)),s&&!v(s,a.sky)&&(a.sky=s,r.setSky(s)),o!==void 0&&!v(o,a.terrain)&&(!o||r.getSource(o.source))&&(a.terrain=o,r.setTerrain(o)))}_updateHandlers(t,n){const s=this._map;for(const o of Q){const r=t[o]??!0,a=n[o]??!0;v(r,a)||(r?s[o].enable(r):s[o].disable())}}_queryRenderedFeatures(t){const n=this._map,{interactiveLayerIds:s=[]}=this.props;try{return n.queryRenderedFeatures(t,{layers:s.filter(n.getLayer.bind(n))})}catch{return[]}}_updateHover(t){var o;const{props:n}=this;if(n.interactiveLayerIds&&(n.onMouseMove||n.onMouseEnter||n.onMouseLeave)){const r=t.type,a=((o=this._hoveredFeatures)==null?void 0:o.length)>0,c=this._queryRenderedFeatures(t.point),u=c.length>0;!u&&a&&(t.type="mouseleave",this._onPointerEvent(t)),this._hoveredFeatures=c,u&&!a&&(t.type="mouseenter",this._onPointerEvent(t)),t.type=r}else this._hoveredFeatures=null}}b.savedMaps=[];const ee=["setMaxBounds","setMinZoom","setMaxZoom","setMinPitch","setMaxPitch","setRenderWorldCopies","setProjection","setStyle","addSource","removeSource","addLayer","removeLayer","setLayerZoomRange","setFilter","setPaintProperty","setLayoutProperty","setLight","setTerrain","setFog","remove"];function te(e){if(!e)return null;const t=e.map,n={getMap:()=>t};for(const s of ne(t))!(s in n)&&!ee.includes(s)&&(n[s]=t[s].bind(t));return n}function ne(e){const t=new Set;let n=e;for(;n;){for(const s of Object.getOwnPropertyNames(n))s[0]!=="_"&&typeof e[s]=="function"&&s!=="fire"&&s!=="setEventedParent"&&t.add(s);n=Object.getPrototypeOf(n)}return Array.from(t)}const oe=typeof document<"u"?i.useLayoutEffect:i.useEffect;function re(e,t){const{RTLTextPlugin:n,maxParallelImageRequests:s,workerCount:o,workerUrl:r}=t;if(n&&e.getRTLTextPluginStatus&&e.getRTLTextPluginStatus()==="unavailable"){const{pluginUrl:a,lazy:c=!0}=typeof n=="string"?{pluginUrl:n}:n;e.setRTLTextPlugin(a,u=>{u&&console.error(u)},c)}s!==void 0&&e.setMaxParallelImageRequests(s),o!==void 0&&e.setWorkerCount(o),r!==void 0&&e.setWorkerUrl(r)}const w=i.createContext(null);function se(e,t){const n=i.useContext(H),[s,o]=i.useState(null),r=i.useRef(),{current:a}=i.useRef({mapLib:null,map:null});i.useEffect(()=>{const l=e.mapLib;let d=!0,f;return Promise.resolve(l||$(()=>import("./maplibre-gl-CFrumWyy.js").then(m=>m.m),__vite__mapDeps([0,1]))).then(m=>{if(!d)return;if(!m)throw new Error("Invalid mapLib");const y="Map"in m?m:m.default;if(!y.Map)throw new Error("Invalid mapLib");re(y,e),e.reuseMaps&&(f=b.reuse(e,r.current)),f||(f=new b(y.Map,e,r.current)),a.map=te(f),a.mapLib=y,o(f),n==null||n.onMapMount(a.map,e.id)}).catch(m=>{const{onError:y}=e;y?y({type:"error",target:null,originalEvent:null,error:m}):console.error(m)}),()=>{d=!1,f&&(n==null||n.onMapUnmount(e.id),e.reuseMaps?f.recycle():f.destroy())}},[]),oe(()=>{s&&s.setProps(e)}),i.useImperativeHandle(t,()=>a.map,[s]);const c=i.useMemo(()=>({position:"relative",width:"100%",height:"100%",...e.style}),[e.style]),u={height:"100%"};return i.createElement("div",{id:e.id,ref:r,style:c},s&&i.createElement(w.Provider,{value:a},i.createElement("div",{"mapboxgl-children":"",style:u},e.children)))}const Me=i.forwardRef(se),ae=/box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;function L(e,t){if(!e||!t)return;const n=e.style;for(const s in t){const o=t[s];Number.isFinite(o)&&!ae.test(s)?n[s]=`${o}px`:n[s]=o}}function Z(e,t){if(e===t)return null;const n=D(e),s=D(t),o=[];for(const r of s)n.has(r)||o.push(r);for(const r of n)s.has(r)||o.push(r);return o.length===0?null:o}function D(e){return new Set(e?e.trim().split(/\s+/):[])}const be=i.memo(i.forwardRef((e,t)=>{const{map:n,mapLib:s}=i.useContext(w),o=i.useRef({props:e}),r=i.useMemo(()=>{let E=!1;i.Children.forEach(e.children,h=>{h&&(E=!0)});const k={...e,element:E?document.createElement("div"):void 0},p=new s.Marker(k);return p.setLngLat([e.longitude,e.latitude]),p.getElement().addEventListener("click",h=>{var g,_;(_=(g=o.current.props).onClick)==null||_.call(g,{type:"click",target:p,originalEvent:h})}),p.on("dragstart",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDragStart)==null||S.call(_,g)}),p.on("drag",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDrag)==null||S.call(_,g)}),p.on("dragend",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDragEnd)==null||S.call(_,g)}),p},[]);i.useEffect(()=>(r.addTo(n.getMap()),()=>{r.remove()}),[]);const{longitude:a,latitude:c,offset:u,style:l,draggable:d=!1,popup:f=null,rotation:m=0,rotationAlignment:y="auto",pitchAlignment:C="auto"}=e;i.useEffect(()=>{L(r.getElement(),l)},[l]),i.useImperativeHandle(t,()=>r,[]);const T=o.current.props;(r.getLngLat().lng!==a||r.getLngLat().lat!==c)&&r.setLngLat([a,c]),u&&!Y(r.getOffset(),u)&&r.setOffset(u),r.isDraggable()!==d&&r.setDraggable(d),r.getRotation()!==m&&r.setRotation(m),r.getRotationAlignment()!==y&&r.setRotationAlignment(y),r.getPitchAlignment()!==C&&r.setPitchAlignment(C),r.getPopup()!==f&&r.setPopup(f);const x=Z(T.className,e.className);if(x)for(const E of x)r.toggleClassName(E);return o.current.props=e,B.createPortal(e.children,r.getElement())})),xe=i.memo(i.forwardRef((e,t)=>{const{map:n,mapLib:s}=i.useContext(w),o=i.useMemo(()=>document.createElement("div"),[]),r=i.useRef({props:e}),a=i.useMemo(()=>{const c={...e},u=new s.Popup(c);return u.setLngLat([e.longitude,e.latitude]),u.once("open",l=>{var d,f;(f=(d=r.current.props).onOpen)==null||f.call(d,l)}),u},[]);if(i.useEffect(()=>{const c=u=>{var l,d;(d=(l=r.current.props).onClose)==null||d.call(l,u)};return a.on("close",c),a.setDOMContent(o).addTo(n.getMap()),()=>{a.off("close",c),a.isOpen()&&a.remove()}},[]),i.useEffect(()=>{L(a.getElement(),e.style)},[e.style]),i.useImperativeHandle(t,()=>a,[]),a.isOpen()){const c=r.current.props;(a.getLngLat().lng!==e.longitude||a.getLngLat().lat!==e.latitude)&&a.setLngLat([e.longitude,e.latitude]),e.offset&&!v(c.offset,e.offset)&&a.setOffset(e.offset),(c.anchor!==e.anchor||c.maxWidth!==e.maxWidth)&&(a.options.anchor=e.anchor,a.setMaxWidth(e.maxWidth));const u=Z(c.className,e.className);if(u)for(const l of u)a.toggleClassName(l);r.current.props=e}return B.createPortal(e.children,o)}));function M(e,t,n,s){const o=i.useContext(w),r=i.useMemo(()=>e(o),[]);return i.useEffect(()=>{const a=t,c=null,u=typeof t=="function"?t:null,{map:l}=o;return l.hasControl(r)||(l.addControl(r,a==null?void 0:a.position),c&&c(o)),()=>{u&&u(o),l.hasControl(r)&&l.removeControl(r)}},[]),r}function ie(e){const t=M(({mapLib:n})=>new n.AttributionControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(ie);function ce(e){const t=M(({mapLib:n})=>new n.FullscreenControl({container:e.containerId&&document.getElementById(e.containerId)}),{position:e.position});return i.useEffect(()=>{L(t._controlContainer,e.style)},[e.style]),null}i.memo(ce);function le(e,t){const n=i.useRef({props:e}),s=M(({mapLib:o})=>{const r=new o.GeolocateControl(e),a=r._setupUI;return r._setupUI=()=>{r._container.hasChildNodes()||a()},r.on("geolocate",c=>{var u,l;(l=(u=n.current.props).onGeolocate)==null||l.call(u,c)}),r.on("error",c=>{var u,l;(l=(u=n.current.props).onError)==null||l.call(u,c)}),r.on("outofmaxbounds",c=>{var u,l;(l=(u=n.current.props).onOutOfMaxBounds)==null||l.call(u,c)}),r.on("trackuserlocationstart",c=>{var u,l;(l=(u=n.current.props).onTrackUserLocationStart)==null||l.call(u,c)}),r.on("trackuserlocationend",c=>{var u,l;(l=(u=n.current.props).onTrackUserLocationEnd)==null||l.call(u,c)}),r},{position:e.position});return n.current.props=e,i.useImperativeHandle(t,()=>s,[]),i.useEffect(()=>{L(s._container,e.style)},[e.style]),null}i.memo(i.forwardRef(le));function ue(e){const t=M(({mapLib:n})=>new n.NavigationControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(ue);function fe(e){const t=M(({mapLib:r})=>new r.ScaleControl(e),{position:e.position}),n=i.useRef(e),s=n.current;n.current=e;const{style:o}=e;return e.maxWidth!==void 0&&e.maxWidth!==s.maxWidth&&(t.options.maxWidth=e.maxWidth),e.unit!==void 0&&e.unit!==s.unit&&t.setUnit(e.unit),i.useEffect(()=>{L(t._container,o)},[o]),null}const ke=i.memo(fe);function de(e){const t=M(({mapLib:n})=>new n.TerrainControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(de);function me(e){const t=M(({mapLib:n})=>new n.LogoControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(me);function R(e,t){if(!e)throw new Error(t)}let ye=0;function ge(e,t,n){if(e.style&&e.style._loaded){const s={...n};return delete s.id,delete s.children,e.addSource(t,s),e.getSource(t)}return null}function he(e,t,n){var a,c,u;R(t.id===n.id,"source id changed"),R(t.type===n.type,"source type changed");let s="",o=0;for(const l in t)l!=="children"&&l!=="id"&&!v(n[l],t[l])&&(s=l,o++);if(!o)return;const r=t.type;if(r==="geojson")e.setData(t.data);else if(r==="image")e.updateImage({url:t.url,coordinates:t.coordinates});else switch(s){case"coordinates":(a=e.setCoordinates)==null||a.call(e,t.coordinates);break;case"url":(c=e.setUrl)==null||c.call(e,t.url);break;case"tiles":(u=e.setTiles)==null||u.call(e,t.tiles);break;default:console.warn(`Unable to update prop: ${s}`)}}function Re(e){const t=i.useContext(w).map.getMap(),n=i.useRef(e),[,s]=i.useState(0),o=i.useMemo(()=>e.id||`jsx-source-${ye++}`,[]);i.useEffect(()=>{if(t){const a=()=>setTimeout(()=>s(c=>c+1),0);return t.on("styledata",a),a(),()=>{var c;if(t.off("styledata",a),t.style&&t.style._loaded&&t.getSource(o)){const u=(c=t.getStyle())==null?void 0:c.layers;if(u)for(const l of u)l.source===o&&t.removeLayer(l.id);t.removeSource(o)}}}},[t]);let r=t&&t.style&&t.getSource(o);return r?he(r,e,n.current):r=ge(t,o,e),n.current=e,r&&i.Children.map(e.children,a=>a&&i.cloneElement(a,{source:o}))||null}function pe(e,t,n,s){if(R(n.id===s.id,"layer id changed"),R(n.type===s.type,"layer type changed"),n.type==="custom"||s.type==="custom")return;const{layout:o={},paint:r={},filter:a,minzoom:c,maxzoom:u,beforeId:l}=n;if(l!==s.beforeId&&e.moveLayer(t,l),o!==s.layout){const d=s.layout||{};for(const f in o)v(o[f],d[f])||e.setLayoutProperty(t,f,o[f]);for(const f in d)o.hasOwnProperty(f)||e.setLayoutProperty(t,f,void 0)}if(r!==s.paint){const d=s.paint||{};for(const f in r)v(r[f],d[f])||e.setPaintProperty(t,f,r[f]);for(const f in d)r.hasOwnProperty(f)||e.setPaintProperty(t,f,void 0)}v(a,s.filter)||e.setFilter(t,a),(c!==s.minzoom||u!==s.maxzoom)&&e.setLayerZoomRange(t,c,u)}function ve(e,t,n){if(e.style&&e.style._loaded&&(!("source"in n)||e.getSource(n.source))){const s={...n,id:t};delete s.beforeId,e.addLayer(s,n.beforeId)}}let _e=0;function Ie(e){const t=i.useContext(w).map.getMap(),n=i.useRef(e),[,s]=i.useState(0),o=i.useMemo(()=>e.id||`jsx-layer-${_e++}`,[]);if(i.useEffect(()=>{if(t){const a=()=>s(c=>c+1);return t.on("styledata",a),a(),()=>{t.off("styledata",a),t.style&&t.style._loaded&&t.getLayer(o)&&t.removeLayer(o)}}},[t]),t&&t.style&&t.getLayer(o))try{pe(t,o,e,n.current)}catch(a){console.warn(a)}else ve(t,o,e);return n.current=e,null}const V="pymc-basemap-mode",j="dark";function Le(){if(typeof window>"u")return j;try{const e=localStorage.getItem(V);if(e==="light"||e==="dark")return e}catch{}return j}function W(e){if(!(typeof window>"u"))try{localStorage.setItem(V,e)}catch{}}const q=G(e=>({mode:Le(),toggle:()=>e(t=>{const n=t.mode==="light"?"dark":"light";return W(n),{mode:n}}),setMode:t=>{W(t),e({mode:t})}})),Te=()=>q(e=>e.mode),Pe=()=>q(e=>e.toggle),Ce={light:"https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",dark:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json"},Se={light:"basemap-light-",dark:"basemap-dark-"},I={};async function Ee(e){if(I[e])return I[e];const n=await(await fetch(Ce[e])).json();return I[e]=n,n}function ze({mode:e}){const{current:t}=K(),[n,s]=i.useState(null),o=i.useRef({light:!1,dark:!1}),r=i.useRef({light:[],dark:[]});i.useEffect(()=>{const l=()=>{var y;const m=(y=t==null?void 0:t.getMap)==null?void 0:y.call(t);m&&!n&&s(m)};l();const d=setInterval(l,50),f=setTimeout(()=>clearInterval(d),5e3);return()=>{clearInterval(d),clearTimeout(f)}},[t,n]);const a=i.useCallback(async(l,d,f)=>{var E,k;if(o.current[d])return;const m=Se[d],y=await Ee(d),C=[];for(const[p,h]of Object.entries(y.sources||{})){const g=m+p;l.getSource(g)||l.addSource(g,h)}const x=(k=(((E=l.getStyle())==null?void 0:E.layers)||[]).find(p=>!p.id.startsWith("basemap-light-")&&!p.id.startsWith("basemap-dark-")))==null?void 0:k.id;for(const p of y.layers||[]){const h=m+p.id;if(C.push(h),l.getLayer(h))continue;const g={...p,id:h};"source"in g&&typeof g.source=="string"&&(g.source=m+g.source),g.layout||(g.layout={}),g.layout.visibility=f?"visible":"none";try{l.addLayer(g,x)}catch(_){console.warn(`[BasemapLayer] Failed to add layer ${h}:`,_)}}r.current[d]=C,o.current[d]=!0},[]),c=i.useCallback((l,d,f)=>{const m=r.current[d],y=f?"visible":"none";for(const C of m)if(l.getLayer(C))try{l.setLayoutProperty(C,"visibility",y)}catch{}},[]),u=i.useCallback(l=>{var m;const f=(((m=l.getStyle())==null?void 0:m.layers)||[]).filter(y=>!y.id.startsWith("basemap-light-")&&!y.id.startsWith("basemap-dark-"));for(const y of f)try{l.moveLayer(y.id)}catch{}},[]);return i.useEffect(()=>{if(!n)return;const l=d=>{n.hasImage(d.id)||n.addImage(d.id,{width:1,height:1,data:new Uint8Array([0,0,0,0])})};return n.on("styleimagemissing",l),()=>{n.off("styleimagemissing",l)}},[n]),i.useEffect(()=>{if(!n)return;let l=!1;const d=async()=>{if(!l)try{await Promise.all([a(n,"light",e==="light"),a(n,"dark",e==="dark")]),l||u(n)}catch(m){console.error("[BasemapLayer] Setup error:",m)}};n.isStyleLoaded()?d():(n.once("style.load",d),n.once("load",()=>{!l&&!o.current.light&&d()}));const f=()=>{l||setTimeout(()=>{!l&&o.current.light&&o.current.dark&&u(n)},100)};return n.on("styledata",f),()=>{l=!0,n.off("styledata",f)}},[n,a,u,e]),i.useEffect(()=>{n&&(!o.current.light||!o.current.dark||(c(n,"light",e==="light"),c(n,"dark",e==="dark")))},[n,e,c]),null}export{ze as B,Ie as L,Me as M,xe as P,Re as S,be as a,K as b,Pe as c,ke as d,Te as u}; diff --git a/frontend/dist/assets/ChatBubble-CCVYaLOe.js b/frontend/dist/assets/ChatBubble-BuuYl9Rr.js similarity index 93% rename from frontend/dist/assets/ChatBubble-CCVYaLOe.js rename to frontend/dist/assets/ChatBubble-BuuYl9Rr.js index 26f0e293..91ded5f8 100644 --- a/frontend/dist/assets/ChatBubble-CCVYaLOe.js +++ b/frontend/dist/assets/ChatBubble-BuuYl9Rr.js @@ -1,4 +1,4 @@ -import{d as h,r as u,j as e,c as t}from"./index-BOwCLZTK.js";import{e as f,g as p,a as g,b as j,f as b}from"./chat-utils-D21OFED5.js";/** +import{d as h,r as u,j as e,c as t}from"./index-CvSa8h-C.js";import{e as f,g as p,a as g,b as j,f as b}from"./chat-utils-BUBqf9vH.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. diff --git a/frontend/dist/assets/CollisionExplorerModal-Cudk5ace.js b/frontend/dist/assets/CollisionExplorerModal-BC_ZJRMz.js similarity index 70% rename from frontend/dist/assets/CollisionExplorerModal-Cudk5ace.js rename to frontend/dist/assets/CollisionExplorerModal-BC_ZJRMz.js index f242292c..deee437a 100644 --- a/frontend/dist/assets/CollisionExplorerModal-Cudk5ace.js +++ b/frontend/dist/assets/CollisionExplorerModal-BC_ZJRMz.js @@ -1,6 +1,6 @@ -import{d as k,r as c,K as L,bO as S,P as H,j as e,ak as R,al as B,bz as E,c as N,x as w,F as T,D as _,E as D,bY as P}from"./index-BOwCLZTK.js";import{u as z,M as I,B as W,S as q,L as F,a as U}from"./BasemapLayer-B-5TmAfZ.js";import{T as Y}from"./triangle-alert-SO3tIa8w.js";import{M as A}from"./map-pin-C2z_C0J3.js";import{M as $}from"./monitor-smartphone-Dd11JEL9.js";/** +import{d as k,r as c,K as L,bS as S,P as H,j as e,am as R,an as B,bD as E,c as N,x as w,F as T,D,E as _,c0 as P}from"./index-CvSa8h-C.js";import{u as I,M as z,B as W,S as q,L as F,a as U}from"./BasemapLayer-NuqTvOvz.js";import{T as A}from"./triangle-alert-C7tm61-l.js";import{M as Y}from"./map-pin-BCwmmHGs.js";import{M as $}from"./monitor-smartphone-D-7zPu_H.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const G=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],J=k("share-2",G),K={version:8,sources:{},layers:[],glyphs:"https://tiles.basemaps.cartocdn.com/fonts/{fontstack}/{range}.pbf"};function M({node:l,isHovered:v,onHover:f}){const[g,p]=c.useState(!1),b=c.useCallback(async d=>{d.stopPropagation(),await T(l.hash),p(!0),setTimeout(()=>p(!1),2e3)},[l.hash]),h=l.contactType.toLowerCase(),m=h.includes("room")||h.includes("server"),o=h==="companion"||h==="client";let n=J,r="text-sys-blue";return m?(n=P,r="text-signal-fair"):o?(n=$,r="text-fg-muted"):l.isNeighbor&&(r="text-sys-green"),e.jsxs("div",{className:N("flex items-center gap-3 px-3 py-2.5 radius-inner transition-base cursor-pointer",v?"bg-sys-blue/10":"hover:bg-subtle-fill"),onMouseEnter:()=>f(l.hash),onMouseLeave:()=>f(null),children:[e.jsx(n,{className:N("w-4 h-4 flex-shrink-0",r)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"type-label text-fg-primary truncate",children:l.name}),l.isNeighbor&&e.jsx(w,{color:"green",compact:!0,children:"NBR"}),l.isRepeater&&e.jsx(w,{color:"zinc",compact:!0,children:"RPT"}),l.isHub&&e.jsx(w,{color:"indigo",compact:!0,children:"HUB"})]}),e.jsxs("button",{onClick:b,className:N("mt-1 inline-flex items-center gap-1 type-data-xs px-1.5 py-0.5 rounded","border transition-all cursor-pointer",g?"border-sys-green/50 bg-sys-green/10 text-sys-green":"border-edge-subtle bg-subtle/50 text-fg-muted hover:border-edge-strong"),title:`Copy: ${l.hash}`,children:[l.hash.slice(0,12),"…",g?e.jsx(_,{className:"w-2.5 h-2.5"}):e.jsx(D,{className:"w-2.5 h-2.5 opacity-50"})]})]})]})}function C({nodes:l,hoveredHash:v,onHover:f}){const g=z(),p=c.useRef(null),b=E(),[h,m]=c.useState(!1),o=c.useMemo(()=>l.filter(a=>a.latitude!=null&&a.longitude!=null&&(a.latitude!==0||a.longitude!==0)),[l]),n=c.useMemo(()=>{if(o.length===0)return null;let a=1/0,s=-1/0,t=1/0,i=-1/0;for(const x of o)a=Math.min(a,x.longitude),s=Math.max(s,x.longitude),t=Math.min(t,x.latitude),i=Math.max(i,x.latitude);const u=.01;if(i-tn?{longitude:(n[0][0]+n[1][0])/2,latitude:(n[0][1]+n[1][1])/2}:{longitude:0,latitude:0},[n]),d=c.useMemo(()=>{if(o.length<2)return null;const a=[];for(let s=0;s{var s;const a=(s=p.current)==null?void 0:s.getMap();if(!a||!n){m(!0);return}a.fitBounds(n,{padding:{top:50,bottom:50,left:50,right:50},maxZoom:13,duration:0}),setTimeout(()=>m(!0),50)},[n]),y=b&&h;return o.length===0?e.jsx("div",{className:"h-full flex items-center justify-center bg-subtle/30 radius-inner",children:e.jsxs("div",{className:"text-center text-fg-secondary p-4",children:[e.jsx(A,{className:"w-8 h-8 mx-auto mb-2 opacity-40"}),e.jsx("p",{className:"text-sm",children:"No location data available"})]})}):e.jsxs("div",{className:"h-full w-full relative radius-inner overflow-hidden bg-elevated",children:[e.jsx("div",{className:N("absolute inset-0 flex items-center justify-center z-10","transition-opacity duration-200 pointer-events-none",y?"opacity-0":"opacity-100 bg-elevated"),children:e.jsx("div",{className:"w-5 h-5 border-2 border-text-muted/30 border-t-text-muted rounded-full animate-spin"})}),e.jsx("div",{className:N("h-full w-full transition-opacity duration-200",y?"opacity-100":"opacity-0"),children:e.jsxs(I,{ref:p,initialViewState:{longitude:r.longitude,latitude:r.latitude,zoom:10},style:{height:"100%",width:"100%"},mapStyle:K,attributionControl:!1,onLoad:j,children:[e.jsx(W,{mode:g}),d&&e.jsx(q,{id:"collision-edges",type:"geojson",data:d,children:e.jsx(F,{id:"collision-edges-line",type:"line",paint:{"line-color":"#3B3F4A","line-width":2,"line-opacity":.8},layout:{"line-cap":"round","line-join":"round"}})}),o.map(a=>{const s=a.hash===v,t=a.hash.startsWith("0x")?a.hash.slice(2,4).toUpperCase():a.hash.slice(0,2).toUpperCase();return e.jsx(U,{longitude:a.longitude,latitude:a.latitude,anchor:"center",children:e.jsx("div",{className:"cursor-pointer transition-all duration-150",onMouseEnter:()=>f(a.hash),onMouseLeave:()=>f(null),style:{pointerEvents:"auto"},children:e.jsxs(w,{color:"amber",filled:!0,className:"type-data-xs shadow-lg",children:[t,s&&e.jsx("span",{className:"ml-1 opacity-75 font-sans",children:a.name})]})})},a.hash)})]})})]})}function O({isOpen:l,prefix:v,candidateHashes:f,onClose:g}){const p=L(),b=S(),h=H(),[m,o]=c.useState(null),n=c.useMemo(()=>new Set(h.map(s=>s.hash)),[h]),r=(p==null?void 0:p.neighbors)??{},d=c.useMemo(()=>{const s=t=>{if(r[t])return r[t];if(!t.startsWith("0x")&&r["0x"+t])return r["0x"+t];if(t.startsWith("0x")&&r[t.slice(2)])return r[t.slice(2)]};return f.map(t=>{var u;const i=s(t);return{hash:t,name:(i==null?void 0:i.node_name)||(i==null?void 0:i.name)||`Unknown (${t.slice(0,8)}…)`,contactType:(i==null?void 0:i.contact_type)||"",isRepeater:(i==null?void 0:i.is_repeater)||((u=i==null?void 0:i.contact_type)==null?void 0:u.toLowerCase())==="repeater"||!1,isNeighbor:n.has(t)||n.has("0x"+t)||n.has(t.replace(/^0x/,"")),isHub:b.has(t),latitude:i==null?void 0:i.latitude,longitude:i==null?void 0:i.longitude}}).sort((t,i)=>t.isNeighbor!==i.isNeighbor?t.isNeighbor?-1:1:t.isHub!==i.isHub?t.isHub?-1:1:t.name.localeCompare(i.name))},[f,r,n,b]),j=c.useMemo(()=>d.some(s=>s.latitude!=null&&s.longitude!=null&&(s.latitude!==0||s.longitude!==0)),[d]),y=c.useCallback(s=>{o(s)},[]),a=j?"4xl":"lg";return l?e.jsxs(R,{open:l,onClose:g,size:a,motionPlus:!0,className:j?"sm:h-[500px] sm:max-h-[600px]":"",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-edge-subtle",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 radius-inner bg-signal-fair/10",children:e.jsx(Y,{className:"w-5 h-5 text-signal-fair"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"type-micro",children:["Prefix Collision: ",e.jsx("span",{className:"font-mono text-sys-blue",children:v})]}),e.jsxs("p",{className:"text-xs text-fg-secondary",children:[d.length," nodes share this prefix"]})]})]}),e.jsx("button",{onClick:g,className:"sm:hidden min-h-[44px] min-w-[44px] px-3 flex items-center justify-center text-[15px] font-medium text-sys-blue active:text-sys-blue/70 transition-base radius-inner active:bg-subtle-fill",children:"Done"}),e.jsx("button",{onClick:g,className:"hidden sm:flex items-center justify-center p-2 text-fg-muted hover:text-fg-primary transition-base radius-inner hover:bg-subtle","aria-label":"Close",children:e.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),e.jsxs(B,{className:"p-0 overflow-hidden flex-1 flex flex-col min-h-0",children:[e.jsxs("div",{className:"sm:hidden flex-1 overflow-y-auto",children:[j&&e.jsx("div",{className:"h-64 p-2 border-b border-edge-subtle",children:e.jsx(C,{nodes:d,hoveredHash:m,onHover:y})}),e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:y},s.hash))})]}),j?e.jsxs("div",{className:"hidden sm:grid sm:grid-cols-[280px_minmax(400px,1fr)] flex-1 overflow-hidden sm:min-w-[700px]",children:[e.jsx("div",{className:"overflow-y-auto border-r border-edge-subtle",children:e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:y},s.hash))})}),e.jsx("div",{className:"overflow-hidden p-2",children:e.jsx(C,{nodes:d,hoveredHash:m,onHover:y})})]}):e.jsx("div",{className:"hidden sm:block flex-1 overflow-y-auto",children:e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:y},s.hash))})})]})]}):null}const se=c.memo(O);export{se as C,J as S}; + */const G=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],J=k("share-2",G),K={version:8,sources:{},layers:[],glyphs:"https://tiles.basemaps.cartocdn.com/fonts/{fontstack}/{range}.pbf"};function M({node:o,isHovered:v,onHover:f}){const[g,p]=c.useState(!1),b=c.useCallback(async d=>{d.stopPropagation(),await T(o.hash),p(!0),setTimeout(()=>p(!1),2e3)},[o.hash]),h=o.contactType.toLowerCase(),m=h.includes("room")||h.includes("server"),l=h==="companion"||h==="client";let n=J,r="text-sys-blue";return m?(n=P,r="text-signal-fair"):l?(n=$,r="text-fg-muted"):o.isNeighbor&&(r="text-sys-green"),e.jsxs("div",{className:N("flex items-center gap-3 px-3 py-2.5 radius-inner transition-base cursor-pointer",v?"bg-sys-blue/10":"hover:bg-subtle-fill"),onMouseEnter:()=>f(o.hash),onMouseLeave:()=>f(null),children:[e.jsx(n,{className:N("w-4 h-4 flex-shrink-0",r)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"type-label text-fg-primary truncate",children:o.name}),o.isNeighbor&&e.jsx(w,{color:"green",compact:!0,children:"NBR"}),o.isRepeater&&e.jsx(w,{color:"zinc",compact:!0,children:"RPT"}),o.isHub&&e.jsx(w,{color:"indigo",compact:!0,children:"HUB"})]}),e.jsxs("button",{onClick:b,className:N("mt-1 inline-flex items-center gap-1 type-data-xs px-1.5 py-0.5 rounded","border transition-all cursor-pointer",g?"border-sys-green/50 bg-sys-green/10 text-sys-green":"border-edge-subtle bg-subtle/50 text-fg-muted hover:border-edge-strong"),title:`Copy: ${o.hash}`,children:[o.hash.slice(0,12),"…",g?e.jsx(D,{className:"w-2.5 h-2.5"}):e.jsx(_,{className:"w-2.5 h-2.5 opacity-50"})]})]})]})}function C({nodes:o,hoveredHash:v,onHover:f}){const g=I(),p=c.useRef(null),b=E(),[h,m]=c.useState(!1),l=c.useMemo(()=>o.filter(a=>a.latitude!=null&&a.longitude!=null&&(a.latitude!==0||a.longitude!==0)),[o]),n=c.useMemo(()=>{if(l.length===0)return null;let a=1/0,s=-1/0,t=1/0,i=-1/0;for(const x of l)a=Math.min(a,x.longitude),s=Math.max(s,x.longitude),t=Math.min(t,x.latitude),i=Math.max(i,x.latitude);const u=.01;if(i-tn?{longitude:(n[0][0]+n[1][0])/2,latitude:(n[0][1]+n[1][1])/2}:{longitude:0,latitude:0},[n]),d=c.useMemo(()=>{if(l.length<2)return null;const a=[];for(let s=0;s{var s;const a=(s=p.current)==null?void 0:s.getMap();if(!a||!n){m(!0);return}a.fitBounds(n,{padding:{top:50,bottom:50,left:50,right:50},maxZoom:13,duration:0}),setTimeout(()=>m(!0),50)},[n]),y=b&&h;return l.length===0?e.jsx("div",{className:"h-full flex items-center justify-center bg-subtle/30 radius-inner",children:e.jsxs("div",{className:"text-center text-fg-secondary p-4",children:[e.jsx(Y,{className:"w-8 h-8 mx-auto mb-2 opacity-40"}),e.jsx("p",{className:"text-sm",children:"No location data available"})]})}):e.jsxs("div",{className:"h-full w-full relative radius-inner overflow-hidden bg-elevated",children:[e.jsx("div",{className:N("absolute inset-0 flex items-center justify-center z-10","transition-opacity duration-200 pointer-events-none",y?"opacity-0":"opacity-100 bg-elevated"),children:e.jsx("div",{className:"w-5 h-5 border-2 border-text-muted/30 border-t-text-muted rounded-full animate-spin"})}),e.jsx("div",{className:N("h-full w-full transition-opacity duration-200",y?"opacity-100":"opacity-0"),children:e.jsxs(z,{ref:p,initialViewState:{longitude:r.longitude,latitude:r.latitude,zoom:10},style:{height:"100%",width:"100%"},mapStyle:K,attributionControl:!1,onLoad:j,children:[e.jsx(W,{mode:g}),d&&e.jsx(q,{id:"collision-edges",type:"geojson",data:d,children:e.jsx(F,{id:"collision-edges-line",type:"line",paint:{"line-color":"#3B3F4A","line-width":2,"line-opacity":.8},layout:{"line-cap":"round","line-join":"round"}})}),l.map(a=>{const s=a.hash===v,t=a.hash.startsWith("0x")?a.hash.slice(2,4).toUpperCase():a.hash.slice(0,2).toUpperCase();return e.jsx(U,{longitude:a.longitude,latitude:a.latitude,anchor:"center",children:e.jsx("div",{className:"cursor-pointer transition-all duration-150",onMouseEnter:()=>f(a.hash),onMouseLeave:()=>f(null),style:{pointerEvents:"auto"},children:e.jsxs(w,{color:"amber",filled:!0,className:"type-data-xs shadow-lg",children:[t,s&&e.jsx("span",{className:"ml-1 opacity-75 font-sans",children:a.name})]})})},a.hash)})]})})]})}function Q({isOpen:o,prefix:v,candidateHashes:f,onClose:g}){const p=L(),b=S(),h=H(),[m,l]=c.useState(null),n=c.useMemo(()=>new Set(h.map(s=>s.hash)),[h]),r=(p==null?void 0:p.neighbors)??{},d=c.useMemo(()=>{const s=t=>{if(r[t])return r[t];if(!t.startsWith("0x")&&r["0x"+t])return r["0x"+t];if(t.startsWith("0x")&&r[t.slice(2)])return r[t.slice(2)]};return f.map(t=>{var u;const i=s(t);return{hash:t,name:(i==null?void 0:i.node_name)||(i==null?void 0:i.name)||`Unknown (${t.slice(0,8)}…)`,contactType:(i==null?void 0:i.contact_type)||"",isRepeater:(i==null?void 0:i.is_repeater)||((u=i==null?void 0:i.contact_type)==null?void 0:u.toLowerCase())==="repeater"||!1,isNeighbor:n.has(t)||n.has("0x"+t)||n.has(t.replace(/^0x/,"")),isHub:b.has(t),latitude:i==null?void 0:i.latitude,longitude:i==null?void 0:i.longitude}}).sort((t,i)=>t.isNeighbor!==i.isNeighbor?t.isNeighbor?-1:1:t.isHub!==i.isHub?t.isHub?-1:1:t.name.localeCompare(i.name))},[f,r,n,b]),j=c.useMemo(()=>d.some(s=>s.latitude!=null&&s.longitude!=null&&(s.latitude!==0||s.longitude!==0)),[d]),y=c.useCallback(s=>{l(s)},[]),a=j?"4xl":"lg";return o?e.jsxs(R,{open:o,onClose:g,size:a,motionPlus:!0,className:j?"sm:h-[500px] sm:max-h-[600px]":"",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-edge-subtle",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 radius-inner bg-signal-fair/10",children:e.jsx(A,{className:"w-5 h-5 text-signal-fair"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"type-micro",children:["Prefix Collision: ",e.jsx("span",{className:"font-mono text-sys-blue",children:v})]}),e.jsxs("p",{className:"text-xs text-fg-secondary",children:[d.length," nodes share this prefix"]})]})]}),e.jsx("button",{onClick:g,className:"sm:hidden min-h-[44px] min-w-[44px] px-3 flex items-center justify-center text-[15px] font-medium text-sys-blue active:text-sys-blue/70 transition-base radius-inner active:bg-subtle-fill",children:"Done"}),e.jsx("button",{onClick:g,className:"hidden sm:flex items-center justify-center p-2 text-fg-muted hover:text-fg-primary transition-base radius-inner hover:bg-subtle","aria-label":"Close",children:e.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),e.jsxs(B,{className:"p-0 overflow-hidden flex-1 flex flex-col min-h-0",children:[e.jsxs("div",{className:"sm:hidden flex-1 overflow-y-auto",children:[j&&e.jsx("div",{className:"h-64 p-2 border-b border-edge-subtle",children:e.jsx(C,{nodes:d,hoveredHash:m,onHover:y})}),e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:y},s.hash))})]}),j?e.jsxs("div",{className:"hidden sm:grid sm:grid-cols-[280px_minmax(400px,1fr)] flex-1 overflow-hidden sm:min-w-[700px]",children:[e.jsx("div",{className:"overflow-y-auto border-r border-edge-subtle",children:e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:y},s.hash))})}),e.jsx("div",{className:"overflow-hidden p-2",children:e.jsx(C,{nodes:d,hoveredHash:m,onHover:y})})]}):e.jsx("div",{className:"hidden sm:block flex-1 overflow-y-auto",children:e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:y},s.hash))})})]})]}):null}const se=c.memo(Q);export{se as C,J as S}; diff --git a/frontend/dist/assets/Configuration-CdhAM59e.js b/frontend/dist/assets/Configuration-tKO62oR_.js similarity index 98% rename from frontend/dist/assets/Configuration-CdhAM59e.js rename to frontend/dist/assets/Configuration-tKO62oR_.js index 9fe8cf85..4a8380ac 100644 --- a/frontend/dist/assets/Configuration-CdhAM59e.js +++ b/frontend/dist/assets/Configuration-tKO62oR_.js @@ -1,5 +1,5 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/latin-400-BcR6IdUc.css","assets/latin-500-DCnAHIrw.css","assets/latin-600-CnkPk-vb.css","assets/latin-700-UC1i-VSI.css"])))=>i.map(i=>d[i]); -import{d as ue,r as t,j as e,c as l,L as H,D as B,bk as J,am as Ts,dS as Re,dT as ss,dU as Ze,_ as Te,T as ie,M as et,S as st,dV as tt,N as X,cn as Qe,b_ as at,dW as nt,z as lt,dX as _s,dY as rt,dZ as it,d_ as ot,R as ct,B as F,d$ as qe,I as dt,E as ut,F as mt}from"./index-BOwCLZTK.js";import{g as xt,a as ft,c as ht,r as pt,s as yt,b as gt,u as bt,d as jt}from"./system-BNWIl4nC.js";import{C as vt}from"./ConfirmModal-DpSKXZ01.js";import{N as Nt}from"./NodeInformationCard-PgTi9luy.js";import{i as kt,g as wt,s as Ct,a as St,k as Tt}from"./keycap-sfx-ByZp-njj.js";import{C as Y,P as _t,a as Ft,B as Et}from"./PageLayout-QKntxcnp.js";import{T as Is}from"./trash-2-qMD09ppP.js";import{R as te,C as _e}from"./Grid-eFMUBxsw.js";import{A as Rt}from"./antenna-rYsqNluv.js";import{P as Fs}from"./plus-ClrHVFhr.js";import{K as Ge}from"./key-round-Cv6ASKpS.js";import{C as Pt}from"./circle-check-CmQaOkab.js";import{T as Be}from"./triangle-alert-SO3tIa8w.js";import{R as Dt}from"./refresh-cw-C9txhqc9.js";import{C as It}from"./chevron-right-DJVm4pVP.js";import"./DataBox-BVnEv6Au.js";/** +import{d as ue,r as t,j as e,c as l,L as H,D as B,bo as J,ao as Ts,dT as Re,dU as ss,dV as Ze,_ as Te,T as ie,M as et,S as st,dW as tt,N as X,cr as Qe,c2 as at,dX as nt,z as lt,dY as _s,dZ as rt,d_ as it,d$ as ot,R as ct,B as F,e0 as qe,I as dt,E as ut,F as mt}from"./index-CvSa8h-C.js";import{g as xt,a as ft,c as ht,r as pt,s as yt,b as gt,u as bt,d as jt}from"./system-CteuZERM.js";import{C as vt}from"./ConfirmModal-D2DSFKRK.js";import{N as Nt}from"./NodeInformationCard-CtqEav-P.js";import{i as kt,g as wt,s as Ct,a as St,k as Tt}from"./keycap-sfx-ByZp-njj.js";import{C as Y,P as _t,a as Ft,B as Et}from"./PageLayout-B8orsDlo.js";import{T as Is}from"./trash-2-DUG72tk9.js";import{R as te,C as _e}from"./Grid-suKoG48i.js";import{A as Rt}from"./antenna-DiJxjpBL.js";import{P as Fs}from"./plus-CNNHSjgp.js";import{K as Ge}from"./key-round-CYJwakCI.js";import{C as Pt}from"./circle-check-DW83e7Fg.js";import{T as Be}from"./triangle-alert-C7tm61-l.js";import{R as Dt}from"./refresh-cw-DQJSjSjI.js";import{C as It}from"./chevron-right-1kmv-Vqa.js";import"./DataBox-CwAsAwyY.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. diff --git a/frontend/dist/assets/ConfirmModal-DpSKXZ01.js b/frontend/dist/assets/ConfirmModal-D2DSFKRK.js similarity index 76% rename from frontend/dist/assets/ConfirmModal-DpSKXZ01.js rename to frontend/dist/assets/ConfirmModal-D2DSFKRK.js index 791e1c4b..60cfdb47 100644 --- a/frontend/dist/assets/ConfirmModal-DpSKXZ01.js +++ b/frontend/dist/assets/ConfirmModal-D2DSFKRK.js @@ -1 +1 @@ -import{r as d,j as s,ak as m,dJ as x,c as f,al as g,e1 as C,B as a}from"./index-BOwCLZTK.js";import{T as j}from"./triangle-alert-SO3tIa8w.js";const p={danger:"text-sys-red",warning:"text-sys-indigo",default:"text-sys-blue"},u={danger:"danger",warning:"warning",default:"primary"};function N({isOpen:n,title:r="Confirm",message:l,confirmLabel:t="Confirm",cancelLabel:i="Cancel",variant:o="default",onConfirm:c,onCancel:e}){return s.jsxs(m,{open:n,onClose:e,size:"sm",children:[s.jsx(x,{icon:s.jsx(j,{className:f("w-5 h-5",p[o])}),title:r,onClose:e}),s.jsx(g,{children:s.jsx("p",{className:"text-sm text-fg-secondary",children:l})}),s.jsxs(C,{children:[s.jsx(a,{color:"muted",onClick:e,className:"flex-1",children:i}),s.jsx(a,{color:u[o],onClick:c,className:"flex-1",children:t})]})]})}const A=d.memo(N);export{A as C}; +import{r as d,j as s,am as m,dK as x,c as f,an as g,e2 as C,B as a}from"./index-CvSa8h-C.js";import{T as j}from"./triangle-alert-C7tm61-l.js";const p={danger:"text-sys-red",warning:"text-sys-indigo",default:"text-sys-blue"},u={danger:"danger",warning:"warning",default:"primary"};function N({isOpen:n,title:r="Confirm",message:l,confirmLabel:t="Confirm",cancelLabel:i="Cancel",variant:o="default",onConfirm:c,onCancel:e}){return s.jsxs(m,{open:n,onClose:e,size:"sm",children:[s.jsx(x,{icon:s.jsx(j,{className:f("w-5 h-5",p[o])}),title:r,onClose:e}),s.jsx(g,{children:s.jsx("p",{className:"text-sm text-fg-secondary",children:l})}),s.jsxs(C,{children:[s.jsx(a,{color:"muted",onClick:e,className:"flex-1",children:i}),s.jsx(a,{color:u[o],onClick:c,className:"flex-1",children:t})]})]})}const A=d.memo(N);export{A as C}; diff --git a/frontend/dist/assets/Contacts-nDnNtpiy.js b/frontend/dist/assets/Contacts-DyjGy2DF.js similarity index 78% rename from frontend/dist/assets/Contacts-nDnNtpiy.js rename to frontend/dist/assets/Contacts-DyjGy2DF.js index af45e032..46a309ba 100644 --- a/frontend/dist/assets/Contacts-nDnNtpiy.js +++ b/frontend/dist/assets/Contacts-DyjGy2DF.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContactsMapMapLibre-NYBNCx0J.js","assets/index-BOwCLZTK.js","assets/BasemapLayer-B-5TmAfZ.js","assets/consumer-registry-CTjikLma.js","assets/link-scoring-CgjOR3NF.js","assets/ConfirmModal-DpSKXZ01.js","assets/triangle-alert-SO3tIa8w.js","assets/max-vSbldOSt.js","assets/download-B9g5-0oH.js","assets/database-C6oOGn9y.js","assets/useMapViewStore-DpXuD1iT.js","assets/index-2RIoVPos.js","assets/refresh-cw-C9txhqc9.js","assets/target-vmW1ltA0.js","assets/funnel-CWx99rlN.js","assets/plus-ClrHVFhr.js","assets/easing-CsgXD0uy.js","assets/zap-Bd-kARJ1.js","assets/trash-2-qMD09ppP.js","assets/wifi-off-DC4jBRps.js","assets/wifi-CI57D5A3.js","assets/badge-colors-DCbxcv7o.js","assets/chevron-right-DJVm4pVP.js","assets/node-types-C6okL8rE.js","assets/LightSparkline-C68RXWon.js","assets/map-pin-C2z_C0J3.js","assets/usePipelineStore-Cw6U5jyB.js","assets/ping-LiBbR-Oy.js","assets/PageLayout-QKntxcnp.js","assets/listbox-C1tUi7YC.js","assets/element-movement-BLnr83nT.js","assets/MqttModeBadge-CSj5wNzF.js","assets/chat-utils-D21OFED5.js","assets/SignalIndicator-Calk-LyB.js","assets/CollisionExplorerModal-Cudk5ace.js","assets/monitor-smartphone-Dd11JEL9.js","assets/DataBox-BVnEv6Au.js","assets/circle-question-mark-XDnZ1ChV.js","assets/network-D0Fgg1y-.js","assets/activity-D5uH2SFx.js","assets/search-Ba9CRHru.js","assets/index-DH0lUVGm.css","assets/BasemapLayer-B1CfjdFi.css","assets/ContactsMapMapLibre-BwWOEply.css"])))=>i.map(i=>d[i]); -import{d as P,a9 as ss,j as e,r as a,_ as ts,bV as Ee,bW as Fe,a6 as oe,D as ke,ah as Pe,bX as ns,bY as he,R as pe,x as k,bZ as as,L as Oe,b_ as rs,Q as os,b$ as cs,c0 as is,c1 as ls,P as ds,c2 as ms,c3 as xs,V as us,ai as ps,W as Ne,c4 as hs,c5 as fs,bf as re,v as gs,I as js,bk as bs,c as we}from"./index-BOwCLZTK.js";import{useDiscoveredNodes as ys}from"./usePipelineStore-Cw6U5jyB.js";import{p as Ns}from"./ping-LiBbR-Oy.js";import{c as Ce}from"./node-types-C6okL8rE.js";import{P as vs,a as ws,B as ks}from"./PageLayout-QKntxcnp.js";import{L as Cs,a as ue}from"./listbox-C1tUi7YC.js";import{T as Te,M as Ms}from"./MqttModeBadge-CSj5wNzF.js";import{u as Ss,e as _s,f as Rs,r as Ps}from"./consumer-registry-CTjikLma.js";import{e as Ts,g as Ls,a as $s}from"./chat-utils-D21OFED5.js";import{A as Es,b as Fs}from"./SignalIndicator-Calk-LyB.js";import{C as Os,S as zs}from"./CollisionExplorerModal-Cudk5ace.js";import{E as Ds,T as Hs}from"./target-vmW1ltA0.js";import{D as As}from"./DataBox-BVnEv6Au.js";import{a as X,C as Is}from"./badge-colors-DCbxcv7o.js";import{C as ze}from"./circle-question-mark-XDnZ1ChV.js";import{N as Bs}from"./network-D0Fgg1y-.js";import{A as De}from"./activity-D5uH2SFx.js";import{T as Vs}from"./trash-2-qMD09ppP.js";import{C as qs}from"./ConfirmModal-DpSKXZ01.js";import{M as Le}from"./monitor-smartphone-Dd11JEL9.js";import{M as Us}from"./map-pin-C2z_C0J3.js";import{S as Ws}from"./search-Ba9CRHru.js";/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContactsMapMapLibre-B-sbLVsX.js","assets/index-CvSa8h-C.js","assets/BasemapLayer-NuqTvOvz.js","assets/consumer-registry-BsBD_8RF.js","assets/link-scoring-DaKaf0kz.js","assets/ConfirmModal-D2DSFKRK.js","assets/triangle-alert-C7tm61-l.js","assets/max-B4xU84un.js","assets/download-CNAyp-3r.js","assets/database-bNR-4XQS.js","assets/useMapViewStore-1D-N8rLK.js","assets/index-CPifxb0-.js","assets/refresh-cw-DQJSjSjI.js","assets/target-M8AQjykJ.js","assets/funnel-DLa9oQpD.js","assets/plus-CNNHSjgp.js","assets/easing-CvrBfrm0.js","assets/zap-mngIm3qT.js","assets/trash-2-DUG72tk9.js","assets/wifi-off-B6--LVD1.js","assets/wifi-DV8DJqF0.js","assets/badge-colors-MuK22b26.js","assets/chevron-right-1kmv-Vqa.js","assets/node-types-BJsOTMm_.js","assets/LightSparkline-BjpzakdT.js","assets/map-pin-BCwmmHGs.js","assets/usePipelineStore-pGK8Y5O7.js","assets/ping-D0xwlHyD.js","assets/PageLayout-B8orsDlo.js","assets/listbox-Xbs80tag.js","assets/element-movement-CM_Y2Bj0.js","assets/MqttModeBadge-CGW6hCWV.js","assets/chat-utils-BUBqf9vH.js","assets/SignalIndicator-B0ppyCo-.js","assets/CollisionExplorerModal-BC_ZJRMz.js","assets/monitor-smartphone-D-7zPu_H.js","assets/DataBox-CwAsAwyY.js","assets/circle-question-mark-DDUlGgWh.js","assets/network-VirimdjG.js","assets/activity-CctJQ0y-.js","assets/search-BZtD4Hr8.js","assets/index-1OCG5H5s.css","assets/BasemapLayer-B1CfjdFi.css","assets/ContactsMapMapLibre-BwWOEply.css"])))=>i.map(i=>d[i]); +import{d as P,ab as ss,j as e,r as a,_ as ts,bZ as Ee,b_ as Fe,a8 as oe,D as ke,aj as Pe,b$ as ns,c0 as he,R as pe,x as k,c1 as as,L as Oe,c2 as rs,Q as os,c3 as cs,c4 as is,c5 as ls,P as ds,c6 as ms,c7 as xs,V as us,ak as ps,W as Ne,c8 as hs,c9 as fs,bj as re,v as gs,I as js,bo as ys,c as we}from"./index-CvSa8h-C.js";import{useDiscoveredNodes as bs}from"./usePipelineStore-pGK8Y5O7.js";import{p as Ns}from"./ping-D0xwlHyD.js";import{c as Ce}from"./node-types-BJsOTMm_.js";import{P as vs,a as ws,B as ks}from"./PageLayout-B8orsDlo.js";import{L as Cs,a as ue}from"./listbox-Xbs80tag.js";import{T as Te,M as Ms}from"./MqttModeBadge-CGW6hCWV.js";import{u as Ss,e as _s,f as Rs,r as Ps}from"./consumer-registry-BsBD_8RF.js";import{e as Ts,g as Ls,a as $s}from"./chat-utils-BUBqf9vH.js";import{A as Es,b as Fs}from"./SignalIndicator-B0ppyCo-.js";import{C as Os,S as zs}from"./CollisionExplorerModal-BC_ZJRMz.js";import{E as Ds,T as Hs}from"./target-M8AQjykJ.js";import{D as As}from"./DataBox-CwAsAwyY.js";import{a as Z,C as Is}from"./badge-colors-MuK22b26.js";import{C as ze}from"./circle-question-mark-DDUlGgWh.js";import{N as Bs}from"./network-VirimdjG.js";import{A as De}from"./activity-CctJQ0y-.js";import{T as Vs}from"./trash-2-DUG72tk9.js";import{C as qs}from"./ConfirmModal-D2DSFKRK.js";import{M as Le}from"./monitor-smartphone-D-7zPu_H.js";import{M as Us}from"./map-pin-BCwmmHGs.js";import{S as Ws}from"./search-BZtD4Hr8.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. @@ -9,12 +9,12 @@ import{d as P,a9 as ss,j as e,r as a,_ as ts,bV as Ee,bW as Fe,a6 as oe,D as ke, * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Ys=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],Ks=P("arrow-up-down",Ys);/** + */const Ks=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],Ys=P("arrow-up-down",Ks);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Xs=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],Zs=P("calendar",Xs);/** + */const Zs=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],Xs=P("calendar",Zs);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. @@ -49,4 +49,4 @@ import{d as P,a9 as ss,j as e,r as a,_ as ts,bV as Ee,bW as Fe,a6 as oe,D as ke, * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const dt=[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]],mt=P("trending-down",dt);class xt extends a.Component{constructor(c){super(c),this.state={hasError:!1}}static getDerivedStateFromError(c){return{hasError:!0,error:c}}render(){var c;return this.state.hasError?e.jsx("div",{className:"map-container-16-9 flex items-center justify-center rounded-2xl surface-base",role:"alert","aria-live":"assertive",children:e.jsxs("div",{className:"text-center text-fg-muted p-4",children:[e.jsx("p",{className:"text-lg mb-2",children:"Map failed to load"}),e.jsx("p",{className:"text-sm text-fg-muted",children:((c=this.state.error)==null?void 0:c.message)||"Unknown error"}),e.jsx("p",{className:"text-xs text-fg-muted mt-2",children:"Try refreshing the page or check your browser's WebGL support."})]})}):this.props.children}}const ut=a.lazy(()=>ts(()=>import("./ContactsMapMapLibre-NYBNCx0J.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43]))),$e=()=>e.jsx("div",{className:"map-container-16-9 flex items-center justify-center rounded-2xl surface-base",role:"status","aria-live":"polite","aria-label":"Loading map",children:e.jsxs("div",{className:"text-fg-muted flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 border-2 border-sys-blue border-t-transparent rounded-full animate-spin","aria-hidden":"true"}),e.jsx("span",{children:"Loading map..."})]})});function pt({neighbors:o,localNode:c,localHash:f,onRemoveNode:x,selectedNodeHash:g,onNodeSelected:v,highlightedEdgeKey:p,highlightedGhost:d}){return ss()===!1?e.jsx($e,{}):e.jsx(xt,{children:e.jsx(a.Suspense,{fallback:e.jsx($e,{}),children:e.jsx(ut,{neighbors:o,localNode:c,localHash:f,onRemoveNode:x,selectedNodeHash:g,onNodeSelected:v,highlightedEdgeKey:p,highlightedGhost:d})})})}function ht({hash:o,className:c="",size:f="sm",collisionInfo:x,isViterbiResolved:g}){const v=Ee(),p=Fe(),[d,T]=a.useState(!1),S=a.useMemo(()=>oe(o),[o]),L=a.useMemo(()=>x!==void 0?x:S?v.find(j=>j.prefix===S)??null:null,[S,v,x]),$=g??(p.totalPaths>0&&p.avgPathConfidence>=.7),O=a.useCallback(j=>{j.preventDefault(),j.stopPropagation(),T(!0)},[]),B=a.useCallback(()=>{T(!1)},[]);if(!L)return null;const w=f==="sm"?"w-3.5 h-3.5":"w-4 h-4",H=$?"text-sys-cyan hover:text-sys-cyan hover:bg-sys-cyan/10 focus:ring-sys-cyan/50":"text-signal-fair hover:text-sys-indigo hover:bg-signal-fair/10 focus:ring-signal-fair/50",_=$?`Prefix conflict resolved by Viterbi HMM (${(p.avgPathConfidence*100).toFixed(0)}% confidence)`:`Prefix conflict: ${L.candidateCount} nodes share prefix "${S}"`;return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:O,className:`inline-flex items-center justify-center p-0.5 rounded focus:outline-none focus:ring-2 transition-colors cursor-pointer touch-manipulation ${H} ${c}`,title:_,"aria-label":`View prefix conflict for ${S}${$?" (Viterbi resolved)":""}`,children:$?e.jsxs("span",{className:"relative",children:[e.jsx(Ds,{className:w}),e.jsx(ke,{className:"absolute -bottom-0.5 -right-0.5 w-2 h-2 text-sys-green"})]}):e.jsx(et,{className:w})}),e.jsx(Os,{isOpen:d,prefix:L.prefix,candidateHashes:L.candidateHashes,onClose:B})]})}const ft=a.memo(ht),Ae=[{target:"Contacts",fn:"name",minStage:1,when:_s},{target:"Contacts",fn:"traceLinks.directed",minStage:2,when:Rs}];Ps(Ae);function gt(o){return o<1e3?`${Math.round(o)}m`:`${(o/1e3).toFixed(1)}km`}function jt({hash:o,contact:c,isHub:f,isNeighbor:x,distance:g,centrality:v,sparklineData:p,neighborSignal:d,collisionInfo:T,isViterbiResolved:S,isPinging:L,isPingingThis:$,pingResult:O,pingError:B,gatewayInfo:w,lastForwarderPrefix:H,isMobile:_,pathStability:j,onRowClick:E,onPing:fe,onRemove:V}){Ss(Ae);const Z=c.latitude&&c.longitude&&c.latitude!==0&&c.longitude!==0,h=c.node_name||c.name||"Unknown",q=x&&d,z=Ce(c),{isRepeater:U,isCompanion:y,isRoomServer:W,isClient:J,label:ee}=z,ge=x?`${ee} — Direct RF contact (zero-hop neighbor)`:`${ee} — Flood routing (multi-hop via mesh)`,G=c.first_seen?Pe(c.first_seen).replace(/ ago$/i," old"):null;return e.jsxs("div",{className:`contacts-grid-row ${f?"bg-sys-amber/5 border-l-2 border-l-sys-amber":""} ${Z?"cursor-pointer hover:bg-subtle-fill":""}`,onClick:()=>E(o),children:[e.jsxs("div",{className:"contacts-col-node flex items-center gap-2 min-w-0",children:[q&&(d==null?void 0:d.avgSnr)!==null?e.jsx("div",{className:`w-2 h-2 rounded-full flex-shrink-0 self-center ${ns(d.avgSnr)}`}):e.jsx("div",{className:"w-2 flex-shrink-0"}),e.jsx("div",{className:"w-6 h-6 flex items-center justify-center flex-shrink-0",title:ge,children:(()=>{if(W&&U)return e.jsxs("div",{className:"relative w-5 h-5",children:[e.jsx(he,{className:"w-5 h-5 absolute inset-0 text-sys-pink"}),e.jsx(zs,{className:"w-2.5 h-2.5 absolute -bottom-0.5 -right-0.5 text-sys-teal"})]});if(W)return e.jsx(he,{className:"w-5 h-5 text-sys-pink"});if(U)return e.jsx("div",{className:"w-5 h-5 rounded-full flex items-center justify-center ring-[1.5px] ring-sys-blue",children:e.jsx(pe,{className:"w-3.5 h-3.5 text-sys-blue"})});if((y||J)&&h!=="Unknown"){const{emoji:b,cleanName:D}=Ts(h);return e.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center",style:{backgroundColor:Ls(D)},children:b?e.jsx("span",{className:"text-sm leading-none",children:b}):e.jsx("span",{className:"text-white text-[9px] font-bold tracking-tighter",children:$s(h)})})}return e.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center bg-zinc-500/20",children:e.jsx(ze,{className:"w-3.5 h-3.5 text-sys-amber"})})})()}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[e.jsx("span",{className:"roster-title truncate",title:h,children:h}),x&&e.jsx(k,{color:X.neighbor,compact:!0,className:"flex-shrink-0",children:"NBR"}),f&&e.jsxs(k,{color:X.hub,compact:!0,className:"flex items-center gap-1 flex-shrink-0",children:[e.jsx(Bs,{className:"w-3 h-3"}),"HUB"]}),U&&e.jsx(k,{color:X.repeater,compact:!0,className:"flex-shrink-0",children:"RPT"}),W&&e.jsx(k,{color:X.room,compact:!0,className:"flex-shrink-0",children:"ROOM"}),y&&e.jsx(k,{color:X.companion,compact:!0,className:"flex-shrink-0",children:"COMP"}),J&&e.jsx(k,{color:X.client,compact:!0,className:"flex-shrink-0",children:"CLIENT"}),_&&e.jsxs(k,{color:"cyan",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",children:[e.jsx(ot,{className:"w-2.5 h-2.5"}),"MOBILE"]}),!Z&&e.jsx("span",{className:"flex items-center gap-0.5 flex-shrink-0 text-fg-muted/50",title:"No GPS location provided",children:e.jsx(at,{className:"w-3 h-3"})})]}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx(As,{copy:!0,size:"compact",truncate:[8,6],children:o}),e.jsx(ft,{hash:o,collisionInfo:T,isViterbiResolved:S}),!x&&w&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`Via ${w.name||w.prefix} (${w.hopCount} hop${w.hopCount!==1?"s":""})`,children:[e.jsx(Es,{className:"w-2.5 h-2.5"}),e.jsx("span",{className:"font-mono",children:w.prefix}),w.hopCount>1&&e.jsxs("span",{className:"opacity-60",children:["+",w.hopCount-1]})]}),H&&!x&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`Last forwarded by ${H}`,children:[e.jsx(Qs,{className:"w-2.5 h-2.5"}),e.jsx("span",{className:"font-mono",children:H})]}),j!=null&&j!==0&&e.jsx(k,{color:j>0?"green":"amber",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:j>0?"Path stability improving":"Path stability declining",children:j>0?e.jsx(as,{className:"w-2.5 h-2.5"}):e.jsx(mt,{className:"w-2.5 h-2.5"})}),p.length>0&&(()=>{const b=p.reduce((je,se)=>je+se.count,0);if(b===0)return null;const D=b/24;return e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`${b} packets in last 24h (~${D.toFixed(1)}/hr)`,children:[e.jsx(it,{className:"w-2.5 h-2.5"}),e.jsxs("span",{children:[D<1?"<1":D.toFixed(0),"/hr"]})]})})(),G&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0 opacity-70",title:`First discovered ${G}`,children:[e.jsx(Zs,{className:"w-2.5 h-2.5"}),e.jsx("span",{children:G})]})]})]})]}),e.jsxs("div",{className:"contacts-col-signal flex items-center justify-end gap-2",children:[q&&(d==null?void 0:d.avgRssi)!==null&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Fs,{rssi:d.avgRssi,className:"w-3.5 h-3.5"}),e.jsx("span",{className:"type-data-xs text-fg-muted",children:Math.round(d.avgRssi)})]}),q&&(d==null?void 0:d.avgSnr)!==null&&e.jsxs("span",{className:"type-data-xs text-fg-muted",children:[d.avgSnr.toFixed(1)," dB"]})]}),e.jsx("div",{className:"contacts-col-distance flex items-center justify-end gap-1 text-fg-muted",children:g!=null&&e.jsxs(e.Fragment,{children:[e.jsx(He,{className:"w-3 h-3"}),e.jsx("span",{className:"type-data-xs",children:gt(g)})]})}),e.jsx("div",{className:"contacts-col-centrality flex items-center justify-end gap-1",children:v>0&&e.jsxs(e.Fragment,{children:[e.jsx(De,{className:"w-3 h-3 text-sys-indigo"}),e.jsxs("span",{className:"type-data-xs text-fg-muted",children:[(v*100).toFixed(0),"%"]})]})}),e.jsx("div",{className:"contacts-col-seen flex items-center justify-end",children:e.jsx("span",{className:"type-data-xs text-fg-primary whitespace-nowrap",children:c.last_seen?Pe(c.last_seen):"—"})}),e.jsxs("div",{className:"contacts-col-actions flex items-center justify-end gap-1",children:[x&&e.jsx(e.Fragment,{children:O?e.jsxs("div",{className:"flex items-center gap-1 text-sys-green",title:`RTT: ${O.rtt_ms.toFixed(0)}ms`,children:[e.jsx(ke,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"type-data-xs hidden sm:inline",children:[O.snr_db.toFixed(1),"dB"]})]}):B?e.jsx("span",{className:"text-sys-red text-xs",title:B,children:"✗"}):e.jsx("button",{onClick:b=>fe(o,b),disabled:L,className:"p-1 sm:p-1.5 radius-inner text-fg-muted/50 hover:text-sys-blue hover:bg-sys-blue/10 transition-base disabled:opacity-50 disabled:cursor-not-allowed",title:"Ping neighbor for updated signal info",children:$?e.jsx(Oe,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 animate-spin"}):e.jsx(Hs,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})}),e.jsx("button",{onClick:b=>{b.stopPropagation(),V(o,h)},className:"p-1 sm:p-1.5 radius-inner text-fg-muted/50 hover:text-sys-red hover:bg-sys-red/10 transition-base",title:"Remove contact",children:e.jsx(Vs,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]})}const bt=a.memo(jt),yt=6371e3,Nt=[],vt=[{field:"lastHeard",icon:Is,label:"Recent"},{field:"distance",icon:He,label:"Distance"},{field:"centrality",icon:De,label:"Centrality"}];function wt(o){switch(o){case"room_server":return"room";case"repeater":return"repeater";case"companion":return"companion";case"unknown":return"companion"}}function kt(o){const c=Ce(o);return wt(c.type)}function ve(o,c){const{color:f="primary",border:x=!1}=c??{};return we("flex items-center gap-1.5 px-2 py-1.5 text-sm radius-inner transition-base",o?f==="success"?"bg-sys-green/20 text-sys-green":"bg-sys-blue/20 text-sys-blue":"text-fg-muted hover:text-fg-secondary hover-bg",x&&(o?f==="success"?"border border-sys-green/30":"border border-sys-blue/30":"border border-transparent"))}function Ct(o,c,f,x){const g=(f-o)*Math.PI/180,v=(x-c)*Math.PI/180,p=Math.sin(g/2)*Math.sin(g/2)+Math.cos(o*Math.PI/180)*Math.cos(f*Math.PI/180)*Math.sin(v/2)*Math.sin(v/2),d=2*Math.atan2(Math.sqrt(p),Math.sqrt(1-p));return yt*d}function Mt(){const{stats:o}=rs(),c=os(),f=cs(),x=is(),g=ls(),v=ds(),p=ms(),d=xs(),T=us(),S=ps(),L=Ne[T],$=Ee(),O=Fe(),B=hs(),w=O.totalPaths>0&&O.avgPathConfidence>=.7,H=a.useMemo(()=>{const s=new Map;for(const t of $)s.set(t.prefix,t);return s},[$]),[_,j]=a.useState(null),[E,fe]=a.useState("lastHeard"),[V,Z]=a.useState("desc"),[h,q]=a.useState(""),[z,U]=a.useState(!1),[y,W]=a.useState(new Set),[J,ee]=a.useState(!1),[ge,G]=a.useState(null),[b,D]=a.useState(null),[je,se]=a.useState(new Map),[Ie,te]=a.useState(new Map),[C,Be]=a.useState(25),[Q,ce]=a.useState(25),be=a.useRef(null),ne=a.useMemo(()=>(o==null?void 0:o.neighbors)??{},[o==null?void 0:o.neighbors]),ye=ys(),ie=a.useMemo(()=>{if(ye.size===0)return ne;const s=new Set;for(const n of Object.keys(ne))s.add((n.startsWith("0x")?n.slice(2):n).toLowerCase());let t=null;for(const[n,r]of ye){const i=(n.startsWith("0x")?n.slice(2):n).toLowerCase();s.has(i)||(t||(t={...ne}),t[n]={last_seen:r.lastSeen,name:r.name??void 0,node_name:r.name??void 0,latitude:r.latitude,longitude:r.longitude,is_repeater:r.nodeType==="repeater",contact_type:r.nodeType==="repeater"?"Repeater":r.nodeType==="companion"?"Companion":r.nodeType==="room_server"?"Room Server":void 0})}return t??ne},[ne,ye]),A=a.useMemo(()=>{const t=Date.now()/1e3-L.minutes*60;return Object.fromEntries(Object.entries(ie).filter(([n,r])=>c.has(n)?!1:(r.last_seen??0)>=t))},[ie,c,L.minutes]),R=fs(),Y=o==null?void 0:o.local_hash,Ve=a.useMemo(()=>{const s=new Map;if(!Y||p.size===0)return s;for(const[t,n]of p)if(t.endsWith(`→${Y}`)&&n.hops.length>1){const r=t.split("→")[0],i=n.hops[n.hops.length-1];s.set(r,i)}return s},[p,Y]),le=a.useMemo(()=>{const s=new Map;if(!(R!=null&&R.latitude)||!(R!=null&&R.longitude))return s;for(const[t,n]of Object.entries(A))n.latitude&&n.longitude&&n.latitude!==0&&n.longitude!==0?s.set(t,Ct(R.latitude,R.longitude,n.latitude,n.longitude)):s.set(t,null);return s},[A,R]),{neighborHashSet:de,neighborSignalMap:qe}=a.useMemo(()=>{const s=new Set,t=new Map;for(const n of v)s.add(n.hash),t.set(n.hash,{avgRssi:n.avgRssi,avgSnr:n.avgSnr});return{neighborHashSet:s,neighborSignalMap:t}},[v]),Me=a.useMemo(()=>{const s=h.toLowerCase().trim(),t=s==="neighbor"||s==="neighbors",n=z||t,r=y.size>0;return Object.fromEntries(Object.entries(A).filter(([i,l])=>{if(r){const M=kt(l);if(!y.has(M))return!1}if(n&&!de.has(i))return!1;if(t||!s)return!0;const I=(l.node_name||l.name||"").toLowerCase(),N=oe(i).toLowerCase();return I.includes(s)||N.includes(s)||i.toLowerCase().includes(s)}))},[A,h,z,de,y]),u=a.useMemo(()=>{const s=Object.entries(Me),t=h.toLowerCase().trim(),n=t.length===2&&/^[0-9a-f]{2}$/i.test(t);return s.sort(([r,i],[l,I])=>{if(n){const M=oe(r).toLowerCase(),F=oe(l).toLowerCase(),ae=M===t,me=F===t;if(ae&&!me)return-1;if(me&&!ae)return 1}let N=0;switch(E){case"lastHeard":N=(i.last_seen||0)-(I.last_seen||0);break;case"distance":{const M=le.get(r)??null,F=le.get(l)??null;M===null&&F===null?N=0:M===null?N=1:F===null?N=-1:N=M-F;break}case"centrality":{const M=g.get(r)||0,F=g.get(l)||0;N=M-F;break}}return V==="desc"?-N:N})},[Me,E,V,le,g,h]),m=a.useMemo(()=>{let s=0,t=0,n=0,r=0,i=0;for(const[,l]of u){const I=Ce(l),N=l.latitude&&l.longitude&&l.latitude!==0&&l.longitude!==0;switch(I.type){case"room_server":n++;break;case"repeater":t++;break;case"companion":s++;break;case"unknown":i++;break}N&&r++}return{companions:s,repeaters:t,roomServers:n,total:u.length,withLocation:r,unknown:i}},[u]),Ue=a.useMemo(()=>new Set(x),[x]),Se=a.useMemo(()=>C===0?u:u.slice(0,Q),[u,Q,C]);a.useEffect(()=>{ce(C||u.length)},[E,V,h,z,y,C,u.length]),a.useEffect(()=>{const s=t=>{t.target.closest("[data-dropdown]")||ee(!1)};return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),a.useEffect(()=>{if(C===0)return;const s=new IntersectionObserver(t=>{t[0].isIntersecting&&QMath.min(n+C,u.length))},{threshold:.1,rootMargin:"100px"});return be.current&&s.observe(be.current),()=>s.disconnect()},[C,Q,u.length]);const We=a.useCallback(s=>{Be(s),ce(s||u.length)},[u.length]),Ge=a.useCallback(s=>{E===s?Z(t=>t==="desc"?"asc":"desc"):(fe(s),Z("desc"))},[E]),Qe=a.useCallback(s=>{const t=A[s];t!=null&&t.latitude&&(t!=null&&t.longitude)&&t.latitude!==0&&t.longitude!==0&&G(s)},[A]),Ye=a.useCallback(()=>{G(null)},[]),Ke=a.useCallback((s,t)=>{j({hash:s,name:t})},[]),Xe=a.useCallback(async(s,t)=>{if(t.stopPropagation(),!b){D(s),se(n=>{const r=new Map(n);return r.delete(s),r}),te(n=>{const r=new Map(n);return r.delete(s),r});try{const n=s.startsWith("0x")?s.slice(0,4):`0x${s.slice(0,2)}`,r=await Ns(n,30);r.success&&r.data?(se(i=>new Map(i).set(s,r.data)),setTimeout(()=>{se(i=>{const l=new Map(i);return l.delete(s),l})},1e4)):(te(i=>new Map(i).set(s,r.error||"Ping failed")),setTimeout(()=>{te(i=>{const l=new Map(i);return l.delete(s),l})},5e3))}catch(n){const r=n instanceof Error?n.message:"Ping failed";te(i=>new Map(i).set(s,r)),setTimeout(()=>{te(i=>{const l=new Map(i);return l.delete(s),l})},5e3)}finally{D(null)}}},[b]);return e.jsxs(vs,{children:[e.jsx(ws,{title:"Contacts",icon:e.jsx(re,{}),subtitle:e.jsx(Ms,{}),controls:e.jsxs("div",{className:"flex items-center gap-3 sm:gap-5",children:[e.jsxs("div",{className:"hidden sm:flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-fg-muted",children:"Total:"}),e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:`${m.total} discovered node${m.total!==1?"s":""} on the mesh network`,children:[e.jsx(re,{className:"w-3.5 h-3.5 text-fg-secondary"}),e.jsx("span",{children:m.total})]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-fg-muted",children:"Types:"}),m.repeaters>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Repeaters",children:[e.jsx(pe,{className:"w-3.5 h-3.5 text-sys-blue"}),e.jsx("span",{children:m.repeaters})]}),m.companions>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Companions",children:[e.jsx(Le,{className:"w-3.5 h-3.5 text-fg-muted"}),e.jsx("span",{children:m.companions})]}),m.roomServers>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Room Servers",children:[e.jsx(he,{className:"w-3.5 h-3.5 text-sys-pink"}),e.jsx("span",{children:m.roomServers})]}),m.withLocation>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"With GPS location",children:[e.jsx(Us,{className:"w-3.5 h-3.5 text-sys-green"}),e.jsx("span",{children:m.withLocation})]}),m.unknown>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Unknown type",children:[e.jsx(ze,{className:"w-3.5 h-3.5 text-sys-amber"}),e.jsx("span",{children:m.unknown})]})]})]}),e.jsxs("div",{className:"flex sm:hidden items-center gap-1.5",children:[e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(re,{className:"w-3 h-3 text-fg-secondary"}),e.jsx("span",{children:m.total})]}),m.repeaters>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(pe,{className:"w-3 h-3 text-sys-blue"}),e.jsx("span",{children:m.repeaters})]}),m.companions>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(Le,{className:"w-3 h-3 text-fg-muted"}),e.jsx("span",{children:m.companions})]}),m.roomServers>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(he,{className:"w-3 h-3 text-sys-pink"}),e.jsx("span",{children:m.roomServers})]}),e.jsx(Te,{ranges:Ne,selectedIndex:T,onSelect:S,size:"sm"})]}),e.jsx("div",{className:"hidden sm:block",children:e.jsx(Te,{ranges:Ne,selectedIndex:T,onSelect:S})})]})}),e.jsxs(ks,{children:[e.jsx(pt,{neighbors:A,localNode:R??void 0,localHash:Y,onRemoveNode:f,selectedNodeHash:ge,onNodeSelected:Ye}),e.jsxs(gs,{noPadding:!0,children:[e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 px-3 sm:px-4 py-2.5 border-b border-edge-subtle",children:[e.jsx("span",{className:"icon-md flex items-center justify-center text-icon-card-title flex-shrink-0",children:e.jsx(re,{})}),e.jsx("span",{className:"type-micro flex-shrink-0 mr-auto hidden sm:block",children:"Discovered Contacts"}),e.jsx(js,{type:"search",size:"sm",value:h,onChange:s=>q(s.target.value),placeholder:"Search...",leadingIcon:e.jsx(Ws,{className:"w-3.5 h-3.5"}),trailingIcon:h?e.jsx("button",{onClick:()=>{q(""),(h.toLowerCase().trim()==="neighbor"||h.toLowerCase().trim()==="neighbors")&&U(!1)},className:"text-fg-muted hover:text-fg-secondary",children:e.jsx(bs,{className:"w-3 h-3"})}):void 0,className:"w-24 sm:w-32 xl:w-44","aria-label":"Search contacts"}),e.jsx("div",{className:"h-4 w-px bg-border-subtle flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[e.jsxs("div",{className:"relative","data-dropdown":!0,children:[e.jsxs("button",{onClick:()=>ee(!J),className:ve(y.size>0,{border:!0}),title:"Filter by contact type",children:[e.jsx(tt,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:"Filter"}),y.size>0&&e.jsx("span",{className:"tabular-nums text-xs bg-sys-blue/30 px-1 rounded",children:y.size})]}),J&&e.jsxs("div",{className:"absolute right-0 top-full mt-1 z-50 surface-elevated radius-inner py-1 min-w-[140px]",children:[[{key:"repeater",label:"Repeaters"},{key:"companion",label:"Companions"},{key:"room",label:"Rooms"}].map(({key:s,label:t})=>e.jsxs("button",{onClick:()=>{W(n=>{const r=new Set(n);return r.has(s)?r.delete(s):r.add(s),r})},className:"w-full px-3 py-1.5 text-sm text-left hover-bg transition-base flex items-center gap-2",children:[e.jsx("span",{className:we("w-4 h-4 flex items-center justify-center radius-badge border",y.has(s)?"bg-sys-blue border-sys-blue text-white":"border-edge-subtle"),children:y.has(s)&&e.jsx(ke,{className:"w-3 h-3"})}),e.jsx("span",{className:y.has(s)?"text-fg-primary":"text-fg-secondary",children:t})]},s)),y.size>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t border-edge-subtle my-1"}),e.jsx("button",{onClick:()=>W(new Set),className:"w-full px-3 py-1.5 text-sm text-left text-fg-muted hover:text-fg-secondary hover-bg transition-base",children:"Clear filters"})]})]})]}),de.size>0&&e.jsxs("button",{onClick:()=>U(!z),className:ve(z,{color:"success",border:!0}),title:z?"Show all contacts":"Show only MeshCore neighbors (direct RF contact)",children:[e.jsx(pe,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:"Neighbors"})]})]}),e.jsx("div",{className:"h-4 w-px bg-border-subtle flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[vt.map(({field:s,icon:t,label:n})=>e.jsxs("button",{onClick:()=>Ge(s),className:ve(E===s),title:`Sort by ${n.toLowerCase()}`,children:[e.jsx(t,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:n}),E===s&&e.jsx(Ks,{className:we("w-3 h-3",V==="asc"&&"rotate-180")})]},s)),e.jsx("div",{className:"h-4 w-px bg-border-subtle"}),e.jsxs(Cs,{value:C,onChange:We,className:"w-auto min-w-[50px] [&_button]:py-1 [&_button]:px-2 [&_button]:text-xs [&_button]:min-h-0","aria-label":"Items per page",children:[e.jsx(ue,{value:25,children:"25"}),e.jsx(ue,{value:50,children:"50"}),e.jsx(ue,{value:100,children:"100"}),e.jsx(ue,{value:0,children:"All"})]})]})]}),u.length>0?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden sm:grid contacts-grid-header border-b border-edge-subtle/50 px-3 py-2 type-micro text-fg-muted",children:[e.jsx("div",{className:"contacts-col-node",children:"Node"}),e.jsx("div",{className:"contacts-col-signal text-right",children:"Signal"}),e.jsx("div",{className:"contacts-col-distance text-right",children:"Distance"}),e.jsx("div",{className:"contacts-col-centrality text-right",children:"Centrality"}),e.jsx("div",{className:"contacts-col-seen text-right",children:"Last Seen"}),e.jsx("div",{className:"contacts-col-actions"})]}),e.jsx("div",{className:"divide-y divide-edge-subtle/30",children:Se.map(([s,t])=>{const n=oe(s),r=Ue.has(s),i=de.has(s),l=le.get(s)??null,I=g.get(s)||0,N=i?qe.get(s):void 0,M=n?H.get(n)??null:null,F=B.get(s)??Nt;let ae=null;if(!i&&Y&&p.size>0){const Je=`${s}→${Y}`,xe=p.get(Je);if(xe&&xe.hops.length>0){const _e=xe.hops[0],Re=Object.keys(ie).find(es=>es.toUpperCase().startsWith(_e.toUpperCase())),K=Re?ie[Re]:null;ae={prefix:_e,name:(K==null?void 0:K.node_name)??(K==null?void 0:K.name)??null,hopCount:xe.hopCount}}}const me=d.has(s),Ze=Ve.get(s)??null;return e.jsx(bt,{hash:s,contact:t,isHub:r,isNeighbor:i,distance:l,centrality:I,sparklineData:F,neighborSignal:N,collisionInfo:M,isViterbiResolved:w,isPinging:b!==null,isPingingThis:b===s,pingResult:je.get(s),pingError:Ie.get(s),gatewayInfo:ae,lastForwarderPrefix:Ze,isMobile:me,onRowClick:Qe,onPing:Xe,onRemove:Ke},s)})}),C>0&&Q0&&Qce(s=>Math.min(s+C,u.length)),className:"text-sys-blue hover:text-sys-blue/80 transition-base",children:"Load more"})]})]}):e.jsxs("div",{className:"roster-empty",children:[e.jsx(re,{className:"roster-empty-icon"}),e.jsx("div",{className:"type-label text-fg-secondary",children:"No Contacts Discovered"}),e.jsx("div",{className:"type-data-xs text-fg-muted mt-1",children:"Contacts will appear here as they advertise on the mesh network."})]})]})]}),e.jsx(qs,{isOpen:!!_,title:"Remove Contact",message:`Are you sure you would like to remove ${(_==null?void 0:_.name)||"this contact"}?`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{_&&f(_.hash),j(null)},onCancel:()=>j(null)})]})}const Yt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));export{Yt as C,ft as P,He as R,mt as T}; + */const dt=[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]],mt=P("trending-down",dt);class xt extends a.Component{constructor(c){super(c),this.state={hasError:!1}}static getDerivedStateFromError(c){return{hasError:!0,error:c}}render(){var c;return this.state.hasError?e.jsx("div",{className:"map-container-16-9 flex items-center justify-center rounded-2xl surface-base",role:"alert","aria-live":"assertive",children:e.jsxs("div",{className:"text-center text-fg-muted p-4",children:[e.jsx("p",{className:"text-lg mb-2",children:"Map failed to load"}),e.jsx("p",{className:"text-sm text-fg-muted",children:((c=this.state.error)==null?void 0:c.message)||"Unknown error"}),e.jsx("p",{className:"text-xs text-fg-muted mt-2",children:"Try refreshing the page or check your browser's WebGL support."})]})}):this.props.children}}const ut=a.lazy(()=>ts(()=>import("./ContactsMapMapLibre-B-sbLVsX.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43]))),$e=()=>e.jsx("div",{className:"map-container-16-9 flex items-center justify-center rounded-2xl surface-base",role:"status","aria-live":"polite","aria-label":"Loading map",children:e.jsxs("div",{className:"text-fg-muted flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 border-2 border-sys-blue border-t-transparent rounded-full animate-spin","aria-hidden":"true"}),e.jsx("span",{children:"Loading map..."})]})});function pt({neighbors:o,localNode:c,localHash:f,onRemoveNode:x,selectedNodeHash:g,onNodeSelected:v,highlightedEdgeKey:p,highlightedGhost:d}){return ss()===!1?e.jsx($e,{}):e.jsx(xt,{children:e.jsx(a.Suspense,{fallback:e.jsx($e,{}),children:e.jsx(ut,{neighbors:o,localNode:c,localHash:f,onRemoveNode:x,selectedNodeHash:g,onNodeSelected:v,highlightedEdgeKey:p,highlightedGhost:d})})})}function ht({hash:o,className:c="",size:f="sm",collisionInfo:x,isViterbiResolved:g}){const v=Ee(),p=Fe(),[d,T]=a.useState(!1),S=a.useMemo(()=>oe(o),[o]),L=a.useMemo(()=>x!==void 0?x:S?v.find(j=>j.prefix===S)??null:null,[S,v,x]),$=g??(p.totalPaths>0&&p.avgPathConfidence>=.7),O=a.useCallback(j=>{j.preventDefault(),j.stopPropagation(),T(!0)},[]),B=a.useCallback(()=>{T(!1)},[]);if(!L)return null;const w=f==="sm"?"w-3.5 h-3.5":"w-4 h-4",H=$?"text-sys-cyan hover:text-sys-cyan hover:bg-sys-cyan/10 focus:ring-sys-cyan/50":"text-signal-fair hover:text-sys-indigo hover:bg-signal-fair/10 focus:ring-signal-fair/50",_=$?`Prefix conflict resolved by Viterbi HMM (${(p.avgPathConfidence*100).toFixed(0)}% confidence)`:`Prefix conflict: ${L.candidateCount} nodes share prefix "${S}"`;return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:O,className:`inline-flex items-center justify-center p-0.5 rounded focus:outline-none focus:ring-2 transition-colors cursor-pointer touch-manipulation ${H} ${c}`,title:_,"aria-label":`View prefix conflict for ${S}${$?" (Viterbi resolved)":""}`,children:$?e.jsxs("span",{className:"relative",children:[e.jsx(Ds,{className:w}),e.jsx(ke,{className:"absolute -bottom-0.5 -right-0.5 w-2 h-2 text-sys-green"})]}):e.jsx(et,{className:w})}),e.jsx(Os,{isOpen:d,prefix:L.prefix,candidateHashes:L.candidateHashes,onClose:B})]})}const ft=a.memo(ht),Ae=[{target:"Contacts",fn:"name",minStage:1,when:_s},{target:"Contacts",fn:"traceLinks.directed",minStage:2,when:Rs}];Ps(Ae);function gt(o){return o<1e3?`${Math.round(o)}m`:`${(o/1e3).toFixed(1)}km`}function jt({hash:o,contact:c,isHub:f,isNeighbor:x,distance:g,centrality:v,sparklineData:p,neighborSignal:d,collisionInfo:T,isViterbiResolved:S,isPinging:L,isPingingThis:$,pingResult:O,pingError:B,gatewayInfo:w,lastForwarderPrefix:H,isMobile:_,pathStability:j,onRowClick:E,onPing:fe,onRemove:V}){Ss(Ae);const X=c.latitude&&c.longitude&&c.latitude!==0&&c.longitude!==0,h=c.node_name||c.name||"Unknown",q=x&&d,z=Ce(c),{isRepeater:U,isCompanion:b,isRoomServer:W,isClient:J,label:ee}=z,ge=x?`${ee} — Direct RF contact (zero-hop neighbor)`:`${ee} — Flood routing (multi-hop via mesh)`,G=c.first_seen?Pe(c.first_seen).replace(/ ago$/i," old"):null;return e.jsxs("div",{className:`contacts-grid-row ${f?"bg-sys-amber/5 border-l-2 border-l-sys-amber":""} ${X?"cursor-pointer hover:bg-subtle-fill":""}`,onClick:()=>E(o),children:[e.jsxs("div",{className:"contacts-col-node flex items-center gap-2 min-w-0",children:[q&&(d==null?void 0:d.avgSnr)!==null?e.jsx("div",{className:`w-2 h-2 rounded-full flex-shrink-0 self-center ${ns(d.avgSnr)}`}):e.jsx("div",{className:"w-2 flex-shrink-0"}),e.jsx("div",{className:"w-6 h-6 flex items-center justify-center flex-shrink-0",title:ge,children:(()=>{if(W&&U)return e.jsxs("div",{className:"relative w-5 h-5",children:[e.jsx(he,{className:"w-5 h-5 absolute inset-0 text-sys-pink"}),e.jsx(zs,{className:"w-2.5 h-2.5 absolute -bottom-0.5 -right-0.5 text-sys-teal"})]});if(W)return e.jsx(he,{className:"w-5 h-5 text-sys-pink"});if(U)return e.jsx("div",{className:"w-5 h-5 rounded-full flex items-center justify-center ring-[1.5px] ring-sys-blue",children:e.jsx(pe,{className:"w-3.5 h-3.5 text-sys-blue"})});if((b||J)&&h!=="Unknown"){const{emoji:y,cleanName:D}=Ts(h);return e.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center",style:{backgroundColor:Ls(D)},children:y?e.jsx("span",{className:"text-sm leading-none",children:y}):e.jsx("span",{className:"text-white text-[9px] font-bold tracking-tighter",children:$s(h)})})}return e.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center bg-zinc-500/20",children:e.jsx(ze,{className:"w-3.5 h-3.5 text-sys-amber"})})})()}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[e.jsx("span",{className:"roster-title truncate",title:h,children:h}),x&&e.jsx(k,{color:Z.neighbor,compact:!0,className:"flex-shrink-0",children:"NBR"}),f&&e.jsxs(k,{color:Z.hub,compact:!0,className:"flex items-center gap-1 flex-shrink-0",children:[e.jsx(Bs,{className:"w-3 h-3"}),"HUB"]}),U&&e.jsx(k,{color:Z.repeater,compact:!0,className:"flex-shrink-0",children:"RPT"}),W&&e.jsx(k,{color:Z.room,compact:!0,className:"flex-shrink-0",children:"ROOM"}),b&&e.jsx(k,{color:Z.companion,compact:!0,className:"flex-shrink-0",children:"COMP"}),J&&e.jsx(k,{color:Z.client,compact:!0,className:"flex-shrink-0",children:"CLIENT"}),_&&e.jsxs(k,{color:"cyan",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",children:[e.jsx(ot,{className:"w-2.5 h-2.5"}),"MOBILE"]}),!X&&e.jsx("span",{className:"flex items-center gap-0.5 flex-shrink-0 text-fg-muted/50",title:"No GPS location provided",children:e.jsx(at,{className:"w-3 h-3"})})]}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx(As,{copy:!0,size:"compact",truncate:[8,6],children:o}),e.jsx(ft,{hash:o,collisionInfo:T,isViterbiResolved:S}),!x&&w&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`Via ${w.name||w.prefix} (${w.hopCount} hop${w.hopCount!==1?"s":""})`,children:[e.jsx(Es,{className:"w-2.5 h-2.5"}),e.jsx("span",{className:"font-mono",children:w.prefix}),w.hopCount>1&&e.jsxs("span",{className:"opacity-60",children:["+",w.hopCount-1]})]}),H&&!x&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`Last forwarded by ${H}`,children:[e.jsx(Qs,{className:"w-2.5 h-2.5"}),e.jsx("span",{className:"font-mono",children:H})]}),j!=null&&j!==0&&e.jsx(k,{color:j>0?"green":"amber",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:j>0?"Path stability improving":"Path stability declining",children:j>0?e.jsx(as,{className:"w-2.5 h-2.5"}):e.jsx(mt,{className:"w-2.5 h-2.5"})}),p.length>0&&(()=>{const y=p.reduce((je,se)=>je+se.count,0);if(y===0)return null;const D=y/24;return e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`${y} packets in last 24h (~${D.toFixed(1)}/hr)`,children:[e.jsx(it,{className:"w-2.5 h-2.5"}),e.jsxs("span",{children:[D<1?"<1":D.toFixed(0),"/hr"]})]})})(),G&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0 opacity-70",title:`First discovered ${G}`,children:[e.jsx(Xs,{className:"w-2.5 h-2.5"}),e.jsx("span",{children:G})]})]})]})]}),e.jsxs("div",{className:"contacts-col-signal flex items-center justify-end gap-2",children:[q&&(d==null?void 0:d.avgRssi)!==null&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Fs,{rssi:d.avgRssi,className:"w-3.5 h-3.5"}),e.jsx("span",{className:"type-data-xs text-fg-muted",children:Math.round(d.avgRssi)})]}),q&&(d==null?void 0:d.avgSnr)!==null&&e.jsxs("span",{className:"type-data-xs text-fg-muted",children:[d.avgSnr.toFixed(1)," dB"]})]}),e.jsx("div",{className:"contacts-col-distance flex items-center justify-end gap-1 text-fg-muted",children:g!=null&&e.jsxs(e.Fragment,{children:[e.jsx(He,{className:"w-3 h-3"}),e.jsx("span",{className:"type-data-xs",children:gt(g)})]})}),e.jsx("div",{className:"contacts-col-centrality flex items-center justify-end gap-1",children:v>0&&e.jsxs(e.Fragment,{children:[e.jsx(De,{className:"w-3 h-3 text-sys-indigo"}),e.jsxs("span",{className:"type-data-xs text-fg-muted",children:[(v*100).toFixed(0),"%"]})]})}),e.jsx("div",{className:"contacts-col-seen flex items-center justify-end",children:e.jsx("span",{className:"type-data-xs text-fg-primary whitespace-nowrap",children:c.last_seen?Pe(c.last_seen):"—"})}),e.jsxs("div",{className:"contacts-col-actions flex items-center justify-end gap-1",children:[x&&e.jsx(e.Fragment,{children:O?e.jsxs("div",{className:"flex items-center gap-1 text-sys-green",title:`RTT: ${O.rtt_ms.toFixed(0)}ms`,children:[e.jsx(ke,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"type-data-xs hidden sm:inline",children:[O.snr_db.toFixed(1),"dB"]})]}):B?e.jsx("span",{className:"text-sys-red text-xs",title:B,children:"✗"}):e.jsx("button",{onClick:y=>fe(o,y),disabled:L,className:"p-1 sm:p-1.5 radius-inner text-fg-muted/50 hover:text-sys-blue hover:bg-sys-blue/10 transition-base disabled:opacity-50 disabled:cursor-not-allowed",title:"Ping neighbor for updated signal info",children:$?e.jsx(Oe,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 animate-spin"}):e.jsx(Hs,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})}),e.jsx("button",{onClick:y=>{y.stopPropagation(),V(o,h)},className:"p-1 sm:p-1.5 radius-inner text-fg-muted/50 hover:text-sys-red hover:bg-sys-red/10 transition-base",title:"Remove contact",children:e.jsx(Vs,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]})}const yt=a.memo(jt),bt=6371e3,Nt=[],vt=[{field:"lastHeard",icon:Is,label:"Recent"},{field:"distance",icon:He,label:"Distance"},{field:"centrality",icon:De,label:"Centrality"}];function wt(o){switch(o){case"room_server":return"room";case"repeater":return"repeater";case"companion":return"companion";case"unknown":return"companion"}}function kt(o){const c=Ce(o);return wt(c.type)}function ve(o,c){const{color:f="primary",border:x=!1}=c??{};return we("flex items-center gap-1.5 px-2 py-1.5 text-sm radius-inner transition-base",o?f==="success"?"bg-sys-green/20 text-sys-green":"bg-sys-blue/20 text-sys-blue":"text-fg-muted hover:text-fg-secondary hover-bg",x&&(o?f==="success"?"border border-sys-green/30":"border border-sys-blue/30":"border border-transparent"))}function Ct(o,c,f,x){const g=(f-o)*Math.PI/180,v=(x-c)*Math.PI/180,p=Math.sin(g/2)*Math.sin(g/2)+Math.cos(o*Math.PI/180)*Math.cos(f*Math.PI/180)*Math.sin(v/2)*Math.sin(v/2),d=2*Math.atan2(Math.sqrt(p),Math.sqrt(1-p));return bt*d}function Mt(){const{stats:o}=rs(),c=os(),f=cs(),x=is(),g=ls(),v=ds(),p=ms(),d=xs(),T=us(),S=ps(),L=Ne[T],$=Ee(),O=Fe(),B=hs(),w=O.totalPaths>0&&O.avgPathConfidence>=.7,H=a.useMemo(()=>{const s=new Map;for(const t of $)s.set(t.prefix,t);return s},[$]),[_,j]=a.useState(null),[E,fe]=a.useState("lastHeard"),[V,X]=a.useState("desc"),[h,q]=a.useState(""),[z,U]=a.useState(!1),[b,W]=a.useState(new Set),[J,ee]=a.useState(!1),[ge,G]=a.useState(null),[y,D]=a.useState(null),[je,se]=a.useState(new Map),[Ie,te]=a.useState(new Map),[C,Be]=a.useState(25),[Q,ce]=a.useState(25),ye=a.useRef(null),ne=a.useMemo(()=>(o==null?void 0:o.neighbors)??{},[o==null?void 0:o.neighbors]),be=bs(),ie=a.useMemo(()=>{if(be.size===0)return ne;const s=new Set;for(const n of Object.keys(ne))s.add((n.startsWith("0x")?n.slice(2):n).toLowerCase());let t=null;for(const[n,r]of be){const i=(n.startsWith("0x")?n.slice(2):n).toLowerCase();s.has(i)||(t||(t={...ne}),t[n]={last_seen:r.lastSeen,name:r.name??void 0,node_name:r.name??void 0,latitude:r.latitude,longitude:r.longitude,is_repeater:r.nodeType==="repeater",contact_type:r.nodeType==="repeater"?"Repeater":r.nodeType==="companion"?"Companion":r.nodeType==="room_server"?"Room Server":void 0})}return t??ne},[ne,be]),A=a.useMemo(()=>{const t=Date.now()/1e3-L.minutes*60;return Object.fromEntries(Object.entries(ie).filter(([n,r])=>c.has(n)?!1:(r.last_seen??0)>=t))},[ie,c,L.minutes]),R=fs(),K=o==null?void 0:o.local_hash,Ve=a.useMemo(()=>{const s=new Map;if(!K||p.size===0)return s;for(const[t,n]of p)if(t.endsWith(`→${K}`)&&n.hops.length>1){const r=t.split("→")[0],i=n.hops[n.hops.length-1];s.set(r,i)}return s},[p,K]),le=a.useMemo(()=>{const s=new Map;if(!(R!=null&&R.latitude)||!(R!=null&&R.longitude))return s;for(const[t,n]of Object.entries(A))n.latitude&&n.longitude&&n.latitude!==0&&n.longitude!==0?s.set(t,Ct(R.latitude,R.longitude,n.latitude,n.longitude)):s.set(t,null);return s},[A,R]),{neighborHashSet:de,neighborSignalMap:qe}=a.useMemo(()=>{const s=new Set,t=new Map;for(const n of v)s.add(n.hash),t.set(n.hash,{avgRssi:n.avgRssi,avgSnr:n.avgSnr});return{neighborHashSet:s,neighborSignalMap:t}},[v]),Me=a.useMemo(()=>{const s=h.toLowerCase().trim(),t=s==="neighbor"||s==="neighbors",n=z||t,r=b.size>0;return Object.fromEntries(Object.entries(A).filter(([i,l])=>{if(r){const M=kt(l);if(!b.has(M))return!1}if(n&&!de.has(i))return!1;if(t||!s)return!0;const I=(l.node_name||l.name||"").toLowerCase(),N=oe(i).toLowerCase();return I.includes(s)||N.includes(s)||i.toLowerCase().includes(s)}))},[A,h,z,de,b]),u=a.useMemo(()=>{const s=Object.entries(Me),t=h.toLowerCase().trim(),n=t.length===2&&/^[0-9a-f]{2}$/i.test(t);return s.sort(([r,i],[l,I])=>{if(n){const M=oe(r).toLowerCase(),F=oe(l).toLowerCase(),ae=M===t,me=F===t;if(ae&&!me)return-1;if(me&&!ae)return 1}let N=0;switch(E){case"lastHeard":N=(i.last_seen||0)-(I.last_seen||0);break;case"distance":{const M=le.get(r)??null,F=le.get(l)??null;M===null&&F===null?N=0:M===null?N=1:F===null?N=-1:N=M-F;break}case"centrality":{const M=g.get(r)||0,F=g.get(l)||0;N=M-F;break}}return V==="desc"?-N:N})},[Me,E,V,le,g,h]),m=a.useMemo(()=>{let s=0,t=0,n=0,r=0,i=0;for(const[,l]of u){const I=Ce(l),N=l.latitude&&l.longitude&&l.latitude!==0&&l.longitude!==0;switch(I.type){case"room_server":n++;break;case"repeater":t++;break;case"companion":s++;break;case"unknown":i++;break}N&&r++}return{companions:s,repeaters:t,roomServers:n,total:u.length,withLocation:r,unknown:i}},[u]),Ue=a.useMemo(()=>new Set(x),[x]),Se=a.useMemo(()=>C===0?u:u.slice(0,Q),[u,Q,C]);a.useEffect(()=>{ce(C||u.length)},[E,V,h,z,b,C,u.length]),a.useEffect(()=>{const s=t=>{t.target.closest("[data-dropdown]")||ee(!1)};return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),a.useEffect(()=>{if(C===0)return;const s=new IntersectionObserver(t=>{t[0].isIntersecting&&QMath.min(n+C,u.length))},{threshold:.1,rootMargin:"100px"});return ye.current&&s.observe(ye.current),()=>s.disconnect()},[C,Q,u.length]);const We=a.useCallback(s=>{Be(s),ce(s||u.length)},[u.length]),Ge=a.useCallback(s=>{E===s?X(t=>t==="desc"?"asc":"desc"):(fe(s),X("desc"))},[E]),Qe=a.useCallback(s=>{const t=A[s];t!=null&&t.latitude&&(t!=null&&t.longitude)&&t.latitude!==0&&t.longitude!==0&&G(s)},[A]),Ke=a.useCallback(()=>{G(null)},[]),Ye=a.useCallback((s,t)=>{j({hash:s,name:t})},[]),Ze=a.useCallback(async(s,t)=>{if(t.stopPropagation(),!y){D(s),se(n=>{const r=new Map(n);return r.delete(s),r}),te(n=>{const r=new Map(n);return r.delete(s),r});try{const n=s.startsWith("0x")?s.slice(0,4):`0x${s.slice(0,2)}`,r=await Ns(n,30);r.success&&r.data?(se(i=>new Map(i).set(s,r.data)),setTimeout(()=>{se(i=>{const l=new Map(i);return l.delete(s),l})},1e4)):(te(i=>new Map(i).set(s,r.error||"Ping failed")),setTimeout(()=>{te(i=>{const l=new Map(i);return l.delete(s),l})},5e3))}catch(n){const r=n instanceof Error?n.message:"Ping failed";te(i=>new Map(i).set(s,r)),setTimeout(()=>{te(i=>{const l=new Map(i);return l.delete(s),l})},5e3)}finally{D(null)}}},[y]);return e.jsxs(vs,{children:[e.jsx(ws,{title:"Contacts",icon:e.jsx(re,{}),subtitle:e.jsx(Ms,{}),controls:e.jsxs("div",{className:"flex items-center gap-3 sm:gap-5",children:[e.jsxs("div",{className:"hidden sm:flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-fg-muted",children:"Total:"}),e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:`${m.total} discovered node${m.total!==1?"s":""} on the mesh network`,children:[e.jsx(re,{className:"w-3.5 h-3.5 text-fg-secondary"}),e.jsx("span",{children:m.total})]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-fg-muted",children:"Types:"}),m.repeaters>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Repeaters",children:[e.jsx(pe,{className:"w-3.5 h-3.5 text-sys-blue"}),e.jsx("span",{children:m.repeaters})]}),m.companions>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Companions",children:[e.jsx(Le,{className:"w-3.5 h-3.5 text-fg-muted"}),e.jsx("span",{children:m.companions})]}),m.roomServers>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Room Servers",children:[e.jsx(he,{className:"w-3.5 h-3.5 text-sys-pink"}),e.jsx("span",{children:m.roomServers})]}),m.withLocation>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"With GPS location",children:[e.jsx(Us,{className:"w-3.5 h-3.5 text-sys-green"}),e.jsx("span",{children:m.withLocation})]}),m.unknown>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Unknown type",children:[e.jsx(ze,{className:"w-3.5 h-3.5 text-sys-amber"}),e.jsx("span",{children:m.unknown})]})]})]}),e.jsxs("div",{className:"flex sm:hidden items-center gap-1.5",children:[e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(re,{className:"w-3 h-3 text-fg-secondary"}),e.jsx("span",{children:m.total})]}),m.repeaters>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(pe,{className:"w-3 h-3 text-sys-blue"}),e.jsx("span",{children:m.repeaters})]}),m.companions>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(Le,{className:"w-3 h-3 text-fg-muted"}),e.jsx("span",{children:m.companions})]}),m.roomServers>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(he,{className:"w-3 h-3 text-sys-pink"}),e.jsx("span",{children:m.roomServers})]}),e.jsx(Te,{ranges:Ne,selectedIndex:T,onSelect:S,size:"sm"})]}),e.jsx("div",{className:"hidden sm:block",children:e.jsx(Te,{ranges:Ne,selectedIndex:T,onSelect:S})})]})}),e.jsxs(ks,{children:[e.jsx(pt,{neighbors:A,localNode:R??void 0,localHash:K,onRemoveNode:f,selectedNodeHash:ge,onNodeSelected:Ke}),e.jsxs(gs,{noPadding:!0,children:[e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 px-3 sm:px-4 py-2.5 border-b border-edge-subtle",children:[e.jsx("span",{className:"icon-md flex items-center justify-center text-icon-card-title flex-shrink-0",children:e.jsx(re,{})}),e.jsx("span",{className:"type-micro flex-shrink-0 mr-auto hidden sm:block",children:"Discovered Contacts"}),e.jsx(js,{type:"search",size:"sm",value:h,onChange:s=>q(s.target.value),placeholder:"Search...",leadingIcon:e.jsx(Ws,{className:"w-3.5 h-3.5"}),trailingIcon:h?e.jsx("button",{onClick:()=>{q(""),(h.toLowerCase().trim()==="neighbor"||h.toLowerCase().trim()==="neighbors")&&U(!1)},className:"text-fg-muted hover:text-fg-secondary",children:e.jsx(ys,{className:"w-3 h-3"})}):void 0,className:"w-24 sm:w-32 xl:w-44","aria-label":"Search contacts"}),e.jsx("div",{className:"h-4 w-px bg-border-subtle flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[e.jsxs("div",{className:"relative","data-dropdown":!0,children:[e.jsxs("button",{onClick:()=>ee(!J),className:ve(b.size>0,{border:!0}),title:"Filter by contact type",children:[e.jsx(tt,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:"Filter"}),b.size>0&&e.jsx("span",{className:"tabular-nums text-xs bg-sys-blue/30 px-1 rounded",children:b.size})]}),J&&e.jsxs("div",{className:"absolute right-0 top-full mt-1 z-50 surface-elevated radius-inner py-1 min-w-[140px]",children:[[{key:"repeater",label:"Repeaters"},{key:"companion",label:"Companions"},{key:"room",label:"Rooms"}].map(({key:s,label:t})=>e.jsxs("button",{onClick:()=>{W(n=>{const r=new Set(n);return r.has(s)?r.delete(s):r.add(s),r})},className:"w-full px-3 py-1.5 text-sm text-left hover-bg transition-base flex items-center gap-2",children:[e.jsx("span",{className:we("w-4 h-4 flex items-center justify-center radius-badge border",b.has(s)?"bg-sys-blue border-sys-blue text-white":"border-edge-subtle"),children:b.has(s)&&e.jsx(ke,{className:"w-3 h-3"})}),e.jsx("span",{className:b.has(s)?"text-fg-primary":"text-fg-secondary",children:t})]},s)),b.size>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t border-edge-subtle my-1"}),e.jsx("button",{onClick:()=>W(new Set),className:"w-full px-3 py-1.5 text-sm text-left text-fg-muted hover:text-fg-secondary hover-bg transition-base",children:"Clear filters"})]})]})]}),de.size>0&&e.jsxs("button",{onClick:()=>U(!z),className:ve(z,{color:"success",border:!0}),title:z?"Show all contacts":"Show only MeshCore neighbors (direct RF contact)",children:[e.jsx(pe,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:"Neighbors"})]})]}),e.jsx("div",{className:"h-4 w-px bg-border-subtle flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[vt.map(({field:s,icon:t,label:n})=>e.jsxs("button",{onClick:()=>Ge(s),className:ve(E===s),title:`Sort by ${n.toLowerCase()}`,children:[e.jsx(t,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:n}),E===s&&e.jsx(Ys,{className:we("w-3 h-3",V==="asc"&&"rotate-180")})]},s)),e.jsx("div",{className:"h-4 w-px bg-border-subtle"}),e.jsxs(Cs,{value:C,onChange:We,className:"w-auto min-w-[50px] [&_button]:py-1 [&_button]:px-2 [&_button]:text-xs [&_button]:min-h-0","aria-label":"Items per page",children:[e.jsx(ue,{value:25,children:"25"}),e.jsx(ue,{value:50,children:"50"}),e.jsx(ue,{value:100,children:"100"}),e.jsx(ue,{value:0,children:"All"})]})]})]}),u.length>0?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden sm:grid contacts-grid-header border-b border-edge-subtle/50 px-3 py-2 type-micro text-fg-muted",children:[e.jsx("div",{className:"contacts-col-node",children:"Node"}),e.jsx("div",{className:"contacts-col-signal text-right",children:"Signal"}),e.jsx("div",{className:"contacts-col-distance text-right",children:"Distance"}),e.jsx("div",{className:"contacts-col-centrality text-right",children:"Centrality"}),e.jsx("div",{className:"contacts-col-seen text-right",children:"Last Seen"}),e.jsx("div",{className:"contacts-col-actions"})]}),e.jsx("div",{className:"divide-y divide-edge-subtle/30",children:Se.map(([s,t])=>{const n=oe(s),r=Ue.has(s),i=de.has(s),l=le.get(s)??null,I=g.get(s)||0,N=i?qe.get(s):void 0,M=n?H.get(n)??null:null,F=B.get(s)??Nt;let ae=null;if(!i&&K&&p.size>0){const Je=`${s}→${K}`,xe=p.get(Je);if(xe&&xe.hops.length>0){const _e=xe.hops[0],Re=Object.keys(ie).find(es=>es.toUpperCase().startsWith(_e.toUpperCase())),Y=Re?ie[Re]:null;ae={prefix:_e,name:(Y==null?void 0:Y.node_name)??(Y==null?void 0:Y.name)??null,hopCount:xe.hopCount}}}const me=d.has(s),Xe=Ve.get(s)??null;return e.jsx(yt,{hash:s,contact:t,isHub:r,isNeighbor:i,distance:l,centrality:I,sparklineData:F,neighborSignal:N,collisionInfo:M,isViterbiResolved:w,isPinging:y!==null,isPingingThis:y===s,pingResult:je.get(s),pingError:Ie.get(s),gatewayInfo:ae,lastForwarderPrefix:Xe,isMobile:me,onRowClick:Qe,onPing:Ze,onRemove:Ye},s)})}),C>0&&Q0&&Qce(s=>Math.min(s+C,u.length)),className:"text-sys-blue hover:text-sys-blue/80 transition-base",children:"Load more"})]})]}):e.jsxs("div",{className:"roster-empty",children:[e.jsx(re,{className:"roster-empty-icon"}),e.jsx("div",{className:"type-label text-fg-secondary",children:"No Contacts Discovered"}),e.jsx("div",{className:"type-data-xs text-fg-muted mt-1",children:"Contacts will appear here as they advertise on the mesh network."})]})]})]}),e.jsx(qs,{isOpen:!!_,title:"Remove Contact",message:`Are you sure you would like to remove ${(_==null?void 0:_.name)||"this contact"}?`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{_&&f(_.hash),j(null)},onCancel:()=>j(null)})]})}const Kt=Object.freeze(Object.defineProperty({__proto__:null,default:Mt},Symbol.toStringTag,{value:"Module"}));export{Kt as C,ft as P,He as R,mt as T}; diff --git a/frontend/dist/assets/ContactsMapMapLibre-NYBNCx0J.js b/frontend/dist/assets/ContactsMapMapLibre-B-sbLVsX.js similarity index 92% rename from frontend/dist/assets/ContactsMapMapLibre-NYBNCx0J.js rename to frontend/dist/assets/ContactsMapMapLibre-B-sbLVsX.js index afc2f2fd..2c14bc13 100644 --- a/frontend/dist/assets/ContactsMapMapLibre-NYBNCx0J.js +++ b/frontend/dist/assets/ContactsMapMapLibre-B-sbLVsX.js @@ -1,4 +1,4 @@ -import{d as X0,a5 as aa,r as j,eZ as ua,b_ as ca,cT as fa,cU as da,j as g,ak as xo,cV as ha,al as wo,m as s0,D as hn,c as n0,L as Yn,d7 as e0,Z as I0,e_ as Os,e$ as vo,f0 as ma,bQ as ga,bW as pa,bY as ya,a7 as bo,am as ko,A as R0,b as Ur,B as Ot,d8 as xa,bS as us,M as zs,S as Hs,c_ as Co,e as Eo,R as So,bk as mn,bf as yi,f1 as Mo,G as wa,K as va,d6 as ba,f2 as ka,ah as Bo,bs as xi,bu as Ca,E as Gs,F as Us,bU as Ea,aK as Sa,el as Do,f3 as Ma,bZ as Ba,f4 as Da,f5 as _o,a6 as dn,c7 as _a,f6 as To,f7 as Ta,f8 as ja,ap as jo,x as x0,f9 as Ro,bI as Ra,eX as Ia,bL as La,cY as Io,c$ as Na,P as Fa,fa as Pa,ex as Qa,fb as cs}from"./index-BOwCLZTK.js";import{u as Lo,b as Ar,S as J0,L as t0,P as Oa,c as za,M as Ha,d as Ga,B as Ua}from"./BasemapLayer-B-5TmAfZ.js";import{u as No,r as Fo,e as wi,f as vi,g as Va}from"./consumer-registry-CTjikLma.js";import{L as Hn,c as Wa}from"./link-scoring-CgjOR3NF.js";import{C as Ya}from"./ConfirmModal-DpSKXZ01.js";import{b as Ka,e as Za,a as Po,m as bi,s as $a,G as Cs,c as Qo,g as qa,M as Ja,E as Xa,u as Au,d as eu,i as tu,j as ru,k as nu}from"./max-vSbldOSt.js";import{D as Oo}from"./download-B9g5-0oH.js";import{D as su}from"./database-C6oOGn9y.js";import{H as iu,A as un,D as ki,p as ou,c as lu,u as ur}from"./useMapViewStore-DpXuD1iT.js";import{R as zo}from"./refresh-cw-C9txhqc9.js";import{E as Ho}from"./target-vmW1ltA0.js";import{F as au}from"./funnel-CWx99rlN.js";import{P as uu}from"./plus-ClrHVFhr.js";import{C as cu,a as Go,b as Es,c as fu}from"./easing-CsgXD0uy.js";import{Z as du}from"./zap-Bd-kARJ1.js";import{T as Vs}from"./trash-2-qMD09ppP.js";import{W as hu}from"./wifi-off-DC4jBRps.js";import{W as mu}from"./wifi-CI57D5A3.js";import{C as Uo,H as Ci,a as Lr,N as gu,b as pu}from"./badge-colors-DCbxcv7o.js";import{C as yu}from"./chevron-right-DJVm4pVP.js";import{T as xu,P as wu,R as vu}from"./Contacts-nDnNtpiy.js";import{c as bu}from"./node-types-C6okL8rE.js";import{L as ku}from"./LightSparkline-C68RXWon.js";import{M as Cu}from"./map-pin-C2z_C0J3.js";import"./triangle-alert-SO3tIa8w.js";import"./index-2RIoVPos.js";import"./usePipelineStore-Cw6U5jyB.js";import"./ping-LiBbR-Oy.js";import"./PageLayout-QKntxcnp.js";import"./listbox-C1tUi7YC.js";import"./element-movement-BLnr83nT.js";import"./MqttModeBadge-CSj5wNzF.js";import"./chat-utils-D21OFED5.js";import"./SignalIndicator-Calk-LyB.js";import"./CollisionExplorerModal-Cudk5ace.js";import"./monitor-smartphone-Dd11JEL9.js";import"./DataBox-BVnEv6Au.js";import"./circle-question-mark-XDnZ1ChV.js";import"./network-D0Fgg1y-.js";import"./activity-D5uH2SFx.js";import"./search-Ba9CRHru.js";/** +import{d as X0,a7 as aa,r as j,e_ as ua,c2 as ca,cU as fa,cV as da,j as g,am as xo,cW as ha,an as wo,m as s0,D as hn,c as n0,L as Yn,d8 as e0,Z as I0,e$ as Os,f0 as vo,f1 as ma,bU as ga,b_ as pa,c0 as ya,a9 as bo,ao as ko,A as R0,b as Ur,B as Ot,d9 as xa,bW as us,M as zs,S as Hs,c$ as Co,e as Eo,R as So,bo as mn,bj as yi,f2 as Mo,G as wa,K as va,d7 as ba,f3 as ka,aj as Bo,bw as xi,by as Ca,E as Gs,F as Us,bY as Ea,aO as Sa,em as Do,f4 as Ma,c1 as Ba,f5 as Da,f6 as _o,a8 as dn,cb as _a,f7 as To,f8 as Ta,f9 as ja,ar as jo,x as x0,fa as Ro,bM as Ra,eY as Ia,bP as La,cZ as Io,d0 as Na,P as Fa,fb as Pa,ey as Qa,fc as cs}from"./index-CvSa8h-C.js";import{u as Lo,b as Ar,S as J0,L as t0,P as Oa,c as za,M as Ha,d as Ga,B as Ua}from"./BasemapLayer-NuqTvOvz.js";import{u as No,r as Fo,e as wi,f as vi,g as Va}from"./consumer-registry-BsBD_8RF.js";import{L as Hn,c as Wa}from"./link-scoring-DaKaf0kz.js";import{C as Ya}from"./ConfirmModal-D2DSFKRK.js";import{b as Ka,e as $a,a as Po,m as bi,s as Za,G as Cs,c as Qo,g as qa,M as Ja,E as Xa,u as Au,d as eu,i as tu,j as ru,k as nu}from"./max-B4xU84un.js";import{D as Oo}from"./download-CNAyp-3r.js";import{D as su}from"./database-bNR-4XQS.js";import{H as iu,A as un,D as ki,p as ou,c as lu,u as ur}from"./useMapViewStore-1D-N8rLK.js";import{R as zo}from"./refresh-cw-DQJSjSjI.js";import{E as Ho}from"./target-M8AQjykJ.js";import{F as au}from"./funnel-DLa9oQpD.js";import{P as uu}from"./plus-CNNHSjgp.js";import{C as cu,a as Go,b as Es,c as fu}from"./easing-CvrBfrm0.js";import{Z as du}from"./zap-mngIm3qT.js";import{T as Vs}from"./trash-2-DUG72tk9.js";import{W as hu}from"./wifi-off-B6--LVD1.js";import{W as mu}from"./wifi-DV8DJqF0.js";import{C as Uo,H as Ci,a as Lr,N as gu,b as pu}from"./badge-colors-MuK22b26.js";import{C as yu}from"./chevron-right-1kmv-Vqa.js";import{T as xu,P as wu,R as vu}from"./Contacts-DyjGy2DF.js";import{c as bu}from"./node-types-BJsOTMm_.js";import{L as ku}from"./LightSparkline-BjpzakdT.js";import{M as Cu}from"./map-pin-BCwmmHGs.js";import"./triangle-alert-C7tm61-l.js";import"./index-CPifxb0-.js";import"./usePipelineStore-pGK8Y5O7.js";import"./ping-D0xwlHyD.js";import"./PageLayout-B8orsDlo.js";import"./listbox-Xbs80tag.js";import"./element-movement-CM_Y2Bj0.js";import"./MqttModeBadge-CGW6hCWV.js";import"./chat-utils-BUBqf9vH.js";import"./SignalIndicator-B0ppyCo-.js";import"./CollisionExplorerModal-BC_ZJRMz.js";import"./monitor-smartphone-D-7zPu_H.js";import"./DataBox-CwAsAwyY.js";import"./circle-question-mark-DDUlGgWh.js";import"./network-VirimdjG.js";import"./activity-CctJQ0y-.js";import"./search-BZtD4Hr8.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. @@ -38,14 +38,14 @@ import{d as X0,a5 as aa,r as j,eZ as ua,b_ as ca,cT as fa,cU as da,j as g,ak as * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Fu=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],Pu=X0("wrench",Fu);function Qu(c,u){return u.filter(y=>y.nodes.includes(c)).sort((y,x)=>x.avgCertainCount-y.avgCertainCount)}function Ou(c,u,p){const y=Qu(c,u),x=new Set,C=[];for(const T of y)for(const Q of T.edgeKeys)if(!x.has(Q)){x.add(Q);const D=p.get(Q);C.push({key:Q,certainCount:(D==null?void 0:D.certainCount)??0})}return C.sort((T,Q)=>Q.certainCount-T.certainCount),{loops:y,highlightedEdgeKeys:x,sortedEdges:C}}function zu(c){const u=new Map;for(const p of c)for(const y of p.edgeKeys){const x=u.get(y)??[];x.push(p),u.set(y,x)}return u}const Mn={MAX_THICKNESS_AT:300,MIN_VALIDATIONS:5},Hu=6,Ei=1;function Ms(c,u){const p=Math.max(Mn.MIN_VALIDATIONS,Math.min(c,Mn.MAX_THICKNESS_AT)),y=Math.log(Mn.MIN_VALIDATIONS),x=Math.log(Mn.MAX_THICKNESS_AT),T=(Math.log(p)-y)/(x-y);return Ei+(Hu-Ei)*T}const Gu=Uu(Vu);function Uu(c){return function(u,p,y=p){if(!((p=+p)>=0))throw new RangeError("invalid rx");if(!((y=+y)>=0))throw new RangeError("invalid ry");let{data:x,width:C,height:T}=u;if(!((C=Math.floor(C))>=0))throw new RangeError("invalid width");if(!((T=Math.floor(T!==void 0?T:x.length/C))>=0))throw new RangeError("invalid height");if(!C||!T||!p&&!y)return u;const Q=p&&c(p),D=y&&c(y),E=x.slice();return Q&&D?(Nr(Q,E,x,C,T),Nr(Q,x,E,C,T),Nr(Q,E,x,C,T),Fr(D,x,E,C,T),Fr(D,E,x,C,T),Fr(D,x,E,C,T)):Q?(Nr(Q,x,E,C,T),Nr(Q,E,x,C,T),Nr(Q,x,E,C,T)):D&&(Fr(D,x,E,C,T),Fr(D,E,x,C,T),Fr(D,x,E,C,T)),u}}function Nr(c,u,p,y,x){for(let C=0,T=y*x;C{if(!((Q-=D)>=T))return;let E=u*C[T];const P=D*u,O=P+D;for(let z=T,V=T+P;z{if(!((C-=T)>=x))return;let Q=c*y[x];const D=T*c;for(let E=x,P=x+D;E=y&&++p;return p}function Ku(c,u,p){let y;for(;;){const x=Ka(c,u,p);if(x===y||x===0||!isFinite(x))return[c,u];x>0?(c=Math.floor(c/x)*x,u=Math.ceil(u/x)*x):x<0&&(c=Math.ceil(c*x)/x,u=Math.floor(u*x)/x),y=x}}function Zu(c){return Math.max(1,Math.ceil(Math.log(Yu(c))/Math.LN2)+1)}var $u=Array.prototype,Wo=$u.slice;function qu(c,u){return c-u}function Ju(c){for(var u=0,p=c.length,y=c[p-1][1]*c[0][0]-c[p-1][0]*c[0][1];++u()=>c;function Xu(c,u){for(var p=-1,y=u.length,x;++py!=V>y&&p<(z-E)*(y-P)/(V-P)+E&&(x=-x)}return x}function ec(c,u,p){var y;return tc(c,u,p)&&rc(c[y=+(c[0]===u[0])],p[y],u[y])}function tc(c,u,p){return(u[0]-c[0])*(p[1]-c[1])===(p[0]-c[0])*(u[1]-c[1])}function rc(c,u,p){return c<=u&&u<=p||p<=u&&u<=c}function nc(){}var T0=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Si(){var c=1,u=1,p=Zu,y=D;function x(E){var P=p(E);if(Array.isArray(P))P=P.slice().sort(qu);else{const O=Za(E,sc);for(P=Po(...Ku(O[0],O[1],P),P);P[P.length-1]>=O[1];)P.pop();for(;P[1]C(E,O))}function C(E,P){const O=P==null?NaN:+P;if(isNaN(O))throw new Error(`invalid value: ${P}`);var z=[],V=[];return T(E,O,function(W){y(W,E,O),Ju(W)>0?z.push([W]):V.push(W)}),V.forEach(function(W){for(var oA=0,J=z.length,eA;oA=P,T0[Z<<2].forEach(sA);++W0&&V0&&W=0&&O>=0))throw new Error("invalid size");return c=P,u=O,x},x.thresholds=function(E){return arguments.length?(p=typeof E=="function"?E:Array.isArray(E)?q0(Wo.call(E)):q0(E),x):p},x.smooth=function(E){return arguments.length?(y=E?D:nc,x):y===D},x}function sc(c){return isFinite(c)?c:NaN}function cr(c,u){return c==null?!1:+c>=u}function fs(c){return c==null||isNaN(c=+c)?-1/0:c}function Mi(c,u,p,y){const x=y-u,C=p-u,T=isFinite(x)||isFinite(C)?x/C:Math.sign(x)/Math.sign(C);return isNaN(T)?c:c+T-.5}function ic(c){return c[0]}function oc(c){return c[1]}function lc(){return 1}function ac(){var c=ic,u=oc,p=lc,y=960,x=500,C=20,T=2,Q=C*3,D=y+Q*2>>T,E=x+Q*2>>T,P=q0(20);function O(Z){var uA=new Float32Array(D*E),sA=Math.pow(2,-T),vA=-1;for(const LA of Z){var iA=(c(LA,++vA,Z)+Q)*sA,fA=(u(LA,vA,Z)+Q)*sA,RA=+p(LA,vA,Z);if(RA&&iA>=0&&iA=0&&fAiA*vA))(uA).map((iA,fA)=>(iA.value=+sA[fA],V(iA)))}z.contours=function(Z){var uA=O(Z),sA=Si().size([D,E]),vA=Math.pow(2,2*T),iA=fA=>{fA=+fA;var RA=V(sA.contour(uA,fA*vA));return RA.value=fA,RA};return Object.defineProperty(iA,"max",{get:()=>bi(uA)/vA}),iA};function V(Z){return Z.coordinates.forEach(W),Z}function W(Z){Z.forEach(oA)}function oA(Z){Z.forEach(J)}function J(Z){Z[0]=Z[0]*Math.pow(2,T)-Q,Z[1]=Z[1]*Math.pow(2,T)-Q}function eA(){return Q=C*3,D=y+Q*2>>T,E=x+Q*2>>T,z}return z.x=function(Z){return arguments.length?(c=typeof Z=="function"?Z:q0(+Z),z):c},z.y=function(Z){return arguments.length?(u=typeof Z=="function"?Z:q0(+Z),z):u},z.weight=function(Z){return arguments.length?(p=typeof Z=="function"?Z:q0(+Z),z):p},z.size=function(Z){if(!arguments.length)return[y,x];var uA=+Z[0],sA=+Z[1];if(!(uA>=0&&sA>=0))throw new Error("invalid size");return y=uA,x=sA,eA()},z.cellSize=function(Z){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return T=Math.floor(Math.log(Z)/Math.LN2),eA()},z.thresholds=function(Z){return arguments.length?(P=typeof Z=="function"?Z:Array.isArray(Z)?q0(Wo.call(Z)):q0(Z),z):P},z.bandwidth=function(Z){if(!arguments.length)return Math.sqrt(C*(C+1));if(!((Z=+Z)>=0))throw new Error("invalid bandwidth");return C=(Math.sqrt(4*Z*Z+1)-1)/2,eA()},z}function Bs(){const c=aa();return j.useMemo(()=>ua.getPackets(),[c])}function Bn({label:c,icon:u,status:p,detail:y}){return g.jsxs("div",{className:n0("flex items-center gap-3 py-3 px-4 radius-inset transition-base",p==="active"&&"bg-sys-blue/10",p==="complete"&&"bg-sys-blue/10 ring-2 ring-inset ring-sys-blue",p==="pending"&&"opacity-40"),children:[g.jsx("div",{className:n0("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0 transition-all duration-300",p==="active"&&"bg-sys-blue/20",p==="complete"&&"bg-sys-blue/20",p==="pending"&&"bg-subtle-fill"),children:p==="complete"?g.jsx(hn,{className:"w-4 h-4 text-sys-blue"}):p==="active"?g.jsx(Yn,{className:"w-4 h-4 animate-spin text-sys-blue"}):g.jsx("span",{className:"text-fg-muted",children:u})}),g.jsxs("div",{className:"flex-1 min-w-0",children:[g.jsx("div",{className:n0("text-sm font-medium transition-colors",p==="active"&&"text-sys-blue",p==="complete"&&"text-sys-blue",p==="pending"&&"text-fg-muted"),children:c}),y&&p!=="pending"&&g.jsx("div",{className:"text-xs text-fg-muted mt-0.5 truncate",children:y})]})]})}function uc({isOpen:c,onClose:u}){const{packetCacheState:p,triggerDeepAnalysis:y}=ca(),x=fa(),C=da(),T=p.packetCount,[Q,D]=j.useState("fetching");j.useEffect(()=>{c&&y()},[c,y]),j.useEffect(()=>{if(c){if(p.isTopologyLoading)D("fetching");else if(x)D("analyzing"),setTimeout(()=>D("building"),500),setTimeout(()=>D("discovering"),1e3);else if(C>0&&!p.isTopologyLoading){D("complete");const W=setTimeout(()=>{u()},1500);return()=>clearTimeout(W)}}},[c,p.isTopologyLoading,x,C,u]);const E=Q==="complete",P=p.loadProgress,O=j.useMemo(()=>{if(P&&P.target>0){const W=(P.loaded/1e3).toFixed(1),oA=(P.target/1e3).toFixed(1);return`Loading... ${W}k / ${oA}k packets (${P.percent}%)`}return T>0?`${T.toLocaleString()} packets loaded`:"Connecting to database..."},[P,T]),z=W=>{const oA=["fetching","analyzing","building","discovering","complete"],J=oA.indexOf(Q),eA=oA.indexOf(W);return eA{};return g.jsx(xo,{open:c,onClose:V,size:"sm",bottomSheet:!1,children:g.jsx(ha,{isLoading:!E,borderRadius:16,children:g.jsx(wo,{className:"p-6 radius-card overflow-hidden",children:E?g.jsxs("div",{className:"flex flex-col items-center py-6",children:[g.jsx(s0.div,{variants:$a,initial:"hidden",animate:"visible",className:"w-16 h-16 rounded-full flex items-center justify-center mb-4 bg-sys-blue/20",children:g.jsx(hn,{className:"w-8 h-8 text-sys-blue"})}),g.jsx("h3",{className:"type-micro text-sys-blue",children:"Ready!"}),g.jsx("button",{onClick:u,className:"mt-3 sm:hidden min-h-[44px] min-w-[44px] px-4 flex items-center justify-center text-[15px] font-medium text-sys-blue active:text-sys-blue/70 transition-base radius-inner active:bg-subtle-fill",children:"Done"})]}):g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[g.jsx("div",{className:"w-10 h-10 radius-inset flex items-center justify-center bg-sys-blue/15",children:g.jsx(Cs,{className:"w-5 h-5 text-sys-blue"})}),g.jsxs("div",{children:[g.jsx("h3",{className:"type-micro",children:"Deep Analysis"}),g.jsx("p",{className:"text-xs text-fg-muted",children:"Building mesh topology"})]})]}),g.jsxs("div",{className:"space-y-2",children:[g.jsx(Bn,{label:"Fetching Packets",icon:g.jsx(Oo,{className:"w-4 h-4"}),status:z("fetching"),detail:O}),g.jsx(Bn,{label:"Analyzing Database",icon:g.jsx(su,{className:"w-4 h-4"}),status:z("analyzing"),detail:"Processing packet paths"}),g.jsx(Bn,{label:"Building Topology",icon:g.jsx(Cs,{className:"w-4 h-4"}),status:z("building"),detail:"Computing mesh edges"}),g.jsx(Bn,{label:"Discovering Nodes",icon:g.jsx(Qo,{className:"w-4 h-4"}),status:z("discovering"),detail:"Viterbi HMM ghost detection"})]}),g.jsx("p",{className:"text-xs text-fg-muted text-center mt-5",children:"This may take a few seconds..."})]})})})})}const cc=j.memo(uc),Yo=16,Ds=24,j0=Yo,fc=5,yr={textPrimary:I0[900],textSecondary:"#4A4A4A",textMuted:I0[500],border:"rgba(0, 0, 0, 0.12)",hoverBg:"rgba(0, 0, 0, 0.06)",disabledText:"rgba(0, 0, 0, 0.25)"},gr={nodeFill:e0.blue,nodeStroke:"rgba(255,255,255,0.9)",nodeColor:e0.indigo,localColor:e0.amber,hubColor:e0.purple,gatewayColor:e0.indigo,mobileColor:e0.orange,roomServerColor:e0.pink,neighborColor:e0.amber,edges:{rest:I0[700],restBright:I0[600],restDim:I0[800],hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:I0[400],hoverNeighbor:e0.amber,neighborRest:I0[500],neighborHover:e0.amber,highlight:"#FFD700"},edgeOpacity:.82};function Ws(){if(typeof window>"u")return gr;const c=Os(),u=vo();return{nodeFill:c.nodeFill,nodeStroke:c.nodeStroke,nodeColor:gr.nodeColor,localColor:c.localColor,hubColor:c.hubColor,gatewayColor:c.gatewayColor,mobileColor:c.mobileColor,roomServerColor:c.roomColor,neighborColor:c.neighborColor,edges:{rest:u.rest,restBright:u.restBright,restDim:u.restDim,hoverDirect:u.hoverDirect,hoverLoop:u.hoverLoop,hoverStandard:u.hoverStandard,hoverNeighbor:u.hoverNeighbor,neighborRest:gr.edges.neighborRest,neighborHover:gr.edges.neighborHover,highlight:u.highlight},edgeOpacity:gr.edgeOpacity}}const Dn=2e3,_n=750,dc="#00FF00",hc=500,Bi=500,Di=250,mc=150,Ko=200,gc=Ur.snappy,w0=yr,Zo=j.createContext("dark"),Kn=()=>j.useContext(Zo);function Pr({color:c,ring:u}){const p=j0-2;return g.jsx("span",{className:"shrink-0 rounded-full","aria-hidden":"true",style:{width:p,height:p,backgroundColor:u?"transparent":c,border:u?`${fc-1}px solid ${c}`:void 0,boxSizing:"border-box"}})}function ds({color:c,pattern:u="solid"}){return g.jsx("svg",{className:"shrink-0","aria-hidden":"true",width:18,height:6,viewBox:"0 0 18 6",children:g.jsx("line",{x1:0,y1:3,x2:18,y2:3,stroke:c,strokeWidth:3,strokeLinecap:"round",strokeDasharray:u==="dashed"?"5,3":u==="dotted"?"2,3":void 0})})}function A0({indicator:c,label:u,tooltip:p}){const y=Kn()==="light";return g.jsxs("div",{className:"flex items-center gap-1.5",children:[c,g.jsx("span",{className:n0(!y&&"text-fg-secondary"),style:y?{color:w0.textSecondary}:void 0,children:u}),p&&g.jsx(bo,{content:p,delay:Ko,children:g.jsx("span",{className:n0("cursor-help text-[11px] opacity-75 hover:opacity-100 transition-opacity",!y&&"text-fg-muted"),style:y?{color:w0.textMuted}:void 0,children:"ⓘ"})})]})}function pc(c){return`legend-section-${c.toLowerCase().replace(/\s+/g,"-")}`}function hs({title:c,tooltip:u,isOpen:p,onToggle:y,showDivider:x,children:C}){const T=Kn()==="light",Q=pc(c);return g.jsxs("div",{className:x?"mt-2 pt-2 border-t":"",style:x?{borderColor:T?w0.border:"var(--map-ui-border)"}:void 0,children:[g.jsxs("button",{type:"button",onClick:y,"aria-expanded":p,"aria-controls":Q,className:n0("group w-full flex items-center justify-between py-1 min-h-[44px] sm:min-h-0 font-medium transition-colors",!T&&"text-fg-secondary hover:text-fg-primary"),style:T?{color:w0.textSecondary}:void 0,children:[g.jsxs("span",{className:"flex items-center gap-1",children:[c,g.jsx(bo,{content:u,delay:Ko,children:g.jsx("span",{className:n0("cursor-help text-[11px] opacity-75 group-hover:opacity-100 transition-opacity",!T&&"text-fg-muted"),style:T?{color:w0.textMuted}:void 0,children:"ⓘ"})})]}),g.jsx(s0.span,{animate:{rotate:p?0:-90},transition:{duration:.15},"aria-hidden":"true",children:g.jsx(ko,{className:"w-3 h-3",style:T?{color:w0.textMuted}:{color:"var(--fg-muted)"}})})]}),g.jsx(R0,{initial:!1,children:p&&g.jsx(s0.div,{id:Q,role:"region","aria-label":c,initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:gc,className:"overflow-hidden",children:g.jsx("div",{className:"flex flex-col gap-1 pt-1.5",children:C})})})]})}function _i({label:c,value:u,color:p}){const y=Kn()==="light";return g.jsxs("div",{className:n0("flex justify-between tabular-nums",!y&&"text-fg-muted"),style:y?{color:w0.textMuted}:void 0,children:[g.jsx("span",{children:c}),g.jsx("span",{style:p?{color:p}:y?{color:w0.textSecondary}:{color:"var(--fg-secondary)"},children:u})]})}function Ti({icon:c,color:u,title:p,subtitle:y}){const x=Kn()==="light";return g.jsx("div",{className:"mt-1.5 pt-1.5 border-t",style:{borderColor:x?w0.border:"var(--map-ui-border)"},children:g.jsxs("div",{className:"flex items-center gap-1.5",children:[g.jsx("span",{className:"shrink-0",style:{color:u},children:c}),g.jsxs("div",{className:"flex flex-col min-w-0",children:[g.jsx("span",{className:"font-medium truncate",style:{color:u},children:p}),g.jsx("span",{className:n0("text-[10px] leading-tight",!x&&"text-fg-muted"),style:x?{color:w0.textMuted}:void 0,children:y})]})]})})}function yc(c){return c.some(([,u])=>{var y;const p=(y=u.contact_type)==null?void 0:y.toLowerCase();return p==="room server"||p==="room_server"||p==="room"||p==="server"})}function xc(c){let u=0;for(const p of c.txDelayRecommendations.values())p.networkRole==="backbone"&&u++;return u}function wc({showTopology:c,validatedPolylineCount:u,filteredNeighborCount:p,hasLocalNode:y,meshTopology:x,zeroHopNeighbors:C,neighborsWithLocation:T,basemapMode:Q="dark"}){const D=ma(),E=ga(),P=pa(),O=E.filter(sA=>sA.isLikelyReal).length,z=xc(x),V=C.size>0,[W,oA]=j.useState(!0),[J,eA]=j.useState(!0),[Z,uA]=j.useState(!0);return g.jsx(Zo.Provider,{value:Q,children:g.jsxs("div",{className:"map-control-surface p-2.5 text-xs",children:[g.jsxs(hs,{title:"Nodes",tooltip:"Node type shown by shape + color. Yellow = direct RF neighbor.",isOpen:W,onToggle:()=>oA(sA=>!sA),children:[g.jsx(A0,{indicator:g.jsx(Pr,{color:D.nodeFill}),label:"Node",tooltip:"Standard mesh node. Repeater, client, or companion device."}),g.jsx(A0,{indicator:g.jsx(Pr,{color:D.hubColor}),label:"Hub",tooltip:"Network hub (≥10% of last-hop traffic)."}),yc(T)&&g.jsx(A0,{indicator:g.jsx(ya,{className:"w-3 h-3 shrink-0",style:{color:D.roomColor},strokeWidth:2.5}),label:"Room",tooltip:"Room Server identity for client sync."}),g.jsx(A0,{indicator:g.jsx(iu,{className:"w-3 h-3 shrink-0",style:{color:D.localColor},strokeWidth:2.5}),label:"Local",tooltip:"Your repeater running pyMC_Repeater."}),V&&g.jsx(A0,{indicator:g.jsx(Pr,{color:D.neighborColor}),label:"Neighbor",tooltip:"Zero-hop direct RF contact."}),x.gatewayNodes.length>0&&g.jsx(A0,{indicator:g.jsx(Pr,{color:D.gatewayColor}),label:"Gateway",tooltip:"Significant forwarder (7-10% traffic)."}),z>0&&g.jsx(A0,{indicator:g.jsx(Pr,{color:D.hubColor}),label:"Backbone",tooltip:"Critical relay with high centrality."}),x.mobileNodes.length>0&&g.jsx(A0,{indicator:g.jsx(Pr,{color:D.mobileColor,ring:!0}),label:"Mobile",tooltip:"Volatile node that appears/disappears."}),O>0&&g.jsx(A0,{indicator:g.jsx(Qo,{className:"w-3 h-3 shrink-0",style:{color:D.ghostColor},strokeWidth:2.5}),label:`Ghost (${O})`,tooltip:"Unknown repeater from Viterbi analysis."})]}),V&&g.jsxs(hs,{title:"Link Quality",tooltip:"Neighbor edge colors based on bidirectional balance.",isOpen:J,onToggle:()=>eA(sA=>!sA),showDivider:!0,children:[g.jsx(A0,{indicator:g.jsx(ds,{color:Hn.YELLOW,pattern:"solid"}),label:"2-Way",tooltip:"33-67% balanced. Ideal bidirectional link."}),g.jsx(A0,{indicator:g.jsx(ds,{color:Hn.GREEN,pattern:"dashed"}),label:"Listener",tooltip:">67% listener. They hear us well."}),g.jsx(A0,{indicator:g.jsx(ds,{color:Hn.RED,pattern:"dotted"}),label:"Loud",tooltip:"<33% listener. They route more to us."})]}),c&&u>0&&g.jsxs(hs,{title:"Topology",tooltip:"Links with 5+ validations. Thickness = strength.",isOpen:Z,onToggle:()=>uA(sA=>!sA),showDivider:!0,children:[g.jsx(_i,{label:"Nodes",value:p+(y?1:0)}),x.hubNodes.length>0&&g.jsx(_i,{label:"Hubs",value:x.hubNodes.length,color:gr.hubColor}),x.loops.length>0&&g.jsx(Ti,{icon:g.jsx(zo,{className:"w-3 h-3"}),color:gr.edges.hoverLoop,title:`${x.loops.length} ${x.loops.length===1?"Loop":"Loops"}`,subtitle:"Redundant paths"}),P.totalPaths>0&&g.jsx(Ti,{icon:g.jsx(Ho,{className:"w-3 h-3"}),color:D.ghostColor,title:`${P.totalPaths.toLocaleString()} Viterbi`,subtitle:"HMM decoded paths"})]})]})})}const ji={repeater:"blue",companion:"cyan",room_server:"pink",hubs:"indigo",direct:"green"},Tn={repeater:"Repeaters",companion:"Companions",room_server:"Rooms",hubs:"Hubs",direct:"Direct"},Ri={repeater:"Repeater nodes (mesh relays)",companion:"Companion devices (clients)",room_server:"Room server nodes",hubs:"Hub nodes and their connections",direct:"Zero-hop (direct RF) neighbors"},vc=["repeater","companion","room_server"],Ii=["hubs","direct"],Qr="!p-2.5 sm:!p-1.5 !rounded-md min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 shrink-0 flex items-center justify-center",jn="!p-2.5 sm:!p-1.5 !rounded-none min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 shrink-0 flex items-center justify-center",bc=()=>typeof window>"u"?!1:window.innerWidth<640;function kc({mapRef:c,showNeighborLines:u,onToggleNeighborLines:p,hasNeighborPolylines:y,nodeFilters:x,onToggleFilter:C,onToggleAll:T,filterCounts:Q,showCoverage:D,onToggleCoverage:E,showMinCut:P=!1,onToggleMinCut:O,hasMinCutData:z=!1,show3DTerrain:V,onToggle3DTerrain:W,basemapMode:oA,onToggleBasemap:J,isFullscreen:eA,onToggleFullscreen:Z,showLinkQuality:uA=!1,onToggleLinkQuality:sA,hasTraceLinks:vA=!1}){const[iA,fA]=j.useState(()=>!bc()),RA=()=>{var NA,GA;(GA=(NA=c.current)==null?void 0:NA.getMap())==null||GA.zoomIn()},DA=()=>{var NA,GA;(GA=(NA=c.current)==null?void 0:NA.getMap())==null||GA.zoomOut()},EA=()=>{var GA;const NA=(GA=c.current)==null?void 0:GA.getMap();NA&&NA.easeTo({bearing:0,pitch:0,duration:300})},yA="w-4 h-4",bA=oA==="light"?"#525252":"var(--fg-secondary)",LA=x.length>=un.length;return g.jsx(g.Fragment,{children:g.jsxs("div",{className:"absolute top-3 right-3 z-[600] flex flex-col gap-2 sm:top-4 sm:right-4 max-w-[calc(100vw-1.5rem)] sm:max-w-none pr-[env(safe-area-inset-right)]",children:[g.jsxs("div",{className:"map-control-surface flex flex-nowrap items-center gap-0.5 sm:gap-1 p-1 overflow-hidden",children:[y&&g.jsx(Ot,{plain:!0,color:u?"warning":"muted",onClick:p,title:u?"Hide edge lines":"Show edge lines","aria-label":u?"Hide edge lines":"Show edge lines","aria-pressed":u,className:Qr,"data-tint":u?"warning":void 0,children:g.jsx(xa,{className:yA})}),g.jsx(Ot,{plain:!0,color:"muted",onClick:()=>fA(NA=>!NA),title:iA?"Hide node filters":"Show node filters","aria-label":iA?"Collapse node filters":"Expand node filters","aria-expanded":iA,className:Qr,children:g.jsx(au,{className:yA})}),g.jsx(R0,{initial:!1,children:iA&&g.jsxs(s0.div,{className:"flex items-center gap-0.5 flex-nowrap overflow-x-auto scrollbar-none max-w-[50vw] sm:max-w-none sm:overflow-visible",role:"group","aria-label":"Node type filters",initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.2,ease:[.4,0,.2,1]},children:[g.jsx(us,{color:LA?"green":"zinc",customColor:LA?void 0:bA,onClick:T,title:"Show all nodes","aria-pressed":LA,"aria-label":"Show all node types",className:"shrink-0",children:"All"}),vc.map(NA=>{const GA=Q[NA];if(GA===0)return null;const kA=!LA&&x.includes(NA);return g.jsx(us,{color:kA?ji[NA]:"zinc",customColor:kA?void 0:bA,onClick:()=>C(NA),title:Ri[NA],"aria-pressed":kA,"aria-label":`${Tn[NA]} (${GA})`,className:"shrink-0",children:Tn[NA]},NA)}),Ii.some(NA=>Q[NA]>0)&&g.jsx("span",{className:"mx-0.5 h-3 w-px bg-[var(--map-ui-border,var(--edge-subtle))] hidden sm:block shrink-0","aria-hidden":"true"}),Ii.map(NA=>{const GA=Q[NA];if(GA===0)return null;const kA=!LA&&x.includes(NA);return g.jsx(us,{color:kA?ji[NA]:"zinc",customColor:kA?void 0:bA,onClick:()=>C(NA),title:Ri[NA],"aria-pressed":kA,"aria-label":`${Tn[NA]} (${GA})`,className:"shrink-0",children:Tn[NA]},NA)})]})}),z&&O&&g.jsx(Ot,{plain:!0,color:P?"primary":"muted",onClick:O,title:P?"Hide community partition":"Show community partition","aria-label":P?"Hide community partition":"Show community partition","aria-pressed":P,className:Qr,"data-tint":P?"primary":void 0,children:g.jsx(Ss,{className:yA})}),g.jsx(Ot,{plain:!0,color:oA==="light"?"primary":"muted",onClick:J,title:oA==="light"?"Switch to dark map":"Switch to light map","aria-label":oA==="light"?"Switch to dark map":"Switch to light map","aria-pressed":oA==="light",className:Qr,"data-tint":oA==="light"?"primary":void 0,children:oA==="light"?g.jsx(zs,{className:yA}):g.jsx(Hs,{className:yA})}),g.jsx(Ot,{plain:!0,color:V?"success":"muted",onClick:W,title:V?"Disable 3D terrain":"Enable 3D terrain","aria-label":V?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":V,className:Qr,"data-tint":V?"success":void 0,children:g.jsx(Tu,{className:yA})}),g.jsx(Ot,{plain:!0,color:"muted",onClick:Z,title:eA?"Exit fullscreen":"Fullscreen","aria-label":eA?"Exit fullscreen":"Enter fullscreen","aria-pressed":eA,className:Qr,children:eA?g.jsx(qa,{className:yA}):g.jsx(Ja,{className:yA})})]}),g.jsxs("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:[g.jsx(Ot,{plain:!0,color:"muted",onClick:RA,title:"Zoom in","aria-label":"Zoom in",className:jn,children:g.jsx(uu,{className:yA})}),g.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),g.jsx(Ot,{plain:!0,color:"muted",onClick:DA,title:"Zoom out","aria-label":"Zoom out",className:jn,children:g.jsx(Co,{className:yA})}),g.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),g.jsx(Ot,{plain:!0,color:"muted",onClick:EA,title:"Reset bearing to north","aria-label":"Reset bearing to north",className:jn,children:g.jsx(cu,{className:yA})})]}),vA&&sA&&g.jsx("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:g.jsx(Ot,{plain:!0,color:uA?"success":"muted",onClick:sA,title:uA?"Hide link quality overlay":"Show link quality overlay","aria-label":uA?"Hide link quality overlay":"Show link quality overlay","aria-pressed":uA,className:jn,"data-tint":uA?"success":void 0,children:g.jsx(Vo,{className:yA})})})]})})}const Cc="#4ADE80",Ec="#16A34A",Sc="rgba(10, 26, 10, 1)",Mc="rgba(220, 252, 231, 1)",ms={text:yr.textSecondary,activeText:Ec,activeBg:Mc},Bc={activeBg:Sc},fr="DeepAnalysis",Dc=700,Li="abcdefghijklmnopqrstuvwxyz0123456789";function _c(){return Li[Math.floor(Math.random()*Li.length)]}function Tc({isActive:c,hasAnalyzed:u,isLoading:p,onClick:y,basemapMode:x="dark"}){const C=x==="light",T=C?ms.text:void 0,Q=C?ms.activeText:Cc,[D,E]=j.useState(!1),[P,O]=j.useState(fr),z=j.useRef(!1),V=j.useRef(null),[W]=j.useState(()=>{var Z;return typeof window<"u"&&(((Z=window.matchMedia)==null?void 0:Z.call(window,"(hover: hover)").matches)??!1)}),oA=D&&!c&&!p&&W;j.useEffect(()=>{if(D&&!c&&!p&&!z.current){z.current=!0;const Z=performance.now(),uA=sA=>{const vA=sA-Z,iA=Math.min(vA/Dc,1),fA=Math.floor(iA*fr.length);let RA="";for(let DA=0;DA{V.current&&cancelAnimationFrame(V.current)}},[D,c,p]);const J=p?"Analyzing...":P,eA=p?"Analyzing packet history":u?c?"Hide topology edges":"Show topology edges":"Load full packet history and build topology";return g.jsxs("button",{onClick:y,onMouseEnter:()=>W&&E(!0),onMouseLeave:()=>W&&E(!1),onPointerEnter:()=>W&&E(!0),onPointerLeave:()=>W&&E(!1),disabled:p,className:`map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base ${p?"cursor-wait":""}`,style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:C?ms.activeBg:Bc.activeBg}},title:eA,"aria-label":eA,"aria-pressed":c,children:[p?g.jsx(Yn,{className:"w-3.5 h-3.5 shrink-0 animate-spin",style:{color:Q}}):g.jsx(Cs,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${c?"":"text-fg-secondary"}`,style:{...c&&{color:Q},...oA&&{color:Q},...!c&&!oA&&T&&{color:T}}}),g.jsx("span",{className:`${c?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:c||oA?700:500,letterSpacing:"-0.01em",lineHeight:1,...c&&{color:Q},...oA&&{color:Q},...!c&&!oA&&T&&{color:T}},children:J})]})}const jc=e0.teal,Rc="#0D7377",Ic="rgba(10, 36, 32, 1)",Lc="rgba(204, 251, 241, 1)",gs={text:yr.textSecondary,activeTeal:Rc,activeBg:Lc},Nc={activeBg:Ic},Ni="LiveTrace",Fc=400,Fi=100;function Pc({isActive:c,onClick:u,basemapMode:p="dark"}){const y=p==="light",x=y?gs.text:void 0,C=y?gs.activeTeal:jc,[T,Q]=j.useState(!1),[D,E]=j.useState(0),P=j.useRef(!1),O=j.useRef(null),[z,V]=j.useState(0),W=j.useRef(!1),[oA]=j.useState(()=>{var uA;return typeof window<"u"&&(((uA=window.matchMedia)==null?void 0:uA.call(window,"(hover: hover)").matches)??!1)}),J=T&&!c&&oA;j.useEffect(()=>{J&&!W.current&&(W.current=!0,V(1),setTimeout(()=>V(2),Fi),setTimeout(()=>V(3),Fi*2)),T||(W.current=!1,V(0))},[J,T]),j.useEffect(()=>{if(T&&!c&&!P.current){P.current=!0;const uA=performance.now(),sA=vA=>{const iA=vA-uA,fA=Math.min(iA/Fc,1);E(fA),fA<1&&(O.current=requestAnimationFrame(sA))};O.current=requestAnimationFrame(sA)}return T||(O.current&&(cancelAnimationFrame(O.current),O.current=null),P.current=!1,E(0)),()=>{O.current&&cancelAnimationFrame(O.current)}},[T,c]);const eA=uA=>{if(c)return C;if(!J)return x;const sA=Ni.length,vA=D*(sA+2);return uA>=vA-2&&uAoA&&Q(!0),onMouseLeave:()=>oA&&Q(!1),onPointerEnter:()=>oA&&Q(!0),onPointerLeave:()=>oA&&Q(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:y?gs.activeBg:Nc.activeBg}},title:c?"Disable live packet tracing (reduces CPU usage)":"Enable live packet tracing","aria-label":Z,"aria-pressed":c,children:[g.jsx(du,{className:`w-3.5 h-3.5 shrink-0 ${c?"":"text-fg-secondary"}`,fill:z===1?"#FFFFFF":z===3?C:"none",stroke:z===1||z===2?"#FFFFFF":c||J?C:x||"currentColor",style:{transition:"fill 0.05s, stroke 0.05s"}}),g.jsx("span",{className:`${c?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:c||J?700:500,letterSpacing:"-0.01em",lineHeight:1},children:Ni.split("").map((uA,sA)=>g.jsx("span",{style:{color:eA(sA)||void 0},children:uA},sA))})]})}const Pi=.2,Qc="rgba(26, 20, 8, 1)",Oc="rgba(254, 243, 199, 1)",Rn={text:yr.textSecondary,activeBg:Oc,disabledText:yr.disabledText},zc={activeBg:Qc},ps=.01,ys=1,Qi="#fe8019",Hc="'Wardrive', serif",_s=1.45,Gc=_s*1.1,Uc=80;function Vc({isActive:c,onClick:u,brightness:p=.7,onBrightnessChange:y,basemapMode:x="dark"}){const C=x==="light",T=C?Rn.text:void 0,[Q,D]=j.useState(!1),[E,P]=j.useState(!1),[O]=j.useState(()=>{var uA;return typeof window<"u"&&(((uA=window.matchMedia)==null?void 0:uA.call(window,"(hover: hover)").matches)??!1)});j.useEffect(()=>{if(!Q||c)return;const uA=requestAnimationFrame(()=>P(!0)),sA=setTimeout(()=>P(!1),Uc);return()=>{cancelAnimationFrame(uA),clearTimeout(sA)}},[Q,c]);const z=Math.max(ps,Math.min(ys,p)),V=uA=>{uA.stopPropagation();const sA=Math.min(ys,z+Pi);y==null||y(sA)},W=uA=>{uA.stopPropagation();const sA=Math.max(ps,z-Pi);y==null||y(sA)},oA=zps+.001,eA=Q&&!c&&O,Z=c?"Configure wardriving coverage":"Show wardriving coverage";return g.jsxs("button",{onClick:u,onMouseEnter:()=>O&&D(!0),onMouseLeave:()=>O&&D(!1),onPointerEnter:()=>O&&D(!0),onPointerLeave:()=>O&&D(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:C?Rn.activeBg:zc.activeBg}},title:Z,"aria-label":Z,"aria-pressed":c,children:[g.jsx(Nu,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${c?"text-sys-amber":"text-fg-secondary"}`,style:eA?{color:Qi}:!c&&T?{color:T}:void 0}),g.jsx("span",{className:`${c?"text-sys-amber":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:c||eA?Hc:"ui-monospace, SFMono-Regular, monospace",fontSize:c||eA?"0.75rem":"0.6875rem",fontWeight:500,letterSpacing:"-0.01em",lineHeight:1,transition:"none",transform:c?`scale(${_s})`:eA?`scale(${E?Gc:_s})`:void 0,transformOrigin:"left center",...eA?{color:Qi}:!c&&T?{color:T}:{}},children:"Wardrive"}),c&&y&&g.jsxs("div",{className:"ml-auto flex items-center gap-0.5",children:[g.jsx("button",{onClick:W,disabled:!J,className:`p-1 sm:p-0.5 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center rounded transition-colors ${J?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:J?void 0:{color:C?Rn.disabledText:"rgba(251, 191, 36, 0.3)"},title:`Decrease opacity (${Math.round(z*100)}%)`,"aria-label":`Decrease opacity, currently ${Math.round(z*100)}%`,children:g.jsx(zs,{className:"w-3.5 h-3.5"})}),g.jsx("button",{onClick:V,disabled:!oA,className:`p-1 sm:p-0.5 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center rounded transition-colors ${oA?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:oA?void 0:{color:C?Rn.disabledText:"rgba(251, 191, 36, 0.3)"},title:`Increase opacity (${Math.round(z*100)}%)`,"aria-label":`Increase opacity, currently ${Math.round(z*100)}%`,children:g.jsx(Hs,{className:"w-3.5 h-3.5"})})]})]})}const Wc="0123456789bcdefghjkmnpqrstuvwxyz";function Yc(c){let u=!0,p=-90,y=90,x=-180,C=180;for(const T of c.toLowerCase()){const Q=Wc.indexOf(T);if(Q!==-1)for(let D=4;D>=0;D--){const E=Q>>D&1;if(u){const P=(x+C)/2;E?x=P:C=P}else{const P=(p+y)/2;E?p=P:y=P}u=!u}}return{lat:(p+y)/2,lon:(x+C)/2}}function Kc(c){return Math.exp(-c*Math.LN2/7)}const Ts="pymc-wardriving-url",$o="pymc-wardriving-enabled",qo="pymc-wardriving-brightness",Oi=.7;function Zc(){return typeof localStorage>"u"?"":localStorage.getItem(Ts)||""}function zi(c){typeof localStorage>"u"||(c?localStorage.setItem(Ts,c):localStorage.removeItem(Ts))}function $c(){return typeof localStorage>"u"?!1:localStorage.getItem($o)==="true"}function In(c){typeof localStorage>"u"||localStorage.setItem($o,String(c))}function qc(){if(typeof localStorage>"u")return Oi;const c=localStorage.getItem(qo);if(c){const u=parseFloat(c);if(!isNaN(u)&&u>=.01&&u<=1)return u}return Oi}function Jc(c){if(typeof localStorage>"u")return;const u=Math.max(.01,Math.min(1,c));localStorage.setItem(qo,String(u))}const Xc=8e3;async function Af(c,u={},p=Xc){const y=new AbortController,x=setTimeout(()=>y.abort(),p);try{return await fetch(c,{...u,signal:y.signal})}catch(C){throw C instanceof Error&&C.name==="AbortError"?new Error(`Connection timed out after ${p/1e3}s`):C}finally{clearTimeout(x)}}async function ef(c){const p=`${c.replace(/\/+$/,"").replace(/\/get-nodes$/,"").replace(/\/get-samples$/,"")}/get-samples`,y=await Af(p,{headers:{Accept:"application/json"}});if(!y.ok)throw new Error(`Failed to fetch precise samples: ${y.status}`);return y.json()}function tf(c,u=null){if(c!==null){const y=(Math.max(-12,Math.min(12,c))+12)/24;if(u!==null){const C=(Math.max(-120,Math.min(-50,u))+120)/70;return y*.8+C*.2}return y}return u!==null?(Math.max(-120,Math.min(-50,u))+120)/70:.5}function rf(c){var p;const u=[];for(const y of c.keys){if(!y.observed)continue;const{lat:x,lon:C}=Yc(y.hash),T=parseInt(y.time,10),Q=isNaN(T)?30:(Date.now()-T)/(1e3*60*60*24),D=Kc(Q),P=tf(y.snr,y.rssi)*(.3+D*.7);u.push({lat:x,lon:C,successRate:y.observed?1:0,weight:P,totalSamples:1,ageDays:Q,geohash:y.hash,repeaters:((p=y.path)==null?void 0:p.map(O=>O.toLowerCase()))||[]})}return u}const cn=Eo((c,u)=>({status:"idle",isVisible:$c(),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:Zc(),brightness:qc(),isModalOpen:!1,openModal:()=>c({isModalOpen:!0}),closeModal:()=>c({isModalOpen:!1}),setUrl:p=>c({url:p}),setBrightness:p=>{const y=Math.max(.01,Math.min(1,p));Jc(y),c({brightness:y})},toggleVisibility:()=>{const p=!u().isVisible;In(p),c({isVisible:p})},setVisible:p=>{In(p),c({isVisible:p})},loadCoverage:async p=>{if(!p.trim())return c({error:"Please enter a URL",status:"error"}),!1;try{new URL(p.trim())}catch{return c({error:"Invalid URL format",status:"error"}),!1}c({error:null,status:"connecting"});try{c({status:"loading"});const y=await ef(p.trim());if(!y||typeof y!="object")throw new Error("Invalid response from server");if(!Array.isArray(y.keys))throw new Error("No sample data found in response");c({status:"processing"});const x=rf(y);if(x.length===0)throw new Error("No valid coverage points found");return c({coveragePoints:x,repeaters:[],stats:{coverageCount:x.length,repeaterCount:0,lastUpdated:new Date},status:"success",isVisible:!0,url:p.trim()}),zi(p.trim()),In(!0),!0}catch(y){const x=y instanceof Error?y.message:"Failed to load coverage data";let C=x;return x.includes("timed out")?C="Connection timed out. Server may be unreachable or slow.":x.includes("Failed to fetch")||x.includes("NetworkError")?C="Could not connect to server. Check the URL and try again.":x.includes("CORS")?C="Server does not allow cross-origin requests.":x.includes("404")?C="Coverage endpoint not found. Check the URL.":(x.includes("ERR_NAME_NOT_RESOLVED")||x.includes("DNS"))&&(C="Server not found. Check the URL for typos."),c({error:C,status:"error"}),!1}},clearCoverage:()=>{c({coveragePoints:[],repeaters:[],stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},status:"idle",error:null,isVisible:!1,url:""}),zi(""),In(!1)}})),nf={bg:"#F8F8F8",bgSubtle:"#F0F0F0",bgElevated:"#FFFFFF",bgInput:"#FFFFFF",border:"rgba(0, 0, 0, 0.12)",borderStrong:"rgba(0, 0, 0, 0.20)",borderFocus:"#3B82F6",text:"#1A1A1A",textSecondary:"#4A4A4A",textMuted:"#737373",success:"#059669",successBg:"#ECFDF5",successBorder:"#A7F3D0",error:"#DC2626",errorBg:"#FEF2F2",errorBorder:"#FECACA",info:"#2563EB",infoBg:"#EFF6FF",infoBorder:"#BFDBFE",warning:"#D97706",warningBg:"#FFFBEB",warningBorder:"#FDE68A",primary:"#F59E0B",hoverBg:"rgba(0, 0, 0, 0.04)",sliderTrack:"#E5E7EB",sliderThumb:"#F59E0B"},Jo={bg:"var(--surface)",bgSubtle:"var(--subtle)",bgElevated:"var(--elevated)",bgInput:"var(--subtle)",border:"var(--edge-subtle)",borderStrong:"var(--edge-strong)",borderFocus:"var(--sys-blue)",text:"var(--fg-primary)",textSecondary:"var(--fg-secondary)",textMuted:"var(--fg-muted)",success:"var(--sys-green)",successBg:"rgba(74, 222, 128, 0.1)",successBorder:"rgba(74, 222, 128, 0.3)",error:"var(--sys-red)",errorBg:"rgba(239, 68, 68, 0.1)",errorBorder:"rgba(239, 68, 68, 0.3)",info:"var(--sys-indigo)",infoBg:"rgba(249, 210, 111, 0.1)",infoBorder:"rgba(249, 210, 111, 0.3)",warning:"var(--sys-indigo)",warningBg:"rgba(249, 210, 111, 0.1)",warningBorder:"rgba(249, 210, 111, 0.3)",primary:"var(--sys-indigo)",hoverBg:"var(--hover-tint)",sliderTrack:"var(--elevated)",sliderThumb:"var(--sys-indigo)"},Xo=j.createContext({theme:Jo,isLight:!1});function xr(){return j.useContext(Xo)}function sf({status:c,hasData:u}){const{theme:p,isLight:y}=xr(),x=j.useMemo(()=>c==="connecting"||c==="loading"||c==="processing"?{icon:g.jsx(Yn,{className:"w-3.5 h-3.5 animate-spin"}),label:c==="connecting"?"Connecting...":c==="loading"?"Loading...":"Processing...",color:p.warning,bg:p.warningBg}:c==="error"?{icon:g.jsx(hu,{className:"w-3.5 h-3.5"}),label:"Disconnected",color:p.error,bg:p.errorBg}:u?{icon:g.jsx(mu,{className:"w-3.5 h-3.5"}),label:"Connected",color:p.success,bg:p.successBg}:{icon:g.jsx(So,{className:"w-3.5 h-3.5"}),label:"Ready",color:p.textMuted,bg:y?"rgba(0,0,0,0.04)":"rgba(255,255,255,0.04)"},[c,u,p,y]);return g.jsxs(s0.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},className:"flex items-center gap-1.5 px-2 py-1 rounded-full text-xs font-medium",style:{backgroundColor:x.bg,color:x.color},children:[x.icon,g.jsx("span",{children:x.label})]},x.label)}function of({status:c}){const{theme:u}=xr(),p=j.useMemo(()=>{switch(c){case"connecting":return 25;case"loading":return 60;case"processing":return 90;default:return 0}},[c]);return p===0?null:g.jsx(s0.div,{initial:{opacity:0,scaleY:0},animate:{opacity:1,scaleY:1},exit:{opacity:0,scaleY:0},className:"h-1 rounded-full overflow-hidden origin-top",style:{backgroundColor:u.sliderTrack},children:g.jsx(s0.div,{className:"h-full rounded-full",style:{backgroundColor:u.primary},initial:{width:0},animate:{width:`${p}%`},transition:{duration:.4,ease:"easeOut"}})})}function Hi({variant:c,title:u,description:p,onDismiss:y}){const{theme:x}=xr(),C=j.useMemo(()=>{switch(c){case"success":return{icon:g.jsx(hn,{className:"w-4 h-4"}),color:x.success,bg:x.successBg,border:x.successBorder};case"error":return{icon:g.jsx(Mu,{className:"w-4 h-4"}),color:x.error,bg:x.errorBg,border:x.errorBorder};case"info":return{icon:g.jsx(Du,{className:"w-4 h-4"}),color:x.info,bg:x.infoBg,border:x.infoBorder}}},[c,x]);return g.jsxs(s0.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:Ur.snappy,className:"flex items-start gap-3 p-3 rounded-lg border",style:{backgroundColor:C.bg,borderColor:C.border,color:C.color},children:[g.jsx("div",{className:"shrink-0 mt-0.5",children:C.icon}),g.jsxs("div",{className:"flex-1 min-w-0",children:[g.jsx("p",{className:"text-sm font-medium",children:u}),p&&g.jsx("p",{className:"text-xs mt-0.5 opacity-80",children:p})]}),y&&g.jsx("button",{onClick:y,className:"shrink-0 p-1 rounded hover:bg-black/10 transition-colors","aria-label":"Dismiss",children:g.jsx(mn,{className:"w-3.5 h-3.5"})})]})}function lf({value:c,onChange:u,onSubmit:p,disabled:y}){const{theme:x,isLight:C}=xr(),[T,Q]=j.useState(!1),D=E=>{E.key==="Enter"&&!E.shiftKey&&!y&&(E.preventDefault(),p())};return g.jsxs("div",{className:"space-y-1.5",children:[g.jsx("label",{className:"block text-sm font-medium",style:{color:x.textSecondary},children:"Coverage Server URL"}),g.jsxs("div",{className:"relative",children:[g.jsx("input",{type:"url",value:c,onChange:E=>u(E.target.value),onKeyDown:D,onFocus:()=>Q(!0),onBlur:()=>Q(!1),placeholder:"https://coverage.wcmesh.com",disabled:y,className:n0("w-full pl-3 pr-10 py-2.5 rounded-lg border text-sm transition-all duration-150","focus:outline-none",y&&"opacity-50 cursor-not-allowed"),style:{backgroundColor:x.bgInput,borderColor:T?x.borderFocus:x.border,color:x.text,boxShadow:T?`0 0 0 3px ${C?"rgba(59, 130, 246, 0.15)":"rgba(139, 92, 246, 0.15)"}`:"none"}}),c&&!y&&g.jsx("button",{onClick:()=>u(""),className:"absolute right-2.5 top-1/2 -translate-y-1/2 p-1 rounded transition-colors",style:{color:x.textMuted},onMouseEnter:E=>E.currentTarget.style.color=x.text,onMouseLeave:E=>E.currentTarget.style.color=x.textMuted,"aria-label":"Clear URL",children:g.jsx(mn,{className:"w-4 h-4"})})]}),g.jsx("p",{className:"text-xs",style:{color:x.textMuted},children:"Press Enter to connect, or use the Connect button below"})]})}function af({value:c,onChange:u}){const{theme:p,isLight:y}=xr(),x=Math.round(c*100);return g.jsx(s0.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:Ur.gentle,className:"overflow-hidden",children:g.jsx("div",{className:"p-3 rounded-lg border",style:{backgroundColor:p.bgSubtle,borderColor:p.border},children:g.jsxs("div",{className:"flex items-center gap-3",children:[g.jsxs("div",{className:"relative w-4 h-4",children:[g.jsx(zs,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:p.textMuted,opacity:c<.5?1:0}}),g.jsx(Hs,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:p.primary,opacity:c>=.5?1:0}})]}),g.jsxs("div",{className:"flex-1",children:[g.jsxs("div",{className:"flex items-center justify-between mb-1.5",children:[g.jsx("span",{className:"text-xs font-medium",style:{color:p.textSecondary},children:"Layer Opacity"}),g.jsxs("span",{className:"text-xs font-mono tabular-nums px-1.5 py-0.5 rounded",style:{color:p.text,backgroundColor:y?"rgba(0,0,0,0.06)":"rgba(255,255,255,0.06)"},children:[x,"%"]})]}),g.jsx("input",{type:"range",min:5,max:100,value:x,onChange:C=>u(Number(C.target.value)/100),className:n0("w-full h-2 rounded-full appearance-none cursor-pointer","[&::-webkit-slider-thumb]:appearance-none","[&::-webkit-slider-thumb]:w-4","[&::-webkit-slider-thumb]:h-4","[&::-webkit-slider-thumb]:rounded-full","[&::-webkit-slider-thumb]:cursor-pointer","[&::-webkit-slider-thumb]:transition-transform","[&::-webkit-slider-thumb]:hover:scale-110","[&::-webkit-slider-thumb]:shadow-lg","[&::-moz-range-thumb]:appearance-none","[&::-moz-range-thumb]:w-4","[&::-moz-range-thumb]:h-4","[&::-moz-range-thumb]:rounded-full","[&::-moz-range-thumb]:border-0","[&::-moz-range-thumb]:cursor-pointer"),style:{background:`linear-gradient(to right, ${p.primary} ${x}%, ${p.sliderTrack} ${x}%)`,"--thumb-color":p.sliderThumb}}),g.jsx("style",{children:` + */const Fu=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],Pu=X0("wrench",Fu);function Qu(c,u){return u.filter(y=>y.nodes.includes(c)).sort((y,x)=>x.avgCertainCount-y.avgCertainCount)}function Ou(c,u,p){const y=Qu(c,u),x=new Set,C=[];for(const T of y)for(const Q of T.edgeKeys)if(!x.has(Q)){x.add(Q);const D=p.get(Q);C.push({key:Q,certainCount:(D==null?void 0:D.certainCount)??0})}return C.sort((T,Q)=>Q.certainCount-T.certainCount),{loops:y,highlightedEdgeKeys:x,sortedEdges:C}}function zu(c){const u=new Map;for(const p of c)for(const y of p.edgeKeys){const x=u.get(y)??[];x.push(p),u.set(y,x)}return u}const Mn={MAX_THICKNESS_AT:300,MIN_VALIDATIONS:5},Hu=6,Ei=1;function Ms(c,u){const p=Math.max(Mn.MIN_VALIDATIONS,Math.min(c,Mn.MAX_THICKNESS_AT)),y=Math.log(Mn.MIN_VALIDATIONS),x=Math.log(Mn.MAX_THICKNESS_AT),T=(Math.log(p)-y)/(x-y);return Ei+(Hu-Ei)*T}const Gu=Uu(Vu);function Uu(c){return function(u,p,y=p){if(!((p=+p)>=0))throw new RangeError("invalid rx");if(!((y=+y)>=0))throw new RangeError("invalid ry");let{data:x,width:C,height:T}=u;if(!((C=Math.floor(C))>=0))throw new RangeError("invalid width");if(!((T=Math.floor(T!==void 0?T:x.length/C))>=0))throw new RangeError("invalid height");if(!C||!T||!p&&!y)return u;const Q=p&&c(p),D=y&&c(y),E=x.slice();return Q&&D?(Nr(Q,E,x,C,T),Nr(Q,x,E,C,T),Nr(Q,E,x,C,T),Fr(D,x,E,C,T),Fr(D,E,x,C,T),Fr(D,x,E,C,T)):Q?(Nr(Q,x,E,C,T),Nr(Q,E,x,C,T),Nr(Q,x,E,C,T)):D&&(Fr(D,x,E,C,T),Fr(D,E,x,C,T),Fr(D,x,E,C,T)),u}}function Nr(c,u,p,y,x){for(let C=0,T=y*x;C{if(!((Q-=D)>=T))return;let E=u*C[T];const P=D*u,O=P+D;for(let z=T,V=T+P;z{if(!((C-=T)>=x))return;let Q=c*y[x];const D=T*c;for(let E=x,P=x+D;E=y&&++p;return p}function Ku(c,u,p){let y;for(;;){const x=Ka(c,u,p);if(x===y||x===0||!isFinite(x))return[c,u];x>0?(c=Math.floor(c/x)*x,u=Math.ceil(u/x)*x):x<0&&(c=Math.ceil(c*x)/x,u=Math.floor(u*x)/x),y=x}}function $u(c){return Math.max(1,Math.ceil(Math.log(Yu(c))/Math.LN2)+1)}var Zu=Array.prototype,Wo=Zu.slice;function qu(c,u){return c-u}function Ju(c){for(var u=0,p=c.length,y=c[p-1][1]*c[0][0]-c[p-1][0]*c[0][1];++u()=>c;function Xu(c,u){for(var p=-1,y=u.length,x;++py!=V>y&&p<(z-E)*(y-P)/(V-P)+E&&(x=-x)}return x}function ec(c,u,p){var y;return tc(c,u,p)&&rc(c[y=+(c[0]===u[0])],p[y],u[y])}function tc(c,u,p){return(u[0]-c[0])*(p[1]-c[1])===(p[0]-c[0])*(u[1]-c[1])}function rc(c,u,p){return c<=u&&u<=p||p<=u&&u<=c}function nc(){}var T0=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Si(){var c=1,u=1,p=$u,y=D;function x(E){var P=p(E);if(Array.isArray(P))P=P.slice().sort(qu);else{const O=$a(E,sc);for(P=Po(...Ku(O[0],O[1],P),P);P[P.length-1]>=O[1];)P.pop();for(;P[1]C(E,O))}function C(E,P){const O=P==null?NaN:+P;if(isNaN(O))throw new Error(`invalid value: ${P}`);var z=[],V=[];return T(E,O,function(W){y(W,E,O),Ju(W)>0?z.push([W]):V.push(W)}),V.forEach(function(W){for(var oA=0,J=z.length,eA;oA=P,T0[$<<2].forEach(sA);++W0&&V0&&W=0&&O>=0))throw new Error("invalid size");return c=P,u=O,x},x.thresholds=function(E){return arguments.length?(p=typeof E=="function"?E:Array.isArray(E)?q0(Wo.call(E)):q0(E),x):p},x.smooth=function(E){return arguments.length?(y=E?D:nc,x):y===D},x}function sc(c){return isFinite(c)?c:NaN}function cr(c,u){return c==null?!1:+c>=u}function fs(c){return c==null||isNaN(c=+c)?-1/0:c}function Mi(c,u,p,y){const x=y-u,C=p-u,T=isFinite(x)||isFinite(C)?x/C:Math.sign(x)/Math.sign(C);return isNaN(T)?c:c+T-.5}function ic(c){return c[0]}function oc(c){return c[1]}function lc(){return 1}function ac(){var c=ic,u=oc,p=lc,y=960,x=500,C=20,T=2,Q=C*3,D=y+Q*2>>T,E=x+Q*2>>T,P=q0(20);function O($){var uA=new Float32Array(D*E),sA=Math.pow(2,-T),vA=-1;for(const LA of $){var iA=(c(LA,++vA,$)+Q)*sA,fA=(u(LA,vA,$)+Q)*sA,RA=+p(LA,vA,$);if(RA&&iA>=0&&iA=0&&fAiA*vA))(uA).map((iA,fA)=>(iA.value=+sA[fA],V(iA)))}z.contours=function($){var uA=O($),sA=Si().size([D,E]),vA=Math.pow(2,2*T),iA=fA=>{fA=+fA;var RA=V(sA.contour(uA,fA*vA));return RA.value=fA,RA};return Object.defineProperty(iA,"max",{get:()=>bi(uA)/vA}),iA};function V($){return $.coordinates.forEach(W),$}function W($){$.forEach(oA)}function oA($){$.forEach(J)}function J($){$[0]=$[0]*Math.pow(2,T)-Q,$[1]=$[1]*Math.pow(2,T)-Q}function eA(){return Q=C*3,D=y+Q*2>>T,E=x+Q*2>>T,z}return z.x=function($){return arguments.length?(c=typeof $=="function"?$:q0(+$),z):c},z.y=function($){return arguments.length?(u=typeof $=="function"?$:q0(+$),z):u},z.weight=function($){return arguments.length?(p=typeof $=="function"?$:q0(+$),z):p},z.size=function($){if(!arguments.length)return[y,x];var uA=+$[0],sA=+$[1];if(!(uA>=0&&sA>=0))throw new Error("invalid size");return y=uA,x=sA,eA()},z.cellSize=function($){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return T=Math.floor(Math.log($)/Math.LN2),eA()},z.thresholds=function($){return arguments.length?(P=typeof $=="function"?$:Array.isArray($)?q0(Wo.call($)):q0($),z):P},z.bandwidth=function($){if(!arguments.length)return Math.sqrt(C*(C+1));if(!(($=+$)>=0))throw new Error("invalid bandwidth");return C=(Math.sqrt(4*$*$+1)-1)/2,eA()},z}function Bs(){const c=aa();return j.useMemo(()=>ua.getPackets(),[c])}function Bn({label:c,icon:u,status:p,detail:y}){return g.jsxs("div",{className:n0("flex items-center gap-3 py-3 px-4 radius-inset transition-base",p==="active"&&"bg-sys-blue/10",p==="complete"&&"bg-sys-blue/10 ring-2 ring-inset ring-sys-blue",p==="pending"&&"opacity-40"),children:[g.jsx("div",{className:n0("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0 transition-all duration-300",p==="active"&&"bg-sys-blue/20",p==="complete"&&"bg-sys-blue/20",p==="pending"&&"bg-subtle-fill"),children:p==="complete"?g.jsx(hn,{className:"w-4 h-4 text-sys-blue"}):p==="active"?g.jsx(Yn,{className:"w-4 h-4 animate-spin text-sys-blue"}):g.jsx("span",{className:"text-fg-muted",children:u})}),g.jsxs("div",{className:"flex-1 min-w-0",children:[g.jsx("div",{className:n0("text-sm font-medium transition-colors",p==="active"&&"text-sys-blue",p==="complete"&&"text-sys-blue",p==="pending"&&"text-fg-muted"),children:c}),y&&p!=="pending"&&g.jsx("div",{className:"text-xs text-fg-muted mt-0.5 truncate",children:y})]})]})}function uc({isOpen:c,onClose:u}){const{packetCacheState:p,triggerDeepAnalysis:y}=ca(),x=fa(),C=da(),T=p.packetCount,[Q,D]=j.useState("fetching");j.useEffect(()=>{c&&y()},[c,y]),j.useEffect(()=>{if(c){if(p.isTopologyLoading)D("fetching");else if(x)D("analyzing"),setTimeout(()=>D("building"),500),setTimeout(()=>D("discovering"),1e3);else if(C>0&&!p.isTopologyLoading){D("complete");const W=setTimeout(()=>{u()},1500);return()=>clearTimeout(W)}}},[c,p.isTopologyLoading,x,C,u]);const E=Q==="complete",P=p.loadProgress,O=j.useMemo(()=>{if(P&&P.target>0){const W=(P.loaded/1e3).toFixed(1),oA=(P.target/1e3).toFixed(1);return`Loading... ${W}k / ${oA}k packets (${P.percent}%)`}return T>0?`${T.toLocaleString()} packets loaded`:"Connecting to database..."},[P,T]),z=W=>{const oA=["fetching","analyzing","building","discovering","complete"],J=oA.indexOf(Q),eA=oA.indexOf(W);return eA{};return g.jsx(xo,{open:c,onClose:V,size:"sm",bottomSheet:!1,children:g.jsx(ha,{isLoading:!E,borderRadius:16,children:g.jsx(wo,{className:"p-6 radius-card overflow-hidden",children:E?g.jsxs("div",{className:"flex flex-col items-center py-6",children:[g.jsx(s0.div,{variants:Za,initial:"hidden",animate:"visible",className:"w-16 h-16 rounded-full flex items-center justify-center mb-4 bg-sys-blue/20",children:g.jsx(hn,{className:"w-8 h-8 text-sys-blue"})}),g.jsx("h3",{className:"type-micro text-sys-blue",children:"Ready!"}),g.jsx("button",{onClick:u,className:"mt-3 sm:hidden min-h-[44px] min-w-[44px] px-4 flex items-center justify-center text-[15px] font-medium text-sys-blue active:text-sys-blue/70 transition-base radius-inner active:bg-subtle-fill",children:"Done"})]}):g.jsxs(g.Fragment,{children:[g.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[g.jsx("div",{className:"w-10 h-10 radius-inset flex items-center justify-center bg-sys-blue/15",children:g.jsx(Cs,{className:"w-5 h-5 text-sys-blue"})}),g.jsxs("div",{children:[g.jsx("h3",{className:"type-micro",children:"Deep Analysis"}),g.jsx("p",{className:"text-xs text-fg-muted",children:"Building mesh topology"})]})]}),g.jsxs("div",{className:"space-y-2",children:[g.jsx(Bn,{label:"Fetching Packets",icon:g.jsx(Oo,{className:"w-4 h-4"}),status:z("fetching"),detail:O}),g.jsx(Bn,{label:"Analyzing Database",icon:g.jsx(su,{className:"w-4 h-4"}),status:z("analyzing"),detail:"Processing packet paths"}),g.jsx(Bn,{label:"Building Topology",icon:g.jsx(Cs,{className:"w-4 h-4"}),status:z("building"),detail:"Computing mesh edges"}),g.jsx(Bn,{label:"Discovering Nodes",icon:g.jsx(Qo,{className:"w-4 h-4"}),status:z("discovering"),detail:"Viterbi HMM ghost detection"})]}),g.jsx("p",{className:"text-xs text-fg-muted text-center mt-5",children:"This may take a few seconds..."})]})})})})}const cc=j.memo(uc),Yo=16,Ds=24,j0=Yo,fc=5,yr={textPrimary:I0[900],textSecondary:"#4A4A4A",textMuted:I0[500],border:"rgba(0, 0, 0, 0.12)",hoverBg:"rgba(0, 0, 0, 0.06)",disabledText:"rgba(0, 0, 0, 0.25)"},gr={nodeFill:e0.blue,nodeStroke:"rgba(255,255,255,0.9)",nodeColor:e0.indigo,localColor:e0.amber,hubColor:e0.purple,gatewayColor:e0.indigo,mobileColor:e0.orange,roomServerColor:e0.pink,neighborColor:e0.amber,edges:{rest:I0[700],restBright:I0[600],restDim:I0[800],hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:I0[400],hoverNeighbor:e0.amber,neighborRest:I0[500],neighborHover:e0.amber,highlight:"#FFD700"},edgeOpacity:.82};function Ws(){if(typeof window>"u")return gr;const c=Os(),u=vo();return{nodeFill:c.nodeFill,nodeStroke:c.nodeStroke,nodeColor:gr.nodeColor,localColor:c.localColor,hubColor:c.hubColor,gatewayColor:c.gatewayColor,mobileColor:c.mobileColor,roomServerColor:c.roomColor,neighborColor:c.neighborColor,edges:{rest:u.rest,restBright:u.restBright,restDim:u.restDim,hoverDirect:u.hoverDirect,hoverLoop:u.hoverLoop,hoverStandard:u.hoverStandard,hoverNeighbor:u.hoverNeighbor,neighborRest:gr.edges.neighborRest,neighborHover:gr.edges.neighborHover,highlight:u.highlight},edgeOpacity:gr.edgeOpacity}}const Dn=2e3,_n=750,dc="#00FF00",hc=500,Bi=500,Di=250,mc=150,Ko=200,gc=Ur.snappy,w0=yr,$o=j.createContext("dark"),Kn=()=>j.useContext($o);function Pr({color:c,ring:u}){const p=j0-2;return g.jsx("span",{className:"shrink-0 rounded-full","aria-hidden":"true",style:{width:p,height:p,backgroundColor:u?"transparent":c,border:u?`${fc-1}px solid ${c}`:void 0,boxSizing:"border-box"}})}function ds({color:c,pattern:u="solid"}){return g.jsx("svg",{className:"shrink-0","aria-hidden":"true",width:18,height:6,viewBox:"0 0 18 6",children:g.jsx("line",{x1:0,y1:3,x2:18,y2:3,stroke:c,strokeWidth:3,strokeLinecap:"round",strokeDasharray:u==="dashed"?"5,3":u==="dotted"?"2,3":void 0})})}function A0({indicator:c,label:u,tooltip:p}){const y=Kn()==="light";return g.jsxs("div",{className:"flex items-center gap-1.5",children:[c,g.jsx("span",{className:n0(!y&&"text-fg-secondary"),style:y?{color:w0.textSecondary}:void 0,children:u}),p&&g.jsx(bo,{content:p,delay:Ko,children:g.jsx("span",{className:n0("cursor-help text-[11px] opacity-75 hover:opacity-100 transition-opacity",!y&&"text-fg-muted"),style:y?{color:w0.textMuted}:void 0,children:"ⓘ"})})]})}function pc(c){return`legend-section-${c.toLowerCase().replace(/\s+/g,"-")}`}function hs({title:c,tooltip:u,isOpen:p,onToggle:y,showDivider:x,children:C}){const T=Kn()==="light",Q=pc(c);return g.jsxs("div",{className:x?"mt-2 pt-2 border-t":"",style:x?{borderColor:T?w0.border:"var(--map-ui-border)"}:void 0,children:[g.jsxs("button",{type:"button",onClick:y,"aria-expanded":p,"aria-controls":Q,className:n0("group w-full flex items-center justify-between py-1 min-h-[44px] sm:min-h-0 font-medium transition-colors",!T&&"text-fg-secondary hover:text-fg-primary"),style:T?{color:w0.textSecondary}:void 0,children:[g.jsxs("span",{className:"flex items-center gap-1",children:[c,g.jsx(bo,{content:u,delay:Ko,children:g.jsx("span",{className:n0("cursor-help text-[11px] opacity-75 group-hover:opacity-100 transition-opacity",!T&&"text-fg-muted"),style:T?{color:w0.textMuted}:void 0,children:"ⓘ"})})]}),g.jsx(s0.span,{animate:{rotate:p?0:-90},transition:{duration:.15},"aria-hidden":"true",children:g.jsx(ko,{className:"w-3 h-3",style:T?{color:w0.textMuted}:{color:"var(--fg-muted)"}})})]}),g.jsx(R0,{initial:!1,children:p&&g.jsx(s0.div,{id:Q,role:"region","aria-label":c,initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:gc,className:"overflow-hidden",children:g.jsx("div",{className:"flex flex-col gap-1 pt-1.5",children:C})})})]})}function _i({label:c,value:u,color:p}){const y=Kn()==="light";return g.jsxs("div",{className:n0("flex justify-between tabular-nums",!y&&"text-fg-muted"),style:y?{color:w0.textMuted}:void 0,children:[g.jsx("span",{children:c}),g.jsx("span",{style:p?{color:p}:y?{color:w0.textSecondary}:{color:"var(--fg-secondary)"},children:u})]})}function Ti({icon:c,color:u,title:p,subtitle:y}){const x=Kn()==="light";return g.jsx("div",{className:"mt-1.5 pt-1.5 border-t",style:{borderColor:x?w0.border:"var(--map-ui-border)"},children:g.jsxs("div",{className:"flex items-center gap-1.5",children:[g.jsx("span",{className:"shrink-0",style:{color:u},children:c}),g.jsxs("div",{className:"flex flex-col min-w-0",children:[g.jsx("span",{className:"font-medium truncate",style:{color:u},children:p}),g.jsx("span",{className:n0("text-[10px] leading-tight",!x&&"text-fg-muted"),style:x?{color:w0.textMuted}:void 0,children:y})]})]})})}function yc(c){return c.some(([,u])=>{var y;const p=(y=u.contact_type)==null?void 0:y.toLowerCase();return p==="room server"||p==="room_server"||p==="room"||p==="server"})}function xc(c){let u=0;for(const p of c.txDelayRecommendations.values())p.networkRole==="backbone"&&u++;return u}function wc({showTopology:c,validatedPolylineCount:u,filteredNeighborCount:p,hasLocalNode:y,meshTopology:x,zeroHopNeighbors:C,neighborsWithLocation:T,basemapMode:Q="dark"}){const D=ma(),E=ga(),P=pa(),O=E.filter(sA=>sA.isLikelyReal).length,z=xc(x),V=C.size>0,[W,oA]=j.useState(!0),[J,eA]=j.useState(!0),[$,uA]=j.useState(!0);return g.jsx($o.Provider,{value:Q,children:g.jsxs("div",{className:"map-control-surface p-2.5 text-xs",children:[g.jsxs(hs,{title:"Nodes",tooltip:"Node type shown by shape + color. Yellow = direct RF neighbor.",isOpen:W,onToggle:()=>oA(sA=>!sA),children:[g.jsx(A0,{indicator:g.jsx(Pr,{color:D.nodeFill}),label:"Node",tooltip:"Standard mesh node. Repeater, client, or companion device."}),g.jsx(A0,{indicator:g.jsx(Pr,{color:D.hubColor}),label:"Hub",tooltip:"Network hub (≥10% of last-hop traffic)."}),yc(T)&&g.jsx(A0,{indicator:g.jsx(ya,{className:"w-3 h-3 shrink-0",style:{color:D.roomColor},strokeWidth:2.5}),label:"Room",tooltip:"Room Server identity for client sync."}),g.jsx(A0,{indicator:g.jsx(iu,{className:"w-3 h-3 shrink-0",style:{color:D.localColor},strokeWidth:2.5}),label:"Local",tooltip:"Your repeater running pyMC_Repeater."}),V&&g.jsx(A0,{indicator:g.jsx(Pr,{color:D.neighborColor}),label:"Neighbor",tooltip:"Zero-hop direct RF contact."}),x.gatewayNodes.length>0&&g.jsx(A0,{indicator:g.jsx(Pr,{color:D.gatewayColor}),label:"Gateway",tooltip:"Significant forwarder (7-10% traffic)."}),z>0&&g.jsx(A0,{indicator:g.jsx(Pr,{color:D.hubColor}),label:"Backbone",tooltip:"Critical relay with high centrality."}),x.mobileNodes.length>0&&g.jsx(A0,{indicator:g.jsx(Pr,{color:D.mobileColor,ring:!0}),label:"Mobile",tooltip:"Volatile node that appears/disappears."}),O>0&&g.jsx(A0,{indicator:g.jsx(Qo,{className:"w-3 h-3 shrink-0",style:{color:D.ghostColor},strokeWidth:2.5}),label:`Ghost (${O})`,tooltip:"Unknown repeater from Viterbi analysis."})]}),V&&g.jsxs(hs,{title:"Link Quality",tooltip:"Neighbor edge colors based on bidirectional balance.",isOpen:J,onToggle:()=>eA(sA=>!sA),showDivider:!0,children:[g.jsx(A0,{indicator:g.jsx(ds,{color:Hn.YELLOW,pattern:"solid"}),label:"2-Way",tooltip:"33-67% balanced. Ideal bidirectional link."}),g.jsx(A0,{indicator:g.jsx(ds,{color:Hn.GREEN,pattern:"dashed"}),label:"Listener",tooltip:">67% listener. They hear us well."}),g.jsx(A0,{indicator:g.jsx(ds,{color:Hn.RED,pattern:"dotted"}),label:"Loud",tooltip:"<33% listener. They route more to us."})]}),c&&u>0&&g.jsxs(hs,{title:"Topology",tooltip:"Links with 5+ validations. Thickness = strength.",isOpen:$,onToggle:()=>uA(sA=>!sA),showDivider:!0,children:[g.jsx(_i,{label:"Nodes",value:p+(y?1:0)}),x.hubNodes.length>0&&g.jsx(_i,{label:"Hubs",value:x.hubNodes.length,color:gr.hubColor}),x.loops.length>0&&g.jsx(Ti,{icon:g.jsx(zo,{className:"w-3 h-3"}),color:gr.edges.hoverLoop,title:`${x.loops.length} ${x.loops.length===1?"Loop":"Loops"}`,subtitle:"Redundant paths"}),P.totalPaths>0&&g.jsx(Ti,{icon:g.jsx(Ho,{className:"w-3 h-3"}),color:D.ghostColor,title:`${P.totalPaths.toLocaleString()} Viterbi`,subtitle:"HMM decoded paths"})]})]})})}const ji={repeater:"blue",companion:"cyan",room_server:"pink",hubs:"indigo",direct:"green"},Tn={repeater:"Repeaters",companion:"Companions",room_server:"Rooms",hubs:"Hubs",direct:"Direct"},Ri={repeater:"Repeater nodes (mesh relays)",companion:"Companion devices (clients)",room_server:"Room server nodes",hubs:"Hub nodes and their connections",direct:"Zero-hop (direct RF) neighbors"},vc=["repeater","companion","room_server"],Ii=["hubs","direct"],Qr="!p-2.5 sm:!p-1.5 !rounded-md min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 shrink-0 flex items-center justify-center",jn="!p-2.5 sm:!p-1.5 !rounded-none min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 shrink-0 flex items-center justify-center",bc=()=>typeof window>"u"?!1:window.innerWidth<640;function kc({mapRef:c,showNeighborLines:u,onToggleNeighborLines:p,hasNeighborPolylines:y,nodeFilters:x,onToggleFilter:C,onToggleAll:T,filterCounts:Q,showCoverage:D,onToggleCoverage:E,showMinCut:P=!1,onToggleMinCut:O,hasMinCutData:z=!1,show3DTerrain:V,onToggle3DTerrain:W,basemapMode:oA,onToggleBasemap:J,isFullscreen:eA,onToggleFullscreen:$,showLinkQuality:uA=!1,onToggleLinkQuality:sA,hasTraceLinks:vA=!1}){const[iA,fA]=j.useState(()=>!bc()),RA=()=>{var NA,GA;(GA=(NA=c.current)==null?void 0:NA.getMap())==null||GA.zoomIn()},DA=()=>{var NA,GA;(GA=(NA=c.current)==null?void 0:NA.getMap())==null||GA.zoomOut()},EA=()=>{var GA;const NA=(GA=c.current)==null?void 0:GA.getMap();NA&&NA.easeTo({bearing:0,pitch:0,duration:300})},yA="w-4 h-4",bA=oA==="light"?"#525252":"var(--fg-secondary)",LA=x.length>=un.length;return g.jsx(g.Fragment,{children:g.jsxs("div",{className:"absolute top-3 right-3 z-[600] flex flex-col gap-2 sm:top-4 sm:right-4 max-w-[calc(100vw-1.5rem)] sm:max-w-none pr-[env(safe-area-inset-right)]",children:[g.jsxs("div",{className:"map-control-surface flex flex-nowrap items-center gap-0.5 sm:gap-1 p-1 overflow-hidden",children:[y&&g.jsx(Ot,{plain:!0,color:u?"warning":"muted",onClick:p,title:u?"Hide edge lines":"Show edge lines","aria-label":u?"Hide edge lines":"Show edge lines","aria-pressed":u,className:Qr,"data-tint":u?"warning":void 0,children:g.jsx(xa,{className:yA})}),g.jsx(Ot,{plain:!0,color:"muted",onClick:()=>fA(NA=>!NA),title:iA?"Hide node filters":"Show node filters","aria-label":iA?"Collapse node filters":"Expand node filters","aria-expanded":iA,className:Qr,children:g.jsx(au,{className:yA})}),g.jsx(R0,{initial:!1,children:iA&&g.jsxs(s0.div,{className:"flex items-center gap-0.5 flex-nowrap overflow-x-auto scrollbar-none max-w-[50vw] sm:max-w-none sm:overflow-visible",role:"group","aria-label":"Node type filters",initial:{width:0,opacity:0},animate:{width:"auto",opacity:1},exit:{width:0,opacity:0},transition:{duration:.2,ease:[.4,0,.2,1]},children:[g.jsx(us,{color:LA?"green":"zinc",customColor:LA?void 0:bA,onClick:T,title:"Show all nodes","aria-pressed":LA,"aria-label":"Show all node types",className:"shrink-0",children:"All"}),vc.map(NA=>{const GA=Q[NA];if(GA===0)return null;const kA=!LA&&x.includes(NA);return g.jsx(us,{color:kA?ji[NA]:"zinc",customColor:kA?void 0:bA,onClick:()=>C(NA),title:Ri[NA],"aria-pressed":kA,"aria-label":`${Tn[NA]} (${GA})`,className:"shrink-0",children:Tn[NA]},NA)}),Ii.some(NA=>Q[NA]>0)&&g.jsx("span",{className:"mx-0.5 h-3 w-px bg-[var(--map-ui-border,var(--edge-subtle))] hidden sm:block shrink-0","aria-hidden":"true"}),Ii.map(NA=>{const GA=Q[NA];if(GA===0)return null;const kA=!LA&&x.includes(NA);return g.jsx(us,{color:kA?ji[NA]:"zinc",customColor:kA?void 0:bA,onClick:()=>C(NA),title:Ri[NA],"aria-pressed":kA,"aria-label":`${Tn[NA]} (${GA})`,className:"shrink-0",children:Tn[NA]},NA)})]})}),z&&O&&g.jsx(Ot,{plain:!0,color:P?"primary":"muted",onClick:O,title:P?"Hide community partition":"Show community partition","aria-label":P?"Hide community partition":"Show community partition","aria-pressed":P,className:Qr,"data-tint":P?"primary":void 0,children:g.jsx(Ss,{className:yA})}),g.jsx(Ot,{plain:!0,color:oA==="light"?"primary":"muted",onClick:J,title:oA==="light"?"Switch to dark map":"Switch to light map","aria-label":oA==="light"?"Switch to dark map":"Switch to light map","aria-pressed":oA==="light",className:Qr,"data-tint":oA==="light"?"primary":void 0,children:oA==="light"?g.jsx(zs,{className:yA}):g.jsx(Hs,{className:yA})}),g.jsx(Ot,{plain:!0,color:V?"success":"muted",onClick:W,title:V?"Disable 3D terrain":"Enable 3D terrain","aria-label":V?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":V,className:Qr,"data-tint":V?"success":void 0,children:g.jsx(Tu,{className:yA})}),g.jsx(Ot,{plain:!0,color:"muted",onClick:$,title:eA?"Exit fullscreen":"Fullscreen","aria-label":eA?"Exit fullscreen":"Enter fullscreen","aria-pressed":eA,className:Qr,children:eA?g.jsx(qa,{className:yA}):g.jsx(Ja,{className:yA})})]}),g.jsxs("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:[g.jsx(Ot,{plain:!0,color:"muted",onClick:RA,title:"Zoom in","aria-label":"Zoom in",className:jn,children:g.jsx(uu,{className:yA})}),g.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),g.jsx(Ot,{plain:!0,color:"muted",onClick:DA,title:"Zoom out","aria-label":"Zoom out",className:jn,children:g.jsx(Co,{className:yA})}),g.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),g.jsx(Ot,{plain:!0,color:"muted",onClick:EA,title:"Reset bearing to north","aria-label":"Reset bearing to north",className:jn,children:g.jsx(cu,{className:yA})})]}),vA&&sA&&g.jsx("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:g.jsx(Ot,{plain:!0,color:uA?"success":"muted",onClick:sA,title:uA?"Hide link quality overlay":"Show link quality overlay","aria-label":uA?"Hide link quality overlay":"Show link quality overlay","aria-pressed":uA,className:jn,"data-tint":uA?"success":void 0,children:g.jsx(Vo,{className:yA})})})]})})}const Cc="#4ADE80",Ec="#16A34A",Sc="rgba(10, 26, 10, 1)",Mc="rgba(220, 252, 231, 1)",ms={text:yr.textSecondary,activeText:Ec,activeBg:Mc},Bc={activeBg:Sc},fr="DeepAnalysis",Dc=700,Li="abcdefghijklmnopqrstuvwxyz0123456789";function _c(){return Li[Math.floor(Math.random()*Li.length)]}function Tc({isActive:c,hasAnalyzed:u,isLoading:p,onClick:y,basemapMode:x="dark"}){const C=x==="light",T=C?ms.text:void 0,Q=C?ms.activeText:Cc,[D,E]=j.useState(!1),[P,O]=j.useState(fr),z=j.useRef(!1),V=j.useRef(null),[W]=j.useState(()=>{var $;return typeof window<"u"&&((($=window.matchMedia)==null?void 0:$.call(window,"(hover: hover)").matches)??!1)}),oA=D&&!c&&!p&&W;j.useEffect(()=>{if(D&&!c&&!p&&!z.current){z.current=!0;const $=performance.now(),uA=sA=>{const vA=sA-$,iA=Math.min(vA/Dc,1),fA=Math.floor(iA*fr.length);let RA="";for(let DA=0;DA{V.current&&cancelAnimationFrame(V.current)}},[D,c,p]);const J=p?"Analyzing...":P,eA=p?"Analyzing packet history":u?c?"Hide topology edges":"Show topology edges":"Load full packet history and build topology";return g.jsxs("button",{onClick:y,onMouseEnter:()=>W&&E(!0),onMouseLeave:()=>W&&E(!1),onPointerEnter:()=>W&&E(!0),onPointerLeave:()=>W&&E(!1),disabled:p,className:`map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base ${p?"cursor-wait":""}`,style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:C?ms.activeBg:Bc.activeBg}},title:eA,"aria-label":eA,"aria-pressed":c,children:[p?g.jsx(Yn,{className:"w-3.5 h-3.5 shrink-0 animate-spin",style:{color:Q}}):g.jsx(Cs,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${c?"":"text-fg-secondary"}`,style:{...c&&{color:Q},...oA&&{color:Q},...!c&&!oA&&T&&{color:T}}}),g.jsx("span",{className:`${c?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:c||oA?700:500,letterSpacing:"-0.01em",lineHeight:1,...c&&{color:Q},...oA&&{color:Q},...!c&&!oA&&T&&{color:T}},children:J})]})}const jc=e0.teal,Rc="#0D7377",Ic="rgba(10, 36, 32, 1)",Lc="rgba(204, 251, 241, 1)",gs={text:yr.textSecondary,activeTeal:Rc,activeBg:Lc},Nc={activeBg:Ic},Ni="LiveTrace",Fc=400,Fi=100;function Pc({isActive:c,onClick:u,basemapMode:p="dark"}){const y=p==="light",x=y?gs.text:void 0,C=y?gs.activeTeal:jc,[T,Q]=j.useState(!1),[D,E]=j.useState(0),P=j.useRef(!1),O=j.useRef(null),[z,V]=j.useState(0),W=j.useRef(!1),[oA]=j.useState(()=>{var uA;return typeof window<"u"&&(((uA=window.matchMedia)==null?void 0:uA.call(window,"(hover: hover)").matches)??!1)}),J=T&&!c&&oA;j.useEffect(()=>{J&&!W.current&&(W.current=!0,V(1),setTimeout(()=>V(2),Fi),setTimeout(()=>V(3),Fi*2)),T||(W.current=!1,V(0))},[J,T]),j.useEffect(()=>{if(T&&!c&&!P.current){P.current=!0;const uA=performance.now(),sA=vA=>{const iA=vA-uA,fA=Math.min(iA/Fc,1);E(fA),fA<1&&(O.current=requestAnimationFrame(sA))};O.current=requestAnimationFrame(sA)}return T||(O.current&&(cancelAnimationFrame(O.current),O.current=null),P.current=!1,E(0)),()=>{O.current&&cancelAnimationFrame(O.current)}},[T,c]);const eA=uA=>{if(c)return C;if(!J)return x;const sA=Ni.length,vA=D*(sA+2);return uA>=vA-2&&uAoA&&Q(!0),onMouseLeave:()=>oA&&Q(!1),onPointerEnter:()=>oA&&Q(!0),onPointerLeave:()=>oA&&Q(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:y?gs.activeBg:Nc.activeBg}},title:c?"Disable live packet tracing (reduces CPU usage)":"Enable live packet tracing","aria-label":$,"aria-pressed":c,children:[g.jsx(du,{className:`w-3.5 h-3.5 shrink-0 ${c?"":"text-fg-secondary"}`,fill:z===1?"#FFFFFF":z===3?C:"none",stroke:z===1||z===2?"#FFFFFF":c||J?C:x||"currentColor",style:{transition:"fill 0.05s, stroke 0.05s"}}),g.jsx("span",{className:`${c?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:c||J?700:500,letterSpacing:"-0.01em",lineHeight:1},children:Ni.split("").map((uA,sA)=>g.jsx("span",{style:{color:eA(sA)||void 0},children:uA},sA))})]})}const Pi=.2,Qc="rgba(26, 20, 8, 1)",Oc="rgba(254, 243, 199, 1)",Rn={text:yr.textSecondary,activeBg:Oc,disabledText:yr.disabledText},zc={activeBg:Qc},ps=.01,ys=1,Qi="#fe8019",Hc="'Wardrive', serif",_s=1.45,Gc=_s*1.1,Uc=80;function Vc({isActive:c,onClick:u,brightness:p=.7,onBrightnessChange:y,basemapMode:x="dark"}){const C=x==="light",T=C?Rn.text:void 0,[Q,D]=j.useState(!1),[E,P]=j.useState(!1),[O]=j.useState(()=>{var uA;return typeof window<"u"&&(((uA=window.matchMedia)==null?void 0:uA.call(window,"(hover: hover)").matches)??!1)});j.useEffect(()=>{if(!Q||c)return;const uA=requestAnimationFrame(()=>P(!0)),sA=setTimeout(()=>P(!1),Uc);return()=>{cancelAnimationFrame(uA),clearTimeout(sA)}},[Q,c]);const z=Math.max(ps,Math.min(ys,p)),V=uA=>{uA.stopPropagation();const sA=Math.min(ys,z+Pi);y==null||y(sA)},W=uA=>{uA.stopPropagation();const sA=Math.max(ps,z-Pi);y==null||y(sA)},oA=zps+.001,eA=Q&&!c&&O,$=c?"Configure wardriving coverage":"Show wardriving coverage";return g.jsxs("button",{onClick:u,onMouseEnter:()=>O&&D(!0),onMouseLeave:()=>O&&D(!1),onPointerEnter:()=>O&&D(!0),onPointerLeave:()=>O&&D(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:C?Rn.activeBg:zc.activeBg}},title:$,"aria-label":$,"aria-pressed":c,children:[g.jsx(Nu,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${c?"text-sys-amber":"text-fg-secondary"}`,style:eA?{color:Qi}:!c&&T?{color:T}:void 0}),g.jsx("span",{className:`${c?"text-sys-amber":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:c||eA?Hc:"ui-monospace, SFMono-Regular, monospace",fontSize:c||eA?"0.75rem":"0.6875rem",fontWeight:500,letterSpacing:"-0.01em",lineHeight:1,transition:"none",transform:c?`scale(${_s})`:eA?`scale(${E?Gc:_s})`:void 0,transformOrigin:"left center",...eA?{color:Qi}:!c&&T?{color:T}:{}},children:"Wardrive"}),c&&y&&g.jsxs("div",{className:"ml-auto flex items-center gap-0.5",children:[g.jsx("button",{onClick:W,disabled:!J,className:`p-1 sm:p-0.5 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center rounded transition-colors ${J?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:J?void 0:{color:C?Rn.disabledText:"rgba(251, 191, 36, 0.3)"},title:`Decrease opacity (${Math.round(z*100)}%)`,"aria-label":`Decrease opacity, currently ${Math.round(z*100)}%`,children:g.jsx(zs,{className:"w-3.5 h-3.5"})}),g.jsx("button",{onClick:V,disabled:!oA,className:`p-1 sm:p-0.5 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center rounded transition-colors ${oA?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:oA?void 0:{color:C?Rn.disabledText:"rgba(251, 191, 36, 0.3)"},title:`Increase opacity (${Math.round(z*100)}%)`,"aria-label":`Increase opacity, currently ${Math.round(z*100)}%`,children:g.jsx(Hs,{className:"w-3.5 h-3.5"})})]})]})}const Wc="0123456789bcdefghjkmnpqrstuvwxyz";function Yc(c){let u=!0,p=-90,y=90,x=-180,C=180;for(const T of c.toLowerCase()){const Q=Wc.indexOf(T);if(Q!==-1)for(let D=4;D>=0;D--){const E=Q>>D&1;if(u){const P=(x+C)/2;E?x=P:C=P}else{const P=(p+y)/2;E?p=P:y=P}u=!u}}return{lat:(p+y)/2,lon:(x+C)/2}}function Kc(c){return Math.exp(-c*Math.LN2/7)}const Ts="pymc-wardriving-url",Zo="pymc-wardriving-enabled",qo="pymc-wardriving-brightness",Oi=.7;function $c(){return typeof localStorage>"u"?"":localStorage.getItem(Ts)||""}function zi(c){typeof localStorage>"u"||(c?localStorage.setItem(Ts,c):localStorage.removeItem(Ts))}function Zc(){return typeof localStorage>"u"?!1:localStorage.getItem(Zo)==="true"}function In(c){typeof localStorage>"u"||localStorage.setItem(Zo,String(c))}function qc(){if(typeof localStorage>"u")return Oi;const c=localStorage.getItem(qo);if(c){const u=parseFloat(c);if(!isNaN(u)&&u>=.01&&u<=1)return u}return Oi}function Jc(c){if(typeof localStorage>"u")return;const u=Math.max(.01,Math.min(1,c));localStorage.setItem(qo,String(u))}const Xc=8e3;async function Af(c,u={},p=Xc){const y=new AbortController,x=setTimeout(()=>y.abort(),p);try{return await fetch(c,{...u,signal:y.signal})}catch(C){throw C instanceof Error&&C.name==="AbortError"?new Error(`Connection timed out after ${p/1e3}s`):C}finally{clearTimeout(x)}}async function ef(c){const p=`${c.replace(/\/+$/,"").replace(/\/get-nodes$/,"").replace(/\/get-samples$/,"")}/get-samples`,y=await Af(p,{headers:{Accept:"application/json"}});if(!y.ok)throw new Error(`Failed to fetch precise samples: ${y.status}`);return y.json()}function tf(c,u=null){if(c!==null){const y=(Math.max(-12,Math.min(12,c))+12)/24;if(u!==null){const C=(Math.max(-120,Math.min(-50,u))+120)/70;return y*.8+C*.2}return y}return u!==null?(Math.max(-120,Math.min(-50,u))+120)/70:.5}function rf(c){var p;const u=[];for(const y of c.keys){if(!y.observed)continue;const{lat:x,lon:C}=Yc(y.hash),T=parseInt(y.time,10),Q=isNaN(T)?30:(Date.now()-T)/(1e3*60*60*24),D=Kc(Q),P=tf(y.snr,y.rssi)*(.3+D*.7);u.push({lat:x,lon:C,successRate:y.observed?1:0,weight:P,totalSamples:1,ageDays:Q,geohash:y.hash,repeaters:((p=y.path)==null?void 0:p.map(O=>O.toLowerCase()))||[]})}return u}const cn=Eo((c,u)=>({status:"idle",isVisible:Zc(),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:$c(),brightness:qc(),isModalOpen:!1,openModal:()=>c({isModalOpen:!0}),closeModal:()=>c({isModalOpen:!1}),setUrl:p=>c({url:p}),setBrightness:p=>{const y=Math.max(.01,Math.min(1,p));Jc(y),c({brightness:y})},toggleVisibility:()=>{const p=!u().isVisible;In(p),c({isVisible:p})},setVisible:p=>{In(p),c({isVisible:p})},loadCoverage:async p=>{if(!p.trim())return c({error:"Please enter a URL",status:"error"}),!1;try{new URL(p.trim())}catch{return c({error:"Invalid URL format",status:"error"}),!1}c({error:null,status:"connecting"});try{c({status:"loading"});const y=await ef(p.trim());if(!y||typeof y!="object")throw new Error("Invalid response from server");if(!Array.isArray(y.keys))throw new Error("No sample data found in response");c({status:"processing"});const x=rf(y);if(x.length===0)throw new Error("No valid coverage points found");return c({coveragePoints:x,repeaters:[],stats:{coverageCount:x.length,repeaterCount:0,lastUpdated:new Date},status:"success",isVisible:!0,url:p.trim()}),zi(p.trim()),In(!0),!0}catch(y){const x=y instanceof Error?y.message:"Failed to load coverage data";let C=x;return x.includes("timed out")?C="Connection timed out. Server may be unreachable or slow.":x.includes("Failed to fetch")||x.includes("NetworkError")?C="Could not connect to server. Check the URL and try again.":x.includes("CORS")?C="Server does not allow cross-origin requests.":x.includes("404")?C="Coverage endpoint not found. Check the URL.":(x.includes("ERR_NAME_NOT_RESOLVED")||x.includes("DNS"))&&(C="Server not found. Check the URL for typos."),c({error:C,status:"error"}),!1}},clearCoverage:()=>{c({coveragePoints:[],repeaters:[],stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},status:"idle",error:null,isVisible:!1,url:""}),zi(""),In(!1)}})),nf={bg:"#F8F8F8",bgSubtle:"#F0F0F0",bgElevated:"#FFFFFF",bgInput:"#FFFFFF",border:"rgba(0, 0, 0, 0.12)",borderStrong:"rgba(0, 0, 0, 0.20)",borderFocus:"#3B82F6",text:"#1A1A1A",textSecondary:"#4A4A4A",textMuted:"#737373",success:"#059669",successBg:"#ECFDF5",successBorder:"#A7F3D0",error:"#DC2626",errorBg:"#FEF2F2",errorBorder:"#FECACA",info:"#2563EB",infoBg:"#EFF6FF",infoBorder:"#BFDBFE",warning:"#D97706",warningBg:"#FFFBEB",warningBorder:"#FDE68A",primary:"#F59E0B",hoverBg:"rgba(0, 0, 0, 0.04)",sliderTrack:"#E5E7EB",sliderThumb:"#F59E0B"},Jo={bg:"var(--surface)",bgSubtle:"var(--subtle)",bgElevated:"var(--elevated)",bgInput:"var(--subtle)",border:"var(--edge-subtle)",borderStrong:"var(--edge-strong)",borderFocus:"var(--sys-blue)",text:"var(--fg-primary)",textSecondary:"var(--fg-secondary)",textMuted:"var(--fg-muted)",success:"var(--sys-green)",successBg:"rgba(74, 222, 128, 0.1)",successBorder:"rgba(74, 222, 128, 0.3)",error:"var(--sys-red)",errorBg:"rgba(239, 68, 68, 0.1)",errorBorder:"rgba(239, 68, 68, 0.3)",info:"var(--sys-indigo)",infoBg:"rgba(249, 210, 111, 0.1)",infoBorder:"rgba(249, 210, 111, 0.3)",warning:"var(--sys-indigo)",warningBg:"rgba(249, 210, 111, 0.1)",warningBorder:"rgba(249, 210, 111, 0.3)",primary:"var(--sys-indigo)",hoverBg:"var(--hover-tint)",sliderTrack:"var(--elevated)",sliderThumb:"var(--sys-indigo)"},Xo=j.createContext({theme:Jo,isLight:!1});function xr(){return j.useContext(Xo)}function sf({status:c,hasData:u}){const{theme:p,isLight:y}=xr(),x=j.useMemo(()=>c==="connecting"||c==="loading"||c==="processing"?{icon:g.jsx(Yn,{className:"w-3.5 h-3.5 animate-spin"}),label:c==="connecting"?"Connecting...":c==="loading"?"Loading...":"Processing...",color:p.warning,bg:p.warningBg}:c==="error"?{icon:g.jsx(hu,{className:"w-3.5 h-3.5"}),label:"Disconnected",color:p.error,bg:p.errorBg}:u?{icon:g.jsx(mu,{className:"w-3.5 h-3.5"}),label:"Connected",color:p.success,bg:p.successBg}:{icon:g.jsx(So,{className:"w-3.5 h-3.5"}),label:"Ready",color:p.textMuted,bg:y?"rgba(0,0,0,0.04)":"rgba(255,255,255,0.04)"},[c,u,p,y]);return g.jsxs(s0.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},className:"flex items-center gap-1.5 px-2 py-1 rounded-full text-xs font-medium",style:{backgroundColor:x.bg,color:x.color},children:[x.icon,g.jsx("span",{children:x.label})]},x.label)}function of({status:c}){const{theme:u}=xr(),p=j.useMemo(()=>{switch(c){case"connecting":return 25;case"loading":return 60;case"processing":return 90;default:return 0}},[c]);return p===0?null:g.jsx(s0.div,{initial:{opacity:0,scaleY:0},animate:{opacity:1,scaleY:1},exit:{opacity:0,scaleY:0},className:"h-1 rounded-full overflow-hidden origin-top",style:{backgroundColor:u.sliderTrack},children:g.jsx(s0.div,{className:"h-full rounded-full",style:{backgroundColor:u.primary},initial:{width:0},animate:{width:`${p}%`},transition:{duration:.4,ease:"easeOut"}})})}function Hi({variant:c,title:u,description:p,onDismiss:y}){const{theme:x}=xr(),C=j.useMemo(()=>{switch(c){case"success":return{icon:g.jsx(hn,{className:"w-4 h-4"}),color:x.success,bg:x.successBg,border:x.successBorder};case"error":return{icon:g.jsx(Mu,{className:"w-4 h-4"}),color:x.error,bg:x.errorBg,border:x.errorBorder};case"info":return{icon:g.jsx(Du,{className:"w-4 h-4"}),color:x.info,bg:x.infoBg,border:x.infoBorder}}},[c,x]);return g.jsxs(s0.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:Ur.snappy,className:"flex items-start gap-3 p-3 rounded-lg border",style:{backgroundColor:C.bg,borderColor:C.border,color:C.color},children:[g.jsx("div",{className:"shrink-0 mt-0.5",children:C.icon}),g.jsxs("div",{className:"flex-1 min-w-0",children:[g.jsx("p",{className:"text-sm font-medium",children:u}),p&&g.jsx("p",{className:"text-xs mt-0.5 opacity-80",children:p})]}),y&&g.jsx("button",{onClick:y,className:"shrink-0 p-1 rounded hover:bg-black/10 transition-colors","aria-label":"Dismiss",children:g.jsx(mn,{className:"w-3.5 h-3.5"})})]})}function lf({value:c,onChange:u,onSubmit:p,disabled:y}){const{theme:x,isLight:C}=xr(),[T,Q]=j.useState(!1),D=E=>{E.key==="Enter"&&!E.shiftKey&&!y&&(E.preventDefault(),p())};return g.jsxs("div",{className:"space-y-1.5",children:[g.jsx("label",{className:"block text-sm font-medium",style:{color:x.textSecondary},children:"Coverage Server URL"}),g.jsxs("div",{className:"relative",children:[g.jsx("input",{type:"url",value:c,onChange:E=>u(E.target.value),onKeyDown:D,onFocus:()=>Q(!0),onBlur:()=>Q(!1),placeholder:"https://coverage.wcmesh.com",disabled:y,className:n0("w-full pl-3 pr-10 py-2.5 rounded-lg border text-sm transition-all duration-150","focus:outline-none",y&&"opacity-50 cursor-not-allowed"),style:{backgroundColor:x.bgInput,borderColor:T?x.borderFocus:x.border,color:x.text,boxShadow:T?`0 0 0 3px ${C?"rgba(59, 130, 246, 0.15)":"rgba(139, 92, 246, 0.15)"}`:"none"}}),c&&!y&&g.jsx("button",{onClick:()=>u(""),className:"absolute right-2.5 top-1/2 -translate-y-1/2 p-1 rounded transition-colors",style:{color:x.textMuted},onMouseEnter:E=>E.currentTarget.style.color=x.text,onMouseLeave:E=>E.currentTarget.style.color=x.textMuted,"aria-label":"Clear URL",children:g.jsx(mn,{className:"w-4 h-4"})})]}),g.jsx("p",{className:"text-xs",style:{color:x.textMuted},children:"Press Enter to connect, or use the Connect button below"})]})}function af({value:c,onChange:u}){const{theme:p,isLight:y}=xr(),x=Math.round(c*100);return g.jsx(s0.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:Ur.gentle,className:"overflow-hidden",children:g.jsx("div",{className:"p-3 rounded-lg border",style:{backgroundColor:p.bgSubtle,borderColor:p.border},children:g.jsxs("div",{className:"flex items-center gap-3",children:[g.jsxs("div",{className:"relative w-4 h-4",children:[g.jsx(zs,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:p.textMuted,opacity:c<.5?1:0}}),g.jsx(Hs,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:p.primary,opacity:c>=.5?1:0}})]}),g.jsxs("div",{className:"flex-1",children:[g.jsxs("div",{className:"flex items-center justify-between mb-1.5",children:[g.jsx("span",{className:"text-xs font-medium",style:{color:p.textSecondary},children:"Layer Opacity"}),g.jsxs("span",{className:"text-xs font-mono tabular-nums px-1.5 py-0.5 rounded",style:{color:p.text,backgroundColor:y?"rgba(0,0,0,0.06)":"rgba(255,255,255,0.06)"},children:[x,"%"]})]}),g.jsx("input",{type:"range",min:5,max:100,value:x,onChange:C=>u(Number(C.target.value)/100),className:n0("w-full h-2 rounded-full appearance-none cursor-pointer","[&::-webkit-slider-thumb]:appearance-none","[&::-webkit-slider-thumb]:w-4","[&::-webkit-slider-thumb]:h-4","[&::-webkit-slider-thumb]:rounded-full","[&::-webkit-slider-thumb]:cursor-pointer","[&::-webkit-slider-thumb]:transition-transform","[&::-webkit-slider-thumb]:hover:scale-110","[&::-webkit-slider-thumb]:shadow-lg","[&::-moz-range-thumb]:appearance-none","[&::-moz-range-thumb]:w-4","[&::-moz-range-thumb]:h-4","[&::-moz-range-thumb]:rounded-full","[&::-moz-range-thumb]:border-0","[&::-moz-range-thumb]:cursor-pointer"),style:{background:`linear-gradient(to right, ${p.primary} ${x}%, ${p.sliderTrack} ${x}%)`,"--thumb-color":p.sliderThumb}}),g.jsx("style",{children:` input[type="range"]::-webkit-slider-thumb { background-color: ${p.sliderThumb}; } input[type="range"]::-moz-range-thumb { background-color: ${p.sliderThumb}; } - `})]})]})})})}function uf({coverageCount:c,repeaterCount:u,lastUpdated:p}){const{theme:y}=xr();return g.jsxs("div",{className:"grid grid-cols-3 gap-2 p-3 rounded-lg border",style:{backgroundColor:y.bgSubtle,borderColor:y.border},children:[g.jsxs("div",{className:"text-center",children:[g.jsx(ki,{value:c,format:{useGrouping:!0,maximumFractionDigits:0},className:"text-lg font-semibold tabular-nums block",style:{color:y.text}}),g.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Points"})]}),g.jsxs("div",{className:"text-center border-x",style:{borderColor:y.border},children:[g.jsx(ki,{value:u,format:{useGrouping:!0,maximumFractionDigits:0},className:"text-lg font-semibold tabular-nums block",style:{color:y.text}}),g.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Repeaters"})]}),g.jsxs("div",{className:"text-center",children:[g.jsxs("div",{className:"flex items-center justify-center gap-1",children:[g.jsx(Uo,{className:"w-3.5 h-3.5",style:{color:y.textMuted}}),g.jsx("span",{className:"text-lg font-semibold tabular-nums",style:{color:y.text},children:p?p.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"—"})]}),g.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Updated"})]})]})}function Gi({icon:c,label:u,onClick:p,disabled:y,variant:x="default",active:C}){const{theme:T,isLight:Q}=xr(),D=j.useMemo(()=>x==="danger"?{text:T.error,hoverBg:Q?"rgba(220, 38, 38, 0.08)":"rgba(239, 68, 68, 0.15)"}:{text:C?T.primary:T.textSecondary,hoverBg:T.hoverBg},[x,C,T,Q]);return g.jsxs("button",{onClick:p,disabled:y,className:n0("flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-sm font-medium transition-colors",y&&"opacity-50 cursor-not-allowed"),style:{color:D.text},onMouseEnter:E=>!y&&(E.currentTarget.style.backgroundColor=D.hoverBg),onMouseLeave:E=>E.currentTarget.style.backgroundColor="transparent",children:[c,g.jsx("span",{children:u})]})}function cf(){const c=Lo(),u=c==="light",p=u?nf:Jo,{isModalOpen:y,closeModal:x,status:C,isVisible:T,stats:Q,error:D,url:E,brightness:P,loadCoverage:O,clearCoverage:z,toggleVisibility:V,setUrl:W,setBrightness:oA}=cn(),J=C==="connecting"||C==="loading"||C==="processing",eA=Q.coverageCount>0,[Z,uA]=j.useState(!0),[sA,vA]=j.useState(E);j.useEffect(()=>{vA(E)},[E]),j.useEffect(()=>{C==="error"&&uA(!0)},[C]);const iA=j.useCallback(async()=>{await O(sA)},[sA,O]),fA=j.useCallback(()=>{vA(""),z()},[z]),RA=j.useCallback(yA=>{vA(yA),W(yA)},[W]),DA=j.useCallback(()=>{J||x()},[J,x]),EA=sA.trim().length>0&&!J;return g.jsx(Xo.Provider,{value:{theme:p,isLight:u},children:g.jsxs(xo,{open:y,onClose:DA,size:"md",bottomSheet:!0,basemapMode:c,children:[g.jsxs("div",{className:"flex items-center justify-between p-4 border-b",style:{borderColor:p.border},children:[g.jsxs("div",{className:"flex items-center gap-3",children:[g.jsx("div",{className:"p-2 rounded-lg",style:{backgroundColor:p.bgSubtle,color:p.primary},children:g.jsx(So,{className:"w-5 h-5"})}),g.jsxs("div",{children:[g.jsx("h2",{className:"type-micro",style:{color:p.text},children:"Wardriving Coverage"}),g.jsx("p",{className:"text-xs",style:{color:p.textMuted},children:"RF coverage heatmap overlay"})]})]}),g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsx(sf,{status:C,hasData:eA}),!J&&g.jsxs(g.Fragment,{children:[g.jsx("button",{onClick:DA,className:"sm:hidden min-h-[44px] min-w-[44px] px-3 flex items-center justify-center text-[15px] font-medium transition-base radius-inner active:bg-subtle-fill",style:{color:p.primary},children:"Done"}),g.jsx("button",{onClick:DA,className:"hidden sm:flex items-center justify-center p-2 rounded-lg transition-colors",style:{color:p.textMuted},onMouseEnter:yA=>{yA.currentTarget.style.color=p.text,yA.currentTarget.style.backgroundColor=p.hoverBg},onMouseLeave:yA=>{yA.currentTarget.style.color=p.textMuted,yA.currentTarget.style.backgroundColor="transparent"},"aria-label":"Close",children:g.jsx(mn,{className:"w-5 h-5"})})]})]})]}),g.jsx(R0,{children:J&&g.jsx(of,{status:C})}),g.jsxs(wo,{className:"space-y-4",children:[g.jsx(lf,{value:sA,onChange:RA,onSubmit:iA,disabled:J}),g.jsx(R0,{children:C==="error"&&D&&Z&&g.jsx(Hi,{variant:"error",title:"Connection Failed",description:D,onDismiss:()=>uA(!1)})}),g.jsx(R0,{children:C==="success"&&eA&&g.jsx(Hi,{variant:"success",title:"Coverage Data Loaded",description:"Adjust opacity below, then close to view on map"})}),g.jsx(R0,{children:eA&&!J&&g.jsx(s0.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:8},transition:Ur.snappy,children:g.jsx(uf,{coverageCount:Q.coverageCount,repeaterCount:Q.repeaterCount,lastUpdated:Q.lastUpdated})})}),g.jsx(R0,{children:eA&&!J&&g.jsx(af,{value:P,onChange:oA})})]}),g.jsxs("div",{className:"flex items-center justify-between p-4 border-t",style:{borderColor:p.border},children:[g.jsx("div",{className:"flex items-center gap-1",children:g.jsx(R0,{children:eA&&g.jsxs(s0.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},exit:{opacity:0,x:-10},transition:Ur.snappy,className:"flex items-center gap-1",children:[g.jsx(Gi,{icon:T?g.jsx(Xa,{className:"w-4 h-4"}):g.jsx(Ho,{className:"w-4 h-4"}),label:T?"Hide":"Show",onClick:V,disabled:J,active:T}),g.jsx(Gi,{icon:g.jsx(Vs,{className:"w-4 h-4"}),label:"Clear",onClick:fA,disabled:J,variant:"danger"})]})})}),g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsx(Ot,{plain:!0,color:"muted",onClick:DA,disabled:J,children:eA?"Done":"Cancel"}),g.jsx(Ot,{color:"warning",onClick:iA,disabled:!EA,children:J?g.jsxs(g.Fragment,{children:[g.jsx(Yn,{"data-slot":"icon",className:"animate-spin"}),C==="connecting"?"Connecting...":C==="loading"?"Loading...":"Processing..."]}):eA?g.jsxs(g.Fragment,{children:[g.jsx(zo,{"data-slot":"icon"}),"Refresh"]}):g.jsxs(g.Fragment,{children:[g.jsx(Oo,{"data-slot":"icon"}),"Connect"]})})]})]})]})})}const ff={bandwidth:.07,threshold:.1,opacity:1,strokeWidth:4.5},r0={...yr,trackBg:yr.border};function Ln({label:c,value:u,min:p,max:y,step:x,unit:C,formatValue:T,onChange:Q,isLightMode:D}){const E=T?T(u):u.toFixed(2);return g.jsxs("div",{className:"flex items-center gap-2 sm:gap-2",children:[g.jsx("span",{className:"text-xs font-medium w-14 sm:w-16 shrink-0",style:D?{color:r0.textSecondary}:{color:"var(--fg-secondary)"},children:c}),g.jsx("input",{type:"range",min:p,max:y,step:x,value:u,onChange:P=>Q(parseFloat(P.target.value)),className:`flex-1 h-1.5 rounded-full appearance-none cursor-pointer + `})]})]})})})}function uf({coverageCount:c,repeaterCount:u,lastUpdated:p}){const{theme:y}=xr();return g.jsxs("div",{className:"grid grid-cols-3 gap-2 p-3 rounded-lg border",style:{backgroundColor:y.bgSubtle,borderColor:y.border},children:[g.jsxs("div",{className:"text-center",children:[g.jsx(ki,{value:c,format:{useGrouping:!0,maximumFractionDigits:0},className:"text-lg font-semibold tabular-nums block",style:{color:y.text}}),g.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Points"})]}),g.jsxs("div",{className:"text-center border-x",style:{borderColor:y.border},children:[g.jsx(ki,{value:u,format:{useGrouping:!0,maximumFractionDigits:0},className:"text-lg font-semibold tabular-nums block",style:{color:y.text}}),g.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Repeaters"})]}),g.jsxs("div",{className:"text-center",children:[g.jsxs("div",{className:"flex items-center justify-center gap-1",children:[g.jsx(Uo,{className:"w-3.5 h-3.5",style:{color:y.textMuted}}),g.jsx("span",{className:"text-lg font-semibold tabular-nums",style:{color:y.text},children:p?p.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"—"})]}),g.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Updated"})]})]})}function Gi({icon:c,label:u,onClick:p,disabled:y,variant:x="default",active:C}){const{theme:T,isLight:Q}=xr(),D=j.useMemo(()=>x==="danger"?{text:T.error,hoverBg:Q?"rgba(220, 38, 38, 0.08)":"rgba(239, 68, 68, 0.15)"}:{text:C?T.primary:T.textSecondary,hoverBg:T.hoverBg},[x,C,T,Q]);return g.jsxs("button",{onClick:p,disabled:y,className:n0("flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-sm font-medium transition-colors",y&&"opacity-50 cursor-not-allowed"),style:{color:D.text},onMouseEnter:E=>!y&&(E.currentTarget.style.backgroundColor=D.hoverBg),onMouseLeave:E=>E.currentTarget.style.backgroundColor="transparent",children:[c,g.jsx("span",{children:u})]})}function cf(){const c=Lo(),u=c==="light",p=u?nf:Jo,{isModalOpen:y,closeModal:x,status:C,isVisible:T,stats:Q,error:D,url:E,brightness:P,loadCoverage:O,clearCoverage:z,toggleVisibility:V,setUrl:W,setBrightness:oA}=cn(),J=C==="connecting"||C==="loading"||C==="processing",eA=Q.coverageCount>0,[$,uA]=j.useState(!0),[sA,vA]=j.useState(E);j.useEffect(()=>{vA(E)},[E]),j.useEffect(()=>{C==="error"&&uA(!0)},[C]);const iA=j.useCallback(async()=>{await O(sA)},[sA,O]),fA=j.useCallback(()=>{vA(""),z()},[z]),RA=j.useCallback(yA=>{vA(yA),W(yA)},[W]),DA=j.useCallback(()=>{J||x()},[J,x]),EA=sA.trim().length>0&&!J;return g.jsx(Xo.Provider,{value:{theme:p,isLight:u},children:g.jsxs(xo,{open:y,onClose:DA,size:"md",bottomSheet:!0,basemapMode:c,children:[g.jsxs("div",{className:"flex items-center justify-between p-4 border-b",style:{borderColor:p.border},children:[g.jsxs("div",{className:"flex items-center gap-3",children:[g.jsx("div",{className:"p-2 rounded-lg",style:{backgroundColor:p.bgSubtle,color:p.primary},children:g.jsx(So,{className:"w-5 h-5"})}),g.jsxs("div",{children:[g.jsx("h2",{className:"type-micro",style:{color:p.text},children:"Wardriving Coverage"}),g.jsx("p",{className:"text-xs",style:{color:p.textMuted},children:"RF coverage heatmap overlay"})]})]}),g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsx(sf,{status:C,hasData:eA}),!J&&g.jsxs(g.Fragment,{children:[g.jsx("button",{onClick:DA,className:"sm:hidden min-h-[44px] min-w-[44px] px-3 flex items-center justify-center text-[15px] font-medium transition-base radius-inner active:bg-subtle-fill",style:{color:p.primary},children:"Done"}),g.jsx("button",{onClick:DA,className:"hidden sm:flex items-center justify-center p-2 rounded-lg transition-colors",style:{color:p.textMuted},onMouseEnter:yA=>{yA.currentTarget.style.color=p.text,yA.currentTarget.style.backgroundColor=p.hoverBg},onMouseLeave:yA=>{yA.currentTarget.style.color=p.textMuted,yA.currentTarget.style.backgroundColor="transparent"},"aria-label":"Close",children:g.jsx(mn,{className:"w-5 h-5"})})]})]})]}),g.jsx(R0,{children:J&&g.jsx(of,{status:C})}),g.jsxs(wo,{className:"space-y-4",children:[g.jsx(lf,{value:sA,onChange:RA,onSubmit:iA,disabled:J}),g.jsx(R0,{children:C==="error"&&D&&$&&g.jsx(Hi,{variant:"error",title:"Connection Failed",description:D,onDismiss:()=>uA(!1)})}),g.jsx(R0,{children:C==="success"&&eA&&g.jsx(Hi,{variant:"success",title:"Coverage Data Loaded",description:"Adjust opacity below, then close to view on map"})}),g.jsx(R0,{children:eA&&!J&&g.jsx(s0.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:8},transition:Ur.snappy,children:g.jsx(uf,{coverageCount:Q.coverageCount,repeaterCount:Q.repeaterCount,lastUpdated:Q.lastUpdated})})}),g.jsx(R0,{children:eA&&!J&&g.jsx(af,{value:P,onChange:oA})})]}),g.jsxs("div",{className:"flex items-center justify-between p-4 border-t",style:{borderColor:p.border},children:[g.jsx("div",{className:"flex items-center gap-1",children:g.jsx(R0,{children:eA&&g.jsxs(s0.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},exit:{opacity:0,x:-10},transition:Ur.snappy,className:"flex items-center gap-1",children:[g.jsx(Gi,{icon:T?g.jsx(Xa,{className:"w-4 h-4"}):g.jsx(Ho,{className:"w-4 h-4"}),label:T?"Hide":"Show",onClick:V,disabled:J,active:T}),g.jsx(Gi,{icon:g.jsx(Vs,{className:"w-4 h-4"}),label:"Clear",onClick:fA,disabled:J,variant:"danger"})]})})}),g.jsxs("div",{className:"flex items-center gap-2",children:[g.jsx(Ot,{plain:!0,color:"muted",onClick:DA,disabled:J,children:eA?"Done":"Cancel"}),g.jsx(Ot,{color:"warning",onClick:iA,disabled:!EA,children:J?g.jsxs(g.Fragment,{children:[g.jsx(Yn,{"data-slot":"icon",className:"animate-spin"}),C==="connecting"?"Connecting...":C==="loading"?"Loading...":"Processing..."]}):eA?g.jsxs(g.Fragment,{children:[g.jsx(zo,{"data-slot":"icon"}),"Refresh"]}):g.jsxs(g.Fragment,{children:[g.jsx(Oo,{"data-slot":"icon"}),"Connect"]})})]})]})]})})}const ff={bandwidth:.07,threshold:.1,opacity:1,strokeWidth:4.5},r0={...yr,trackBg:yr.border};function Ln({label:c,value:u,min:p,max:y,step:x,unit:C,formatValue:T,onChange:Q,isLightMode:D}){const E=T?T(u):u.toFixed(2);return g.jsxs("div",{className:"flex items-center gap-2 sm:gap-2",children:[g.jsx("span",{className:"text-xs font-medium w-14 sm:w-16 shrink-0",style:D?{color:r0.textSecondary}:{color:"var(--fg-secondary)"},children:c}),g.jsx("input",{type:"range",min:p,max:y,step:x,value:u,onChange:P=>Q(parseFloat(P.target.value)),className:`flex-1 h-1.5 rounded-full appearance-none cursor-pointer [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3.5 [&::-webkit-slider-thumb]:h-3.5 @@ -78,7 +78,7 @@ import{d as X0,a5 as aa,r as j,eZ as ua,b_ as ca,cT as fa,cU as da,j as g,ak as `,style:E?{borderColor:r0.border}:void 0,onPointerDown:V=>Q.start(V),children:[g.jsxs("div",{className:"flex items-center gap-2 sm:gap-1.5",children:[g.jsx(eu,{className:"w-4 h-4 sm:w-3 sm:h-3",style:E?{color:r0.textMuted}:void 0}),g.jsx(Ss,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5 text-sys-blue"}),g.jsx("span",{className:"text-sm sm:text-xs font-medium",style:E?{color:r0.textPrimary}:void 0,children:"Partition"})]}),g.jsx(Ot,{plain:!0,color:"muted",onClick:u,className:"!p-1.5 sm:!p-0.5 !rounded min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center","aria-label":"Close toolbox",children:g.jsx(mn,{className:"w-4 h-4 sm:w-3 sm:h-3"})})]}),g.jsx("div",{className:"px-3 py-2 sm:px-2.5 sm:py-1.5 border-b",style:E?{borderColor:r0.border}:void 0,children:g.jsxs("div",{className:"grid grid-cols-2 gap-x-4 sm:gap-x-3 gap-y-1 sm:gap-y-0.5",children:[g.jsx(Nn,{icon:g.jsx(Ss,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Communities",value:P.numCommunities,isLightMode:E}),g.jsx(Nn,{icon:g.jsx(yi,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Avg Size",value:P.avgCommunitySize,subtext:`${P.minCommunitySize}–${P.maxCommunitySize}`,isLightMode:E}),g.jsx(Nn,{icon:g.jsx(Iu,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Fiedler λ₂",value:P.fiedlerValue.toFixed(3),isLightMode:E}),g.jsx(Nn,{icon:g.jsx(yi,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Coverage",value:`${P.coveragePercent}%`,subtext:`of ${C}`,isLightMode:E})]})}),g.jsx("div",{className:"px-3 py-2 sm:px-2.5 sm:py-1.5",children:g.jsxs("div",{className:"space-y-3 sm:space-y-1.5",children:[g.jsx(Ln,{label:"Bandwidth",value:p.bandwidth,min:.01,max:.15,step:.005,formatValue:()=>z,unit:"km",onChange:V=>O("bandwidth",V),isLightMode:E}),g.jsx(Ln,{label:"Threshold",value:p.threshold,min:.05,max:.5,step:.01,formatValue:V=>`${Math.round((1-V)*100)}%`,unit:"cov",onChange:V=>O("threshold",V),isLightMode:E}),g.jsx(Ln,{label:"Opacity",value:p.opacity,min:.1,max:1,step:.05,formatValue:V=>`${Math.round(V*100)}%`,onChange:V=>O("opacity",V),isLightMode:E}),g.jsx(Ln,{label:"Stroke",value:p.strokeWidth,min:0,max:5,step:.5,unit:"px",formatValue:V=>V.toFixed(1),onChange:V=>O("strokeWidth",V),isLightMode:E})]})})]})})})})}const hf={excellent:"text-signal-excellent",good:"text-signal-good",fair:"text-signal-fair",poor:"text-signal-poor",critical:"text-signal-critical"};function fn(c,u){return hf[Do(c,u)]}const mf={backgroundColor:"var(--map-ui-hover, var(--elevated))",color:"var(--map-ui-text, var(--fg-primary))",boxShadow:"inset 0 0 0 1px var(--map-ui-border-strong, var(--edge-strong))"},gf={backgroundColor:"var(--map-ui-bg, var(--body))",color:"var(--map-ui-text, var(--fg-primary))",boxShadow:"0 1px 4px rgba(0,0,0,0.15), inset 0 0 0 1px var(--map-ui-border, var(--edge-subtle))"};function Or({prefix:c,name:u}){const p=j.useRef(null),[y,x]=j.useState(!1),[C,T]=j.useState({top:0,left:0}),Q=()=>{if(!u||!p.current)return;const D=p.current.getBoundingClientRect();T({top:D.top-4,left:D.left+D.width/2}),x(!0)};return g.jsxs(g.Fragment,{children:[g.jsx("span",{ref:p,className:"inline-flex items-center px-1.5 py-0.5 rounded font-mono text-[10px] font-semibold transition-opacity hover:opacity-80 cursor-default",style:mf,onMouseEnter:Q,onMouseLeave:()=>x(!1),children:c}),u&&y&&Sa.createPortal(g.jsx("span",{className:"fixed z-[9999] pointer-events-none -translate-x-1/2 -translate-y-full whitespace-nowrap rounded px-1.5 py-0.5 text-[10px] font-medium",style:{...gf,top:C.top,left:C.left},children:u}),document.body)]})}function Al(c){if(c._tracePathHashes)return c._tracePathHashes;if(c.payload&&c.payload.length>=20){const u=c.payload.slice(18),p=[];for(let y=0;y0?p:null}return null}function el(c,u){return c.src_hash?[c.src_hash.replace(/^0x/i,"").slice(0,2).toUpperCase(),...u.map(y=>y.toUpperCase())]:u.map(p=>p.toUpperCase())}function pf(c,u,p,y=15){const x=[],C=u.toUpperCase(),T=p.toUpperCase();for(const Q of c){if((Q.type??Q.payload_type)!==Ea.TRACE)continue;const E=Al(Q);if(!E||E.length<1)continue;const P=el(Q,E);if(!(P.length<2)){for(let O=0;O=y)break}}return x}function yf(c){switch(c){case"improving":return g.jsx(Ba,{className:"w-3 h-3 text-sys-green"});case"degrading":return g.jsx(xu,{className:"w-3 h-3 text-sys-red"});case"stable":return g.jsx(Co,{className:"w-3 h-3 text-fg-muted"});default:return null}}const xf={backgroundColor:"var(--map-ui-stripe)"};function Gn({label:c,value:u,unit:p,color:y,tooltip:x}){return g.jsxs("div",{className:`flex items-center justify-between gap-2 py-[3px] ${x?"cursor-help":""}`,title:x,children:[g.jsx("span",{className:"type-data-xs text-fg-muted",children:c}),g.jsxs("span",{className:`data-box data-box-compact ${y||""}`,children:[u,p&&g.jsx("span",{className:"text-fg-muted ml-0.5",children:p})]})]})}function Ui({stats:c,direction:u,sf:p,noiseFloor:y}){if(!c)return g.jsxs("div",{className:"min-w-0",children:[g.jsx("div",{className:"flex items-center justify-between mb-1.5",children:g.jsx("p",{className:"type-data-xs text-fg-secondary font-medium",children:u})}),g.jsx("p",{className:"type-data-xs text-fg-muted italic px-1.5",children:"No data"})]});const x=c.max-c.min,C=c.median-c.mean,T=Ma(p),Q=c.mean-T,D=Do(c.mean,p),E=[`Mean SNR: ${c.mean.toFixed(1)} dB (${D}) from ${c.count} measurement${c.count!==1?"s":""}`,`Variability: ±${c.stdDev.toFixed(1)} dB`,"",`Link budget (SF${p}, 3.5 dBi omni):`,` Demod threshold: ${T.toFixed(1)} dB`,` SNR margin: ${Q>=0?"+":""}${Q.toFixed(1)} dB`];return y!=null&&E.push(` Noise floor: ${y} dBm`),g.jsxs("div",{className:"min-w-0",children:[g.jsxs("div",{className:"flex items-center justify-between mb-1.5",children:[g.jsx("p",{className:"type-data-xs text-fg-secondary font-medium",children:u}),g.jsxs("span",{className:"type-data-xs text-fg-muted tabular-nums",title:`${c.count} measurement${c.count!==1?"s":""}`,children:["n=",c.count]})]}),g.jsx(Gn,{label:"Mean",value:c.mean.toFixed(1),unit:"dB",color:fn(c.mean,p),tooltip:E.join(` `)}),g.jsx(Gn,{label:"Median",value:c.median.toFixed(1),unit:"dB",tooltip:`Middle value — less affected by unusual readings than the average.${Math.abs(C)>=.15?` Differs from mean by ${C>0?"+":""}${C.toFixed(1)} dB`:""}`}),g.jsx(Gn,{label:"Range",value:`${c.min.toFixed(1)}–${c.max.toFixed(1)}`,unit:"dB",tooltip:`Best to worst signal observed. Total spread: ${x.toFixed(1)} dB.`})]})}function wf({pair:c,onClose:u,prefixToName:p}){var vA,iA,fA,RA,DA,EA,yA,bA,LA,NA,GA,kA;const y=Mo(),x=wa(),C=va(),T=ba(),[Q,D]=j.useState(null),E=((iA=(vA=C==null?void 0:C.config)==null?void 0:vA.radio)==null?void 0:iA.spreading_factor)??ka,P=j.useMemo(()=>{const cA=`${c.nodeA.hash}>${c.nodeB.hash}`,lA=`${c.nodeB.hash}>${c.nodeA.hash}`;return{forward:y.get(cA)??null,reverse:y.get(lA)??null}},[y,c.nodeA.hash,c.nodeB.hash]),O=j.useMemo(()=>!x||x.length===0?[]:pf(x,c.nodeA.prefix,c.nodeB.prefix),[x,c.nodeA.prefix,c.nodeB.prefix]),z=c.nodeA.name||(p==null?void 0:p.get(c.nodeA.prefix.toUpperCase()))||null,V=c.nodeB.name||(p==null?void 0:p.get(c.nodeB.prefix.toUpperCase()))||null,W=((fA=P.forward)==null?void 0:fA.trend)??((RA=P.reverse)==null?void 0:RA.trend)??"insufficient",oA=Math.max(((DA=P.forward)==null?void 0:DA.lastSeen)??0,((EA=P.reverse)==null?void 0:EA.lastSeen)??0),J=(((yA=P.forward)==null?void 0:yA.uniqueTraceCount)??0)+(((bA=P.reverse)==null?void 0:bA.uniqueTraceCount)??0),eA=W==="insufficient"?"Not enough data to determine trend (need at least 4 measurements).":`Whether signal quality is getting better or worse over time. -Compares older measurements to newer ones.`,Z=((LA=P.forward)==null?void 0:LA.uniqueTraceCount)??0,uA=((NA=P.reverse)==null?void 0:NA.uniqueTraceCount)??0,sA=["Number of trace packets that traveled through this link.",`${c.nodeA.prefix}→${c.nodeB.prefix}: ${Z}`,`${c.nodeB.prefix}→${c.nodeA.prefix}: ${uA}`].join(` +Compares older measurements to newer ones.`,$=((LA=P.forward)==null?void 0:LA.uniqueTraceCount)??0,uA=((NA=P.reverse)==null?void 0:NA.uniqueTraceCount)??0,sA=["Number of trace packets that traveled through this link.",`${c.nodeA.prefix}→${c.nodeB.prefix}: ${$}`,`${c.nodeB.prefix}→${c.nodeA.prefix}: ${uA}`].join(` `);return g.jsx("div",{className:` absolute z-[700] overflow-hidden /* Mobile: full-width bottom sheet with breathing room */ @@ -91,7 +91,7 @@ Compares older measurements to newer ones.`,Z=((LA=P.forward)==null?void 0:LA.un max-h-[45vh] /* sm+: taller allowance */ sm:max-h-[420px] - `,children:[g.jsxs("div",{className:"flex items-center justify-between gap-2 px-3 py-2 sm:py-2 min-h-[44px] sm:min-h-0 border-b border-edge-subtle",children:[g.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[g.jsx(Vo,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5 text-sys-green shrink-0"}),g.jsx(Or,{prefix:c.nodeA.prefix,name:z}),g.jsx("span",{className:"type-data-xs text-fg-muted",children:"↔"}),g.jsx(Or,{prefix:c.nodeB.prefix,name:V})]}),g.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[oA>0&&g.jsx("span",{className:"type-data-xs text-fg-muted",title:xi(oA),children:Bo(oA)}),g.jsx(Ot,{plain:!0,color:"muted",onClick:u,className:"!p-1.5 sm:!p-0.5 !rounded-md min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center",children:g.jsx(mn,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5"})})]})]}),g.jsxs("div",{className:"px-3 py-2.5 border-b border-edge-subtle",children:[g.jsxs("div",{className:"space-y-1.5 mb-2",children:[g.jsxs("div",{className:"flex items-center justify-between cursor-help",title:`${c.nodeA.prefix}→${c.nodeB.prefix}: mean of ${((GA=c.aToB)==null?void 0:GA.count)??0} measurements`,children:[g.jsxs("span",{className:"flex items-center gap-1",children:[g.jsx(Or,{prefix:c.nodeA.prefix,name:z}),g.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),g.jsx(Or,{prefix:c.nodeB.prefix,name:V})]}),c.aToB?g.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${fn(c.aToB.mean,E)}`,children:[c.aToB.mean.toFixed(1),g.jsx("span",{className:"text-fg-muted font-normal ml-0.5",children:"dB"})]}):g.jsx("span",{className:"type-data-sm text-fg-muted",children:"—"})]}),g.jsxs("div",{className:"flex items-center justify-between cursor-help",title:`${c.nodeB.prefix}→${c.nodeA.prefix}: mean of ${((kA=c.bToA)==null?void 0:kA.count)??0} measurements`,children:[g.jsxs("span",{className:"flex items-center gap-1",children:[g.jsx(Or,{prefix:c.nodeB.prefix,name:V}),g.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),g.jsx(Or,{prefix:c.nodeA.prefix,name:z})]}),c.bToA?g.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${fn(c.bToA.mean,E)}`,children:[c.bToA.mean.toFixed(1),g.jsx("span",{className:"text-fg-muted font-normal ml-0.5",children:"dB"})]}):g.jsx("span",{className:"type-data-sm text-fg-muted",children:"—"})]})]}),g.jsxs("div",{className:"grid grid-cols-2 gap-0 -mx-3 border-t border-edge-subtle",children:[g.jsx("div",{className:"px-3 pt-2 pb-1 border-r border-edge-subtle",children:g.jsx(Ui,{stats:c.aToB,direction:`${c.nodeA.prefix}→${c.nodeB.prefix}`,sf:E,noiseFloor:T})}),g.jsx("div",{className:"px-3 pt-2 pb-1",children:g.jsx(Ui,{stats:c.bToA,direction:`${c.nodeB.prefix}→${c.nodeA.prefix}`,sf:E,noiseFloor:T})})]})]}),g.jsxs("div",{className:"px-3 py-1.5 border-b border-edge-subtle",children:[W!=="insufficient"&&g.jsxs("div",{className:"flex items-center justify-between gap-2 py-[3px] cursor-help",title:eA,children:[g.jsx("span",{className:"type-data-xs text-fg-muted",children:"Trend"}),g.jsx("span",{className:"data-box data-box-compact",children:g.jsxs("span",{className:"flex items-center gap-1",children:[yf(W),g.jsx("span",{className:"text-fg-secondary capitalize",children:W})]})})]}),J>0&&g.jsx(Gn,{label:"Unique traces",value:J.toString(),tooltip:sA})]}),O.length>0&&g.jsxs("div",{className:"px-3 py-2 flex-1 min-h-0 flex flex-col",children:[g.jsxs("p",{className:"type-micro text-fg-secondary mb-1 shrink-0",children:["Source packets (",O.length,")"]}),g.jsx("div",{className:"overflow-y-auto flex-1 min-h-0 overscroll-contain",style:{scrollbarGutter:"stable"},children:O.map((cA,lA)=>{const TA=Al(cA),MA=TA?el(cA,TA):null,WA=MA?Math.max(0,MA.length-1):0,ae=MA?MA.map(UA=>(p==null?void 0:p.get(UA))??UA).join(" → "):null,JA=Q===lA,ZA=cA.id??`${cA.packet_hash}-${cA.timestamp}`;return g.jsxs("div",{className:"rounded-sm",style:lA%2===1?xf:void 0,children:[g.jsxs("button",{onClick:()=>D(JA?null:lA),className:"flex items-center gap-1.5 py-[3px] px-1 w-full text-left text-[10px] font-mono text-fg-secondary hover:text-fg-primary transition-colors group",children:[JA?g.jsx(ko,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"}):g.jsx(yu,{className:"w-2.5 h-2.5 text-fg-muted shrink-0 opacity-0 group-hover:opacity-100 transition-opacity"}),g.jsx("span",{className:"text-fg-muted w-[52px] shrink-0",children:xi(cA.timestamp)}),ae?g.jsx("span",{className:"text-fg-secondary truncate min-w-0",title:MA.join(" → "),children:ae}):g.jsx("span",{className:"text-fg-muted truncate min-w-0 italic",children:"path n/a"}),g.jsxs("span",{className:"text-fg-muted shrink-0",children:[WA,"h"]}),cA.snr!=null&&g.jsx("span",{className:`shrink-0 tabular-nums ${fn(cA.snr,E)}`,children:cA.snr.toFixed(1)})]}),JA&&g.jsxs("div",{className:"mb-1 mt-0.5 mx-1 pl-2 border-l border-edge-subtle space-y-0.5 text-[10px]",children:[cA.rssi!=null&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"RSSI"}),g.jsxs("span",{className:"font-mono tabular-nums text-fg-secondary",children:[cA.rssi," dBm"]})]}),cA.snr!=null&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"SNR"}),g.jsxs("span",{className:`font-mono tabular-nums ${fn(cA.snr,E)}`,children:[cA.snr.toFixed(1)," dB"]})]}),g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"Route"}),g.jsx("span",{className:"font-mono text-fg-secondary",children:Ca(cA.route??cA.route_type)})]}),cA.packet_hash&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"Hash"}),g.jsxs("button",{onClick:UA=>{UA.stopPropagation(),Us(cA.packet_hash)},className:"flex items-center gap-1 font-mono text-fg-secondary hover:text-fg-primary transition-colors",title:"Copy packet hash",children:[g.jsx("span",{className:"truncate max-w-[120px]",children:cA.packet_hash}),g.jsx(Gs,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"})]})]}),cA.src_hash&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"Source"}),g.jsx("span",{className:"font-mono text-fg-secondary truncate max-w-[140px]",title:cA.src_hash,children:cA.src_hash})]}),MA&&MA.length>0&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"Path"}),g.jsx("span",{className:"font-mono text-fg-secondary truncate max-w-[140px]",title:MA.join(" → "),children:MA.join(" → ")})]})]})]},ZA)})})]})]})})}const vf={getItem:c=>{try{return localStorage.getItem(c)}catch{return null}},setItem:(c,u)=>{try{localStorage.setItem(c,u)}catch{}},removeItem:c=>{try{localStorage.removeItem(c)}catch{}}},tl=Eo()(ou(c=>({isEnabled:!1,toggle:()=>c(u=>({isEnabled:!u.isEnabled})),setEnabled:u=>c({isEnabled:u})}),{name:"pymc-live-trace",storage:lu(()=>vf)})),bf=()=>tl(c=>c.isEnabled),kf=()=>tl(c=>c.toggle);var jt=(function(c){c=c||{};var u=typeof c<"u"?c:{},p={},y;for(y in u)u.hasOwnProperty(y)&&(p[y]=u[y]);var x="";function C(rA){return u.locateFile?u.locateFile(rA,x):x+rA}var T;typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),x.indexOf("blob:")!==0?x=x.substr(0,x.lastIndexOf("/")+1):x="",T=function(pA,IA,xA){var t=new XMLHttpRequest;t.open("GET",pA,!0),t.responseType="arraybuffer",t.onload=function(){if(t.status==200||t.status==0&&t.response){IA(t.response);return}var ge=f0(pA);if(ge){IA(ge.buffer);return}xA()},t.onerror=xA,t.send(null)};var Q=u.print||console.log.bind(console),D=u.printErr||console.warn.bind(console);for(y in p)p.hasOwnProperty(y)&&(u[y]=p[y]);p=null,u.arguments&&u.arguments;var E=0,P=function(rA){E=rA},O=function(){return E},z=8;function V(rA,pA,IA,xA){switch(IA=IA||"i8",IA.charAt(IA.length-1)==="*"&&(IA="i32"),IA){case"i1":bA[rA>>0]=pA;break;case"i8":bA[rA>>0]=pA;break;case"i16":NA[rA>>1]=pA;break;case"i32":GA[rA>>2]=pA;break;case"i64":ot=[pA>>>0,(ze=pA,+Ce(ze)>=1?ze>0?(Ke(+pe(ze/4294967296),4294967295)|0)>>>0:~~+Se((ze-+(~~ze>>>0))/4294967296)>>>0:0)],GA[rA>>2]=ot[0],GA[rA+4>>2]=ot[1];break;case"float":kA[rA>>2]=pA;break;case"double":cA[rA>>3]=pA;break;default:ht("invalid type for setValue: "+IA)}}function W(rA,pA,IA){switch(pA=pA||"i8",pA.charAt(pA.length-1)==="*"&&(pA="i32"),pA){case"i1":return bA[rA>>0];case"i8":return bA[rA>>0];case"i16":return NA[rA>>1];case"i32":return GA[rA>>2];case"i64":return GA[rA>>2];case"float":return kA[rA>>2];case"double":return cA[rA>>3];default:ht("invalid type for getValue: "+pA)}return null}var oA=!1;function J(rA,pA){rA||ht("Assertion failed: "+pA)}function eA(rA){var pA=u["_"+rA];return J(pA,"Cannot call unknown function "+rA+", make sure it is exported"),pA}function Z(rA,pA,IA,xA,t){var k={string:function(ie){var et=0;if(ie!=null&&ie!==0){var Lt=(ie.length<<2)+1;et=at(Lt),RA(ie,et,Lt)}return et},array:function(ie){var et=at(ie.length);return DA(ie,et),et}};function ge(ie){return pA==="string"?iA(ie):pA==="boolean"?!!ie:ie}var De=eA(rA),He=[],$A=0;if(xA)for(var ye=0;ye=xA);)++t;if(t-pA>16&&rA.subarray&&sA)return sA.decode(rA.subarray(pA,t));for(var k="";pA>10,56320|$A&1023)}}return k}function iA(rA,pA){return rA?vA(LA,rA,pA):""}function fA(rA,pA,IA,xA){if(!(xA>0))return 0;for(var t=IA,k=IA+xA-1,ge=0;ge=55296&&De<=57343){var He=rA.charCodeAt(++ge);De=65536+((De&1023)<<10)|He&1023}if(De<=127){if(IA>=k)break;pA[IA++]=De}else if(De<=2047){if(IA+1>=k)break;pA[IA++]=192|De>>6,pA[IA++]=128|De&63}else if(De<=65535){if(IA+2>=k)break;pA[IA++]=224|De>>12,pA[IA++]=128|De>>6&63,pA[IA++]=128|De&63}else{if(IA+3>=k)break;pA[IA++]=240|De>>18,pA[IA++]=128|De>>12&63,pA[IA++]=128|De>>6&63,pA[IA++]=128|De&63}}return pA[IA]=0,IA-t}function RA(rA,pA,IA){return fA(rA,LA,pA,IA)}typeof TextDecoder<"u"&&new TextDecoder("utf-16le");function DA(rA,pA){bA.set(rA,pA)}function EA(rA,pA){return rA%pA>0&&(rA+=pA-rA%pA),rA}var yA,bA,LA,NA,GA,kA,cA;function lA(rA){yA=rA,u.HEAP8=bA=new Int8Array(rA),u.HEAP16=NA=new Int16Array(rA),u.HEAP32=GA=new Int32Array(rA),u.HEAPU8=LA=new Uint8Array(rA),u.HEAPU16=new Uint16Array(rA),u.HEAPU32=new Uint32Array(rA),u.HEAPF32=kA=new Float32Array(rA),u.HEAPF64=cA=new Float64Array(rA)}var TA=5271536,MA=28624,WA=u.TOTAL_MEMORY||33554432;u.buffer?yA=u.buffer:yA=new ArrayBuffer(WA),WA=yA.byteLength,lA(yA),GA[MA>>2]=TA;function ae(rA){for(;rA.length>0;){var pA=rA.shift();if(typeof pA=="function"){pA();continue}var IA=pA.func;typeof IA=="number"?pA.arg===void 0?u.dynCall_v(IA):u.dynCall_vi(IA,pA.arg):IA(pA.arg===void 0?null:pA.arg)}}var JA=[],ZA=[],UA=[],Ie=[];function Le(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)Ye(u.preRun.shift());ae(JA)}function se(){ae(ZA)}function me(){ae(UA)}function ue(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)ke(u.postRun.shift());ae(Ie)}function Ye(rA){JA.unshift(rA)}function ke(rA){Ie.unshift(rA)}var Ce=Math.abs,Se=Math.ceil,pe=Math.floor,Ke=Math.min,$e=0,qe=null;function Xe(rA){$e++,u.monitorRunDependencies&&u.monitorRunDependencies($e)}function vt(rA){if($e--,u.monitorRunDependencies&&u.monitorRunDependencies($e),$e==0&&qe){var pA=qe;qe=null,pA()}}u.preloadedImages={},u.preloadedAudios={};var Qe=null,Je="data:application/octet-stream;base64,";function Be(rA){return String.prototype.startsWith?rA.startsWith(Je):rA.indexOf(Je)===0}var ze,ot;Qe="data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAAQAAAAQAAAADAAAABgAAAAUAAAACAAAAAAAAAAIAAAADAAAAAQAAAAQAAAAGAAAAAAAAAAUAAAADAAAABgAAAAQAAAAFAAAAAAAAAAEAAAACAAAABAAAAAUAAAAGAAAAAAAAAAIAAAADAAAAAQAAAAUAAAACAAAAAAAAAAEAAAADAAAABgAAAAQAAAAGAAAAAAAAAAUAAAACAAAAAQAAAAQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAAAAAAEAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAYAAAAAAAAABQAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAYAAAAAAAAAAwAAAAIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFAAAABAAAAAAAAAABAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAYAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAADAAAACAAAAAEAAAAHAAAABgAAAAkAAAAAAAAAAwAAAAIAAAACAAAA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AAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAUAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAUAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAD//////////wEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAAAAAAAAAAABAAAAAgAAAAYAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAAFAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAGAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAAAAAAAAAAAAAEAAAAEAAAACAAAAAoAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAAAAAAAAAAAAQAAAAsAAAAPAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAwAAAAQAAAADAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAAAAAAAAAAABAAAACgAAABMAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAAAAAAAAEAAAANAAAAEQAAAA0AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAACAAAAAAAAAAAAAAABAAAADgAAABIAAAAPAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABIAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAAAAAAAAQAAAP//////////EwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAASAAAAAAAAABgAAAAAAAAAIQAAAAAAAAAeAAAAAAAAACAAAAADAAAAMQAAAAEAAAAwAAAAAwAAADIAAAADAAAACAAAAAAAAAAFAAAABQAAAAoAAAAFAAAAFgAAAAAAAAAQAAAAAAAAABIAAAAAAAAAKQAAAAEAAAAhAAAAAAAAAB4AAAAAAAAABAAAAAAAAAAAAAAABQAAAAIAAAAFAAAADwAAAAEAAAAIAAAAAAAAAAUAAAAFAAAAHwAAAAEAAAAWAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAA4AAAAAAAAACgAAAAAAAAALAAAAAAAAABEAAAADAAAAGAAAAAEAAAAXAAAAAwAAABkAAAADAAAAAAAAAAAAAAABAAAABQAAAAkAAAAFAAAABQAAAAAAAAACAAAAAAAAAAYAAAAAAAAAEgAAAAEAAAAKAAAAAAAAAAsAAAAAAAAABAAAAAEAAAADAAAABQAAAAcAAAAFAAAACAAAAAEAAAAAAAAAAAAAAAEAAAAFAAAAEAAAAAEAAAAFAAAAAAAAAAIAAAAAAAAABwAAAAAAAAAVAAAAAAAAACYAAAAAAAAACQAAAAAAAAATAAAAAAAAACIAAAADAAAADgAAAAEAAAAUAAAAAwAAACQAAAADAAAAAwAAAAAAAAANAAAABQAAAB0AAAAFAAAAAQAAAAAAAAAHAAAAAAAAABUAAAAAAAAABgAAAAEAAAAJAAAAAAAAABMAAAAAAAAABAAAAAIAAAAMAAAA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Zhu25b633D8c1YgmzowSQNM25BRKWARArGS08/lNxD+LFssHwmMRQLC5aNcxBgJABL9HT0WRF0CjCmJmOGEOQHsuaVzMP/s/TWJCaGGwBUCeu1PAPLzjP9nqN9DZOBNAKE4JcydbCkCGtbd1qjPzP8dgm9U8jhVAtPeKTkVwDkCeCLss5l37P401XMPLmBdAFd29VMVQDUBg0yA55h75Pz6odcYLCRdApBM4rBrkAkDyAVWgQxbRP4XDMnK20hFAymLlF7EmzD8GUgo9XBHlP3lbK7T9COc/k+OhPthhy7+YGEpnrOvCPzBFhLs15u4/epbqB6H4uz9IuuLF5svev6lzLKY31es/CaQ0envF5z8ZY0xlUADXv7zaz7HYEuI/CfbK1sn16T8uAQfWwxLWPzKn/YuFN94/5KdbC1AFu793fyCSnlfvPzK2y4doAMY/NRg5t1/X6b/shq4QJaHDP5yNIAKPOeI/vpn7BSE30r/X4YQrO6nrv78Ziv/Thto/DqJ1Y6+y5z9l51NaxFrlv8QlA65HOLS/86dxiEc96z+Hj0+LFjneP6LzBZ8LTc2/DaJ1Y6+y579l51NaxFrlP8QlA65HOLQ/8qdxiEc967+Jj0+LFjnev6LzBZ8LTc0/1qdbC1AFuz93fyCSnlfvvzK2y4doAMa/NRg5t1/X6T/vhq4QJaHDv5yNIAKPOeK/wJn7BSE30j/W4YQrO6nrP78Ziv/Thtq/CaQ0envF578XY0xlUADXP7zaz7HYEuK/CvbK1sn16b8rAQfWwxLWvzKn/YuFN96/zWLlF7EmzL8GUgo9XBHlv3lbK7T9COe/kOOhPthhyz+cGEpnrOvCvzBFhLs15u6/c5bqB6H4u79IuuLF5sveP6lzLKY31eu/AQAAAP////8HAAAA/////zEAAAD/////VwEAAP////9hCQAA/////6dBAAD/////kcsBAP/////3kAwA/////8H2VwAAAAAAAAAAAAAAAAACAAAA/////w4AAAD/////YgAAAP////+uAgAA/////8ISAAD/////ToMAAP////8ilwMA/////+4hGQD/////gu2vAAAAAAAAAAAAAAAAAAAAAAACAAAA//////////8BAAAAAwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////AgAAAP//////////AQAAAAAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD/////////////////////AQAAAP///////////////wIAAAD///////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP///////////////////////////////wIAAAD///////////////8BAAAA/////////////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAABAAAA//////////8CAAAA//////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAAAQAAAP//////////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAAAAAAAAAAIAAAABAAAAAQAAAAIAAAACAAAAAAAAAAUAAAAFAAAAAAAAAAIAAAACAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAEAAAACAAAAAgAAAAIAAAAAAAAABQAAAAYAAAAAAAAAAgAAAAIAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAACAAAAAQAAAAMAAAACAAAAAgAAAAAAAAAFAAAABwAAAAAAAAACAAAAAgAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAIAAAABAAAABAAAAAIAAAACAAAAAAAAAAUAAAAIAAAAAAAAAAIAAAACAAAAAwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAIAAAAAAAAAAgAAAAEAAAAAAAAAAgAAAAIAAAAAAAAABQAAAAkAAAAAAAAAAgAAAAIAAAADAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAIAAAAAAAAAAwAAAA4AAAACAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAgAAAAMAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAgAAAAAAAAADAAAACgAAAAIAAAAAAAAAAgAAAAMAAAABAAAAAAAAAAIAAAACAAAAAwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAACAAAAAAAAAAMAAAALAAAAAgAAAAAAAAACAAAAAwAAAAIAAAAAAAAAAgAAAAIAAAADAAAACAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAIAAAAAAAAAAwAAAAwAAAACAAAAAAAAAAIAAAADAAAAAwAAAAAAAAACAAAAAgAAAAMAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAACAAAAAgAAAAAAAAADAAAADQAAAAIAAAAAAAAAAgAAAAMAAAAEAAAAAAAAAAIAAAACAAAAAwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAACAAAAAAAAAAMAAAAGAAAAAgAAAAAAAAACAAAAAwAAAA8AAAAAAAAAAgAAAAIAAAADAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAIAAAAAAAAAAwAAAAcAAAACAAAAAAAAAAIAAAADAAAAEAAAAAAAAAACAAAAAgAAAAMAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAgAAAAAAAAADAAAACAAAAAIAAAAAAAAAAgAAAAMAAAARAAAAAAAAAAIAAAACAAAAAwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAACAAAAAAAAAAMAAAAJAAAAAgAAAAAAAAACAAAAAwAAABIAAAAAAAAAAgAAAAIAAAADAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAgAAAAIAAAAAAAAAAwAAAAUAAAACAAAA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ZV0gPT0gS0kAZmFjZWlqay5jAF9mYWNlSWprUGVudFRvQ2VsbEJvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9DZWxsQm91bmRhcnkAaDNJbmRleC5jAGNvbXBhY3RDZWxscwBsYXRMbmdUb0NlbGwAY2VsbFRvQ2hpbGRQb3MAdmFsaWRhdGVDaGlsZFBvcwBsYXRMbmcuYwBjZWxsQXJlYVJhZHMyAHBvbHlnb24tPm5leHQgPT0gTlVMTABsaW5rZWRHZW8uYwBhZGROZXdMaW5rZWRQb2x5Z29uAG5leHQgIT0gTlVMTABsb29wICE9IE5VTEwAYWRkTmV3TGlua2VkTG9vcABwb2x5Z29uLT5maXJzdCA9PSBOVUxMAGFkZExpbmtlZExvb3AAY29vcmQgIT0gTlVMTABhZGRMaW5rZWRDb29yZABsb29wLT5maXJzdCA9PSBOVUxMAGlubmVyTG9vcHMgIT0gTlVMTABub3JtYWxpemVNdWx0aVBvbHlnb24AYmJveGVzICE9IE5VTEwAY2FuZGlkYXRlcyAhPSBOVUxMAGZpbmRQb2x5Z29uRm9ySG9sZQBjYW5kaWRhdGVCQm94ZXMgIT0gTlVMTAByZXZEaXIgIT0gSU5WQUxJRF9ESUdJVABsb2NhbGlqLmMAY2VsbFRvTG9jYWxJamsAYmFzZUNlbGwgIT0gb3JpZ2luQmFzZUNlbGwAIShvcmlnaW5PblBlbnQgJiYgaW5kZXhPblBlbnQpAGJhc2VDZWxsID09IG9yaWdpbkJhc2VDZWxsAGJhc2VDZWxsICE9IElOVkFMSURfQkFTRV9DRUxMAGxvY2FsSWprVG9DZWxsACFfaXNCYXNlQ2VsbFBlbnRhZ29uKGJhc2VDZWxsKQBiYXNlQ2VsbFJvdGF0aW9ucyA+PSAwAGdyaWRQYXRoQ2VsbHMAcG9seWZpbGwuYwBpdGVyU3RlcFBvbHlnb25Db21wYWN0ADAAdmVydGV4LmMAdmVydGV4Um90YXRpb25zAGNlbGxUb1ZlcnRleABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl";var Rt=28640;function b0(rA,pA,IA,xA){ht("Assertion failed: "+iA(rA)+", at: "+[pA?iA(pA):"unknown filename",IA,xA?iA(xA):"unknown function"])}function Yt(){return bA.length}function Kt(rA,pA,IA){LA.set(LA.subarray(pA,pA+IA),rA)}function L0(rA){return u.___errno_location&&(GA[u.___errno_location()>>2]=rA),rA}function er(rA){ht("OOM")}function k0(rA){try{var pA=new ArrayBuffer(rA);return pA.byteLength!=rA?void 0:(new Int8Array(pA).set(bA),d0(pA),lA(pA),1)}catch{}}function zt(rA){var pA=Yt(),IA=16777216,xA=2147483648-IA;if(rA>xA)return!1;for(var t=16777216,k=Math.max(pA,t);k>4,t=(De&15)<<4|He>>2,k=(He&3)<<6|$A,IA=IA+String.fromCharCode(xA),He!==64&&(IA=IA+String.fromCharCode(t)),$A!==64&&(IA=IA+String.fromCharCode(k));while(ye13780509?(A=bn(15,A)|0,A|0):(r=((e|0)<0)<<31>>31,s=ft(e|0,r|0,3,0)|0,n=S()|0,r=KA(e|0,r|0,1,0)|0,r=ft(s|0,n|0,r|0,S()|0)|0,r=KA(r|0,S()|0,1,0)|0,e=S()|0,t[A>>2]=r,t[A+4>>2]=e,A=0,A|0)}function v(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,_(e,A,r,n,0)|0}function _(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0;if(a=b,b=b+16|0,o=a,!(F(e,A,r,n,s)|0))return n=0,b=a,n|0;do if((r|0)>=0){if((r|0)>13780509){if(i=bn(15,o)|0,i|0)break;l=o,o=t[l>>2]|0,l=t[l+4>>2]|0}else i=((r|0)<0)<<31>>31,f=ft(r|0,i|0,3,0)|0,l=S()|0,i=KA(r|0,i|0,1,0)|0,i=ft(f|0,l|0,i|0,S()|0)|0,i=KA(i|0,S()|0,1,0)|0,l=S()|0,t[o>>2]=i,t[o+4>>2]=l,o=i;if(W0(n|0,0,o<<3|0)|0,s|0){W0(s|0,0,o<<2|0)|0,i=X(e,A,r,n,s,o,l,0)|0;break}i=Qt(o,4)|0,i?(f=X(e,A,r,n,i,o,l,0)|0,qA(i),i=f):i=13}else i=2;while(!1);return f=i,b=a,f|0}function F(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0;if(G=b,b=b+16|0,I=G,L=G+8|0,R=I,t[R>>2]=e,t[R+4>>2]=A,(r|0)<0)return L=2,b=G,L|0;if(i=n,t[i>>2]=e,t[i+4>>2]=A,i=(s|0)!=0,i&&(t[s>>2]=0),Oe(e,A)|0)return L=9,b=G,L|0;t[L>>2]=0;A:do if((r|0)>=1)if(i)for(m=1,f=0,M=0,R=1,i=e;;){if(!(f|M)){if(i=K(i,A,4,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,Oe(i,A)|0){i=9;break A}}if(i=K(i,A,t[26800+(M<<2)>>2]|0,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(m<<3)|0,t[e>>2]=i,t[e+4>>2]=A,t[s+(m<<2)>>2]=R,e=f+1|0,o=(e|0)==(R|0),l=M+1|0,a=(l|0)==6,Oe(i,A)|0){i=9;break A}if(R=R+(a&o&1)|0,(R|0)>(r|0)){i=0;break}else m=m+1|0,f=o?0:e,M=o?a?0:l:M}else for(m=1,f=0,M=0,R=1,i=e;;){if(!(f|M)){if(i=K(i,A,4,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,Oe(i,A)|0){i=9;break A}}if(i=K(i,A,t[26800+(M<<2)>>2]|0,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(m<<3)|0,t[e>>2]=i,t[e+4>>2]=A,e=f+1|0,o=(e|0)==(R|0),l=M+1|0,a=(l|0)==6,Oe(i,A)|0){i=9;break A}if(R=R+(a&o&1)|0,(R|0)>(r|0)){i=0;break}else m=m+1|0,f=o?0:e,M=o?a?0:l:M}else i=0;while(!1);return L=i,b=G,L|0}function X(e,A,r,n,s,i,o,l){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0,o=o|0,l=l|0;var a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0;if(G=b,b=b+16|0,I=G+8|0,L=G,a=Rr(e|0,A|0,i|0,o|0)|0,m=S()|0,M=n+(a<<3)|0,Y=M,nA=t[Y>>2]|0,Y=t[Y+4>>2]|0,f=(nA|0)==(e|0)&(Y|0)==(A|0),!((nA|0)==0&(Y|0)==0|f))do a=KA(a|0,m|0,1,0)|0,a=jr(a|0,S()|0,i|0,o|0)|0,m=S()|0,M=n+(a<<3)|0,nA=M,Y=t[nA>>2]|0,nA=t[nA+4>>2]|0,f=(Y|0)==(e|0)&(nA|0)==(A|0);while(!((Y|0)==0&(nA|0)==0|f));if(a=s+(a<<2)|0,f&&(t[a>>2]|0)<=(l|0)||(nA=M,t[nA>>2]=e,t[nA+4>>2]=A,t[a>>2]=l,(l|0)>=(r|0)))return nA=0,b=G,nA|0;switch(f=l+1|0,t[I>>2]=0,a=K(e,A,2,I,L)|0,a|0){case 9:{R=9;break}case 0:{a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a||(R=9);break}}A:do if((R|0)==9){switch(t[I>>2]=0,a=K(e,A,3,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=K(e,A,1,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=K(e,A,5,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=K(e,A,4,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=K(e,A,6,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}return nA=0,b=G,nA|0}while(!1);return nA=a,b=G,nA|0}function K(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0;if(r>>>0>6)return s=1,s|0;if(M=(t[n>>2]|0)%6|0,t[n>>2]=M,(M|0)>0){i=0;do r=Gt(r)|0,i=i+1|0;while((i|0)<(t[n>>2]|0))}if(M=wA(e|0,A|0,45)|0,S()|0,m=M&127,m>>>0>121)return s=5,s|0;a=Pt(e,A)|0,i=wA(e|0,A|0,52)|0,S()|0,i=i&15;A:do if(!i)f=8;else{for(;;){if(o=(15-i|0)*3|0,l=wA(e|0,A|0,o|0)|0,S()|0,l=l&7,(l|0)==7){A=5;break}if(L=(Jt(i)|0)==0,i=i+-1|0,R=CA(7,0,o|0)|0,A=A&~(S()|0),I=CA(t[(L?432:16)+(l*28|0)+(r<<2)>>2]|0,0,o|0)|0,o=S()|0,r=t[(L?640:224)+(l*28|0)+(r<<2)>>2]|0,e=I|e&~R,A=o|A,!r){r=0;break A}if(!i){f=8;break A}}return A|0}while(!1);(f|0)==8&&(L=t[848+(m*28|0)+(r<<2)>>2]|0,I=CA(L|0,0,45)|0,e=I|e,A=S()|0|A&-1040385,r=t[4272+(m*28|0)+(r<<2)>>2]|0,(L&127|0)==127&&(L=CA(t[848+(m*28|0)+20>>2]|0,0,45)|0,A=S()|0|A&-1040385,r=t[4272+(m*28|0)+20>>2]|0,e=lr(L|e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+1)),l=wA(e|0,A|0,45)|0,S()|0,l=l&127;A:do if(je(l)|0){e:do if((Pt(e,A)|0)==1){if((m|0)!=(l|0))if(M0(l,t[7696+(m*28|0)>>2]|0)|0){e=Jn(e,A)|0,o=1,A=S()|0;break}else OA(27795,26864,533,26872);switch(a|0){case 3:{e=lr(e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+1,o=0;break e}case 5:{e=Jn(e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+5,o=0;break e}case 0:return L=9,L|0;default:return L=1,L|0}}else o=0;while(!1);if((r|0)>0){i=0;do e=qn(e,A)|0,A=S()|0,i=i+1|0;while((i|0)!=(r|0))}if((m|0)!=(l|0)){if(!(Et(l)|0)){if((o|0)!=0|(Pt(e,A)|0)!=5)break;t[n>>2]=(t[n>>2]|0)+1;break}switch(M&127){case 8:case 118:break A}(Pt(e,A)|0)!=3&&(t[n>>2]=(t[n>>2]|0)+1)}}else if((r|0)>0){i=0;do e=lr(e,A)|0,A=S()|0,i=i+1|0;while((i|0)!=(r|0))}while(!1);return t[n>>2]=((t[n>>2]|0)+r|0)%6|0,L=s,t[L>>2]=e,t[L+4>>2]=A,L=0,L|0}function dA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,jA(e,A,r,n)|0?(W0(n|0,0,r*48|0)|0,n=XA(e,A,r,n)|0,n|0):(n=0,n|0)}function jA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0;if(L=b,b=b+16|0,R=L,I=L+8|0,M=R,t[M>>2]=e,t[M+4>>2]=A,(r|0)<0)return I=2,b=L,I|0;if(!r)return I=n,t[I>>2]=e,t[I+4>>2]=A,I=0,b=L,I|0;t[I>>2]=0;A:do if(Oe(e,A)|0)e=9;else{s=0,M=e;do{if(e=K(M,A,4,I,R)|0,e|0)break A;if(A=R,M=t[A>>2]|0,A=t[A+4>>2]|0,s=s+1|0,Oe(M,A)|0){e=9;break A}}while((s|0)<(r|0));m=n,t[m>>2]=M,t[m+4>>2]=A,m=r+-1|0,f=0,e=1;do{if(s=26800+(f<<2)|0,(f|0)==5)for(o=t[s>>2]|0,i=0,s=e;;){if(e=R,e=K(t[e>>2]|0,t[e+4>>2]|0,o,I,R)|0,e|0)break A;if((i|0)!=(m|0))if(a=R,l=t[a>>2]|0,a=t[a+4>>2]|0,e=n+(s<<3)|0,t[e>>2]=l,t[e+4>>2]=a,!(Oe(l,a)|0))e=s+1|0;else{e=9;break A}else e=s;if(i=i+1|0,(i|0)>=(r|0))break;s=e}else for(o=R,a=t[s>>2]|0,l=0,s=e,i=t[o>>2]|0,o=t[o+4>>2]|0;;){if(e=K(i,o,a,I,R)|0,e|0)break A;if(o=R,i=t[o>>2]|0,o=t[o+4>>2]|0,e=n+(s<<3)|0,t[e>>2]=i,t[e+4>>2]=o,e=s+1|0,Oe(i,o)|0){e=9;break A}if(l=l+1|0,(l|0)>=(r|0))break;s=e}f=f+1|0}while(f>>>0<6);e=R,e=(M|0)==(t[e>>2]|0)&&(A|0)==(t[e+4>>2]|0)?0:9}while(!1);return I=e,b=L,I|0}function XA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;if(M=b,b=b+16|0,o=M,!r)return t[n>>2]=e,t[n+4>>2]=A,n=0,b=M,n|0;do if((r|0)>=0){if((r|0)>13780509){if(s=bn(15,o)|0,s|0)break;i=o,s=t[i>>2]|0,i=t[i+4>>2]|0}else s=((r|0)<0)<<31>>31,m=ft(r|0,s|0,3,0)|0,i=S()|0,s=KA(r|0,s|0,1,0)|0,s=ft(m|0,i|0,s|0,S()|0)|0,s=KA(s|0,S()|0,1,0)|0,i=S()|0,m=o,t[m>>2]=s,t[m+4>>2]=i;if(f=Qt(s,8)|0,!f)s=13;else{if(m=Qt(s,4)|0,!m){qA(f),s=13;break}if(s=X(e,A,r,f,m,s,i,0)|0,s|0){qA(f),qA(m);break}if(A=t[o>>2]|0,o=t[o+4>>2]|0,(o|0)>0|(o|0)==0&A>>>0>0){s=0,l=0,a=0;do e=f+(l<<3)|0,i=t[e>>2]|0,e=t[e+4>>2]|0,!((i|0)==0&(e|0)==0)&&(t[m+(l<<2)>>2]|0)==(r|0)&&(R=n+(s<<3)|0,t[R>>2]=i,t[R+4>>2]=e,s=s+1|0),l=KA(l|0,a|0,1,0)|0,a=S()|0;while((a|0)<(o|0)|(a|0)==(o|0)&l>>>0>>0)}qA(f),qA(m),s=0}}else s=2;while(!1);return R=s,b=M,R|0}function Ae(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;for(l=b,b=b+16|0,i=l,o=l+8|0,s=(Oe(e,A)|0)==0,s=s?1:2;;){if(t[o>>2]=0,f=(K(e,A,s,o,i)|0)==0,a=i,f&((t[a>>2]|0)==(r|0)?(t[a+4>>2]|0)==(n|0):0)){e=4;break}if(s=s+1|0,s>>>0>=7){s=7,e=4;break}}return(e|0)==4?(b=l,s|0):0}function ce(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;if(l=b,b=b+48|0,s=l+16|0,i=l+8|0,o=l,r=sn(r)|0,r|0)return o=r,b=l,o|0;if(f=e,a=t[f+4>>2]|0,r=i,t[r>>2]=t[f>>2],t[r+4>>2]=a,ri(i,s),r=mA(s,A,o)|0,!r){if(A=t[i>>2]|0,i=t[e+8>>2]|0,(i|0)>0){s=t[e+12>>2]|0,r=0;do A=(t[s+(r<<3)>>2]|0)+A|0,r=r+1|0;while((r|0)<(i|0))}r=o,s=t[r>>2]|0,r=t[r+4>>2]|0,i=((A|0)<0)<<31>>31,(r|0)<(i|0)|(r|0)==(i|0)&s>>>0>>0?(r=o,t[r>>2]=A,t[r+4>>2]=i,r=i):A=s,a=KA(A|0,r|0,12,0)|0,f=S()|0,r=o,t[r>>2]=a,t[r+4>>2]=f,r=n,t[r>>2]=a,t[r+4>>2]=f,r=0}return f=r,b=l,f|0}function Ge(e,A,r,n,s,i,o){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0,o=o|0;var l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,he=0,We=0,Tt=0,pi=0;if(Ve=b,b=b+64|0,ne=Ve+48|0,HA=Ve+32|0,SA=Ve+24|0,BA=Ve+8|0,zA=Ve,a=t[e>>2]|0,(a|0)<=0)return ve=0,b=Ve,ve|0;for(QA=e+4|0,fe=ne+8|0,de=HA+8|0,Ee=BA+8|0,l=0,$=0;;){f=t[QA>>2]|0,q=f+($<<4)|0,t[ne>>2]=t[q>>2],t[ne+4>>2]=t[q+4>>2],t[ne+8>>2]=t[q+8>>2],t[ne+12>>2]=t[q+12>>2],($|0)==(a+-1|0)?(t[HA>>2]=t[f>>2],t[HA+4>>2]=t[f+4>>2],t[HA+8>>2]=t[f+8>>2],t[HA+12>>2]=t[f+12>>2]):(q=f+($+1<<4)|0,t[HA>>2]=t[q>>2],t[HA+4>>2]=t[q+4>>2],t[HA+8>>2]=t[q+8>>2],t[HA+12>>2]=t[q+12>>2]),a=FA(ne,HA,n,SA)|0;A:do if(a)f=0,l=a;else if(a=SA,f=t[a>>2]|0,a=t[a+4>>2]|0,(a|0)>0|(a|0)==0&f>>>0>0){nA=0,q=0;e:for(;;){if(We=1/(+(f>>>0)+4294967296*+(a|0)),pi=+k[ne>>3],a=ct(f|0,a|0,nA|0,q|0)|0,Tt=+(a>>>0)+4294967296*+(S()|0),he=+(nA>>>0)+4294967296*+(q|0),k[BA>>3]=We*(pi*Tt)+We*(+k[HA>>3]*he),k[Ee>>3]=We*(+k[fe>>3]*Tt)+We*(+k[de>>3]*he),a=Xn(BA,n,zA)|0,a|0){l=a;break}Y=zA,G=t[Y>>2]|0,Y=t[Y+4>>2]|0,R=Rr(G|0,Y|0,A|0,r|0)|0,m=S()|0,a=o+(R<<3)|0,M=a,f=t[M>>2]|0,M=t[M+4>>2]|0;t:do if((f|0)==0&(M|0)==0)U=a,ve=16;else for(I=0,L=0;;){if((I|0)>(r|0)|(I|0)==(r|0)&L>>>0>A>>>0){l=1;break e}if((f|0)==(G|0)&(M|0)==(Y|0))break t;if(a=KA(R|0,m|0,1,0)|0,R=jr(a|0,S()|0,A|0,r|0)|0,m=S()|0,L=KA(L|0,I|0,1,0)|0,I=S()|0,a=o+(R<<3)|0,M=a,f=t[M>>2]|0,M=t[M+4>>2]|0,(f|0)==0&(M|0)==0){U=a,ve=16;break}}while(!1);if((ve|0)==16&&(ve=0,!((G|0)==0&(Y|0)==0))&&(L=U,t[L>>2]=G,t[L+4>>2]=Y,L=i+(t[s>>2]<<3)|0,t[L>>2]=G,t[L+4>>2]=Y,L=s,L=KA(t[L>>2]|0,t[L+4>>2]|0,1,0)|0,G=S()|0,Y=s,t[Y>>2]=L,t[Y+4>>2]=G),nA=KA(nA|0,q|0,1,0)|0,q=S()|0,a=SA,f=t[a>>2]|0,a=t[a+4>>2]|0,!((a|0)>(q|0)|(a|0)==(q|0)&f>>>0>nA>>>0)){f=1;break A}}f=0}else f=1;while(!1);if($=$+1|0,!f){ve=21;break}if(a=t[e>>2]|0,($|0)>=(a|0)){l=0,ve=21;break}}return(ve|0)==21?(b=Ve,l|0):0}function kt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,he=0,We=0,Tt=0;if(Tt=b,b=b+112|0,ve=Tt+80|0,a=Tt+72|0,Ve=Tt,he=Tt+56|0,s=sn(r)|0,s|0)return We=s,b=Tt,We|0;if(f=e+8|0,We=y0((t[f>>2]<<5)+32|0)|0,!We)return We=13,b=Tt,We|0;if(is(e,We),s=sn(r)|0,!s){if(HA=e,SA=t[HA+4>>2]|0,s=a,t[s>>2]=t[HA>>2],t[s+4>>2]=SA,ri(a,ve),s=mA(ve,A,Ve)|0,s)HA=0,SA=0;else{if(s=t[a>>2]|0,i=t[f>>2]|0,(i|0)>0){o=t[e+12>>2]|0,r=0;do s=(t[o+(r<<3)>>2]|0)+s|0,r=r+1|0;while((r|0)!=(i|0));r=s}else r=s;s=Ve,i=t[s>>2]|0,s=t[s+4>>2]|0,o=((r|0)<0)<<31>>31,(s|0)<(o|0)|(s|0)==(o|0)&i>>>0>>0?(s=Ve,t[s>>2]=r,t[s+4>>2]=o,s=o):r=i,HA=KA(r|0,s|0,12,0)|0,SA=S()|0,s=Ve,t[s>>2]=HA,t[s+4>>2]=SA,s=0}if(!s){if(r=Qt(HA,8)|0,!r)return qA(We),We=13,b=Tt,We|0;if(l=Qt(HA,8)|0,!l)return qA(We),qA(r),We=13,b=Tt,We|0;Ee=ve,t[Ee>>2]=0,t[Ee+4>>2]=0,Ee=e,ne=t[Ee+4>>2]|0,s=a,t[s>>2]=t[Ee>>2],t[s+4>>2]=ne,s=Ge(a,HA,SA,A,ve,r,l)|0;A:do if(s)qA(r),qA(l),qA(We);else{e:do if((t[f>>2]|0)>0){for(o=e+12|0,i=0;s=Ge((t[o>>2]|0)+(i<<3)|0,HA,SA,A,ve,r,l)|0,i=i+1|0,!(s|0);)if((i|0)>=(t[f>>2]|0))break e;qA(r),qA(l),qA(We);break A}while(!1);(SA|0)>0|(SA|0)==0&HA>>>0>0&&W0(l|0,0,HA<<3|0)|0,ne=ve,Ee=t[ne+4>>2]|0;e:do if((Ee|0)>0|(Ee|0)==0&(t[ne>>2]|0)>>>0>0){QA=r,fe=l,de=r,Ee=l,ne=r,s=r,U=r,BA=l,zA=l,r=l;t:for(;;){for(Y=0,nA=0,q=0,$=0,i=0,o=0;;){l=Ve,a=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));if(A=QA+(Y<<3)|0,f=t[A>>2]|0,A=t[A+4>>2]|0,F(f,A,1,Ve,0)|0){l=Ve,a=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));l=Qt(7,4)|0,l|0&&(X(f,A,1,Ve,l,7,0,0)|0,qA(l))}for(G=0;;){L=Ve+(G<<3)|0,I=t[L>>2]|0,L=t[L+4>>2]|0;r:do if((I|0)==0&(L|0)==0)l=i,a=o;else{if(m=Rr(I|0,L|0,HA|0,SA|0)|0,f=S()|0,l=n+(m<<3)|0,A=l,a=t[A>>2]|0,A=t[A+4>>2]|0,!((a|0)==0&(A|0)==0)){M=0,R=0;do{if((M|0)>(SA|0)|(M|0)==(SA|0)&R>>>0>HA>>>0)break t;if((a|0)==(I|0)&(A|0)==(L|0)){l=i,a=o;break r}l=KA(m|0,f|0,1,0)|0,m=jr(l|0,S()|0,HA|0,SA|0)|0,f=S()|0,R=KA(R|0,M|0,1,0)|0,M=S()|0,l=n+(m<<3)|0,A=l,a=t[A>>2]|0,A=t[A+4>>2]|0}while(!((a|0)==0&(A|0)==0))}if((I|0)==0&(L|0)==0){l=i,a=o;break}ar(I,L,he)|0,os(e,We,he)|0&&(R=KA(i|0,o|0,1,0)|0,o=S()|0,M=l,t[M>>2]=I,t[M+4>>2]=L,i=fe+(i<<3)|0,t[i>>2]=I,t[i+4>>2]=L,i=R),l=i,a=o}while(!1);if(G=G+1|0,G>>>0>=7)break;i=l,o=a}if(Y=KA(Y|0,nA|0,1,0)|0,nA=S()|0,q=KA(q|0,$|0,1,0)|0,$=S()|0,o=ve,i=t[o>>2]|0,o=t[o+4>>2]|0,($|0)<(o|0)|($|0)==(o|0)&q>>>0>>0)i=l,o=a;else break}if((o|0)>0|(o|0)==0&i>>>0>0){i=0,o=0;do $=QA+(i<<3)|0,t[$>>2]=0,t[$+4>>2]=0,i=KA(i|0,o|0,1,0)|0,o=S()|0,$=ve,q=t[$+4>>2]|0;while((o|0)<(q|0)|((o|0)==(q|0)?i>>>0<(t[$>>2]|0)>>>0:0))}if($=ve,t[$>>2]=l,t[$+4>>2]=a,(a|0)>0|(a|0)==0&l>>>0>0)G=r,Y=zA,nA=ne,q=BA,$=fe,r=U,zA=s,BA=de,U=G,s=Y,ne=Ee,Ee=nA,de=q,fe=QA,QA=$;else break e}qA(de),qA(Ee),qA(We),s=1;break A}else s=l;while(!1);qA(We),qA(r),qA(s),s=0}while(!1);return We=s,b=Tt,We|0}}return qA(We),We=s,b=Tt,We|0}function Ct(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(m=b,b=b+176|0,a=m,(A|0)<1)return ai(r,0,0),f=0,b=m,f|0;for(l=e,l=wA(t[l>>2]|0,t[l+4>>2]|0,52)|0,S()|0,ai(r,(A|0)>6?A:6,l&15),l=0;n=e+(l<<3)|0,n=_r(t[n>>2]|0,t[n+4>>2]|0,a)|0,!(n|0);){if(n=t[a>>2]|0,(n|0)>0){o=0;do i=a+8+(o<<4)|0,o=o+1|0,n=a+8+(((o|0)%(n|0)|0)<<4)|0,s=sa(r,n,i)|0,s?fi(r,s)|0:na(r,i,n)|0,n=t[a>>2]|0;while((o|0)<(n|0))}if(l=l+1|0,(l|0)>=(A|0)){n=0,f=13;break}}return(f|0)==13?(b=m,n|0):(ui(r),f=n,b=m,f|0)}function pt(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;if(i=b,b=b+32|0,n=i,s=i+16|0,e=Ct(e,A,s)|0,e|0)return r=e,b=i,r|0;if(t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,e=ci(s)|0,e|0)do{A=Il(r)|0;do Ll(A,e)|0,o=e+16|0,t[n>>2]=t[o>>2],t[n+4>>2]=t[o+4>>2],t[n+8>>2]=t[o+8>>2],t[n+12>>2]=t[o+12>>2],fi(s,e)|0,e=ia(s,n)|0;while((e|0)!=0);e=ci(s)|0}while((e|0)!=0);return ui(s),e=Nl(r)|0,e?(Xs(r),o=e,b=i,o|0):(o=0,b=i,o|0)}function je(e){return e=e|0,e>>>0>121?(e=0,e|0):(e=t[7696+(e*28|0)+16>>2]|0,e|0)}function Et(e){return e=e|0,(e|0)==4|(e|0)==117|0}function g0(e){return e=e|0,t[11120+((t[e>>2]|0)*216|0)+((t[e+4>>2]|0)*72|0)+((t[e+8>>2]|0)*24|0)+(t[e+12>>2]<<3)>>2]|0}function u0(e){return e=e|0,t[11120+((t[e>>2]|0)*216|0)+((t[e+4>>2]|0)*72|0)+((t[e+8>>2]|0)*24|0)+(t[e+12>>2]<<3)+4>>2]|0}function z0(e,A){e=e|0,A=A|0,e=7696+(e*28|0)|0,t[A>>2]=t[e>>2],t[A+4>>2]=t[e+4>>2],t[A+8>>2]=t[e+8>>2],t[A+12>>2]=t[e+12>>2]}function qt(e,A){e=e|0,A=A|0;var r=0,n=0;if(A>>>0>20)return A=-1,A|0;do if((t[11120+(A*216|0)>>2]|0)!=(e|0))if((t[11120+(A*216|0)+8>>2]|0)!=(e|0))if((t[11120+(A*216|0)+16>>2]|0)!=(e|0))if((t[11120+(A*216|0)+24>>2]|0)!=(e|0))if((t[11120+(A*216|0)+32>>2]|0)!=(e|0))if((t[11120+(A*216|0)+40>>2]|0)!=(e|0))if((t[11120+(A*216|0)+48>>2]|0)!=(e|0))if((t[11120+(A*216|0)+56>>2]|0)!=(e|0))if((t[11120+(A*216|0)+64>>2]|0)!=(e|0))if((t[11120+(A*216|0)+72>>2]|0)!=(e|0))if((t[11120+(A*216|0)+80>>2]|0)!=(e|0))if((t[11120+(A*216|0)+88>>2]|0)!=(e|0))if((t[11120+(A*216|0)+96>>2]|0)!=(e|0))if((t[11120+(A*216|0)+104>>2]|0)!=(e|0))if((t[11120+(A*216|0)+112>>2]|0)!=(e|0))if((t[11120+(A*216|0)+120>>2]|0)!=(e|0))if((t[11120+(A*216|0)+128>>2]|0)!=(e|0))if((t[11120+(A*216|0)+136>>2]|0)==(e|0))e=2,r=1,n=2;else{if((t[11120+(A*216|0)+144>>2]|0)==(e|0)){e=0,r=2,n=0;break}if((t[11120+(A*216|0)+152>>2]|0)==(e|0)){e=0,r=2,n=1;break}if((t[11120+(A*216|0)+160>>2]|0)==(e|0)){e=0,r=2,n=2;break}if((t[11120+(A*216|0)+168>>2]|0)==(e|0)){e=1,r=2,n=0;break}if((t[11120+(A*216|0)+176>>2]|0)==(e|0)){e=1,r=2,n=1;break}if((t[11120+(A*216|0)+184>>2]|0)==(e|0)){e=1,r=2,n=2;break}if((t[11120+(A*216|0)+192>>2]|0)==(e|0)){e=2,r=2,n=0;break}if((t[11120+(A*216|0)+200>>2]|0)==(e|0)){e=2,r=2,n=1;break}if((t[11120+(A*216|0)+208>>2]|0)==(e|0)){e=2,r=2,n=2;break}else e=-1;return e|0}else e=2,r=1,n=1;else e=2,r=1,n=0;else e=1,r=1,n=2;else e=1,r=1,n=1;else e=1,r=1,n=0;else e=0,r=1,n=2;else e=0,r=1,n=1;else e=0,r=1,n=0;else e=2,r=0,n=2;else e=2,r=0,n=1;else e=2,r=0,n=0;else e=1,r=0,n=2;else e=1,r=0,n=1;else e=1,r=0,n=0;else e=0,r=0,n=2;else e=0,r=0,n=1;else e=0,r=0,n=0;while(!1);return A=t[11120+(A*216|0)+(r*72|0)+(e*24|0)+(n<<3)+4>>2]|0,A|0}function M0(e,A){return e=e|0,A=A|0,(t[7696+(e*28|0)+20>>2]|0)==(A|0)?(A=1,A|0):(A=(t[7696+(e*28|0)+24>>2]|0)==(A|0),A|0)}function nr(e,A){return e=e|0,A=A|0,t[848+(e*28|0)+(A<<2)>>2]|0}function sr(e,A){return e=e|0,A=A|0,(t[848+(e*28|0)>>2]|0)==(A|0)?(A=0,A|0):(t[848+(e*28|0)+4>>2]|0)==(A|0)?(A=1,A|0):(t[848+(e*28|0)+8>>2]|0)==(A|0)?(A=2,A|0):(t[848+(e*28|0)+12>>2]|0)==(A|0)?(A=3,A|0):(t[848+(e*28|0)+16>>2]|0)==(A|0)?(A=4,A|0):(t[848+(e*28|0)+20>>2]|0)==(A|0)?(A=5,A|0):((t[848+(e*28|0)+24>>2]|0)==(A|0)?6:7)|0}function Vr(){return 122}function Wr(e){e=e|0;var A=0,r=0,n=0;A=0;do CA(A|0,0,45)|0,n=S()|0|134225919,r=e+(A<<3)|0,t[r>>2]=-1,t[r+4>>2]=n,A=A+1|0;while((A|0)!=122);return 0}function Yr(e){e=e|0;var A=0,r=0,n=0;return n=+k[e+16>>3],r=+k[e+24>>3],A=n-r,+(n>3]<+k[e+24>>3]|0}function ir(e){return e=e|0,+(+k[e>>3]-+k[e+8>>3])}function c0(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;return r=+k[A>>3],!(r>=+k[e+8>>3])||!(r<=+k[e>>3])?(A=0,A|0):(n=+k[e+16>>3],r=+k[e+24>>3],s=+k[A+8>>3],A=s>=r,e=s<=n&1,n>3]<+k[A+8>>3]||+k[e+8>>3]>+k[A>>3]?(n=0,n|0):(i=+k[e+16>>3],r=e+24|0,m=+k[r>>3],o=i>3],s=A+24|0,a=+k[s>>3],l=f>3],A)||(m=+Vt(+k[r>>3],e),m>+Vt(+k[n>>3],A))?(l=0,l|0):(l=1,l|0))}function B0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0;i=+k[e+16>>3],a=+k[e+24>>3],e=i>3],o=+k[A+24>>3],s=l>2]=e?s|A?1:2:0,t[n>>2]=s?e?1:A?2:1:0}function H(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;return+k[e>>3]<+k[A>>3]||+k[e+8>>3]>+k[A+8>>3]?(n=0,n|0):(n=e+16|0,a=+k[n>>3],i=+k[e+24>>3],o=a>3],s=A+24|0,f=+k[s>>3],l=m>3],A)?(m=+Vt(+k[n>>3],e),l=m>=+Vt(+k[r>>3],A),l|0):(l=0,l|0))}function aA(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;s=b,b=b+176|0,n=s,t[n>>2]=4,l=+k[A>>3],k[n+8>>3]=l,i=+k[A+16>>3],k[n+16>>3]=i,k[n+24>>3]=l,l=+k[A+24>>3],k[n+32>>3]=l,o=+k[A+8>>3],k[n+40>>3]=o,k[n+48>>3]=l,k[n+56>>3]=o,k[n+64>>3]=i,A=n+72|0,r=A+96|0;do t[A>>2]=0,A=A+4|0;while((A|0)<(r|0));Ir(e|0,n|0,168)|0,b=s}function mA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0;L=b,b=b+288|0,m=L+264|0,M=L+96|0,f=L,l=f,a=l+96|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));return A=es(A,f)|0,A|0?(I=A,b=L,I|0):(a=f,f=t[a>>2]|0,a=t[a+4>>2]|0,ar(f,a,m)|0,_r(f,a,M)|0,o=+rn(m,M+8|0),k[m>>3]=+k[e>>3],a=m+8|0,k[a>>3]=+k[e+16>>3],k[M>>3]=+k[e+8>>3],f=M+8|0,k[f>>3]=+k[e+24>>3],s=+rn(m,M),Y=+k[a>>3]-+k[f>>3],i=+$A(+Y),G=+k[m>>3]-+k[M>>3],n=+$A(+G),!(Y==0|G==0)&&(Y=+mi(+i,+n),Y=+gt(+(s*s/+En(+(Y/+En(+i,+n)),3)/(o*(o*2.59807621135)*.8))),k[ge>>3]=Y,R=~~Y>>>0,I=+$A(Y)>=1?Y>0?~~+At(+He(Y/4294967296),4294967295)>>>0:~~+gt((Y-+(~~Y>>>0))/4294967296)>>>0:0,(t[ge+4>>2]&2146435072|0)!=2146435072)?(M=(R|0)==0&(I|0)==0,A=r,t[A>>2]=M?1:R,t[A+4>>2]=M?0:I,A=0):A=1,I=A,b=L,I|0)}function FA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0;f=b,b=b+288|0,o=f+264|0,l=f+96|0,a=f,s=a,i=s+96|0;do t[s>>2]=0,s=s+4|0;while((s|0)<(i|0));return r=es(r,a)|0,r|0?(n=r,b=f,n|0):(r=a,s=t[r>>2]|0,r=t[r+4>>2]|0,ar(s,r,o)|0,_r(s,r,l)|0,m=+rn(o,l+8|0),m=+gt(+(+rn(e,A)/(m*2))),k[ge>>3]=m,r=~~m>>>0,s=+$A(m)>=1?m>0?~~+At(+He(m/4294967296),4294967295)>>>0:~~+gt((m-+(~~m>>>0))/4294967296)>>>0:0,(t[ge+4>>2]&2146435072|0)==2146435072?(n=1,b=f,n|0):(a=(r|0)==0&(s|0)==0,t[n>>2]=a?1:r,t[n+4>>2]=a?0:s,n=0,b=f,n|0))}function VA(e,A){e=e|0,A=+A;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;i=e+16|0,o=+k[i>>3],r=e+24|0,s=+k[r>>3],n=o-s,n=o>3],l=e+8|0,a=+k[l>>3],m=f-a,n=(n*A-n)*.5,A=(m*A-m)*.5,f=f+A,k[e>>3]=f>1.5707963267948966?1.5707963267948966:f,A=a-A,k[l>>3]=A<-1.5707963267948966?-1.5707963267948966:A,A=o+n,A=A>3.141592653589793?A+-6.283185307179586:A,k[i>>3]=A<-3.141592653589793?A+6.283185307179586:A,A=s-n,A=A>3.141592653589793?A+-6.283185307179586:A,k[r>>3]=A<-3.141592653589793?A+6.283185307179586:A}function xe(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0,t[e>>2]=A,t[e+4>>2]=r,t[e+8>>2]=n}function tt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;M=A+8|0,t[M>>2]=0,a=+k[e>>3],o=+$A(+a),f=+k[e+8>>3],l=+$A(+f)*1.1547005383792515,o=o+l*.5,r=~~o,e=~~l,o=o-+(r|0),l=l-+(e|0);do if(o<.5)if(o<.3333333333333333)if(t[A>>2]=r,l<(o+1)*.5){t[A+4>>2]=e;break}else{e=e+1|0,t[A+4>>2]=e;break}else if(R=1-o,e=(!(l>2]=e,R<=l&l>2]=r;break}else{t[A>>2]=r;break}else{if(!(o<.6666666666666666))if(r=r+1|0,t[A>>2]=r,l>2]=e;break}else{e=e+1|0,t[A+4>>2]=e;break}if(l<1-o){if(t[A+4>>2]=e,o*2+-1>2]=r;break}}else e=e+1|0,t[A+4>>2]=e;r=r+1|0,t[A>>2]=r}while(!1);do if(a<0)if(e&1){m=(e+1|0)/2|0,m=ct(r|0,((r|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-((+(m>>>0)+4294967296*+(S()|0))*2+1)),t[A>>2]=r;break}else{m=(e|0)/2|0,m=ct(r|0,((r|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-(+(m>>>0)+4294967296*+(S()|0))*2),t[A>>2]=r;break}while(!1);m=A+4|0,f<0&&(r=r-((e<<1|1|0)/2|0)|0,t[A>>2]=r,e=0-e|0,t[m>>2]=e),n=e-r|0,(r|0)<0?(s=0-r|0,t[m>>2]=n,t[M>>2]=s,t[A>>2]=0,e=n,r=0):s=0,(e|0)<0&&(r=r-e|0,t[A>>2]=r,s=s-e|0,t[M>>2]=s,t[m>>2]=0,e=0),i=r-s|0,n=e-s|0,(s|0)<0&&(t[A>>2]=i,t[m>>2]=n,t[M>>2]=0,e=n,r=i,s=0),n=(e|0)<(r|0)?e:r,n=(s|0)<(n|0)?s:n,!((n|0)<=0)&&(t[A>>2]=r-n,t[m>>2]=e-n,t[M>>2]=s-n)}function Me(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0;A=t[e>>2]|0,o=e+4|0,r=t[o>>2]|0,(A|0)<0&&(r=r-A|0,t[o>>2]=r,i=e+8|0,t[i>>2]=(t[i>>2]|0)-A,t[e>>2]=0,A=0),(r|0)<0?(A=A-r|0,t[e>>2]=A,i=e+8|0,s=(t[i>>2]|0)-r|0,t[i>>2]=s,t[o>>2]=0,r=0):(s=e+8|0,i=s,s=t[s>>2]|0),(s|0)<0&&(A=A-s|0,t[e>>2]=A,r=r-s|0,t[o>>2]=r,t[i>>2]=0,s=0),n=(r|0)<(A|0)?r:A,n=(s|0)<(n|0)?s:n,!((n|0)<=0)&&(t[e>>2]=A-n,t[o>>2]=r-n,t[i>>2]=s-n)}function ut(e,A){e=e|0,A=A|0;var r=0,n=0;n=t[e+8>>2]|0,r=+((t[e+4>>2]|0)-n|0),k[A>>3]=+((t[e>>2]|0)-n|0)-r*.5,k[A+8>>3]=r*.8660254037844386}function Ze(e,A,r){e=e|0,A=A|0,r=r|0,t[r>>2]=(t[A>>2]|0)+(t[e>>2]|0),t[r+4>>2]=(t[A+4>>2]|0)+(t[e+4>>2]|0),t[r+8>>2]=(t[A+8>>2]|0)+(t[e+8>>2]|0)}function yt(e,A,r){e=e|0,A=A|0,r=r|0,t[r>>2]=(t[e>>2]|0)-(t[A>>2]|0),t[r+4>>2]=(t[e+4>>2]|0)-(t[A+4>>2]|0),t[r+8>>2]=(t[e+8>>2]|0)-(t[A+8>>2]|0)}function st(e,A){e=e|0,A=A|0;var r=0,n=0;r=Pe(t[e>>2]|0,A)|0,t[e>>2]=r,r=e+4|0,n=Pe(t[r>>2]|0,A)|0,t[r>>2]=n,e=e+8|0,A=Pe(t[e>>2]|0,A)|0,t[e>>2]=A}function St(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;o=t[e>>2]|0,l=(o|0)<0,n=(t[e+4>>2]|0)-(l?o:0)|0,i=(n|0)<0,s=(i?0-n|0:0)+((t[e+8>>2]|0)-(l?o:0))|0,r=(s|0)<0,e=r?0:s,A=(i?0:n)-(r?s:0)|0,s=(l?0:o)-(i?n:0)-(r?s:0)|0,r=(A|0)<(s|0)?A:s,r=(e|0)<(r|0)?e:r,n=(r|0)>0,e=e-(n?r:0)|0,A=A-(n?r:0)|0;A:do switch(s-(n?r:0)|0){case 0:switch(A|0){case 0:return l=(e|0)==0?0:(e|0)==1?1:7,l|0;case 1:return l=(e|0)==0?2:(e|0)==1?3:7,l|0;default:break A}case 1:switch(A|0){case 0:return l=(e|0)==0?4:(e|0)==1?5:7,l|0;case 1:{if(!e)e=6;else break A;return e|0}default:break A}}while(!1);return l=7,l|0}function wr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0;if(a=e+8|0,o=t[a>>2]|0,l=(t[e>>2]|0)-o|0,f=e+4|0,o=(t[f>>2]|0)-o|0,l>>>0>715827881|o>>>0>715827881){if(n=(l|0)>0,s=2147483647-l|0,i=-2147483648-l|0,(n?(s|0)<(l|0):(i|0)>(l|0))||(r=l<<1,n?(2147483647-r|0)<(l|0):(-2147483648-r|0)>(l|0))||((o|0)>0?(2147483647-o|0)<(o|0):(-2147483648-o|0)>(o|0))||(A=l*3|0,r=o<<1,(n?(s|0)<(r|0):(i|0)>(r|0))||((l|0)>-1?(A|-2147483648|0)>=(o|0):(A^-2147483648|0)<(o|0))))return f=1,f|0}else r=o<<1,A=l*3|0;return n=U0(+(A-o|0)*.14285714285714285)|0,t[e>>2]=n,s=U0(+(r+l|0)*.14285714285714285)|0,t[f>>2]=s,t[a>>2]=0,r=(s|0)<(n|0),A=r?n:s,r=r?s:n,(r|0)<0&&(((r|0)==-2147483648||((A|0)>0?(2147483647-A|0)<(r|0):(-2147483648-A|0)>(r|0)))&&OA(27795,26892,354,26903),((A|0)>-1?(A|-2147483648|0)>=(r|0):(A^-2147483648|0)<(r|0))&&OA(27795,26892,354,26903)),A=s-n|0,(n|0)<0?(r=0-n|0,t[f>>2]=A,t[a>>2]=r,t[e>>2]=0,n=0):(A=s,r=0),(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[a>>2]=r,t[f>>2]=0,A=0),i=n-r|0,s=A-r|0,(r|0)<0?(t[e>>2]=i,t[f>>2]=s,t[a>>2]=0,A=s,s=i,r=0):s=n,n=(A|0)<(s|0)?A:s,n=(r|0)<(n|0)?r:n,(n|0)<=0?(f=0,f|0):(t[e>>2]=s-n,t[f>>2]=A-n,t[a>>2]=r-n,f=0,f|0)}function gn(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(o=e+8|0,s=t[o>>2]|0,i=(t[e>>2]|0)-s|0,l=e+4|0,s=(t[l>>2]|0)-s|0,i>>>0>715827881|s>>>0>715827881){if(r=(i|0)>0,(r?(2147483647-i|0)<(i|0):(-2147483648-i|0)>(i|0))||(A=i<<1,n=(s|0)>0,n?(2147483647-s|0)<(s|0):(-2147483648-s|0)>(s|0)))return l=1,l|0;if(a=s<<1,(n?(2147483647-a|0)<(s|0):(-2147483648-a|0)>(s|0))||(r?(2147483647-A|0)<(s|0):(-2147483648-A|0)>(s|0))||(r=s*3|0,(s|0)>-1?(r|-2147483648|0)>=(i|0):(r^-2147483648|0)<(i|0)))return a=1,a|0}else r=s*3|0,A=i<<1;return n=U0(+(A+s|0)*.14285714285714285)|0,t[e>>2]=n,s=U0(+(r-i|0)*.14285714285714285)|0,t[l>>2]=s,t[o>>2]=0,r=(s|0)<(n|0),A=r?n:s,r=r?s:n,(r|0)<0&&(((r|0)==-2147483648||((A|0)>0?(2147483647-A|0)<(r|0):(-2147483648-A|0)>(r|0)))&&OA(27795,26892,402,26917),((A|0)>-1?(A|-2147483648|0)>=(r|0):(A^-2147483648|0)<(r|0))&&OA(27795,26892,402,26917)),A=s-n|0,(n|0)<0?(r=0-n|0,t[l>>2]=A,t[o>>2]=r,t[e>>2]=0,n=0):(A=s,r=0),(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[o>>2]=r,t[l>>2]=0,A=0),i=n-r|0,s=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=s,t[o>>2]=0,A=s,s=i,r=0):s=n,n=(A|0)<(s|0)?A:s,n=(r|0)<(n|0)?r:n,(n|0)<=0?(a=0,a|0):(t[e>>2]=s-n,t[l>>2]=A-n,t[o>>2]=r-n,a=0,a|0)}function vr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;o=e+8|0,r=t[o>>2]|0,A=(t[e>>2]|0)-r|0,l=e+4|0,r=(t[l>>2]|0)-r|0,n=U0(+((A*3|0)-r|0)*.14285714285714285)|0,t[e>>2]=n,A=U0(+((r<<1)+A|0)*.14285714285714285)|0,t[l>>2]=A,t[o>>2]=0,r=A-n|0,(n|0)<0?(i=0-n|0,t[l>>2]=r,t[o>>2]=i,t[e>>2]=0,A=r,n=0,r=i):r=0,(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[o>>2]=r,t[l>>2]=0,A=0),i=n-r|0,s=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=s,t[o>>2]=0,A=s,s=i,r=0):s=n,n=(A|0)<(s|0)?A:s,n=(r|0)<(n|0)?r:n,!((n|0)<=0)&&(t[e>>2]=s-n,t[l>>2]=A-n,t[o>>2]=r-n)}function br(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;o=e+8|0,r=t[o>>2]|0,A=(t[e>>2]|0)-r|0,l=e+4|0,r=(t[l>>2]|0)-r|0,n=U0(+((A<<1)+r|0)*.14285714285714285)|0,t[e>>2]=n,A=U0(+((r*3|0)-A|0)*.14285714285714285)|0,t[l>>2]=A,t[o>>2]=0,r=A-n|0,(n|0)<0?(i=0-n|0,t[l>>2]=r,t[o>>2]=i,t[e>>2]=0,A=r,n=0,r=i):r=0,(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[o>>2]=r,t[l>>2]=0,A=0),i=n-r|0,s=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=s,t[o>>2]=0,A=s,s=i,r=0):s=n,n=(A|0)<(s|0)?A:s,n=(r|0)<(n|0)?r:n,!((n|0)<=0)&&(t[e>>2]=s-n,t[l>>2]=A-n,t[o>>2]=r-n)}function kr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;A=t[e>>2]|0,o=e+4|0,r=t[o>>2]|0,l=e+8|0,n=t[l>>2]|0,s=r+(A*3|0)|0,t[e>>2]=s,r=n+(r*3|0)|0,t[o>>2]=r,A=(n*3|0)+A|0,t[l>>2]=A,n=r-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=n,t[l>>2]=A,t[e>>2]=0,r=n,n=0):n=s,(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=s,t[l>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[o>>2]=s-r,t[l>>2]=A-r)}function Ht(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;s=t[e>>2]|0,o=e+4|0,A=t[o>>2]|0,l=e+8|0,r=t[l>>2]|0,n=(A*3|0)+s|0,s=r+(s*3|0)|0,t[e>>2]=s,t[o>>2]=n,A=(r*3|0)+A|0,t[l>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=r,t[l>>2]=A,t[e>>2]=0,s=0):r=n,(r|0)<0&&(s=s-r|0,t[e>>2]=s,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=s-A|0,n=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=n,t[l>>2]=0,s=i,A=0):n=r,r=(n|0)<(s|0)?n:s,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=s-r,t[o>>2]=n-r,t[l>>2]=A-r)}function pn(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;(A+-1|0)>>>0>=6||(s=(t[15440+(A*12|0)>>2]|0)+(t[e>>2]|0)|0,t[e>>2]=s,l=e+4|0,n=(t[15440+(A*12|0)+4>>2]|0)+(t[l>>2]|0)|0,t[l>>2]=n,o=e+8|0,A=(t[15440+(A*12|0)+8>>2]|0)+(t[o>>2]|0)|0,t[o>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[l>>2]=r,t[o>>2]=A,t[e>>2]=0,n=0):(r=n,n=s),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[o>>2]=A,t[l>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[l>>2]=s,t[o>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[l>>2]=s-r,t[o>>2]=A-r))}function Cr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;s=t[e>>2]|0,o=e+4|0,A=t[o>>2]|0,l=e+8|0,r=t[l>>2]|0,n=A+s|0,s=r+s|0,t[e>>2]=s,t[o>>2]=n,A=r+A|0,t[l>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=r,t[l>>2]=A,t[e>>2]=0,n=0):(r=n,n=s),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=s,t[l>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[o>>2]=s-r,t[l>>2]=A-r)}function D0(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;A=t[e>>2]|0,o=e+4|0,n=t[o>>2]|0,l=e+8|0,r=t[l>>2]|0,s=n+A|0,t[e>>2]=s,n=r+n|0,t[o>>2]=n,A=r+A|0,t[l>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=r,t[l>>2]=A,t[e>>2]=0,n=0):(r=n,n=s),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=s,t[l>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[o>>2]=s-r,t[l>>2]=A-r)}function Gt(e){switch(e=e|0,e|0){case 1:{e=5;break}case 5:{e=4;break}case 4:{e=6;break}case 6:{e=2;break}case 2:{e=3;break}case 3:{e=1;break}}return e|0}function Ut(e){switch(e=e|0,e|0){case 1:{e=3;break}case 3:{e=2;break}case 2:{e=6;break}case 6:{e=4;break}case 4:{e=5;break}case 5:{e=1;break}}return e|0}function Kr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;A=t[e>>2]|0,o=e+4|0,r=t[o>>2]|0,l=e+8|0,n=t[l>>2]|0,s=r+(A<<1)|0,t[e>>2]=s,r=n+(r<<1)|0,t[o>>2]=r,A=(n<<1)+A|0,t[l>>2]=A,n=r-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=n,t[l>>2]=A,t[e>>2]=0,r=n,n=0):n=s,(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=s,t[l>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[o>>2]=s-r,t[l>>2]=A-r)}function Zr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;s=t[e>>2]|0,o=e+4|0,A=t[o>>2]|0,l=e+8|0,r=t[l>>2]|0,n=(A<<1)+s|0,s=r+(s<<1)|0,t[e>>2]=s,t[o>>2]=n,A=(r<<1)+A|0,t[l>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=r,t[l>>2]=A,t[e>>2]=0,s=0):r=n,(r|0)<0&&(s=s-r|0,t[e>>2]=s,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=s-A|0,n=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=n,t[l>>2]=0,s=i,A=0):n=r,r=(n|0)<(s|0)?n:s,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=s-r,t[o>>2]=n-r,t[l>>2]=A-r)}function Er(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;return o=(t[e>>2]|0)-(t[A>>2]|0)|0,l=(o|0)<0,n=(t[e+4>>2]|0)-(t[A+4>>2]|0)-(l?o:0)|0,i=(n|0)<0,s=(l?0-o|0:0)+(t[e+8>>2]|0)-(t[A+8>>2]|0)+(i?0-n|0:0)|0,e=(s|0)<0,A=e?0:s,r=(i?0:n)-(e?s:0)|0,s=(l?0:o)-(i?n:0)-(e?s:0)|0,e=(r|0)<(s|0)?r:s,e=(A|0)<(e|0)?A:e,n=(e|0)>0,A=A-(n?e:0)|0,r=r-(n?e:0)|0,e=s-(n?e:0)|0,e=(e|0)>-1?e:0-e|0,r=(r|0)>-1?r:0-r|0,A=(A|0)>-1?A:0-A|0,A=(r|0)>(A|0)?r:A,((e|0)>(A|0)?e:A)|0}function $r(e,A){e=e|0,A=A|0;var r=0;r=t[e+8>>2]|0,t[A>>2]=(t[e>>2]|0)-r,t[A+4>>2]=(t[e+4>>2]|0)-r}function Mt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;return n=t[e>>2]|0,t[A>>2]=n,s=t[e+4>>2]|0,o=A+4|0,t[o>>2]=s,l=A+8|0,t[l>>2]=0,r=(s|0)<(n|0),e=r?n:s,r=r?s:n,(r|0)<0&&((r|0)==-2147483648||((e|0)>0?(2147483647-e|0)<(r|0):(-2147483648-e|0)>(r|0))||((e|0)>-1?(e|-2147483648|0)>=(r|0):(e^-2147483648|0)<(r|0)))?(A=1,A|0):(e=s-n|0,(n|0)<0?(r=0-n|0,t[o>>2]=e,t[l>>2]=r,t[A>>2]=0,n=0):(e=s,r=0),(e|0)<0&&(n=n-e|0,t[A>>2]=n,r=r-e|0,t[l>>2]=r,t[o>>2]=0,e=0),i=n-r|0,s=e-r|0,(r|0)<0?(t[A>>2]=i,t[o>>2]=s,t[l>>2]=0,e=s,s=i,r=0):s=n,n=(e|0)<(s|0)?e:s,n=(r|0)<(n|0)?r:n,(n|0)<=0?(A=0,A|0):(t[A>>2]=s-n,t[o>>2]=e-n,t[l>>2]=r-n,A=0,A|0))}function qr(e){e=e|0;var A=0,r=0,n=0,s=0;A=e+8|0,s=t[A>>2]|0,r=s-(t[e>>2]|0)|0,t[e>>2]=r,n=e+4|0,e=(t[n>>2]|0)-s|0,t[n>>2]=e,t[A>>2]=0-(e+r)}function Jr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;r=t[e>>2]|0,A=0-r|0,t[e>>2]=A,o=e+8|0,t[o>>2]=0,l=e+4|0,n=t[l>>2]|0,s=n+r|0,(r|0)>0?(t[l>>2]=s,t[o>>2]=r,t[e>>2]=0,A=0,n=s):r=0,(n|0)<0?(i=A-n|0,t[e>>2]=i,r=r-n|0,t[o>>2]=r,t[l>>2]=0,s=i-r|0,A=0-r|0,(r|0)<0?(t[e>>2]=s,t[l>>2]=A,t[o>>2]=0,n=A,r=0):(n=0,s=i)):s=A,A=(n|0)<(s|0)?n:s,A=(r|0)<(A|0)?r:A,!((A|0)<=0)&&(t[e>>2]=s-A,t[l>>2]=n-A,t[o>>2]=r-A)}function $n(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0;if(M=b,b=b+64|0,m=M,l=M+56|0,!(!0&(A&2013265920|0)==134217728&(!0&(n&2013265920|0)==134217728)))return s=5,b=M,s|0;if((e|0)==(r|0)&(A|0)==(n|0))return t[s>>2]=0,s=0,b=M,s|0;if(o=wA(e|0,A|0,52)|0,S()|0,o=o&15,f=wA(r|0,n|0,52)|0,S()|0,(o|0)!=(f&15|0))return s=12,b=M,s|0;if(i=o+-1|0,o>>>0>1){_t(e,A,i,m)|0,_t(r,n,i,l)|0,f=m,a=t[f>>2]|0,f=t[f+4>>2]|0;A:do if((a|0)==(t[l>>2]|0)&&(f|0)==(t[l+4>>2]|0)){o=(o^15)*3|0,i=wA(e|0,A|0,o|0)|0,S()|0,i=i&7,o=wA(r|0,n|0,o|0)|0,S()|0,o=o&7;do if((i|0)==0|(o|0)==0)t[s>>2]=1,i=0;else if((i|0)==7)i=5;else{if((i|0)==1|(o|0)==1&&Oe(a,f)|0){i=5;break}if((t[15536+(i<<2)>>2]|0)!=(o|0)&&(t[15568+(i<<2)>>2]|0)!=(o|0))break A;t[s>>2]=1,i=0}while(!1);return s=i,b=M,s|0}while(!1)}i=m,o=i+56|0;do t[i>>2]=0,i=i+4|0;while((i|0)<(o|0));return v(e,A,1,m)|0,A=m,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0))&&(A=m+8|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+16|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+24|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+32|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+40|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))?(i=m+48|0,i=((t[i>>2]|0)==(r|0)?(t[i+4>>2]|0)==(n|0):0)&1):i=1,t[s>>2]=i,s=0,b=M,s|0}function yn(e,A,r,n,s){return e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,r=Ae(e,A,r,n)|0,(r|0)==7?(s=11,s|0):(n=CA(r|0,0,56)|0,A=A&-2130706433|(S()|0)|268435456,t[s>>2]=e|n,t[s+4>>2]=A,s=0,s|0)}function Sr(e,A,r){return e=e|0,A=A|0,r=r|0,!0&(A&2013265920|0)==268435456?(t[r>>2]=e,t[r+4>>2]=A&-2130706433|134217728,r=0,r|0):(r=6,r|0)}function xn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;return s=b,b=b+16|0,n=s,t[n>>2]=0,!0&(A&2013265920|0)==268435456?(i=wA(e|0,A|0,56)|0,S()|0,n=K(e,A&-2130706433|134217728,i&7,n,r)|0,b=s,n|0):(n=6,b=s,n|0)}function Xr(e,A){e=e|0,A=A|0;var r=0;switch(r=wA(e|0,A|0,56)|0,S()|0,r&7){case 0:case 7:return r=0,r|0}return r=A&-2130706433|134217728,!(!0&(A&2013265920|0)==268435456)||!0&(A&117440512|0)==16777216&(Oe(e,r)|0)!=0?(r=0,r|0):(r=Ue(e,r)|0,r|0)}function Mr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;return s=b,b=b+16|0,n=s,!0&(A&2013265920|0)==268435456?(i=A&-2130706433|134217728,o=r,t[o>>2]=e,t[o+4>>2]=i,t[n>>2]=0,A=wA(e|0,A|0,56)|0,S()|0,n=K(e,i,A&7,n,r+8|0)|0,b=s,n|0):(n=6,b=s,n|0)}function Br(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;return s=(Oe(e,A)|0)==0,A=A&-2130706433,n=r,t[n>>2]=s?e:0,t[n+4>>2]=s?A|285212672:0,n=r+8|0,t[n>>2]=e,t[n+4>>2]=A|301989888,n=r+16|0,t[n>>2]=e,t[n+4>>2]=A|318767104,n=r+24|0,t[n>>2]=e,t[n+4>>2]=A|335544320,n=r+32|0,t[n>>2]=e,t[n+4>>2]=A|352321536,r=r+40|0,t[r>>2]=e,t[r+4>>2]=A|369098752,0}function or(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;return o=b,b=b+16|0,s=o,i=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(n=wA(e|0,A|0,56)|0,S()|0,n=ea(e,i,n&7)|0,(n|0)==-1?(t[r>>2]=0,i=6,b=o,i|0):(Dr(e,i,s)|0&&OA(27795,26932,282,26947),A=wA(e|0,A|0,52)|0,S()|0,A=A&15,Oe(e,i)|0?w(s,A,n,2,r):AA(s,A,n,2,r),i=0,b=o,i|0)):(i=6,b=o,i|0)}function wn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;n=b,b=b+16|0,s=n,vn(e,A,r,s),tt(s,r+4|0),b=n}function vn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0;if(l=b,b=b+16|0,a=l,An(e,r,a),i=+Lt(+(1-+k[a>>3]*.5)),i<1e-16){t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,t[n+12>>2]=0,b=l;return}if(a=t[r>>2]|0,s=+k[15920+(a*24|0)>>3],s=+tn(s-+tn(+Cl(15600+(a<<4)|0,e))),Jt(A)|0?o=+tn(s+-.3334731722518321):o=s,s=+et(+i)*2.618033988749896,(A|0)>0){e=0;do s=s*2.6457513110645907,e=e+1|0;while((e|0)!=(A|0))}i=+_e(+o)*s,k[n>>3]=i,o=+ie(+o)*s,k[n+8>>3]=o,b=l}function An(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(i=b,b=b+32|0,s=i,Aa(e,s),t[A>>2]=0,k[r>>3]=5,n=+it(16400,s),n<+k[r>>3]&&(t[A>>2]=0,k[r>>3]=n),n=+it(16424,s),n<+k[r>>3]&&(t[A>>2]=1,k[r>>3]=n),n=+it(16448,s),n<+k[r>>3]&&(t[A>>2]=2,k[r>>3]=n),n=+it(16472,s),n<+k[r>>3]&&(t[A>>2]=3,k[r>>3]=n),n=+it(16496,s),n<+k[r>>3]&&(t[A>>2]=4,k[r>>3]=n),n=+it(16520,s),n<+k[r>>3]&&(t[A>>2]=5,k[r>>3]=n),n=+it(16544,s),n<+k[r>>3]&&(t[A>>2]=6,k[r>>3]=n),n=+it(16568,s),n<+k[r>>3]&&(t[A>>2]=7,k[r>>3]=n),n=+it(16592,s),n<+k[r>>3]&&(t[A>>2]=8,k[r>>3]=n),n=+it(16616,s),n<+k[r>>3]&&(t[A>>2]=9,k[r>>3]=n),n=+it(16640,s),n<+k[r>>3]&&(t[A>>2]=10,k[r>>3]=n),n=+it(16664,s),n<+k[r>>3]&&(t[A>>2]=11,k[r>>3]=n),n=+it(16688,s),n<+k[r>>3]&&(t[A>>2]=12,k[r>>3]=n),n=+it(16712,s),n<+k[r>>3]&&(t[A>>2]=13,k[r>>3]=n),n=+it(16736,s),n<+k[r>>3]&&(t[A>>2]=14,k[r>>3]=n),n=+it(16760,s),n<+k[r>>3]&&(t[A>>2]=15,k[r>>3]=n),n=+it(16784,s),n<+k[r>>3]&&(t[A>>2]=16,k[r>>3]=n),n=+it(16808,s),n<+k[r>>3]&&(t[A>>2]=17,k[r>>3]=n),n=+it(16832,s),n<+k[r>>3]&&(t[A>>2]=18,k[r>>3]=n),n=+it(16856,s),!(n<+k[r>>3])){b=i;return}t[A>>2]=19,k[r>>3]=n,b=i}function H0(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0;if(i=+Xl(e),i<1e-16){A=15600+(A<<4)|0,t[s>>2]=t[A>>2],t[s+4>>2]=t[A+4>>2],t[s+8>>2]=t[A+8>>2],t[s+12>>2]=t[A+12>>2];return}if(o=+Te(+ +k[e+8>>3],+ +k[e>>3]),(r|0)>0){e=0;do i=i*.37796447300922725,e=e+1|0;while((e|0)!=(r|0))}l=i*.3333333333333333,n?(r=(Jt(r)|0)==0,i=+mt(+((r?l:l*.37796447300922725)*.381966011250105))):(i=+mt(+(i*.381966011250105)),Jt(r)|0&&(o=+tn(o+.3334731722518321))),El(15600+(A<<4)|0,+tn(+k[15920+(A*24|0)>>3]-o),i,s)}function h(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;n=b,b=b+16|0,s=n,ut(e+4|0,s),H0(s,t[e>>2]|0,A,0,r),b=n}function w(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,he=0;if(ve=b,b=b+272|0,i=ve+256|0,q=ve+240|0,ne=ve,HA=ve+224|0,SA=ve+208|0,$=ve+176|0,U=ve+160|0,BA=ve+192|0,zA=ve+144|0,QA=ve+128|0,fe=ve+112|0,de=ve+96|0,Ee=ve+80|0,t[i>>2]=A,t[q>>2]=t[e>>2],t[q+4>>2]=t[e+4>>2],t[q+8>>2]=t[e+8>>2],t[q+12>>2]=t[e+12>>2],B(q,i,ne),t[s>>2]=0,q=n+r+((n|0)==5&1)|0,(q|0)<=(r|0)){b=ve;return}a=t[i>>2]|0,f=HA+4|0,m=$+4|0,M=r+5|0,R=16880+(a<<2)|0,I=16960+(a<<2)|0,L=QA+8|0,G=fe+8|0,Y=de+8|0,nA=SA+4|0,l=r;A:for(;;){o=ne+(((l|0)%5|0)<<4)|0,t[SA>>2]=t[o>>2],t[SA+4>>2]=t[o+4>>2],t[SA+8>>2]=t[o+8>>2],t[SA+12>>2]=t[o+12>>2];do;while((N(SA,a,0,1)|0)==2);if((l|0)>(r|0)&(Jt(A)|0)!=0){if(t[$>>2]=t[SA>>2],t[$+4>>2]=t[SA+4>>2],t[$+8>>2]=t[SA+8>>2],t[$+12>>2]=t[SA+12>>2],ut(f,U),n=t[$>>2]|0,i=t[17040+(n*80|0)+(t[HA>>2]<<2)>>2]|0,t[$>>2]=t[18640+(n*80|0)+(i*20|0)>>2],o=t[18640+(n*80|0)+(i*20|0)+16>>2]|0,(o|0)>0){e=0;do Cr(m),e=e+1|0;while((e|0)<(o|0))}switch(o=18640+(n*80|0)+(i*20|0)+4|0,t[BA>>2]=t[o>>2],t[BA+4>>2]=t[o+4>>2],t[BA+8>>2]=t[o+8>>2],st(BA,(t[R>>2]|0)*3|0),Ze(m,BA,m),Me(m),ut(m,zA),Ve=+(t[I>>2]|0),k[QA>>3]=Ve*3,k[L>>3]=0,he=Ve*-1.5,k[fe>>3]=he,k[G>>3]=Ve*2.598076211353316,k[de>>3]=he,k[Y>>3]=Ve*-2.598076211353316,t[17040+((t[$>>2]|0)*80|0)+(t[SA>>2]<<2)>>2]|0){case 1:{e=fe,n=QA;break}case 3:{e=de,n=fe;break}case 2:{e=QA,n=de;break}default:{e=12;break A}}ii(U,zA,n,e,Ee),H0(Ee,t[$>>2]|0,a,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1}if((l|0)<(M|0)&&(ut(nA,$),H0($,t[SA>>2]|0,a,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1),t[HA>>2]=t[SA>>2],t[HA+4>>2]=t[SA+4>>2],t[HA+8>>2]=t[SA+8>>2],t[HA+12>>2]=t[SA+12>>2],l=l+1|0,(l|0)>=(q|0)){e=3;break}}if((e|0)==3){b=ve;return}else(e|0)==12&&OA(26970,27017,572,27027)}function B(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0;a=b,b=b+128|0,n=a+64|0,s=a,i=n,o=20240,l=i+60|0;do t[i>>2]=t[o>>2],i=i+4|0,o=o+4|0;while((i|0)<(l|0));i=s,o=20304,l=i+60|0;do t[i>>2]=t[o>>2],i=i+4|0,o=o+4|0;while((i|0)<(l|0));l=(Jt(t[A>>2]|0)|0)==0,n=l?n:s,s=e+4|0,Kr(s),Zr(s),Jt(t[A>>2]|0)|0&&(Ht(s),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,Ze(s,n,A),Me(A),t[r+16>>2]=t[e>>2],A=r+20|0,Ze(s,n+12|0,A),Me(A),t[r+32>>2]=t[e>>2],A=r+36|0,Ze(s,n+24|0,A),Me(A),t[r+48>>2]=t[e>>2],A=r+52|0,Ze(s,n+36|0,A),Me(A),t[r+64>>2]=t[e>>2],r=r+68|0,Ze(s,n+48|0,r),Me(r),b=a}function N(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0;if(L=b,b=b+32|0,R=L+12|0,l=L,I=e+4|0,M=t[16960+(A<<2)>>2]|0,m=(n|0)!=0,M=m?M*3|0:M,s=t[I>>2]|0,f=e+8|0,o=t[f>>2]|0,m){if(i=e+12|0,n=t[i>>2]|0,s=o+s+n|0,(s|0)==(M|0))return I=1,b=L,I|0;a=i}else a=e+12|0,n=t[a>>2]|0,s=o+s+n|0;if((s|0)<=(M|0))return I=0,b=L,I|0;do if((n|0)>0){if(n=t[e>>2]|0,(o|0)>0){i=18640+(n*80|0)+60|0,n=e;break}n=18640+(n*80|0)+40|0,r?(xe(R,M,0,0),yt(I,R,l),D0(l),Ze(l,R,I),i=n,n=e):(i=n,n=e)}else i=18640+((t[e>>2]|0)*80|0)+20|0,n=e;while(!1);if(t[n>>2]=t[i>>2],s=i+16|0,(t[s>>2]|0)>0){n=0;do Cr(I),n=n+1|0;while((n|0)<(t[s>>2]|0))}return e=i+4|0,t[R>>2]=t[e>>2],t[R+4>>2]=t[e+4>>2],t[R+8>>2]=t[e+8>>2],A=t[16880+(A<<2)>>2]|0,st(R,m?A*3|0:A),Ze(I,R,I),Me(I),m?n=((t[f>>2]|0)+(t[I>>2]|0)+(t[a>>2]|0)|0)==(M|0)?1:2:n=2,I=n,b=L,I|0}function tA(e,A){e=e|0,A=A|0;var r=0;do r=N(e,A,0,1)|0;while((r|0)==2);return r|0}function AA(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0;if(de=b,b=b+240|0,i=de+224|0,BA=de+208|0,zA=de,QA=de+192|0,fe=de+176|0,Y=de+160|0,nA=de+144|0,q=de+128|0,$=de+112|0,U=de+96|0,t[i>>2]=A,t[BA>>2]=t[e>>2],t[BA+4>>2]=t[e+4>>2],t[BA+8>>2]=t[e+8>>2],t[BA+12>>2]=t[e+12>>2],hA(BA,i,zA),t[s>>2]=0,G=n+r+((n|0)==6&1)|0,(G|0)<=(r|0)){b=de;return}a=t[i>>2]|0,f=r+6|0,m=16960+(a<<2)|0,M=nA+8|0,R=q+8|0,I=$+8|0,L=QA+4|0,o=0,l=r,n=-1;A:for(;;){if(i=(l|0)%6|0,e=zA+(i<<4)|0,t[QA>>2]=t[e>>2],t[QA+4>>2]=t[e+4>>2],t[QA+8>>2]=t[e+8>>2],t[QA+12>>2]=t[e+12>>2],e=o,o=N(QA,a,0,1)|0,(l|0)>(r|0)&(Jt(A)|0)!=0&&(e|0)!=1&&(t[QA>>2]|0)!=(n|0)){switch(ut(zA+(((i+5|0)%6|0)<<4)+4|0,fe),ut(zA+(i<<4)+4|0,Y),Ee=+(t[m>>2]|0),k[nA>>3]=Ee*3,k[M>>3]=0,ne=Ee*-1.5,k[q>>3]=ne,k[R>>3]=Ee*2.598076211353316,k[$>>3]=ne,k[I>>3]=Ee*-2.598076211353316,i=t[BA>>2]|0,t[17040+(i*80|0)+(((n|0)==(i|0)?t[QA>>2]|0:n)<<2)>>2]|0){case 1:{e=q,n=nA;break}case 3:{e=$,n=q;break}case 2:{e=nA,n=$;break}default:{e=8;break A}}ii(fe,Y,n,e,U),!(oi(fe,U)|0)&&!(oi(Y,U)|0)&&(H0(U,t[BA>>2]|0,a,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1)}if((l|0)<(f|0)&&(ut(L,fe),H0(fe,t[QA>>2]|0,a,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1),l=l+1|0,(l|0)>=(G|0)){e=3;break}else n=t[QA>>2]|0}if((e|0)==3){b=de;return}else(e|0)==8&&OA(27054,27017,737,27099)}function hA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0;a=b,b=b+160|0,n=a+80|0,s=a,i=n,o=20368,l=i+72|0;do t[i>>2]=t[o>>2],i=i+4|0,o=o+4|0;while((i|0)<(l|0));i=s,o=20448,l=i+72|0;do t[i>>2]=t[o>>2],i=i+4|0,o=o+4|0;while((i|0)<(l|0));l=(Jt(t[A>>2]|0)|0)==0,n=l?n:s,s=e+4|0,Kr(s),Zr(s),Jt(t[A>>2]|0)|0&&(Ht(s),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,Ze(s,n,A),Me(A),t[r+16>>2]=t[e>>2],A=r+20|0,Ze(s,n+12|0,A),Me(A),t[r+32>>2]=t[e>>2],A=r+36|0,Ze(s,n+24|0,A),Me(A),t[r+48>>2]=t[e>>2],A=r+52|0,Ze(s,n+36|0,A),Me(A),t[r+64>>2]=t[e>>2],A=r+68|0,Ze(s,n+48|0,A),Me(A),t[r+80>>2]=t[e>>2],r=r+84|0,Ze(s,n+60|0,r),Me(r),b=a}function _A(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,52)|0,S()|0,A&15|0}function te(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,45)|0,S()|0,A&127|0}function be(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,(r+-1|0)>>>0>14?(n=4,n|0):(r=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,t[n>>2]=r&7,n=0,n|0)}function we(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;if(e>>>0>15)return n=4,n|0;if(A>>>0>121)return n=17,n|0;o=CA(e|0,0,52)|0,s=S()|0,l=CA(A|0,0,45)|0,s=s|(S()|0)|134225919;A:do if((e|0)>=1){for(l=1,o=(xA[20528+A>>0]|0)!=0,i=-1;;){if(A=t[r+(l+-1<<2)>>2]|0,A>>>0>6){s=18,A=10;break}if(!((A|0)==0|o^1))if((A|0)==1){s=19,A=10;break}else o=0;if(f=(15-l|0)*3|0,a=CA(7,0,f|0)|0,s=s&~(S()|0),A=CA(A|0,((A|0)<0)<<31>>31|0,f|0)|0,i=A|i&~a,s=S()|0|s,(l|0)<(e|0))l=l+1|0;else break A}if((A|0)==10)return s|0}else i=-1;while(!1);return f=n,t[f>>2]=i,t[f+4>>2]=s,f=0,f|0}function Ue(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;return!(!0&(A&-16777216|0)==134217728)||(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0,r=r&127,r>>>0>121)?(e=0,e|0):(o=(n^15)*3|0,s=wA(e|0,A|0,o|0)|0,o=CA(s|0,S()|0,o|0)|0,s=S()|0,i=ct(-1227133514,-1171,o|0,s|0)|0,!((o&613566756&i|0)==0&(s&4681&(S()|0)|0)==0)||(o=(n*3|0)+19|0,i=CA(~e|0,~A|0,o|0)|0,o=wA(i|0,S()|0,o|0)|0,!((n|0)==15|(o|0)==0&(S()|0)==0))?(o=0,o|0):!(xA[20528+r>>0]|0)||(A=A&8191,(e|0)==0&(A|0)==0)?(o=1,o|0):(o=as(e|0,A|0)|0,S()|0,((63-o|0)%3|0|0)!=0|0))}function Bt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;return!0&(A&-16777216|0)==134217728&&(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0,r=r&127,r>>>0<=121)&&(o=(n^15)*3|0,s=wA(e|0,A|0,o|0)|0,o=CA(s|0,S()|0,o|0)|0,s=S()|0,i=ct(-1227133514,-1171,o|0,s|0)|0,(o&613566756&i|0)==0&(s&4681&(S()|0)|0)==0)&&(o=(n*3|0)+19|0,i=CA(~e|0,~A|0,o|0)|0,o=wA(i|0,S()|0,o|0)|0,(n|0)==15|(o|0)==0&(S()|0)==0)&&(!(xA[20528+r>>0]|0)||(r=A&8191,(e|0)==0&(r|0)==0)||(o=as(e|0,r|0)|0,S()|0,(63-o|0)%3|0|0))||Xr(e,A)|0?(o=1,o|0):(o=(li(e,A)|0)!=0&1,o|0)}function Dt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0;if(s=CA(A|0,0,52)|0,i=S()|0,r=CA(r|0,0,45)|0,r=i|(S()|0)|134225919,(A|0)<1){i=-1,n=r,A=e,t[A>>2]=i,e=e+4|0,t[e>>2]=n;return}for(i=1,s=-1;o=(15-i|0)*3|0,l=CA(7,0,o|0)|0,r=r&~(S()|0),o=CA(n|0,0,o|0)|0,s=s&~l|o,r=r|(S()|0),(i|0)!=(A|0);)i=i+1|0;l=e,o=l,t[o>>2]=s,l=l+4|0,t[l>>2]=r}function _t(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;if(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,r>>>0>15)return n=4,n|0;if((i|0)<(r|0))return n=12,n|0;if((i|0)==(r|0))return t[n>>2]=e,t[n+4>>2]=A,n=0,n|0;if(s=CA(r|0,0,52)|0,s=s|e,e=S()|0|A&-15728641,(i|0)>(r|0))do A=CA(7,0,(14-r|0)*3|0)|0,r=r+1|0,s=A|s,e=S()|0|e;while((r|0)<(i|0));return t[n>>2]=s,t[n+4>>2]=e,n=0,n|0}function p0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;if(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,!((r|0)<16&(i|0)<=(r|0)))return n=4,n|0;s=r-i|0,r=wA(e|0,A|0,45)|0,S()|0;A:do if(!(je(r&127)|0))r=G0(7,0,s,((s|0)<0)<<31>>31)|0,s=S()|0;else{e:do if(i|0){for(r=1;o=CA(7,0,(15-r|0)*3|0)|0,!!((o&e|0)==0&((S()|0)&A|0)==0);)if(r>>>0>>0)r=r+1|0;else break e;r=G0(7,0,s,((s|0)<0)<<31>>31)|0,s=S()|0;break A}while(!1);r=G0(7,0,s,((s|0)<0)<<31>>31)|0,r=ft(r|0,S()|0,5,0)|0,r=KA(r|0,S()|0,-5,-1)|0,r=V0(r|0,S()|0,6,0)|0,r=KA(r|0,S()|0,1,0)|0,s=S()|0}while(!1);return o=n,t[o>>2]=r,t[o+4>>2]=s,o=0,o|0}function Oe(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;if(s=wA(e|0,A|0,45)|0,S()|0,!(je(s&127)|0))return s=0,s|0;s=wA(e|0,A|0,52)|0,S()|0,s=s&15;A:do if(!s)r=0;else for(n=1;;){if(r=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,r=r&7,r|0)break A;if(n>>>0>>0)n=n+1|0;else{r=0;break}}while(!1);return s=(r|0)==0&1,s|0}function en(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0;if(o=b,b=b+16|0,i=o,ts(i,e,A,r),A=i,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0)return b=o,0;s=0,r=0;do l=n+(s<<3)|0,t[l>>2]=e,t[l+4>>2]=A,s=KA(s|0,r|0,1,0)|0,r=S()|0,rs(i),l=i,e=t[l>>2]|0,A=t[l+4>>2]|0;while(!((e|0)==0&(A|0)==0));return b=o,0}function Ys(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,(n|0)<(r|0)?(r=A,n=e,YA(r|0),n|0):(r=CA(-1,-1,((n-r|0)*3|0)+3|0)|0,n=CA(~r|0,~(S()|0)|0,(15-n|0)*3|0)|0,r=~(S()|0)&A,n=~n&e,YA(r|0),n|0)}function Ks(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0;return s=wA(e|0,A|0,52)|0,S()|0,s=s&15,(r|0)<16&(s|0)<=(r|0)?((s|0)<(r|0)&&(s=CA(-1,-1,((r+-1-s|0)*3|0)+3|0)|0,s=CA(~s|0,~(S()|0)|0,(15-r|0)*3|0)|0,A=~(S()|0)&A,e=~s&e),s=CA(r|0,0,52)|0,r=A&-15728641|(S()|0),t[n>>2]=e|s,t[n+4>>2]=r,n=0,n|0):(n=4,n|0)}function fl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0;if((r|0)==0&(n|0)==0)return SA=0,SA|0;if(s=e,i=t[s>>2]|0,s=t[s+4>>2]|0,!0&(s&15728640|0)==0){if(!((n|0)>0|(n|0)==0&r>>>0>0)||(SA=A,t[SA>>2]=i,t[SA+4>>2]=s,(r|0)==1&(n|0)==0))return SA=0,SA|0;s=1,i=0;do ne=e+(s<<3)|0,HA=t[ne+4>>2]|0,SA=A+(s<<3)|0,t[SA>>2]=t[ne>>2],t[SA+4>>2]=HA,s=KA(s|0,i|0,1,0)|0,i=S()|0;while((i|0)<(n|0)|(i|0)==(n|0)&s>>>0>>0);return s=0,s|0}if(Ee=r<<3,HA=y0(Ee)|0,!HA)return SA=13,SA|0;if(Ir(HA|0,e|0,Ee|0)|0,ne=Qt(r,8)|0,!ne)return qA(HA),SA=13,SA|0;A:for(;;){s=HA,f=t[s>>2]|0,s=t[s+4>>2]|0,fe=wA(f|0,s|0,52)|0,S()|0,fe=fe&15,de=fe+-1|0,QA=(fe|0)!=0,zA=(n|0)>0|(n|0)==0&r>>>0>0;e:do if(QA&zA){if(q=CA(de|0,0,52)|0,$=S()|0,de>>>0>15){if(!((f|0)==0&(s|0)==0)){SA=16;break A}for(i=0,e=0;;){if(i=KA(i|0,e|0,1,0)|0,e=S()|0,!((e|0)<(n|0)|(e|0)==(n|0)&i>>>0>>0))break e;if(o=HA+(i<<3)|0,BA=t[o>>2]|0,o=t[o+4>>2]|0,!((BA|0)==0&(o|0)==0)){s=o,SA=16;break A}}}for(l=f,e=s,i=0,o=0;;){if(!((l|0)==0&(e|0)==0)){if(!(!0&(e&117440512|0)==0)){SA=21;break A}if(m=wA(l|0,e|0,52)|0,S()|0,m=m&15,(m|0)<(de|0)){s=12,SA=27;break A}if((m|0)!=(de|0)&&(l=l|q,e=e&-15728641|$,m>>>0>=fe>>>0)){a=de;do BA=CA(7,0,(14-a|0)*3|0)|0,a=a+1|0,l=BA|l,e=S()|0|e;while(a>>>0>>0)}if(R=Rr(l|0,e|0,r|0,n|0)|0,I=S()|0,a=ne+(R<<3)|0,m=a,M=t[m>>2]|0,m=t[m+4>>2]|0,!((M|0)==0&(m|0)==0)){Y=0,nA=0;do{if((Y|0)>(n|0)|(Y|0)==(n|0)&nA>>>0>r>>>0){SA=31;break A}if((M|0)==(l|0)&(m&-117440513|0)==(e|0)){L=wA(M|0,m|0,56)|0,S()|0,L=L&7,G=L+1|0,BA=wA(M|0,m|0,45)|0,S()|0;t:do if(!(je(BA&127)|0))m=7;else{if(M=wA(M|0,m|0,52)|0,S()|0,M=M&15,!M){m=6;break}for(m=1;;){if(BA=CA(7,0,(15-m|0)*3|0)|0,!((BA&l|0)==0&((S()|0)&e|0)==0)){m=7;break t}if(m>>>0>>0)m=m+1|0;else{m=6;break}}}while(!1);if((L+2|0)>>>0>m>>>0){SA=41;break A}BA=CA(G|0,0,56)|0,e=S()|0|e&-117440513,U=a,t[U>>2]=0,t[U+4>>2]=0,l=BA|l}else R=KA(R|0,I|0,1,0)|0,R=jr(R|0,S()|0,r|0,n|0)|0,I=S()|0;nA=KA(nA|0,Y|0,1,0)|0,Y=S()|0,a=ne+(R<<3)|0,m=a,M=t[m>>2]|0,m=t[m+4>>2]|0}while(!((M|0)==0&(m|0)==0))}BA=a,t[BA>>2]=l,t[BA+4>>2]=e}if(i=KA(i|0,o|0,1,0)|0,o=S()|0,!((o|0)<(n|0)|(o|0)==(n|0)&i>>>0>>0))break e;e=HA+(i<<3)|0,l=t[e>>2]|0,e=t[e+4>>2]|0}}while(!1);if(BA=KA(r|0,n|0,5,0)|0,U=S()|0,U>>>0<0|(U|0)==0&BA>>>0<11){SA=85;break}if(BA=V0(r|0,n|0,6,0)|0,S()|0,BA=Qt(BA,8)|0,!BA){SA=48;break}do if(zA){for(G=0,e=0,L=0,Y=0;;){if(m=ne+(G<<3)|0,o=m,i=t[o>>2]|0,o=t[o+4>>2]|0,(i|0)==0&(o|0)==0)U=L;else{M=wA(i|0,o|0,56)|0,S()|0,M=M&7,l=M+1|0,R=o&-117440513,U=wA(i|0,o|0,45)|0,S()|0;e:do if(je(U&127)|0){if(I=wA(i|0,o|0,52)|0,S()|0,I=I&15,I|0)for(a=1;;){if(U=CA(7,0,(15-a|0)*3|0)|0,!((i&U|0)==0&(R&(S()|0)|0)==0))break e;if(a>>>0>>0)a=a+1|0;else break}o=CA(l|0,0,56)|0,i=o|i,o=S()|0|R,l=m,t[l>>2]=i,t[l+4>>2]=o,l=M+2|0}while(!1);(l|0)==7?(U=BA+(e<<3)|0,t[U>>2]=i,t[U+4>>2]=o&-117440513,e=KA(e|0,L|0,1,0)|0,U=S()|0):U=L}if(G=KA(G|0,Y|0,1,0)|0,Y=S()|0,(Y|0)<(n|0)|(Y|0)==(n|0)&G>>>0>>0)L=U;else break}if(zA){if(nA=de>>>0>15,q=CA(de|0,0,52)|0,$=S()|0,!QA){for(i=0,a=0,l=0,o=0;(f|0)==0&(s|0)==0||(de=A+(i<<3)|0,t[de>>2]=f,t[de+4>>2]=s,i=KA(i|0,a|0,1,0)|0,a=S()|0),l=KA(l|0,o|0,1,0)|0,o=S()|0,!!((o|0)<(n|0)|(o|0)==(n|0)&l>>>0>>0);)s=HA+(l<<3)|0,f=t[s>>2]|0,s=t[s+4>>2]|0;s=U;break}for(i=0,a=0,o=0,l=0;;){do if(!((f|0)==0&(s|0)==0)){if(I=wA(f|0,s|0,52)|0,S()|0,I=I&15,nA|(I|0)<(de|0)){SA=80;break A}if((I|0)!=(de|0)){if(m=f|q,M=s&-15728641|$,I>>>0>=fe>>>0){R=de;do QA=CA(7,0,(14-R|0)*3|0)|0,R=R+1|0,m=QA|m,M=S()|0|M;while(R>>>0>>0)}}else m=f,M=s;L=Rr(m|0,M|0,r|0,n|0)|0,R=0,I=0,Y=S()|0;do{if((R|0)>(n|0)|(R|0)==(n|0)&I>>>0>r>>>0){SA=81;break A}if(QA=ne+(L<<3)|0,G=t[QA+4>>2]|0,(G&-117440513|0)==(M|0)&&(t[QA>>2]|0)==(m|0)){SA=65;break}QA=KA(L|0,Y|0,1,0)|0,L=jr(QA|0,S()|0,r|0,n|0)|0,Y=S()|0,I=KA(I|0,R|0,1,0)|0,R=S()|0,QA=ne+(L<<3)|0}while(!((t[QA>>2]|0)==(m|0)&&(t[QA+4>>2]|0)==(M|0)));if((SA|0)==65&&(SA=0,!0&(G&117440512|0)==100663296))break;QA=A+(i<<3)|0,t[QA>>2]=f,t[QA+4>>2]=s,i=KA(i|0,a|0,1,0)|0,a=S()|0}while(!1);if(o=KA(o|0,l|0,1,0)|0,l=S()|0,!((l|0)<(n|0)|(l|0)==(n|0)&o>>>0>>0))break;s=HA+(o<<3)|0,f=t[s>>2]|0,s=t[s+4>>2]|0}s=U}else i=0,s=U}else i=0,e=0,s=0;while(!1);if(W0(ne|0,0,Ee|0)|0,Ir(HA|0,BA|0,e<<3|0)|0,qA(BA),(e|0)==0&(s|0)==0){SA=89;break}else A=A+(i<<3)|0,n=s,r=e}if((SA|0)==16)!0&(s&117440512|0)==0?(s=4,SA=27):SA=21;else if((SA|0)==31)OA(27795,27122,620,27132);else{if((SA|0)==41)return qA(HA),qA(ne),SA=10,SA|0;if((SA|0)==48)return qA(HA),qA(ne),SA=13,SA|0;(SA|0)==80?OA(27795,27122,711,27132):(SA|0)==81?OA(27795,27122,723,27132):(SA|0)==85&&(Ir(A|0,HA|0,r<<3|0)|0,SA=89)}return(SA|0)==21?(qA(HA),qA(ne),SA=5,SA|0):(SA|0)==27?(qA(HA),qA(ne),SA=s,SA|0):(SA|0)==89?(qA(HA),qA(ne),SA=0,SA|0):0}function dl(e,A,r,n,s,i,o){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0,o=o|0;var l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0;if(G=b,b=b+16|0,L=G,!((r|0)>0|(r|0)==0&A>>>0>0))return L=0,b=G,L|0;if((o|0)>=16)return L=12,b=G,L|0;R=0,I=0,M=0,l=0;A:for(;;){if(f=e+(R<<3)|0,a=t[f>>2]|0,f=t[f+4>>2]|0,m=wA(a|0,f|0,52)|0,S()|0,(m&15|0)>(o|0)){l=12,a=11;break}if(ts(L,a,f,o),m=L,f=t[m>>2]|0,m=t[m+4>>2]|0,(f|0)==0&(m|0)==0)a=M;else{a=M;do{if(!((l|0)<(i|0)|(l|0)==(i|0)&a>>>0>>0)){a=10;break A}M=n+(a<<3)|0,t[M>>2]=f,t[M+4>>2]=m,a=KA(a|0,l|0,1,0)|0,l=S()|0,rs(L),M=L,f=t[M>>2]|0,m=t[M+4>>2]|0}while(!((f|0)==0&(m|0)==0))}if(R=KA(R|0,I|0,1,0)|0,I=S()|0,(I|0)<(r|0)|(I|0)==(r|0)&R>>>0>>0)M=a;else{l=0,a=11;break}}return(a|0)==10?(L=14,b=G,L|0):(a|0)==11?(b=G,l|0):0}function hl(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;R=b,b=b+16|0,M=R;A:do if((r|0)>0|(r|0)==0&A>>>0>0){for(f=0,o=0,i=0,m=0;;){if(a=e+(f<<3)|0,l=t[a>>2]|0,a=t[a+4>>2]|0,!((l|0)==0&(a|0)==0)&&(a=(p0(l,a,n,M)|0)==0,l=M,o=KA(t[l>>2]|0,t[l+4>>2]|0,o|0,i|0)|0,i=S()|0,!a)){i=12;break}if(f=KA(f|0,m|0,1,0)|0,m=S()|0,!((m|0)<(r|0)|(m|0)==(r|0)&f>>>0>>0))break A}return b=R,i|0}else o=0,i=0;while(!1);return t[s>>2]=o,t[s+4>>2]=i,s=0,b=R,s|0}function ml(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,52)|0,S()|0,A&1|0}function Pt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;if(s=wA(e|0,A|0,52)|0,S()|0,s=s&15,!s)return s=0,s|0;for(n=1;;){if(r=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,r=r&7,r|0){n=5;break}if(n>>>0>>0)n=n+1|0;else{r=0,n=5;break}}return(n|0)==5?r|0:0}function qn(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(a=wA(e|0,A|0,52)|0,S()|0,a=a&15,!a)return l=A,a=e,YA(l|0),a|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=CA(7,0,i|0)|0,s=S()|0,o=wA(e|0,A|0,i|0)|0,S()|0,i=CA(Gt(o&7)|0,0,i|0)|0,o=S()|0,e=i|e&~n,A=o|A&~s;A:do if(!r)if((i&n|0)==0&(o&s|0)==0)r=0;else if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)r=1;else{r=1;e:for(;;){switch(o=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,o&7){case 1:break e;case 0:break;default:{r=1;break A}}if(r>>>0>>0)r=r+1|0;else{r=1;break A}}for(r=1;;)if(o=(15-r|0)*3|0,s=wA(e|0,A|0,o|0)|0,S()|0,i=CA(7,0,o|0)|0,A=A&~(S()|0),o=CA(Gt(s&7)|0,0,o|0)|0,e=e&~i|o,A=A|(S()|0),r>>>0>>0)r=r+1|0;else{r=1;break}}while(!1);if(l>>>0>>0)l=l+1|0;else break}return YA(A|0),e|0}function lr(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)return r=A,n=e,YA(r|0),n|0;for(r=1;i=(15-r|0)*3|0,o=wA(e|0,A|0,i|0)|0,S()|0,s=CA(7,0,i|0)|0,A=A&~(S()|0),i=CA(Gt(o&7)|0,0,i|0)|0,e=i|e&~s,A=S()|0|A,r>>>0>>0;)r=r+1|0;return YA(A|0),e|0}function gl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(a=wA(e|0,A|0,52)|0,S()|0,a=a&15,!a)return l=A,a=e,YA(l|0),a|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=CA(7,0,i|0)|0,s=S()|0,o=wA(e|0,A|0,i|0)|0,S()|0,i=CA(Ut(o&7)|0,0,i|0)|0,o=S()|0,e=i|e&~n,A=o|A&~s;A:do if(!r)if((i&n|0)==0&(o&s|0)==0)r=0;else if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)r=1;else{r=1;e:for(;;){switch(o=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,o&7){case 1:break e;case 0:break;default:{r=1;break A}}if(r>>>0>>0)r=r+1|0;else{r=1;break A}}for(r=1;;)if(s=(15-r|0)*3|0,i=CA(7,0,s|0)|0,o=A&~(S()|0),A=wA(e|0,A|0,s|0)|0,S()|0,A=CA(Ut(A&7)|0,0,s|0)|0,e=e&~i|A,A=o|(S()|0),r>>>0>>0)r=r+1|0;else{r=1;break}}while(!1);if(l>>>0>>0)l=l+1|0;else break}return YA(A|0),e|0}function Jn(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)return r=A,n=e,YA(r|0),n|0;for(r=1;o=(15-r|0)*3|0,i=CA(7,0,o|0)|0,s=A&~(S()|0),A=wA(e|0,A|0,o|0)|0,S()|0,A=CA(Ut(A&7)|0,0,o|0)|0,e=A|e&~i,A=S()|0|s,r>>>0>>0;)r=r+1|0;return YA(A|0),e|0}function pl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(a=b,b=b+64|0,l=a+40|0,n=a+24|0,s=a+12|0,i=a,CA(A|0,0,52)|0,r=S()|0|134225919,!A)return(t[e+4>>2]|0)>2||(t[e+8>>2]|0)>2||(t[e+12>>2]|0)>2?(o=0,l=0,YA(o|0),b=a,l|0):(CA(g0(e)|0,0,45)|0,o=S()|0|r,l=-1,YA(o|0),b=a,l|0);if(t[l>>2]=t[e>>2],t[l+4>>2]=t[e+4>>2],t[l+8>>2]=t[e+8>>2],t[l+12>>2]=t[e+12>>2],o=l+4|0,(A|0)>0)for(e=-1;t[n>>2]=t[o>>2],t[n+4>>2]=t[o+4>>2],t[n+8>>2]=t[o+8>>2],A&1?(vr(o),t[s>>2]=t[o>>2],t[s+4>>2]=t[o+4>>2],t[s+8>>2]=t[o+8>>2],kr(s)):(br(o),t[s>>2]=t[o>>2],t[s+4>>2]=t[o+4>>2],t[s+8>>2]=t[o+8>>2],Ht(s)),yt(n,s,i),Me(i),m=(15-A|0)*3|0,f=CA(7,0,m|0)|0,r=r&~(S()|0),m=CA(St(i)|0,0,m|0)|0,e=m|e&~f,r=S()|0|r,(A|0)>1;)A=A+-1|0;else e=-1;A:do if((t[o>>2]|0)<=2&&(t[l+8>>2]|0)<=2&&(t[l+12>>2]|0)<=2){if(n=g0(l)|0,A=CA(n|0,0,45)|0,A=A|e,e=S()|0|r&-1040385,i=u0(l)|0,!(je(n)|0)){if((i|0)<=0)break;for(s=0;;){if(n=wA(A|0,e|0,52)|0,S()|0,n=n&15,n)for(r=1;m=(15-r|0)*3|0,l=wA(A|0,e|0,m|0)|0,S()|0,f=CA(7,0,m|0)|0,e=e&~(S()|0),m=CA(Gt(l&7)|0,0,m|0)|0,A=A&~f|m,e=e|(S()|0),r>>>0>>0;)r=r+1|0;if(s=s+1|0,(s|0)==(i|0))break A}}s=wA(A|0,e|0,52)|0,S()|0,s=s&15;e:do if(s){r=1;t:for(;;){switch(m=wA(A|0,e|0,(15-r|0)*3|0)|0,S()|0,m&7){case 1:break t;case 0:break;default:break e}if(r>>>0>>0)r=r+1|0;else break e}if(M0(n,t[l>>2]|0)|0)for(r=1;l=(15-r|0)*3|0,f=CA(7,0,l|0)|0,m=e&~(S()|0),e=wA(A|0,e|0,l|0)|0,S()|0,e=CA(Ut(e&7)|0,0,l|0)|0,A=A&~f|e,e=m|(S()|0),r>>>0>>0;)r=r+1|0;else for(r=1;m=(15-r|0)*3|0,l=wA(A|0,e|0,m|0)|0,S()|0,f=CA(7,0,m|0)|0,e=e&~(S()|0),m=CA(Gt(l&7)|0,0,m|0)|0,A=A&~f|m,e=e|(S()|0),r>>>0>>0;)r=r+1|0}while(!1);if((i|0)>0){r=0;do A=qn(A,e)|0,e=S()|0,r=r+1|0;while((r|0)!=(i|0))}}else A=0,e=0;while(!1);return f=e,m=A,YA(f|0),b=a,m|0}function Jt(e){return e=e|0,(e|0)%2|0|0}function Xn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;return s=b,b=b+16|0,n=s,A>>>0>15?(n=4,b=s,n|0):(t[e+4>>2]&2146435072|0)==2146435072||(t[e+8+4>>2]&2146435072|0)==2146435072?(n=3,b=s,n|0):(wn(e,A,n),A=pl(n,A)|0,n=S()|0,t[r>>2]=A,t[r+4>>2]=n,(A|0)==0&(n|0)==0&&OA(27795,27122,1050,27145),n=0,b=s,n|0)}function As(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;if(s=r+4|0,i=wA(e|0,A|0,52)|0,S()|0,i=i&15,o=wA(e|0,A|0,45)|0,S()|0,n=(i|0)==0,je(o&127)|0){if(n)return o=1,o|0;n=1}else{if(n)return o=0,o|0;(t[s>>2]|0)==0&&(t[r+8>>2]|0)==0?n=(t[r+12>>2]|0)!=0&1:n=1}for(r=1;r&1?kr(s):Ht(s),o=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,pn(s,o&7),r>>>0>>0;)r=r+1|0;return n|0}function Dr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(m=b,b=b+16|0,a=m,f=wA(e|0,A|0,45)|0,S()|0,f=f&127,f>>>0>121)return t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,t[r+12>>2]=0,f=5,b=m,f|0;A:do if((je(f)|0)!=0&&(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,(i|0)!=0)){n=1;e:for(;;){switch(l=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,l&7){case 5:break e;case 0:break;default:{n=A;break A}}if(n>>>0>>0)n=n+1|0;else{n=A;break A}}for(s=1,n=A;A=(15-s|0)*3|0,o=CA(7,0,A|0)|0,l=n&~(S()|0),n=wA(e|0,n|0,A|0)|0,S()|0,n=CA(Ut(n&7)|0,0,A|0)|0,e=e&~o|n,n=l|(S()|0),s>>>0>>0;)s=s+1|0}else n=A;while(!1);if(l=7696+(f*28|0)|0,t[r>>2]=t[l>>2],t[r+4>>2]=t[l+4>>2],t[r+8>>2]=t[l+8>>2],t[r+12>>2]=t[l+12>>2],!(As(e,n,r)|0))return f=0,b=m,f|0;if(o=r+4|0,t[a>>2]=t[o>>2],t[a+4>>2]=t[o+4>>2],t[a+8>>2]=t[o+8>>2],i=wA(e|0,n|0,52)|0,S()|0,l=i&15,i&1?(Ht(o),i=l+1|0):i=l,!(je(f)|0))n=0;else{A:do if(!l)n=0;else for(A=1;;){if(s=wA(e|0,n|0,(15-A|0)*3|0)|0,S()|0,s=s&7,s|0){n=s;break A}if(A>>>0>>0)A=A+1|0;else{n=0;break}}while(!1);n=(n|0)==4&1}if(!(N(r,i,n,0)|0))(i|0)!=(l|0)&&(t[o>>2]=t[a>>2],t[o+4>>2]=t[a+4>>2],t[o+8>>2]=t[a+8>>2]);else{if(je(f)|0)do;while((N(r,i,0,0)|0)!=0);(i|0)!=(l|0)&&br(o)}return f=0,b=m,f|0}function ar(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;return i=b,b=b+16|0,n=i,s=Dr(e,A,n)|0,s|0?(b=i,s|0):(s=wA(e|0,A|0,52)|0,S()|0,h(n,s&15,r),s=0,b=i,s|0)}function _r(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0;if(o=b,b=b+16|0,i=o,n=Dr(e,A,i)|0,n|0)return i=n,b=o,i|0;n=wA(e|0,A|0,45)|0,S()|0,n=(je(n&127)|0)==0,s=wA(e|0,A|0,52)|0,S()|0,s=s&15;A:do if(!n){if(s|0)for(n=1;;){if(l=CA(7,0,(15-n|0)*3|0)|0,!((l&e|0)==0&((S()|0)&A|0)==0))break A;if(n>>>0>>0)n=n+1|0;else break}return w(i,s,0,5,r),l=0,b=o,l|0}while(!1);return AA(i,s,0,6,r),l=0,b=o,l|0}function yl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(s=wA(e|0,A|0,45)|0,S()|0,!(je(s&127)|0))return s=2,t[r>>2]=s,0;if(s=wA(e|0,A|0,52)|0,S()|0,s=s&15,!s)return s=5,t[r>>2]=s,0;for(n=1;;){if(i=CA(7,0,(15-n|0)*3|0)|0,!((i&e|0)==0&((S()|0)&A|0)==0)){n=2,e=6;break}if(n>>>0>>0)n=n+1|0;else{n=5,e=6;break}}return(e|0)==6&&(t[r>>2]=n),0}function Zs(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0;M=b,b=b+128|0,f=M+112|0,i=M+96|0,m=M,s=wA(e|0,A|0,52)|0,S()|0,l=s&15,t[f>>2]=l,o=wA(e|0,A|0,45)|0,S()|0,o=o&127;A:do if(je(o)|0){if(l|0)for(n=1;;){if(a=CA(7,0,(15-n|0)*3|0)|0,!((a&e|0)==0&((S()|0)&A|0)==0)){s=0;break A}if(n>>>0>>0)n=n+1|0;else break}if(s&1)s=1;else return a=CA(l+1|0,0,52)|0,m=S()|0|A&-15728641,f=CA(7,0,(14-l|0)*3|0)|0,m=Zs((a|e)&~f,m&~(S()|0),r)|0,b=M,m|0}else s=0;while(!1);if(n=Dr(e,A,i)|0,!n){s?(B(i,f,m),a=5):(hA(i,f,m),a=6);A:do if(je(o)|0)if(!l)e=5;else for(n=1;;){if(o=CA(7,0,(15-n|0)*3|0)|0,!((o&e|0)==0&((S()|0)&A|0)==0)){e=2;break A}if(n>>>0>>0)n=n+1|0;else{e=5;break}}else e=2;while(!1);W0(r|0,-1,e<<2|0)|0;A:do if(s)for(i=0;;){if(o=m+(i<<4)|0,tA(o,t[f>>2]|0)|0,o=t[o>>2]|0,l=t[r>>2]|0,(l|0)==-1|(l|0)==(o|0))n=r;else{s=0;do{if(s=s+1|0,s>>>0>=e>>>0){n=1;break A}n=r+(s<<2)|0,l=t[n>>2]|0}while(!((l|0)==-1|(l|0)==(o|0)))}if(t[n>>2]=o,i=i+1|0,i>>>0>=a>>>0){n=0;break}}else for(i=0;;){if(o=m+(i<<4)|0,N(o,t[f>>2]|0,0,1)|0,o=t[o>>2]|0,l=t[r>>2]|0,(l|0)==-1|(l|0)==(o|0))n=r;else{s=0;do{if(s=s+1|0,s>>>0>=e>>>0){n=1;break A}n=r+(s<<2)|0,l=t[n>>2]|0}while(!((l|0)==-1|(l|0)==(o|0)))}if(t[n>>2]=o,i=i+1|0,i>>>0>=a>>>0){n=0;break}}while(!1)}return m=n,b=M,m|0}function xl(){return 12}function es(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(e>>>0>15)return l=4,l|0;if(CA(e|0,0,52)|0,l=S()|0|134225919,!e){r=0,n=0;do je(n)|0&&(CA(n|0,0,45)|0,o=l|(S()|0),e=A+(r<<3)|0,t[e>>2]=-1,t[e+4>>2]=o,r=r+1|0),n=n+1|0;while((n|0)!=122);return r=0,r|0}r=0,o=0;do{if(je(o)|0){for(CA(o|0,0,45)|0,n=1,s=-1,i=l|(S()|0);a=CA(7,0,(15-n|0)*3|0)|0,s=s&~a,i=i&~(S()|0),(n|0)!=(e|0);)n=n+1|0;a=A+(r<<3)|0,t[a>>2]=s,t[a+4>>2]=i,r=r+1|0}o=o+1|0}while((o|0)!=122);return r=0,r|0}function wl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0;if(q=b,b=b+16|0,Y=q,nA=wA(e|0,A|0,52)|0,S()|0,nA=nA&15,r>>>0>15)return nA=4,b=q,nA|0;if((nA|0)<(r|0))return nA=12,b=q,nA|0;if((nA|0)!=(r|0))if(i=CA(r|0,0,52)|0,i=i|e,l=S()|0|A&-15728641,(nA|0)>(r|0)){a=r;do G=CA(7,0,(14-a|0)*3|0)|0,a=a+1|0,i=G|i,l=S()|0|l;while((a|0)<(nA|0));G=i}else G=i;else G=e,l=A;L=wA(G|0,l|0,45)|0,S()|0;A:do if(je(L&127)|0){if(a=wA(G|0,l|0,52)|0,S()|0,a=a&15,a|0)for(i=1;;){if(L=CA(7,0,(15-i|0)*3|0)|0,!((L&G|0)==0&((S()|0)&l|0)==0)){f=33;break A}if(i>>>0>>0)i=i+1|0;else break}if(L=n,t[L>>2]=0,t[L+4>>2]=0,(nA|0)>(r|0)){for(L=A&-15728641,I=nA;;){if(R=I,I=I+-1|0,I>>>0>15|(nA|0)<(I|0)){f=19;break}if((nA|0)!=(I|0))if(i=CA(I|0,0,52)|0,i=i|e,a=S()|0|L,(nA|0)<(R|0))M=i;else{f=I;do M=CA(7,0,(14-f|0)*3|0)|0,f=f+1|0,i=M|i,a=S()|0|a;while((f|0)<(nA|0));M=i}else M=e,a=A;if(m=wA(M|0,a|0,45)|0,S()|0,!(je(m&127)|0))i=0;else{m=wA(M|0,a|0,52)|0,S()|0,m=m&15;e:do if(!m)i=0;else for(f=1;;){if(i=wA(M|0,a|0,(15-f|0)*3|0)|0,S()|0,i=i&7,i|0)break e;if(f>>>0>>0)f=f+1|0;else{i=0;break}}while(!1);i=(i|0)==0&1}if(a=wA(e|0,A|0,(15-R|0)*3|0)|0,S()|0,a=a&7,(a|0)==7){s=5,f=42;break}if(i=(i|0)!=0,(a|0)==1&i){s=5,f=42;break}if(M=a+(((a|0)!=0&i)<<31>>31)|0,M|0&&(f=nA-R|0,f=G0(7,0,f,((f|0)<0)<<31>>31)|0,m=S()|0,i?(i=ft(f|0,m|0,5,0)|0,i=KA(i|0,S()|0,-5,-1)|0,i=V0(i|0,S()|0,6,0)|0,i=KA(i|0,S()|0,1,0)|0,a=S()|0):(i=f,a=m),R=M+-1|0,R=ft(f|0,m|0,R|0,((R|0)<0)<<31>>31|0)|0,R=KA(i|0,a|0,R|0,S()|0)|0,M=S()|0,m=n,m=KA(R|0,M|0,t[m>>2]|0,t[m+4>>2]|0)|0,M=S()|0,R=n,t[R>>2]=m,t[R+4>>2]=M),(I|0)<=(r|0)){f=37;break}}if((f|0)==19)OA(27795,27122,1367,27158);else if((f|0)==37){o=n,s=t[o+4>>2]|0,o=t[o>>2]|0;break}else if((f|0)==42)return b=q,s|0}else s=0,o=0}else f=33;while(!1);A:do if((f|0)==33)if(L=n,t[L>>2]=0,t[L+4>>2]=0,(nA|0)>(r|0)){for(i=nA;;){if(s=wA(e|0,A|0,(15-i|0)*3|0)|0,S()|0,s=s&7,(s|0)==7){s=5;break}if(o=nA-i|0,o=G0(7,0,o,((o|0)<0)<<31>>31)|0,s=ft(o|0,S()|0,s|0,0)|0,o=S()|0,L=n,o=KA(t[L>>2]|0,t[L+4>>2]|0,s|0,o|0)|0,s=S()|0,L=n,t[L>>2]=o,t[L+4>>2]=s,i=i+-1|0,(i|0)<=(r|0))break A}return b=q,s|0}else s=0,o=0;while(!1);return p0(G,l,nA,Y)|0&&OA(27795,27122,1327,27173),nA=Y,Y=t[nA+4>>2]|0,((s|0)>-1|(s|0)==-1&o>>>0>4294967295)&((Y|0)>(s|0)|((Y|0)==(s|0)?(t[nA>>2]|0)>>>0>o>>>0:0))?(nA=0,b=q,nA|0):(OA(27795,27122,1407,27158),0)}function vl(e,A,r,n,s,i){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0;var o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0;if(M=b,b=b+16|0,o=M,s>>>0>15)return i=4,b=M,i|0;if(l=wA(r|0,n|0,52)|0,S()|0,l=l&15,(l|0)>(s|0))return i=12,b=M,i|0;if(p0(r,n,s,o)|0&&OA(27795,27122,1327,27173),m=o,f=t[m+4>>2]|0,!(((A|0)>-1|(A|0)==-1&e>>>0>4294967295)&((f|0)>(A|0)|((f|0)==(A|0)?(t[m>>2]|0)>>>0>e>>>0:0))))return i=2,b=M,i|0;m=s-l|0,s=CA(s|0,0,52)|0,a=S()|0|n&-15728641,f=i,t[f>>2]=s|r,t[f+4>>2]=a,f=wA(r|0,n|0,45)|0,S()|0;A:do if(je(f&127)|0){if(l|0)for(o=1;;){if(f=CA(7,0,(15-o|0)*3|0)|0,!((f&r|0)==0&((S()|0)&n|0)==0))break A;if(o>>>0>>0)o=o+1|0;else break}if((m|0)<1)return i=0,b=M,i|0;for(f=l^15,n=-1,a=1,o=1;;){l=m-a|0,l=G0(7,0,l,((l|0)<0)<<31>>31)|0,r=S()|0;do if(o)if(o=ft(l|0,r|0,5,0)|0,o=KA(o|0,S()|0,-5,-1)|0,o=V0(o|0,S()|0,6,0)|0,s=S()|0,(A|0)>(s|0)|(A|0)==(s|0)&e>>>0>o>>>0){A=KA(e|0,A|0,-1,-1)|0,A=ct(A|0,S()|0,o|0,s|0)|0,o=S()|0,R=i,L=t[R>>2]|0,R=t[R+4>>2]|0,G=(f+n|0)*3|0,I=CA(7,0,G|0)|0,R=R&~(S()|0),n=V0(A|0,o|0,l|0,r|0)|0,e=S()|0,s=KA(n|0,e|0,2,0)|0,G=CA(s|0,S()|0,G|0)|0,R=S()|0|R,s=i,t[s>>2]=G|L&~I,t[s+4>>2]=R,e=ft(n|0,e|0,l|0,r|0)|0,e=ct(A|0,o|0,e|0,S()|0)|0,o=0,A=S()|0;break}else{G=i,I=t[G>>2]|0,G=t[G+4>>2]|0,L=CA(7,0,(f+n|0)*3|0)|0,G=G&~(S()|0),o=i,t[o>>2]=I&~L,t[o+4>>2]=G,o=1;break}else I=i,s=t[I>>2]|0,I=t[I+4>>2]|0,n=(f+n|0)*3|0,R=CA(7,0,n|0)|0,I=I&~(S()|0),G=V0(e|0,A|0,l|0,r|0)|0,o=S()|0,n=CA(G|0,o|0,n|0)|0,I=S()|0|I,L=i,t[L>>2]=n|s&~R,t[L+4>>2]=I,o=ft(G|0,o|0,l|0,r|0)|0,e=ct(e|0,A|0,o|0,S()|0)|0,o=0,A=S()|0;while(!1);if((m|0)>(a|0))n=~a,a=a+1|0;else{A=0;break}}return b=M,A|0}while(!1);if((m|0)<1)return G=0,b=M,G|0;for(s=l^15,o=1;;)if(L=m-o|0,L=G0(7,0,L,((L|0)<0)<<31>>31)|0,G=S()|0,a=i,r=t[a>>2]|0,a=t[a+4>>2]|0,l=(s-o|0)*3|0,n=CA(7,0,l|0)|0,a=a&~(S()|0),R=V0(e|0,A|0,L|0,G|0)|0,I=S()|0,l=CA(R|0,I|0,l|0)|0,a=S()|0|a,f=i,t[f>>2]=l|r&~n,t[f+4>>2]=a,G=ft(R|0,I|0,L|0,G|0)|0,e=ct(e|0,A|0,G|0,S()|0)|0,A=S()|0,(m|0)<=(o|0)){A=0;break}else o=o+1|0;return b=M,A|0}function ts(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;s=wA(A|0,r|0,52)|0,S()|0,s=s&15,(A|0)==0&(r|0)==0|((n|0)>15|(s|0)>(n|0))?(i=-1,A=-1,r=0,s=0):(A=Ys(A,r,s+1|0,n)|0,o=(S()|0)&-15728641,r=CA(n|0,0,52)|0,r=A|r,o=o|(S()|0),A=(Oe(r,o)|0)==0,i=s,A=A?-1:n,s=o),o=e,t[o>>2]=r,t[o+4>>2]=s,t[e+8>>2]=i,t[e+12>>2]=A}function $s(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;if(s=wA(e|0,A|0,52)|0,S()|0,s=s&15,i=n+8|0,t[i>>2]=s,(e|0)==0&(A|0)==0|((r|0)>15|(s|0)>(r|0))){r=n,t[r>>2]=0,t[r+4>>2]=0,t[i>>2]=-1,t[n+12>>2]=-1;return}if(e=Ys(e,A,s+1|0,r)|0,i=(S()|0)&-15728641,s=CA(r|0,0,52)|0,s=e|s,i=i|(S()|0),e=n,t[e>>2]=s,t[e+4>>2]=i,e=n+12|0,Oe(s,i)|0){t[e>>2]=r;return}else{t[e>>2]=-1;return}}function rs(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0;if(r=e,A=t[r>>2]|0,r=t[r+4>>2]|0,!((A|0)==0&(r|0)==0)&&(n=wA(A|0,r|0,52)|0,S()|0,n=n&15,l=CA(1,0,(n^15)*3|0)|0,A=KA(l|0,S()|0,A|0,r|0)|0,r=S()|0,l=e,t[l>>2]=A,t[l+4>>2]=r,l=e+8|0,o=t[l>>2]|0,!((n|0)<(o|0)))){for(a=e+12|0,i=n;;){if((i|0)==(o|0)){n=5;break}if(f=(i|0)==(t[a>>2]|0),s=(15-i|0)*3|0,n=wA(A|0,r|0,s|0)|0,S()|0,n=n&7,f&((n|0)==1&!0)){n=7;break}if(!((n|0)==7&!0)){n=10;break}if(f=CA(1,0,s|0)|0,A=KA(A|0,r|0,f|0,S()|0)|0,r=S()|0,f=e,t[f>>2]=A,t[f+4>>2]=r,(i|0)>(o|0))i=i+-1|0;else{n=10;break}}if((n|0)==5){f=e,t[f>>2]=0,t[f+4>>2]=0,t[l>>2]=-1,t[a>>2]=-1;return}else if((n|0)==7){o=CA(1,0,s|0)|0,o=KA(A|0,r|0,o|0,S()|0)|0,l=S()|0,f=e,t[f>>2]=o,t[f+4>>2]=l,t[a>>2]=i+-1;return}else if((n|0)==10)return}}function tn(e){e=+e;var A=0;return A=e<0?e+6.283185307179586:e,+(e>=6.283185307179586?A+-6.283185307179586:A)}function Tr(e,A){return e=e|0,A=A|0,+$A(+(+k[e>>3]-+k[A>>3]))<17453292519943298e-27?(A=+$A(+(+k[e+8>>3]-+k[A+8>>3]))<17453292519943298e-27,A|0):(A=0,A|0)}function Vt(e,A){switch(e=+e,A=A|0,A|0){case 1:{e=e<0?e+6.283185307179586:e;break}case 2:{e=e>0?e+-6.283185307179586:e;break}}return+e}function bl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+k[A>>3],n=+k[e>>3],i=+ie(+((s-n)*.5)),r=+ie(+((+k[A+8>>3]-+k[e+8>>3])*.5)),r=i*i+r*(+_e(+s)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2)}function rn(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+k[A>>3],n=+k[e>>3],i=+ie(+((s-n)*.5)),r=+ie(+((+k[A+8>>3]-+k[e+8>>3])*.5)),r=i*i+r*(+_e(+s)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2*6371.007180918475)}function kl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+k[A>>3],n=+k[e>>3],i=+ie(+((s-n)*.5)),r=+ie(+((+k[A+8>>3]-+k[e+8>>3])*.5)),r=i*i+r*(+_e(+s)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2*6371.007180918475*1e3)}function Cl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;return i=+k[A>>3],n=+_e(+i),s=+k[A+8>>3]-+k[e+8>>3],o=n*+ie(+s),r=+k[e>>3],+ +Te(+o,+(+ie(+i)*+_e(+r)-+_e(+s)*(n*+ie(+r))))}function El(e,A,r,n){e=e|0,A=+A,r=+r,n=n|0;var s=0,i=0,o=0,l=0;if(r<1e-16){t[n>>2]=t[e>>2],t[n+4>>2]=t[e+4>>2],t[n+8>>2]=t[e+8>>2],t[n+12>>2]=t[e+12>>2];return}i=A<0?A+6.283185307179586:A,i=A>=6.283185307179586?i+-6.283185307179586:i;do if(i<1e-16)A=+k[e>>3]+r,k[n>>3]=A,s=n;else{if(s=+$A(+(i+-3.141592653589793))<1e-16,A=+k[e>>3],s){A=A-r,k[n>>3]=A,s=n;break}if(o=+_e(+r),r=+ie(+r),A=o*+ie(+A)+ +_e(+i)*(r*+_e(+A)),A=A>1?1:A,A=+h0(+(A<-1?-1:A)),k[n>>3]=A,+$A(+(A+-1.5707963267948966))<1e-16){k[n>>3]=1.5707963267948966,k[n+8>>3]=0;return}if(+$A(+(A+1.5707963267948966))<1e-16){k[n>>3]=-1.5707963267948966,k[n+8>>3]=0;return}if(l=1/+_e(+A),i=r*+ie(+i)*l,r=+k[e>>3],A=l*((o-+ie(+A)*+ie(+r))/+_e(+r)),o=i>1?1:i,A=A>1?1:A,A=+k[e+8>>3]+ +Te(+(o<-1?-1:o),+(A<-1?-1:A)),A>3.141592653589793)do A=A+-6.283185307179586;while(A>3.141592653589793);if(A<-3.141592653589793)do A=A+6.283185307179586;while(A<-3.141592653589793);k[n+8>>3]=A;return}while(!1);if(+$A(+(A+-1.5707963267948966))<1e-16){k[s>>3]=1.5707963267948966,k[n+8>>3]=0;return}if(+$A(+(A+1.5707963267948966))<1e-16){k[s>>3]=-1.5707963267948966,k[n+8>>3]=0;return}if(A=+k[e+8>>3],A>3.141592653589793)do A=A+-6.283185307179586;while(A>3.141592653589793);if(A<-3.141592653589793)do A=A+6.283185307179586;while(A<-3.141592653589793);k[n+8>>3]=A}function qs(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(k[A>>3]=+k[20656+(e<<3)>>3],A=0,A|0)}function Sl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(k[A>>3]=+k[20784+(e<<3)>>3],A=0,A|0)}function Ml(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(k[A>>3]=+k[20912+(e<<3)>>3],A=0,A|0)}function Bl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(k[A>>3]=+k[21040+(e<<3)>>3],A=0,A|0)}function bn(e,A){e=e|0,A=A|0;var r=0;return e>>>0>15?(A=4,A|0):(r=G0(7,0,e,((e|0)<0)<<31>>31)|0,r=ft(r|0,S()|0,120,0)|0,e=S()|0,t[A>>2]=r|2,t[A+4>>2]=e,A=0,A|0)}function Js(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;return R=+k[A>>3],m=+k[e>>3],a=+ie(+((R-m)*.5)),i=+k[A+8>>3],f=+k[e+8>>3],o=+ie(+((i-f)*.5)),l=+_e(+m),M=+_e(+R),o=a*a+o*(M*l*o),o=+Te(+ +ye(+o),+ +ye(+(1-o)))*2,a=+k[r>>3],R=+ie(+((a-R)*.5)),n=+k[r+8>>3],i=+ie(+((n-i)*.5)),s=+_e(+a),i=R*R+i*(M*s*i),i=+Te(+ +ye(+i),+ +ye(+(1-i)))*2,a=+ie(+((m-a)*.5)),n=+ie(+((f-n)*.5)),n=a*a+n*(l*s*n),n=+Te(+ +ye(+n),+ +ye(+(1-n)))*2,s=(o+i+n)*.5,+(+mt(+ +ye(+(+et(+(s*.5))*+et(+((s-o)*.5))*+et(+((s-i)*.5))*+et(+((s-n)*.5)))))*4)}function ns(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0;if(l=b,b=b+192|0,i=l+168|0,o=l,s=ar(e,A,i)|0,s|0)return r=s,b=l,r|0;if(_r(e,A,o)|0&&OA(27795,27190,415,27199),A=t[o>>2]|0,(A|0)>0){if(n=+Js(o+8|0,o+8+(((A|0)!=1&1)<<4)|0,i)+0,(A|0)!=1){e=1;do s=e,e=e+1|0,n=n+ +Js(o+8+(s<<4)|0,o+8+(((e|0)%(A|0)|0)<<4)|0,i);while((e|0)<(A|0))}}else n=0;return k[r>>3]=n,r=0,b=l,r|0}function Dl(e,A,r){return e=e|0,A=A|0,r=r|0,e=ns(e,A,r)|0,e|0||(k[r>>3]=+k[r>>3]*6371.007180918475*6371.007180918475),e|0}function _l(e,A,r){return e=e|0,A=A|0,r=r|0,e=ns(e,A,r)|0,e|0||(k[r>>3]=+k[r>>3]*6371.007180918475*6371.007180918475*1e3*1e3),e|0}function Tl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(l=b,b=b+176|0,o=l,e=or(e,A,o)|0,e|0)return o=e,b=l,o|0;if(k[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,b=l,o|0;A=e+-1|0,e=0,n=+k[o+8>>3],s=+k[o+16>>3],i=0;do e=e+1|0,f=n,n=+k[o+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=s,s=+k[o+8+(e<<4)+8>>3],a=+ie(+((s-a)*.5)),a=m*m+a*(+_e(+n)*+_e(+f)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)<(A|0));return k[r>>3]=i,o=0,b=l,o|0}function jl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(l=b,b=b+176|0,o=l,e=or(e,A,o)|0,e|0)return o=e,i=+k[r>>3],i=i*6371.007180918475,k[r>>3]=i,b=l,o|0;if(k[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,i=0,i=i*6371.007180918475,k[r>>3]=i,b=l,o|0;A=e+-1|0,e=0,n=+k[o+8>>3],s=+k[o+16>>3],i=0;do e=e+1|0,f=n,n=+k[o+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=s,s=+k[o+8+(e<<4)+8>>3],a=+ie(+((s-a)*.5)),a=m*m+a*(+_e(+f)*+_e(+n)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)!=(A|0));return k[r>>3]=i,o=0,m=i,m=m*6371.007180918475,k[r>>3]=m,b=l,o|0}function Rl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(l=b,b=b+176|0,o=l,e=or(e,A,o)|0,e|0)return o=e,i=+k[r>>3],i=i*6371.007180918475,i=i*1e3,k[r>>3]=i,b=l,o|0;if(k[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,i=0,i=i*6371.007180918475,i=i*1e3,k[r>>3]=i,b=l,o|0;A=e+-1|0,e=0,n=+k[o+8>>3],s=+k[o+16>>3],i=0;do e=e+1|0,f=n,n=+k[o+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=s,s=+k[o+8+(e<<4)+8>>3],a=+ie(+((s-a)*.5)),a=m*m+a*(+_e(+f)*+_e(+n)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)!=(A|0));return k[r>>3]=i,o=0,m=i,m=m*6371.007180918475,m=m*1e3,k[r>>3]=m,b=l,o|0}function Il(e){e=e|0;var A=0,r=0,n=0;return A=Qt(1,12)|0,A||OA(27280,27235,49,27293),r=e+4|0,n=t[r>>2]|0,n|0?(n=n+8|0,t[n>>2]=A,t[r>>2]=A,A|0):(t[e>>2]|0&&OA(27310,27235,61,27333),n=e,t[n>>2]=A,t[r>>2]=A,A|0)}function Ll(e,A){e=e|0,A=A|0;var r=0,n=0;return n=y0(24)|0,n||OA(27347,27235,78,27361),t[n>>2]=t[A>>2],t[n+4>>2]=t[A+4>>2],t[n+8>>2]=t[A+8>>2],t[n+12>>2]=t[A+12>>2],t[n+16>>2]=0,A=e+4|0,r=t[A>>2]|0,r|0?(t[r+16>>2]=n,t[A>>2]=n,n|0):(t[e>>2]|0&&OA(27376,27235,82,27361),t[e>>2]=n,t[A>>2]=n,n|0)}function Xs(e){e=e|0;var A=0,r=0,n=0,s=0;if(e)for(n=1;;){if(A=t[e>>2]|0,A|0)do{if(r=t[A>>2]|0,r|0)do s=r,r=t[r+16>>2]|0,qA(s);while((r|0)!=0);s=A,A=t[A+8>>2]|0,qA(s)}while((A|0)!=0);if(A=e,e=t[e+8>>2]|0,n||qA(A),e)n=0;else break}}function Nl(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,he=0;if(s=e+8|0,t[s>>2]|0)return he=1,he|0;if(n=t[e>>2]|0,!n)return he=0,he|0;A=n,r=0;do r=r+1|0,A=t[A+8>>2]|0;while((A|0)!=0);if(r>>>0<2)return he=0,he|0;ve=y0(r<<2)|0,ve||OA(27396,27235,317,27415),SA=y0(r<<5)|0,SA||OA(27437,27235,321,27415),t[e>>2]=0,zA=e+4|0,t[zA>>2]=0,t[s>>2]=0,r=0,HA=0,BA=0,M=0;A:for(;;){if(m=t[n>>2]|0,m){i=0,o=m;do{if(a=+k[o+8>>3],A=o,o=t[o+16>>2]|0,f=(o|0)==0,s=f?m:o,l=+k[s+8>>3],+$A(+(a-l))>3.141592653589793){he=14;break}i=i+(l-a)*(+k[A>>3]+ +k[s>>3])}while(!f);if((he|0)==14){he=0,i=0,A=m;do U=+k[A+8>>3],ne=A+16|0,Ee=t[ne>>2]|0,Ee=(Ee|0)==0?m:Ee,$=+k[Ee+8>>3],i=i+(+k[A>>3]+ +k[Ee>>3])*(($<0?$+6.283185307179586:$)-(U<0?U+6.283185307179586:U)),A=t[((A|0)==0?n:ne)>>2]|0;while((A|0)!=0)}i>0?(t[ve+(HA<<2)>>2]=n,HA=HA+1|0,s=BA,A=M):he=19}else he=19;if((he|0)==19){he=0;do if(r){if(A=r+8|0,t[A>>2]|0){he=21;break A}if(r=Qt(1,12)|0,!r){he=23;break A}t[A>>2]=r,s=r+4|0,o=r,A=M}else if(M){s=zA,o=M+8|0,A=n,r=e;break}else if(t[e>>2]|0){he=27;break A}else{s=zA,o=e,A=n,r=e;break}while(!1);if(t[o>>2]=n,t[s>>2]=n,o=SA+(BA<<5)|0,f=t[n>>2]|0,f){for(m=SA+(BA<<5)+8|0,k[m>>3]=17976931348623157e292,M=SA+(BA<<5)+24|0,k[M>>3]=17976931348623157e292,k[o>>3]=-17976931348623157e292,R=SA+(BA<<5)+16|0,k[R>>3]=-17976931348623157e292,nA=17976931348623157e292,q=-17976931348623157e292,s=0,I=f,a=17976931348623157e292,G=17976931348623157e292,Y=-17976931348623157e292,l=-17976931348623157e292;i=+k[I>>3],U=+k[I+8>>3],I=t[I+16>>2]|0,L=(I|0)==0,$=+k[(L?f:I)+8>>3],i>3]=i,a=i),U>3]=U,G=U),i>Y?k[o>>3]=i:i=Y,U>l&&(k[R>>3]=U,l=U),nA=U>0&Uq?U:q,s=s|+$A(+(U-$))>3.141592653589793,!L;)Y=i;s&&(k[R>>3]=q,k[M>>3]=nA)}else t[o>>2]=0,t[o+4>>2]=0,t[o+8>>2]=0,t[o+12>>2]=0,t[o+16>>2]=0,t[o+20>>2]=0,t[o+24>>2]=0,t[o+28>>2]=0;s=BA+1|0}if(ne=n+8|0,n=t[ne>>2]|0,t[ne>>2]=0,n)BA=s,M=A;else{he=45;break}}if((he|0)==21)OA(27213,27235,35,27247);else if((he|0)==23)OA(27267,27235,37,27247);else if((he|0)==27)OA(27310,27235,61,27333);else if((he|0)==45){A:do if((HA|0)>0){for(ne=(s|0)==0,de=s<<2,Ee=(e|0)==0,fe=0,A=0;;){if(QA=t[ve+(fe<<2)>>2]|0,ne)he=73;else{if(BA=y0(de)|0,!BA){he=50;break}if(zA=y0(de)|0,!zA){he=52;break}e:do if(Ee)r=0;else{for(s=0,r=0,o=e;n=SA+(s<<5)|0,Ai(t[o>>2]|0,n,t[QA>>2]|0)|0?(t[BA+(r<<2)>>2]=o,t[zA+(r<<2)>>2]=n,L=r+1|0):L=r,o=t[o+8>>2]|0,o;)s=s+1|0,r=L;if((L|0)>0)if(n=t[BA>>2]|0,(L|0)==1)r=n;else for(R=0,I=-1,r=n,M=n;;){for(f=t[M>>2]|0,n=0,o=0;s=t[t[BA+(o<<2)>>2]>>2]|0,(s|0)==(f|0)?m=n:m=n+((Ai(s,t[zA+(o<<2)>>2]|0,t[f>>2]|0)|0)&1)|0,o=o+1|0,(o|0)!=(L|0);)n=m;if(s=(m|0)>(I|0),r=s?M:r,n=R+1|0,(n|0)==(L|0))break e;R=n,I=s?m:I,M=t[BA+(n<<2)>>2]|0}else r=0}while(!1);if(qA(BA),qA(zA),r){if(s=r+4|0,n=t[s>>2]|0,n)r=n+8|0;else if(t[r>>2]|0){he=70;break}t[r>>2]=QA,t[s>>2]=QA}else he=73}if((he|0)==73){if(he=0,A=t[QA>>2]|0,A|0)do zA=A,A=t[A+16>>2]|0,qA(zA);while((A|0)!=0);qA(QA),A=1}if(fe=fe+1|0,(fe|0)>=(HA|0)){Ve=A;break A}}(he|0)==50?OA(27452,27235,249,27471):(he|0)==52?OA(27490,27235,252,27471):(he|0)==70&&OA(27310,27235,61,27333)}else Ve=0;while(!1);return qA(ve),qA(SA),he=Ve,he|0}return 0}function Ai(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(!(c0(A,r)|0)||(A=Ft(A)|0,n=+k[r>>3],s=+k[r+8>>3],s=A&s<0?s+6.283185307179586:s,e=t[e>>2]|0,!e))return e=0,e|0;if(A){A=0,f=s,r=e;A:for(;;){for(;o=+k[r>>3],s=+k[r+8>>3],r=r+16|0,m=t[r>>2]|0,m=(m|0)==0?e:m,i=+k[m>>3],l=+k[m+8>>3],o>i?(a=o,o=l):(a=i,i=o,o=s,s=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=t[r>>2]|0,!r){r=22;break A}if(l=o<0?o+6.283185307179586:o,o=s<0?s+6.283185307179586:s,f=l==f|o==f?f+-2220446049250313e-31:f,a=l+(o-l)*((n-i)/(a-i)),(a<0?a+6.283185307179586:a)>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}else{A=0,f=s,r=e;A:for(;;){for(;o=+k[r>>3],s=+k[r+8>>3],r=r+16|0,m=t[r>>2]|0,m=(m|0)==0?e:m,i=+k[m>>3],l=+k[m+8>>3],o>i?(a=o,o=l):(a=i,i=o,o=s,s=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=t[r>>2]|0,!r){r=22;break A}if(f=o==f|s==f?f+-2220446049250313e-31:f,o+(s-o)*((n-i)/(a-i))>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}return 0}function _0(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0;if(q=b,b=b+32|0,nA=q+16|0,Y=q,i=wA(e|0,A|0,52)|0,S()|0,i=i&15,I=wA(r|0,n|0,52)|0,S()|0,(i|0)!=(I&15|0))return nA=12,b=q,nA|0;if(f=wA(e|0,A|0,45)|0,S()|0,f=f&127,m=wA(r|0,n|0,45)|0,S()|0,m=m&127,f>>>0>121|m>>>0>121)return nA=5,b=q,nA|0;if(I=(f|0)!=(m|0),I){if(l=sr(f,m)|0,(l|0)==7)return nA=1,b=q,nA|0;a=sr(m,f)|0,(a|0)==7?OA(27514,27538,161,27548):(L=l,o=a)}else L=0,o=0;M=je(f)|0,R=je(m)|0,t[nA>>2]=0,t[nA+4>>2]=0,t[nA+8>>2]=0,t[nA+12>>2]=0;do if(L){if(m=t[4272+(f*28|0)+(L<<2)>>2]|0,l=(m|0)>0,R)if(l){f=0,a=r,l=n;do a=gl(a,l)|0,l=S()|0,o=Ut(o)|0,(o|0)==1&&(o=Ut(1)|0),f=f+1|0;while((f|0)!=(m|0));m=o,f=a,a=l}else m=o,f=r,a=n;else if(l){f=0,a=r,l=n;do a=Jn(a,l)|0,l=S()|0,o=Ut(o)|0,f=f+1|0;while((f|0)!=(m|0));m=o,f=a,a=l}else m=o,f=r,a=n;if(As(f,a,nA)|0,I||OA(27563,27538,191,27548),l=(M|0)!=0,o=(R|0)!=0,l&o&&OA(27590,27538,192,27548),l){if(o=Pt(e,A)|0,(o|0)==7){i=5;break}if(xA[22e3+(o*7|0)+L>>0]|0){i=1;break}a=t[21168+(o*28|0)+(L<<2)>>2]|0,f=a}else if(o){if(o=Pt(f,a)|0,(o|0)==7){i=5;break}if(xA[22e3+(o*7|0)+m>>0]|0){i=1;break}f=0,a=t[21168+(m*28|0)+(o<<2)>>2]|0}else f=0,a=0;if((f|a|0)<0)i=5;else{if((a|0)>0){l=nA+4|0,o=0;do D0(l),o=o+1|0;while((o|0)!=(a|0))}if(t[Y>>2]=0,t[Y+4>>2]=0,t[Y+8>>2]=0,pn(Y,L),i|0)for(;Jt(i)|0?kr(Y):Ht(Y),(i|0)>1;)i=i+-1|0;if((f|0)>0){i=0;do D0(Y),i=i+1|0;while((i|0)!=(f|0))}G=nA+4|0,Ze(G,Y,G),Me(G),G=51}}else if(As(r,n,nA)|0,(M|0)!=0&(R|0)!=0)if((m|0)!=(f|0)&&OA(27621,27538,261,27548),o=Pt(e,A)|0,i=Pt(r,n)|0,(o|0)==7|(i|0)==7)i=5;else if(xA[22e3+(o*7|0)+i>>0]|0)i=1;else if(o=t[21168+(o*28|0)+(i<<2)>>2]|0,(o|0)>0){l=nA+4|0,i=0;do D0(l),i=i+1|0;while((i|0)!=(o|0));G=51}else G=51;else G=51;while(!1);return(G|0)==51&&(i=nA+4|0,t[s>>2]=t[i>>2],t[s+4>>2]=t[i+4>>2],t[s+8>>2]=t[i+8>>2],i=0),nA=i,b=q,nA|0}function ei(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0;if(G=b,b=b+48|0,f=G+36|0,o=G+24|0,l=G+12|0,a=G,s=wA(e|0,A|0,52)|0,S()|0,s=s&15,R=wA(e|0,A|0,45)|0,S()|0,R=R&127,R>>>0>121)return n=5,b=G,n|0;if(m=je(R)|0,CA(s|0,0,52)|0,Y=S()|0|134225919,i=n,t[i>>2]=-1,t[i+4>>2]=Y,!s)return s=St(r)|0,(s|0)==7||(s=nr(R,s)|0,(s|0)==127)?(Y=1,b=G,Y|0):(I=CA(s|0,0,45)|0,L=S()|0,R=n,L=t[R+4>>2]&-1040385|L,Y=n,t[Y>>2]=t[R>>2]|I,t[Y+4>>2]=L,Y=0,b=G,Y|0);for(t[f>>2]=t[r>>2],t[f+4>>2]=t[r+4>>2],t[f+8>>2]=t[r+8>>2],r=s;;){if(i=r,r=r+-1|0,t[o>>2]=t[f>>2],t[o+4>>2]=t[f+4>>2],t[o+8>>2]=t[f+8>>2],Jt(i)|0){if(s=wr(f)|0,s|0){r=13;break}t[l>>2]=t[f>>2],t[l+4>>2]=t[f+4>>2],t[l+8>>2]=t[f+8>>2],kr(l)}else{if(s=gn(f)|0,s|0){r=13;break}t[l>>2]=t[f>>2],t[l+4>>2]=t[f+4>>2],t[l+8>>2]=t[f+8>>2],Ht(l)}if(yt(o,l,a),Me(a),s=n,q=t[s>>2]|0,s=t[s+4>>2]|0,$=(15-i|0)*3|0,nA=CA(7,0,$|0)|0,s=s&~(S()|0),$=CA(St(a)|0,0,$|0)|0,s=S()|0|s,Y=n,t[Y>>2]=$|q&~nA,t[Y+4>>2]=s,(i|0)<=1){r=14;break}}A:do if((r|0)!=13&&(r|0)==14)if((t[f>>2]|0)<=1&&(t[f+4>>2]|0)<=1&&(t[f+8>>2]|0)<=1){r=St(f)|0,s=nr(R,r)|0,(s|0)==127?a=0:a=je(s)|0;e:do if(r){if(m){if(s=Pt(e,A)|0,(s|0)==7){s=5;break A}if(i=t[21376+(s*28|0)+(r<<2)>>2]|0,(i|0)>0){s=r,r=0;do s=Gt(s)|0,r=r+1|0;while((r|0)!=(i|0))}else s=r;if((s|0)==1){s=9;break A}r=nr(R,s)|0,(r|0)==127&&OA(27648,27538,411,27678),je(r)|0?OA(27693,27538,412,27678):(L=r,I=i,M=s)}else L=s,I=0,M=r;if(l=t[4272+(R*28|0)+(M<<2)>>2]|0,(l|0)<=-1&&OA(27724,27538,419,27678),!a){if((I|0)<0){s=5;break A}if(I|0){i=n,s=0,r=t[i>>2]|0,i=t[i+4>>2]|0;do r=lr(r,i)|0,i=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=i,s=s+1|0;while((s|0)<(I|0))}if((l|0)<=0){s=L,r=58;break}for(i=n,s=0,r=t[i>>2]|0,i=t[i+4>>2]|0;;)if(r=lr(r,i)|0,i=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=i,s=s+1|0,(s|0)==(l|0)){s=L,r=58;break e}}if(o=sr(L,R)|0,(o|0)==7&&OA(27514,27538,428,27678),s=n,r=t[s>>2]|0,s=t[s+4>>2]|0,(l|0)>0){i=0;do r=lr(r,s)|0,s=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=s,i=i+1|0;while((i|0)!=(l|0))}if(s=Pt(r,s)|0,(s|0)==7&&OA(27795,27538,440,27678),r=Et(L)|0,r=t[(r?21792:21584)+(o*28|0)+(s<<2)>>2]|0,(r|0)<0&&OA(27795,27538,454,27678),!r)s=L,r=58;else{o=n,s=0,i=t[o>>2]|0,o=t[o+4>>2]|0;do i=qn(i,o)|0,o=S()|0,$=n,t[$>>2]=i,t[$+4>>2]=o,s=s+1|0;while((s|0)<(r|0));s=L,r=58}}else if((m|0)!=0&(a|0)!=0){if(r=Pt(e,A)|0,i=n,i=Pt(t[i>>2]|0,t[i+4>>2]|0)|0,(r|0)==7|(i|0)==7){s=5;break A}if(i=t[21376+(r*28|0)+(i<<2)>>2]|0,(i|0)<0){s=5;break A}if(!i)r=59;else{l=n,r=0,o=t[l>>2]|0,l=t[l+4>>2]|0;do o=lr(o,l)|0,l=S()|0,$=n,t[$>>2]=o,t[$+4>>2]=l,r=r+1|0;while((r|0)<(i|0));r=58}}else r=58;while(!1);if((r|0)==58&&a&&(r=59),(r|0)==59&&($=n,(Pt(t[$>>2]|0,t[$+4>>2]|0)|0)==1)){s=9;break}$=n,nA=t[$>>2]|0,$=t[$+4>>2]&-1040385,q=CA(s|0,0,45)|0,$=$|(S()|0),s=n,t[s>>2]=nA|q,t[s+4>>2]=$,s=0}else s=1;while(!1);return $=s,b=G,$|0}function Fl(e,A,r,n,s,i){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0;var o=0,l=0;return l=b,b=b+16|0,o=l,s?e=15:(e=_0(e,A,r,n,o)|0,e||($r(o,i),e=0)),b=l,e|0}function Pl(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0;return o=b,b=b+16|0,i=o,n?r=15:(r=Mt(r,i)|0,r||(r=ei(e,A,i,s)|0)),b=o,r|0}function Ql(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0;return a=b,b=b+32|0,o=a+12|0,l=a,i=_0(e,A,e,A,o)|0,i|0?(l=i,b=a,l|0):(e=_0(e,A,r,n,l)|0,e|0?(l=e,b=a,l|0):(o=Er(o,l)|0,l=s,t[l>>2]=o,t[l+4>>2]=((o|0)<0)<<31>>31,l=0,b=a,l|0))}function Ol(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0;return a=b,b=b+32|0,o=a+12|0,l=a,i=_0(e,A,e,A,o)|0,!i&&(i=_0(e,A,r,n,l)|0,!i)?(n=Er(o,l)|0,n=KA(n|0,((n|0)<0)<<31>>31|0,1,0)|0,o=S()|0,l=s,t[l>>2]=n,t[l+4>>2]=o,l=0,b=a,l|0):(l=i,b=a,l|0)}function zl(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0;if(QA=b,b=b+48|0,BA=QA+24|0,o=QA+12|0,zA=QA,i=_0(e,A,e,A,BA)|0,!i&&(i=_0(e,A,r,n,o)|0,!i)){$=Er(BA,o)|0,U=(($|0)<0)<<31>>31,t[BA>>2]=0,t[BA+4>>2]=0,t[BA+8>>2]=0,t[o>>2]=0,t[o+4>>2]=0,t[o+8>>2]=0,_0(e,A,e,A,BA)|0&&OA(27795,27538,692,27747),_0(e,A,r,n,o)|0&&OA(27795,27538,697,27747),qr(BA),qr(o),m=($|0)==0?0:1/+($|0),r=t[BA>>2]|0,G=m*+((t[o>>2]|0)-r|0),Y=BA+4|0,n=t[Y>>2]|0,nA=m*+((t[o+4>>2]|0)-n|0),q=BA+8|0,i=t[q>>2]|0,m=m*+((t[o+8>>2]|0)-i|0),t[zA>>2]=r,M=zA+4|0,t[M>>2]=n,R=zA+8|0,t[R>>2]=i;A:do if(($|0)<0)i=0;else for(I=0,L=0;;){a=+(L>>>0)+4294967296*+(I|0),fe=G*a+ +(r|0),l=nA*a+ +(n|0),a=m*a+ +(i|0),r=~~+Sn(+fe),o=~~+Sn(+l),i=~~+Sn(+a),fe=+$A(+(+(r|0)-fe)),l=+$A(+(+(o|0)-l)),a=+$A(+(+(i|0)-a));do if(fe>l&fe>a)r=0-(o+i)|0,n=o;else if(f=0-r|0,l>a){n=f-i|0;break}else{n=o,i=f-o|0;break}while(!1);if(t[zA>>2]=r,t[M>>2]=n,t[R>>2]=i,Jr(zA),i=ei(e,A,zA,s+(L<<3)|0)|0,i|0)break A;if(!((I|0)<(U|0)|(I|0)==(U|0)&L>>>0<$>>>0)){i=0;break A}r=KA(L|0,I|0,1,0)|0,n=S()|0,I=n,L=r,r=t[BA>>2]|0,n=t[Y>>2]|0,i=t[q>>2]|0}while(!1);return zA=i,b=QA,zA|0}return zA=i,b=QA,zA|0}function G0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;if((r|0)==0&(n|0)==0)return s=0,i=1,YA(s|0),i|0;i=e,s=A,e=1,A=0;do o=(r&1|0)==0&!0,e=ft((o?1:i)|0,(o?0:s)|0,e|0,A|0)|0,A=S()|0,r=hi(r|0,n|0,1)|0,n=S()|0,i=ft(i|0,s|0,i|0,s|0)|0,s=S()|0;while(!((r|0)==0&(n|0)==0));return YA(A|0),e|0}function ss(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0;l=b,b=b+16|0,i=l,o=wA(e|0,A|0,52)|0,S()|0,o=o&15;do if(o){if(s=ar(e,A,i)|0,!s){f=+k[i>>3],a=1/+_e(+f),m=+k[25968+(o<<3)>>3],k[r>>3]=f+m,k[r+8>>3]=f-m,f=+k[i+8>>3],a=m*a,k[r+16>>3]=a+f,k[r+24>>3]=f-a;break}return o=s,b=l,o|0}else{if(s=wA(e|0,A|0,45)|0,S()|0,s=s&127,s>>>0>121)return o=5,b=l,o|0;i=22064+(s<<5)|0,t[r>>2]=t[i>>2],t[r+4>>2]=t[i+4>>2],t[r+8>>2]=t[i+8>>2],t[r+12>>2]=t[i+12>>2],t[r+16>>2]=t[i+16>>2],t[r+20>>2]=t[i+20>>2],t[r+24>>2]=t[i+24>>2],t[r+28>>2]=t[i+28>>2];break}while(!1);return VA(r,n?1.4:1.1),n=26096+(o<<3)|0,(t[n>>2]|0)==(e|0)&&(t[n+4>>2]|0)==(A|0)&&(k[r>>3]=1.5707963267948966),o=26224+(o<<3)|0,(t[o>>2]|0)==(e|0)&&(t[o+4>>2]|0)==(A|0)&&(k[r+8>>3]=-1.5707963267948966),+k[r>>3]!=1.5707963267948966&&+k[r+8>>3]!=-1.5707963267948966?(o=0,b=l,o|0):(k[r+16>>3]=3.141592653589793,k[r+24>>3]=-3.141592653589793,o=0,b=l,o|0)}function Hl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0;f=b,b=b+48|0,o=f+32|0,i=f+40|0,l=f,Dt(o,0,0,0),a=t[o>>2]|0,o=t[o+4>>2]|0;do if(r>>>0<=15){if(s=sn(n)|0,s|0){n=l,t[n>>2]=0,t[n+4>>2]=0,t[l+8>>2]=s,t[l+12>>2]=-1,n=l+16|0,a=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,xA[n+12>>0]=0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}if(s=Qt((t[A+8>>2]|0)+1|0,32)|0,s){is(A,s),m=l,t[m>>2]=a,t[m+4>>2]=o,t[l+8>>2]=0,t[l+12>>2]=r,t[l+16>>2]=n,t[l+20>>2]=A,t[l+24>>2]=s,xA[l+28>>0]=0,a=l+29|0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}else{n=l,t[n>>2]=0,t[n+4>>2]=0,t[l+8>>2]=13,t[l+12>>2]=-1,n=l+16|0,a=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,xA[n+12>>0]=0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}}else a=l,t[a>>2]=0,t[a+4>>2]=0,t[l+8>>2]=4,t[l+12>>2]=-1,a=l+16|0,m=l+29|0,t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,xA[a+12>>0]=0,xA[m>>0]=xA[i>>0]|0,xA[m+1>>0]=xA[i+1>>0]|0,xA[m+2>>0]=xA[i+2>>0]|0;while(!1);kn(l),t[e>>2]=t[l>>2],t[e+4>>2]=t[l+4>>2],t[e+8>>2]=t[l+8>>2],t[e+12>>2]=t[l+12>>2],t[e+16>>2]=t[l+16>>2],t[e+20>>2]=t[l+20>>2],t[e+24>>2]=t[l+24>>2],t[e+28>>2]=t[l+28>>2],b=f}function kn(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0;if(U=b,b=b+336|0,I=U+168|0,L=U,n=e,r=t[n>>2]|0,n=t[n+4>>2]|0,(r|0)==0&(n|0)==0){b=U;return}if(A=e+28|0,xA[A>>0]|0?(r=ti(r,n)|0,n=S()|0):xA[A>>0]=1,$=e+20|0,!(t[t[$>>2]>>2]|0)){A=e+24|0,r=t[A>>2]|0,r|0&&qA(r),q=e,t[q>>2]=0,t[q+4>>2]=0,t[e+8>>2]=0,t[$>>2]=0,t[e+12>>2]=-1,t[e+16>>2]=0,t[A>>2]=0,b=U;return}q=e+16|0,A=t[q>>2]|0,s=A&15;A:do if((r|0)==0&(n|0)==0)nA=e+24|0;else{G=e+12|0,M=(s|0)==3,m=A&255,a=(s|1|0)==3,R=e+24|0,f=(s+-1|0)>>>0<3,o=(s|2|0)==3,l=L+8|0;e:for(;;){if(i=wA(r|0,n|0,52)|0,S()|0,i=i&15,(i|0)==(t[G>>2]|0)){switch(m&15){case 0:case 2:case 3:{if(s=ar(r,n,I)|0,s|0){Y=15;break e}if(os(t[$>>2]|0,t[R>>2]|0,I)|0){Y=19;break e}break}}if(a&&(s=t[(t[$>>2]|0)+4>>2]|0,t[I>>2]=t[s>>2],t[I+4>>2]=t[s+4>>2],t[I+8>>2]=t[s+8>>2],t[I+12>>2]=t[s+12>>2],c0(26832,I)|0)){if(Xn(t[(t[$>>2]|0)+4>>2]|0,i,L)|0){Y=25;break}if(s=L,(t[s>>2]|0)==(r|0)&&(t[s+4>>2]|0)==(n|0)){Y=29;break}}if(f){if(s=_r(r,n,I)|0,s|0){Y=32;break}if(ss(r,n,L,0)|0){Y=36;break}if(o&&ni(t[$>>2]|0,t[R>>2]|0,I,L)|0){Y=42;break}if(a&&si(t[$>>2]|0,t[R>>2]|0,I,L)|0){Y=42;break}}if(M){if(A=ss(r,n,I,1)|0,s=t[R>>2]|0,A|0){Y=45;break}if(Ne(s,I)|0){if(aA(L,I),H(I,t[R>>2]|0)|0){Y=53;break}if(os(t[$>>2]|0,t[R>>2]|0,l)|0){Y=53;break}if(si(t[$>>2]|0,t[R>>2]|0,L,I)|0){Y=53;break}}}}do if((i|0)<(t[G>>2]|0)){if(A=ss(r,n,I,1)|0,s=t[R>>2]|0,A|0){Y=58;break e}if(!(Ne(s,I)|0)){Y=73;break}if(H(t[R>>2]|0,I)|0&&(aA(L,I),ni(t[$>>2]|0,t[R>>2]|0,L,I)|0)){Y=65;break e}if(r=Ks(r,n,i+1|0,L)|0,r|0){Y=67;break e}n=L,r=t[n>>2]|0,n=t[n+4>>2]|0}else Y=73;while(!1);if((Y|0)==73&&(Y=0,r=ti(r,n)|0,n=S()|0),(r|0)==0&(n|0)==0){nA=R;break A}}switch(Y|0){case 15:{A=t[R>>2]|0,A|0&&qA(A),Y=e,t[Y>>2]=0,t[Y+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=s,Y=20;break}case 19:{t[e>>2]=r,t[e+4>>2]=n,Y=20;break}case 25:{OA(27795,27761,470,27772);break}case 29:{t[e>>2]=r,t[e+4>>2]=n,b=U;return}case 32:{A=t[R>>2]|0,A|0&&qA(A),nA=e,t[nA>>2]=0,t[nA+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=s,b=U;return}case 36:{OA(27795,27761,493,27772);break}case 42:{t[e>>2]=r,t[e+4>>2]=n,b=U;return}case 45:{s|0&&qA(s),Y=e,t[Y>>2]=0,t[Y+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=A,Y=55;break}case 53:{t[e>>2]=r,t[e+4>>2]=n,Y=55;break}case 58:{s|0&&qA(s),Y=e,t[Y>>2]=0,t[Y+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=A,Y=71;break}case 65:{t[e>>2]=r,t[e+4>>2]=n,Y=71;break}case 67:{A=t[R>>2]|0,A|0&&qA(A),nA=e,t[nA>>2]=0,t[nA+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=r,b=U;return}}if((Y|0)==20){b=U;return}else if((Y|0)==55){b=U;return}else if((Y|0)==71){b=U;return}}while(!1);A=t[nA>>2]|0,A|0&&qA(A),Y=e,t[Y>>2]=0,t[Y+4>>2]=0,t[e+8>>2]=0,t[$>>2]=0,t[e+12>>2]=-1,t[q>>2]=0,t[nA>>2]=0,b=U}function ti(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0;M=b,b=b+16|0,m=M,n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0;do if(n){for(;r=CA(n+4095|0,0,52)|0,s=S()|0|A&-15728641,i=(15-n|0)*3|0,o=CA(7,0,i|0)|0,l=S()|0,r=r|e|o,s=s|l,a=wA(e|0,A|0,i|0)|0,S()|0,a=a&7,n=n+-1|0,!(a>>>0<6);)if(n)A=s,e=r;else{f=4;break}if((f|0)==4){r=wA(r|0,s|0,45)|0,S()|0;break}return m=(a|0)==0&(Oe(r,s)|0)!=0,m=CA((m?2:1)+a|0,0,i|0)|0,f=S()|0|A&~l,m=m|e&~o,YA(f|0),b=M,m|0}while(!1);return r=r&127,r>>>0>120?(f=0,m=0,YA(f|0),b=M,m|0):(Dt(m,0,r+1|0,0),f=t[m+4>>2]|0,m=t[m>>2]|0,YA(f|0),b=M,m|0)}function Gl(e,A,r,n,s,i){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0;var o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0;Y=b,b=b+160|0,M=Y+80|0,l=Y+64|0,R=Y+112|0,G=Y,Hl(M,e,A,r),f=M,ts(l,t[f>>2]|0,t[f+4>>2]|0,A),f=l,a=t[f>>2]|0,f=t[f+4>>2]|0,o=t[M+8>>2]|0,I=R+4|0,t[I>>2]=t[M>>2],t[I+4>>2]=t[M+4>>2],t[I+8>>2]=t[M+8>>2],t[I+12>>2]=t[M+12>>2],t[I+16>>2]=t[M+16>>2],t[I+20>>2]=t[M+20>>2],t[I+24>>2]=t[M+24>>2],t[I+28>>2]=t[M+28>>2],I=G,t[I>>2]=a,t[I+4>>2]=f,I=G+8|0,t[I>>2]=o,e=G+12|0,A=R,r=e+36|0;do t[e>>2]=t[A>>2],e=e+4|0,A=A+4|0;while((e|0)<(r|0));if(R=G+48|0,t[R>>2]=t[l>>2],t[R+4>>2]=t[l+4>>2],t[R+8>>2]=t[l+8>>2],t[R+12>>2]=t[l+12>>2],(a|0)==0&(f|0)==0)return G=o,b=Y,G|0;r=G+16|0,m=G+24|0,M=G+28|0,o=0,l=0,A=a,e=f;do{if(!((o|0)<(s|0)|(o|0)==(s|0)&l>>>0>>0)){L=4;break}if(f=l,l=KA(l|0,o|0,1,0)|0,o=S()|0,f=i+(f<<3)|0,t[f>>2]=A,t[f+4>>2]=e,rs(R),e=R,A=t[e>>2]|0,e=t[e+4>>2]|0,(A|0)==0&(e|0)==0){if(kn(r),A=r,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0){L=10;break}$s(e,A,t[M>>2]|0,R),e=R,A=t[e>>2]|0,e=t[e+4>>2]|0}f=G,t[f>>2]=A,t[f+4>>2]=e}while(!((A|0)==0&(e|0)==0));return(L|0)==4?(e=G+40|0,A=t[e>>2]|0,A|0&&qA(A),L=G+16|0,t[L>>2]=0,t[L+4>>2]=0,t[m>>2]=0,t[G+36>>2]=0,t[M>>2]=-1,t[G+32>>2]=0,t[e>>2]=0,$s(0,0,0,R),t[G>>2]=0,t[G+4>>2]=0,t[I>>2]=0,G=14,b=Y,G|0):((L|0)==10&&(t[G>>2]=0,t[G+4>>2]=0,t[I>>2]=t[m>>2]),G=t[I>>2]|0,b=Y,G|0)}function Ul(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0;if(M=b,b=b+48|0,a=M+32|0,l=M+40|0,f=M,!(t[e>>2]|0))return m=n,t[m>>2]=0,t[m+4>>2]=0,m=0,b=M,m|0;Dt(a,0,0,0),o=a,s=t[o>>2]|0,o=t[o+4>>2]|0;do if(A>>>0>15)m=f,t[m>>2]=0,t[m+4>>2]=0,t[f+8>>2]=4,t[f+12>>2]=-1,m=f+16|0,r=f+29|0,t[m>>2]=0,t[m+4>>2]=0,t[m+8>>2]=0,xA[m+12>>0]=0,xA[r>>0]=xA[l>>0]|0,xA[r+1>>0]=xA[l+1>>0]|0,xA[r+2>>0]=xA[l+2>>0]|0,r=4,m=9;else{if(r=sn(r)|0,r|0){a=f,t[a>>2]=0,t[a+4>>2]=0,t[f+8>>2]=r,t[f+12>>2]=-1,a=f+16|0,m=f+29|0,t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,xA[a+12>>0]=0,xA[m>>0]=xA[l>>0]|0,xA[m+1>>0]=xA[l+1>>0]|0,xA[m+2>>0]=xA[l+2>>0]|0,m=9;break}if(r=Qt((t[e+8>>2]|0)+1|0,32)|0,!r){m=f,t[m>>2]=0,t[m+4>>2]=0,t[f+8>>2]=13,t[f+12>>2]=-1,m=f+16|0,r=f+29|0,t[m>>2]=0,t[m+4>>2]=0,t[m+8>>2]=0,xA[m+12>>0]=0,xA[r>>0]=xA[l>>0]|0,xA[r+1>>0]=xA[l+1>>0]|0,xA[r+2>>0]=xA[l+2>>0]|0,r=13,m=9;break}is(e,r),I=f,t[I>>2]=s,t[I+4>>2]=o,o=f+8|0,t[o>>2]=0,t[f+12>>2]=A,t[f+20>>2]=e,t[f+24>>2]=r,xA[f+28>>0]=0,s=f+29|0,xA[s>>0]=xA[l>>0]|0,xA[s+1>>0]=xA[l+1>>0]|0,xA[s+2>>0]=xA[l+2>>0]|0,t[f+16>>2]=3,R=+ir(r),R=R*+Yr(r),i=+$A(+ +k[r>>3]),i=R/+_e(+ +En(+i,+ +$A(+ +k[r+8>>3])))*6371.007180918475*6371.007180918475,s=f+12|0,r=t[s>>2]|0;A:do if((r|0)>0)do{if(qs(r+-1|0,a)|0,!(i/+k[a>>3]>10))break A;I=t[s>>2]|0,r=I+-1|0,t[s>>2]=r}while((I|0)>1);while(!1);if(kn(f),s=n,t[s>>2]=0,t[s+4>>2]=0,s=f,r=t[s>>2]|0,s=t[s+4>>2]|0,!((r|0)==0&(s|0)==0))do p0(r,s,A,a)|0,l=a,e=n,l=KA(t[e>>2]|0,t[e+4>>2]|0,t[l>>2]|0,t[l+4>>2]|0)|0,e=S()|0,I=n,t[I>>2]=l,t[I+4>>2]=e,kn(f),I=f,r=t[I>>2]|0,s=t[I+4>>2]|0;while(!((r|0)==0&(s|0)==0));r=t[o>>2]|0}while(!1);return I=r,b=M,I|0}function nn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;if(!(c0(A,r)|0)||(A=Ft(A)|0,n=+k[r>>3],s=+k[r+8>>3],s=A&s<0?s+6.283185307179586:s,R=t[e>>2]|0,(R|0)<=0))return R=0,R|0;if(M=t[e+4>>2]|0,A){A=0,m=s,r=-1,e=0;A:for(;;){for(f=e;o=+k[M+(f<<4)>>3],s=+k[M+(f<<4)+8>>3],e=(r+2|0)%(R|0)|0,i=+k[M+(e<<4)>>3],l=+k[M+(e<<4)+8>>3],o>i?(a=o,o=l):(a=i,i=o,o=s,s=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=f+1|0,(r|0)>=(R|0)){r=22;break A}else e=f,f=r,r=e;if(l=o<0?o+6.283185307179586:o,o=s<0?s+6.283185307179586:s,m=l==m|o==m?m+-2220446049250313e-31:m,a=l+(o-l)*((n-i)/(a-i)),(a<0?a+6.283185307179586:a)>m&&(A=A^1),e=f+1|0,(e|0)>=(R|0)){r=22;break}else r=f}if((r|0)==22)return A|0}else{A=0,m=s,r=-1,e=0;A:for(;;){for(f=e;o=+k[M+(f<<4)>>3],s=+k[M+(f<<4)+8>>3],e=(r+2|0)%(R|0)|0,i=+k[M+(e<<4)>>3],l=+k[M+(e<<4)+8>>3],o>i?(a=o,o=l):(a=i,i=o,o=s,s=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=f+1|0,(r|0)>=(R|0)){r=22;break A}else e=f,f=r,r=e;if(m=o==m|s==m?m+-2220446049250313e-31:m,o+(s-o)*((n-i)/(a-i))>m&&(A=A^1),e=f+1|0,(e|0)>=(R|0)){r=22;break}else r=f}if((r|0)==22)return A|0}return 0}function ri(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0;if(L=t[e>>2]|0,!L){t[A>>2]=0,t[A+4>>2]=0,t[A+8>>2]=0,t[A+12>>2]=0,t[A+16>>2]=0,t[A+20>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0;return}if(G=A+8|0,k[G>>3]=17976931348623157e292,Y=A+24|0,k[Y>>3]=17976931348623157e292,k[A>>3]=-17976931348623157e292,nA=A+16|0,k[nA>>3]=-17976931348623157e292,!((L|0)<=0)){for(R=t[e+4>>2]|0,f=17976931348623157e292,m=-17976931348623157e292,M=0,e=-1,i=17976931348623157e292,o=17976931348623157e292,a=-17976931348623157e292,n=-17976931348623157e292,I=0;r=+k[R+(I<<4)>>3],l=+k[R+(I<<4)+8>>3],e=e+2|0,s=+k[R+(((e|0)==(L|0)?0:e)<<4)+8>>3],r>3]=r,i=r),l>3]=l,o=l),r>a?k[A>>3]=r:r=a,l>n&&(k[nA>>3]=l,n=l),f=l>0&lm?l:m,M=M|+$A(+(l-s))>3.141592653589793,e=I+1|0,(e|0)!=(L|0);)q=I,a=r,I=e,e=q;M&&(k[nA>>3]=m,k[Y>>3]=f)}}function sn(e){return e=e|0,(e>>>0<4?0:15)|0}function is(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0;if(L=t[e>>2]|0,L){if(G=A+8|0,k[G>>3]=17976931348623157e292,Y=A+24|0,k[Y>>3]=17976931348623157e292,k[A>>3]=-17976931348623157e292,nA=A+16|0,k[nA>>3]=-17976931348623157e292,(L|0)>0){for(s=t[e+4>>2]|0,R=17976931348623157e292,I=-17976931348623157e292,n=0,r=-1,a=17976931348623157e292,f=17976931348623157e292,M=-17976931348623157e292,o=-17976931348623157e292,q=0;i=+k[s+(q<<4)>>3],m=+k[s+(q<<4)+8>>3],zA=r+2|0,l=+k[s+(((zA|0)==(L|0)?0:zA)<<4)+8>>3],i>3]=i,a=i),m>3]=m,f=m),i>M?k[A>>3]=i:i=M,m>o&&(k[nA>>3]=m,o=m),R=m>0&mI?m:I,n=n|+$A(+(m-l))>3.141592653589793,r=q+1|0,(r|0)!=(L|0);)zA=q,M=i,q=r,r=zA;n&&(k[nA>>3]=I,k[Y>>3]=R)}}else t[A>>2]=0,t[A+4>>2]=0,t[A+8>>2]=0,t[A+12>>2]=0,t[A+16>>2]=0,t[A+20>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0;if(zA=e+8|0,r=t[zA>>2]|0,!((r|0)<=0)){BA=e+12|0,U=0;do if(s=t[BA>>2]|0,n=U,U=U+1|0,Y=A+(U<<5)|0,nA=t[s+(n<<3)>>2]|0,nA){if(q=A+(U<<5)+8|0,k[q>>3]=17976931348623157e292,e=A+(U<<5)+24|0,k[e>>3]=17976931348623157e292,k[Y>>3]=-17976931348623157e292,$=A+(U<<5)+16|0,k[$>>3]=-17976931348623157e292,(nA|0)>0){for(L=t[s+(n<<3)+4>>2]|0,R=17976931348623157e292,I=-17976931348623157e292,s=0,n=-1,G=0,a=17976931348623157e292,f=17976931348623157e292,m=-17976931348623157e292,o=-17976931348623157e292;i=+k[L+(G<<4)>>3],M=+k[L+(G<<4)+8>>3],n=n+2|0,l=+k[L+(((n|0)==(nA|0)?0:n)<<4)+8>>3],i>3]=i,a=i),M>3]=M,f=M),i>m?k[Y>>3]=i:i=m,M>o&&(k[$>>3]=M,o=M),R=M>0&MI?M:I,s=s|+$A(+(M-l))>3.141592653589793,n=G+1|0,(n|0)!=(nA|0);)QA=G,G=n,m=i,n=QA;s&&(k[$>>3]=I,k[e>>3]=R)}}else t[Y>>2]=0,t[Y+4>>2]=0,t[Y+8>>2]=0,t[Y+12>>2]=0,t[Y+16>>2]=0,t[Y+20>>2]=0,t[Y+24>>2]=0,t[Y+28>>2]=0,r=t[zA>>2]|0;while((U|0)<(r|0))}}function os(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(!(nn(e,A,r)|0))return s=0,s|0;if(s=e+8|0,(t[s>>2]|0)<=0)return s=1,s|0;for(n=e+12|0,e=0;;){if(i=e,e=e+1|0,nn((t[n>>2]|0)+(i<<3)|0,A+(e<<5)|0,r)|0){e=0,n=6;break}if((e|0)>=(t[s>>2]|0)){e=1,n=6;break}}return(n|0)==6?e|0:0}function ni(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(f=b,b=b+16|0,l=f,o=r+8|0,!(nn(e,A,o)|0))return a=0,b=f,a|0;a=e+8|0;A:do if((t[a>>2]|0)>0){for(i=e+12|0,s=0;;){if(m=s,s=s+1|0,nn((t[i>>2]|0)+(m<<3)|0,A+(s<<5)|0,o)|0){s=0;break}if((s|0)>=(t[a>>2]|0))break A}return b=f,s|0}while(!1);if(Cn(e,A,r,n)|0)return m=0,b=f,m|0;t[l>>2]=t[r>>2],t[l+4>>2]=o,s=t[a>>2]|0;A:do if((s|0)>0)for(e=e+12|0,o=0,i=s;;){if(s=t[e>>2]|0,(t[s+(o<<3)>>2]|0)>0){if(nn(l,n,t[s+(o<<3)+4>>2]|0)|0){s=0;break A}if(s=o+1|0,Cn((t[e>>2]|0)+(o<<3)|0,A+(s<<5)|0,r,n)|0){s=0;break A}i=t[a>>2]|0}else s=o+1|0;if((s|0)<(i|0))o=s;else{s=1;break}}else s=1;while(!1);return m=s,b=f,m|0}function Cn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0;if(zA=b,b=b+176|0,q=zA+172|0,s=zA+168|0,$=zA,!(Ne(A,n)|0))return e=0,b=zA,e|0;if(B0(A,n,q,s),Ir($|0,r|0,168)|0,(t[r>>2]|0)>0){A=0;do QA=$+8+(A<<4)+8|0,nA=+Vt(+k[QA>>3],t[s>>2]|0),k[QA>>3]=nA,A=A+1|0;while((A|0)<(t[r>>2]|0))}G=+k[n>>3],Y=+k[n+8>>3],nA=+Vt(+k[n+16>>3],t[s>>2]|0),I=+Vt(+k[n+24>>3],t[s>>2]|0);A:do if((t[e>>2]|0)>0){if(n=e+4|0,s=t[$>>2]|0,(s|0)<=0){for(A=0;;)if(A=A+1|0,(A|0)>=(t[e>>2]|0)){A=0;break A}}for(r=0;;){if(A=t[n>>2]|0,R=+k[A+(r<<4)>>3],L=+Vt(+k[A+(r<<4)+8>>3],t[q>>2]|0),A=t[n>>2]|0,r=r+1|0,QA=(r|0)%(t[e>>2]|0)|0,i=+k[A+(QA<<4)>>3],o=+Vt(+k[A+(QA<<4)+8>>3],t[q>>2]|0),!(R>=G)|!(i>=G)&&!(R<=Y)|!(i<=Y)&&!(L<=I)|!(o<=I)&&!(L>=nA)|!(o>=nA)){M=i-R,f=o-L,A=0;do if(fe=A,A=A+1|0,QA=(A|0)==(s|0)?0:A,i=+k[$+8+(fe<<4)+8>>3],o=+k[$+8+(QA<<4)+8>>3]-i,l=+k[$+8+(fe<<4)>>3],a=+k[$+8+(QA<<4)>>3]-l,m=M*o-f*a,m!=0&&(U=L-i,BA=R-l,a=(U*a-o*BA)/m,!(a<0|a>1))&&(m=(M*U-f*BA)/m,m>=0&m<=1)){A=1;break A}while((A|0)<(s|0))}if((r|0)>=(t[e>>2]|0)){A=0;break}}}else A=0;while(!1);return fe=A,b=zA,fe|0}function si(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;if(Cn(e,A,r,n)|0)return i=1,i|0;if(i=e+8|0,(t[i>>2]|0)<=0)return i=0,i|0;for(s=e+12|0,e=0;;){if(o=e,e=e+1|0,Cn((t[s>>2]|0)+(o<<3)|0,A+(e<<5)|0,r,n)|0){e=1,s=6;break}if((e|0)>=(t[i>>2]|0)){e=0,s=6;break}}return(s|0)==6?e|0:0}function Vl(){return 8}function Wl(){return 16}function Yl(){return 168}function Kl(){return 8}function Zl(){return 16}function $l(){return 12}function ql(){return 8}function Jl(e){return e=e|0,+(+((t[e>>2]|0)>>>0)+4294967296*+(t[e+4>>2]|0))}function Xl(e){e=e|0;var A=0,r=0;return r=+k[e>>3],A=+k[e+8>>3],+ +ye(+(r*r+A*A))}function ii(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;f=+k[e>>3],a=+k[A>>3]-f,l=+k[e+8>>3],o=+k[A+8>>3]-l,M=+k[r>>3],i=+k[n>>3]-M,R=+k[r+8>>3],m=+k[n+8>>3]-R,i=(i*(l-R)-(f-M)*m)/(a*m-o*i),k[s>>3]=f+a*i,k[s+8>>3]=l+o*i}function oi(e,A){return e=e|0,A=A|0,+$A(+(+k[e>>3]-+k[A>>3]))<11920928955078125e-23?(A=+$A(+(+k[e+8>>3]-+k[A+8>>3]))<11920928955078125e-23,A|0):(A=0,A|0)}function it(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;return s=+k[e>>3]-+k[A>>3],n=+k[e+8>>3]-+k[A+8>>3],r=+k[e+16>>3]-+k[A+16>>3],+(s*s+n*n+r*r)}function Aa(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;r=+k[e>>3],n=+_e(+r),r=+ie(+r),k[A+16>>3]=r,r=+k[e+8>>3],s=n*+_e(+r),k[A>>3]=s,r=n*+ie(+r),k[A+8>>3]=r}function ea(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(i=b,b=b+16|0,s=i,n=Oe(e,A)|0,(r+-1|0)>>>0>5||(n=(n|0)!=0,(r|0)==1&n))return s=-1,b=i,s|0;do if(on(e,A,s)|0)n=-1;else if(n){n=((t[26352+(r<<2)>>2]|0)+5-(t[s>>2]|0)|0)%5|0;break}else{n=((t[26384+(r<<2)>>2]|0)+6-(t[s>>2]|0)|0)%6|0;break}while(!1);return s=n,b=i,s|0}function on(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(m=b,b=b+32|0,l=m+16|0,a=m,n=Dr(e,A,l)|0,n|0)return r=n,b=m,r|0;i=te(e,A)|0,f=Pt(e,A)|0,z0(i,a),n=qt(i,t[l>>2]|0)|0;do if(je(i)|0){do switch(i|0){case 4:{s=0;break}case 14:{s=1;break}case 24:{s=2;break}case 38:{s=3;break}case 49:{s=4;break}case 58:{s=5;break}case 63:{s=6;break}case 72:{s=7;break}case 83:{s=8;break}case 97:{s=9;break}case 107:{s=10;break}case 117:{s=11;break}default:OA(27795,27797,75,27806)}while(!1);if(o=t[26416+(s*24|0)+8>>2]|0,A=t[26416+(s*24|0)+16>>2]|0,e=t[l>>2]|0,(e|0)!=(t[a>>2]|0)&&(a=Et(i)|0,e=t[l>>2]|0,a|(e|0)==(A|0)&&(n=(n+1|0)%6|0)),(f|0)==3&(e|0)==(A|0)){n=(n+5|0)%6|0;break}(f|0)==5&(e|0)==(o|0)&&(n=(n+1|0)%6|0)}while(!1);return t[r>>2]=n,r=0,b=m,r|0}function Xt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0;if($=b,b=b+32|0,q=$+24|0,Y=$+20|0,L=$+8|0,I=$+16|0,R=$,a=(Oe(e,A)|0)==0,a=a?6:5,m=wA(e|0,A|0,52)|0,S()|0,m=m&15,a>>>0<=r>>>0)return n=2,b=$,n|0;M=(m|0)==0,!M&&(G=CA(7,0,(m^15)*3|0)|0,(G&e|0)==0&((S()|0)&A|0)==0)?s=r:i=4;A:do if((i|0)==4){if(s=(Oe(e,A)|0)!=0,((s?4:5)|0)<(r|0)||on(e,A,q)|0||(i=(t[q>>2]|0)+r|0,s?s=26704+(((i|0)%5|0)<<2)|0:s=26736+(((i|0)%6|0)<<2)|0,G=t[s>>2]|0,(G|0)==7))return n=1,b=$,n|0;t[Y>>2]=0,s=K(e,A,G,Y,L)|0;do if(!s){if(l=L,f=t[l>>2]|0,l=t[l+4>>2]|0,o=l>>>0>>0|(l|0)==(A|0)&f>>>0>>0,i=o?f:e,o=o?l:A,!M&&(M=CA(7,0,(m^15)*3|0)|0,(f&M|0)==0&(l&(S()|0)|0)==0))s=r;else{if(l=(r+-1+a|0)%(a|0)|0,s=Oe(e,A)|0,(l|0)<0&&OA(27795,27797,248,27822),a=(s|0)!=0,((a?4:5)|0)<(l|0)&&OA(27795,27797,248,27822),on(e,A,q)|0&&OA(27795,27797,248,27822),s=(t[q>>2]|0)+l|0,a?s=26704+(((s|0)%5|0)<<2)|0:s=26736+(((s|0)%6|0)<<2)|0,l=t[s>>2]|0,(l|0)==7&&OA(27795,27797,248,27822),t[I>>2]=0,s=K(e,A,l,I,R)|0,s|0)break;f=R,a=t[f>>2]|0,f=t[f+4>>2]|0;do if(f>>>0>>0|(f|0)==(o|0)&a>>>0>>0){if(Oe(a,f)|0?i=Ae(a,f,e,A)|0:i=t[26800+((((t[I>>2]|0)+(t[26768+(l<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,s=Oe(a,f)|0,(i+-1|0)>>>0>5){s=-1,i=a,o=f;break}if(s=(s|0)!=0,(i|0)==1&s){s=-1,i=a,o=f;break}do if(on(a,f,q)|0)s=-1;else if(s){s=((t[26352+(i<<2)>>2]|0)+5-(t[q>>2]|0)|0)%5|0;break}else{s=((t[26384+(i<<2)>>2]|0)+6-(t[q>>2]|0)|0)%6|0;break}while(!1);i=a,o=f}else s=r;while(!1);l=L,f=t[l>>2]|0,l=t[l+4>>2]|0}if((i|0)==(f|0)&(o|0)==(l|0)){if(a=(Oe(f,l)|0)!=0,a?e=Ae(f,l,e,A)|0:e=t[26800+((((t[Y>>2]|0)+(t[26768+(G<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,s=Oe(f,l)|0,(e+-1|0)>>>0<=5&&(nA=(s|0)!=0,!((e|0)==1&nA)))do if(on(f,l,q)|0)s=-1;else if(nA){s=((t[26352+(e<<2)>>2]|0)+5-(t[q>>2]|0)|0)%5|0;break}else{s=((t[26384+(e<<2)>>2]|0)+6-(t[q>>2]|0)|0)%6|0;break}while(!1);else s=-1;s=s+1|0,s=(s|0)==6|a&(s|0)==5?0:s}A=o,e=i;break A}while(!1);return n=s,b=$,n|0}while(!1);return nA=CA(s|0,0,56)|0,q=S()|0|A&-2130706433|536870912,t[n>>2]=nA|e,t[n+4>>2]=q,n=0,b=$,n|0}function ta(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;return i=(Oe(e,A)|0)==0,n=Xt(e,A,0,r)|0,s=(n|0)==0,i?!s||(n=Xt(e,A,1,r+8|0)|0,n|0)||(n=Xt(e,A,2,r+16|0)|0,n|0)||(n=Xt(e,A,3,r+24|0)|0,n|0)||(n=Xt(e,A,4,r+32|0)|0,n)?(i=n,i|0):Xt(e,A,5,r+40|0)|0:!s||(n=Xt(e,A,1,r+8|0)|0,n|0)||(n=Xt(e,A,2,r+16|0)|0,n|0)||(n=Xt(e,A,3,r+24|0)|0,n|0)||(n=Xt(e,A,4,r+32|0)|0,n|0)?(i=n,i|0):(i=r+40|0,t[i>>2]=0,t[i+4>>2]=0,i=0,i|0)}function ra(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0;return a=b,b=b+192|0,s=a,i=a+168|0,o=wA(e|0,A|0,56)|0,S()|0,o=o&7,l=A&-2130706433|134217728,n=Dr(e,l,i)|0,n|0?(l=n,b=a,l|0):(A=wA(e|0,A|0,52)|0,S()|0,A=A&15,Oe(e,l)|0?w(i,A,o,1,s):AA(i,A,o,1,s),l=s+8|0,t[r>>2]=t[l>>2],t[r+4>>2]=t[l+4>>2],t[r+8>>2]=t[l+8>>2],t[r+12>>2]=t[l+12>>2],l=0,b=a,l|0)}function li(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=b,b=b+16|0,r=s,!(!0&(A&2013265920|0)==536870912)||(n=A&-2130706433|134217728,!(Ue(e,n)|0))?(n=0,b=s,n|0):(i=wA(e|0,A|0,56)|0,S()|0,i=(Xt(e,n,i&7,r)|0)==0,n=r,n=i&((t[n>>2]|0)==(e|0)?(t[n+4>>2]|0)==(A|0):0)&1,b=s,n|0)}function ai(e,A,r){e=e|0,A=A|0,r=r|0;var n=0;(A|0)>0?(n=Qt(A,4)|0,t[e>>2]=n,n||OA(27835,27858,40,27872)):t[e>>2]=0,t[e+4>>2]=A,t[e+8>>2]=0,t[e+12>>2]=r}function ui(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;s=e+4|0,i=e+12|0,o=e+8|0;A:for(;;){for(r=t[s>>2]|0,A=0;;){if((A|0)>=(r|0))break A;if(n=t[e>>2]|0,l=t[n+(A<<2)>>2]|0,!l)A=A+1|0;else break}A=n+(~~(+$A(+(+lt(10,+ +(15-(t[i>>2]|0)|0))*(+k[l>>3]+ +k[l+8>>3])))%+(r|0))>>>0<<2)|0,r=t[A>>2]|0;e:do if(r|0){if(n=l+32|0,(r|0)==(l|0))t[A>>2]=t[n>>2];else{if(r=r+32|0,A=t[r>>2]|0,!A)break;for(;(A|0)!=(l|0);)if(r=A+32|0,A=t[r>>2]|0,!A)break e;t[r>>2]=t[n>>2]}qA(l),t[o>>2]=(t[o>>2]|0)+-1}while(!1)}qA(t[e>>2]|0)}function ci(e){e=e|0;var A=0,r=0,n=0;for(n=t[e+4>>2]|0,r=0;;){if((r|0)>=(n|0)){A=0,r=4;break}if(A=t[(t[e>>2]|0)+(r<<2)>>2]|0,!A)r=r+1|0;else{r=4;break}}return(r|0)==4?A|0:0}function fi(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;if(r=~~(+$A(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+k[A>>3]+ +k[A+8>>3])))%+(t[e+4>>2]|0))>>>0,r=(t[e>>2]|0)+(r<<2)|0,n=t[r>>2]|0,!n)return i=1,i|0;i=A+32|0;do if((n|0)!=(A|0)){if(r=t[n+32>>2]|0,!r)return i=1,i|0;for(s=r;;){if((s|0)==(A|0)){s=8;break}if(r=t[s+32>>2]|0,r)n=s,s=r;else{r=1,s=10;break}}if((s|0)==8){t[n+32>>2]=t[i>>2];break}else if((s|0)==10)return r|0}else t[r>>2]=t[i>>2];while(!1);return qA(A),i=e+8|0,t[i>>2]=(t[i>>2]|0)+-1,i=0,i|0}function na(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;i=y0(40)|0,i||OA(27888,27858,98,27901),t[i>>2]=t[A>>2],t[i+4>>2]=t[A+4>>2],t[i+8>>2]=t[A+8>>2],t[i+12>>2]=t[A+12>>2],s=i+16|0,t[s>>2]=t[r>>2],t[s+4>>2]=t[r+4>>2],t[s+8>>2]=t[r+8>>2],t[s+12>>2]=t[r+12>>2],t[i+32>>2]=0,s=~~(+$A(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+k[A>>3]+ +k[A+8>>3])))%+(t[e+4>>2]|0))>>>0,s=(t[e>>2]|0)+(s<<2)|0,n=t[s>>2]|0;do if(!n)t[s>>2]=i;else{for(;!(Tr(n,A)|0&&Tr(n+16|0,r)|0);)if(s=t[n+32>>2]|0,n=(s|0)==0?n:s,!(t[n+32>>2]|0)){o=10;break}if((o|0)==10){t[n+32>>2]=i;break}return qA(i),o=n,o|0}while(!1);return o=e+8|0,t[o>>2]=(t[o>>2]|0)+1,o=i,o|0}function sa(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;if(s=~~(+$A(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+k[A>>3]+ +k[A+8>>3])))%+(t[e+4>>2]|0))>>>0,s=t[(t[e>>2]|0)+(s<<2)>>2]|0,!s)return r=0,r|0;if(!r){for(e=s;;){if(Tr(e,A)|0){n=10;break}if(e=t[e+32>>2]|0,!e){e=0,n=10;break}}if((n|0)==10)return e|0}for(e=s;;){if(Tr(e,A)|0&&Tr(e+16|0,r)|0){n=10;break}if(e=t[e+32>>2]|0,!e){e=0,n=10;break}}return(n|0)==10?e|0:0}function ia(e,A){e=e|0,A=A|0;var r=0;if(r=~~(+$A(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+k[A>>3]+ +k[A+8>>3])))%+(t[e+4>>2]|0))>>>0,e=t[(t[e>>2]|0)+(r<<2)>>2]|0,!e)return r=0,r|0;for(;;){if(Tr(e,A)|0){A=5;break}if(e=t[e+32>>2]|0,!e){e=0,A=5;break}}return(A|0)==5?e|0:0}function oa(){return 27920}function U0(e){return e=+e,~~+gi(+e)|0}function y0(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,$=0,U=0,BA=0;BA=b,b=b+16|0,R=BA;do if(e>>>0<245){if(f=e>>>0<11?16:e+11&-8,e=f>>>3,M=t[6981]|0,r=M>>>e,r&3|0)return A=(r&1^1)+e|0,e=27964+(A<<1<<2)|0,r=e+8|0,n=t[r>>2]|0,s=n+8|0,i=t[s>>2]|0,(i|0)==(e|0)?t[6981]=M&~(1<>2]=e,t[r>>2]=i),U=A<<3,t[n+4>>2]=U|3,U=n+U+4|0,t[U>>2]=t[U>>2]|1,U=s,b=BA,U|0;if(m=t[6983]|0,f>>>0>m>>>0){if(r|0)return A=2<>>12&16,A=A>>>l,r=A>>>5&8,A=A>>>r,i=A>>>2&4,A=A>>>i,e=A>>>1&2,A=A>>>e,n=A>>>1&1,n=(r|l|i|e|n)+(A>>>n)|0,A=27964+(n<<1<<2)|0,e=A+8|0,i=t[e>>2]|0,l=i+8|0,r=t[l>>2]|0,(r|0)==(A|0)?(e=M&~(1<>2]=A,t[e>>2]=r,e=M),U=n<<3,o=U-f|0,t[i+4>>2]=f|3,s=i+f|0,t[s+4>>2]=o|1,t[i+U>>2]=o,m|0&&(n=t[6986]|0,A=m>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=n,t[A+12>>2]=n,t[n+8>>2]=A,t[n+12>>2]=r),t[6983]=o,t[6986]=s,U=l,b=BA,U|0;if(i=t[6982]|0,i){for(r=(i&0-i)+-1|0,s=r>>>12&16,r=r>>>s,n=r>>>5&8,r=r>>>n,o=r>>>2&4,r=r>>>o,l=r>>>1&2,r=r>>>l,a=r>>>1&1,a=t[28228+((n|s|o|l|a)+(r>>>a)<<2)>>2]|0,r=a,l=a,a=(t[a+4>>2]&-8)-f|0;e=t[r+16>>2]|0,!(!e&&(e=t[r+20>>2]|0,!e));)o=(t[e+4>>2]&-8)-f|0,s=o>>>0>>0,r=e,l=s?e:l,a=s?o:a;if(o=l+f|0,o>>>0>l>>>0){s=t[l+24>>2]|0,A=t[l+12>>2]|0;do if((A|0)==(l|0)){if(e=l+20|0,A=t[e>>2]|0,!A&&(e=l+16|0,A=t[e>>2]|0,!A)){r=0;break}for(;;)if(n=A+20|0,r=t[n>>2]|0,r)A=r,e=n;else if(n=A+16|0,r=t[n>>2]|0,r)A=r,e=n;else break;t[e>>2]=0,r=A}else r=t[l+8>>2]|0,t[r+12>>2]=A,t[A+8>>2]=r,r=A;while(!1);do if(s|0){if(A=t[l+28>>2]|0,e=28228+(A<<2)|0,(l|0)==(t[e>>2]|0)){if(t[e>>2]=r,!r){t[6982]=i&~(1<>2]|0)==(l|0)?U:s+20|0)>>2]=r,!r)break;t[r+24>>2]=s,A=t[l+16>>2]|0,A|0&&(t[r+16>>2]=A,t[A+24>>2]=r),A=t[l+20>>2]|0,A|0&&(t[r+20>>2]=A,t[A+24>>2]=r)}while(!1);return a>>>0<16?(U=a+f|0,t[l+4>>2]=U|3,U=l+U+4|0,t[U>>2]=t[U>>2]|1):(t[l+4>>2]=f|3,t[o+4>>2]=a|1,t[o+a>>2]=a,m|0&&(n=t[6986]|0,A=m>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=A|M,A=r,e=r+8|0),t[e>>2]=n,t[A+12>>2]=n,t[n+8>>2]=A,t[n+12>>2]=r),t[6983]=a,t[6986]=o),U=l+8|0,b=BA,U|0}else M=f}else M=f}else M=f}else if(e>>>0<=4294967231)if(e=e+11|0,f=e&-8,n=t[6982]|0,n){s=0-f|0,e=e>>>8,e?f>>>0>16777215?a=31:(M=(e+1048320|0)>>>16&8,G=e<>>16&4,G=G<>>16&2,a=14-(l|M|a)+(G<>>15)|0,a=f>>>(a+7|0)&1|a<<1):a=0,r=t[28228+(a<<2)>>2]|0;A:do if(!r)r=0,e=0,G=61;else for(e=0,l=f<<((a|0)==31?0:25-(a>>>1)|0),i=0;;){if(o=(t[r+4>>2]&-8)-f|0,o>>>0>>0)if(o)e=r,s=o;else{e=r,s=0,G=65;break A}if(G=t[r+20>>2]|0,r=t[r+16+(l>>>31<<2)>>2]|0,i=(G|0)==0|(G|0)==(r|0)?i:G,r)l=l<<1;else{r=i,G=61;break}}while(!1);if((G|0)==61){if((r|0)==0&(e|0)==0){if(e=2<>>12&16,M=M>>>o,i=M>>>5&8,M=M>>>i,l=M>>>2&4,M=M>>>l,a=M>>>1&2,M=M>>>a,r=M>>>1&1,e=0,r=t[28228+((i|o|l|a|r)+(M>>>r)<<2)>>2]|0}r?G=65:(l=e,o=s)}if((G|0)==65)for(i=r;;)if(M=(t[i+4>>2]&-8)-f|0,r=M>>>0>>0,s=r?M:s,e=r?i:e,r=t[i+16>>2]|0,r||(r=t[i+20>>2]|0),r)i=r;else{l=e,o=s;break}if((l|0)!=0&&o>>>0<((t[6983]|0)-f|0)>>>0&&(m=l+f|0,m>>>0>l>>>0)){i=t[l+24>>2]|0,A=t[l+12>>2]|0;do if((A|0)==(l|0)){if(e=l+20|0,A=t[e>>2]|0,!A&&(e=l+16|0,A=t[e>>2]|0,!A)){A=0;break}for(;;)if(s=A+20|0,r=t[s>>2]|0,r)A=r,e=s;else if(s=A+16|0,r=t[s>>2]|0,r)A=r,e=s;else break;t[e>>2]=0}else U=t[l+8>>2]|0,t[U+12>>2]=A,t[A+8>>2]=U;while(!1);do if(i){if(e=t[l+28>>2]|0,r=28228+(e<<2)|0,(l|0)==(t[r>>2]|0)){if(t[r>>2]=A,!A){n=n&~(1<>2]|0)==(l|0)?U:i+20|0)>>2]=A,!A)break;t[A+24>>2]=i,e=t[l+16>>2]|0,e|0&&(t[A+16>>2]=e,t[e+24>>2]=A),e=t[l+20>>2]|0,e&&(t[A+20>>2]=e,t[e+24>>2]=A)}while(!1);A:do if(o>>>0<16)U=o+f|0,t[l+4>>2]=U|3,U=l+U+4|0,t[U>>2]=t[U>>2]|1;else{if(t[l+4>>2]=f|3,t[m+4>>2]=o|1,t[m+o>>2]=o,A=o>>>3,o>>>0<256){r=27964+(A<<1<<2)|0,e=t[6981]|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=m,t[A+12>>2]=m,t[m+8>>2]=A,t[m+12>>2]=r;break}if(A=o>>>8,A?o>>>0>16777215?r=31:($=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,r=14-(q|$|r)+(U<>>15)|0,r=o>>>(r+7|0)&1|r<<1):r=0,A=28228+(r<<2)|0,t[m+28>>2]=r,e=m+16|0,t[e+4>>2]=0,t[e>>2]=0,e=1<>2]=m,t[m+24>>2]=A,t[m+12>>2]=m,t[m+8>>2]=m;break}A=t[A>>2]|0;e:do if((t[A+4>>2]&-8|0)!=(o|0)){for(n=o<<((r|0)==31?0:25-(r>>>1)|0);r=A+16+(n>>>31<<2)|0,e=t[r>>2]|0,!!e;)if((t[e+4>>2]&-8|0)==(o|0)){A=e;break e}else n=n<<1,A=e;t[r>>2]=m,t[m+24>>2]=A,t[m+12>>2]=m,t[m+8>>2]=m;break A}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=m,t[$>>2]=m,t[m+8>>2]=U,t[m+12>>2]=A,t[m+24>>2]=0}while(!1);return U=l+8|0,b=BA,U|0}else M=f}else M=f;else M=-1;while(!1);if(r=t[6983]|0,r>>>0>=M>>>0)return A=r-M|0,e=t[6986]|0,A>>>0>15?(U=e+M|0,t[6986]=U,t[6983]=A,t[U+4>>2]=A|1,t[e+r>>2]=A,t[e+4>>2]=M|3):(t[6983]=0,t[6986]=0,t[e+4>>2]=r|3,U=e+r+4|0,t[U>>2]=t[U>>2]|1),U=e+8|0,b=BA,U|0;if(o=t[6984]|0,o>>>0>M>>>0)return q=o-M|0,t[6984]=q,U=t[6987]|0,$=U+M|0,t[6987]=$,t[$+4>>2]=q|1,t[U+4>>2]=M|3,U=U+8|0,b=BA,U|0;if(t[7099]|0?e=t[7101]|0:(t[7101]=4096,t[7100]=4096,t[7102]=-1,t[7103]=-1,t[7104]=0,t[7092]=0,t[7099]=R&-16^1431655768,e=4096),l=M+48|0,a=M+47|0,i=e+a|0,s=0-e|0,f=i&s,f>>>0<=M>>>0||(e=t[7091]|0,e|0&&(m=t[7089]|0,R=m+f|0,R>>>0<=m>>>0|R>>>0>e>>>0)))return U=0,b=BA,U|0;A:do if(t[7092]&4)A=0,G=143;else{r=t[6987]|0;e:do if(r){for(n=28372;R=t[n>>2]|0,!(R>>>0<=r>>>0&&(R+(t[n+4>>2]|0)|0)>>>0>r>>>0);)if(e=t[n+8>>2]|0,e)n=e;else{G=128;break e}if(A=i-o&s,A>>>0<2147483647)if(e=Y0(A|0)|0,(e|0)==((t[n>>2]|0)+(t[n+4>>2]|0)|0)){if((e|0)!=-1){o=A,i=e,G=145;break A}}else n=e,G=136;else A=0}else G=128;while(!1);do if((G|0)==128)if(r=Y0(0)|0,(r|0)!=-1&&(A=r,I=t[7100]|0,L=I+-1|0,A=((L&A|0)==0?0:(L+A&0-I)-A|0)+f|0,I=t[7089]|0,L=A+I|0,A>>>0>M>>>0&A>>>0<2147483647)){if(R=t[7091]|0,R|0&&L>>>0<=I>>>0|L>>>0>R>>>0){A=0;break}if(e=Y0(A|0)|0,(e|0)==(r|0)){o=A,i=r,G=145;break A}else n=e,G=136}else A=0;while(!1);do if((G|0)==136){if(r=0-A|0,!(l>>>0>A>>>0&(A>>>0<2147483647&(n|0)!=-1)))if((n|0)==-1){A=0;break}else{o=A,i=n,G=145;break A}if(e=t[7101]|0,e=a-A+e&0-e,e>>>0>=2147483647){o=A,i=n,G=145;break A}if((Y0(e|0)|0)==-1){Y0(r|0)|0,A=0;break}else{o=e+A|0,i=n,G=145;break A}}while(!1);t[7092]=t[7092]|4,G=143}while(!1);if((G|0)==143&&f>>>0<2147483647&&(q=Y0(f|0)|0,L=Y0(0)|0,Y=L-q|0,nA=Y>>>0>(M+40|0)>>>0,!((q|0)==-1|nA^1|q>>>0>>0&((q|0)!=-1&(L|0)!=-1)^1))&&(o=nA?Y:A,i=q,G=145),(G|0)==145){A=(t[7089]|0)+o|0,t[7089]=A,A>>>0>(t[7090]|0)>>>0&&(t[7090]=A),a=t[6987]|0;A:do if(a){for(A=28372;;){if(e=t[A>>2]|0,r=t[A+4>>2]|0,(i|0)==(e+r|0)){G=154;break}if(n=t[A+8>>2]|0,n)A=n;else break}if((G|0)==154&&($=A+4|0,(t[A+12>>2]&8|0)==0)&&i>>>0>a>>>0&e>>>0<=a>>>0){t[$>>2]=r+o,U=(t[6984]|0)+o|0,q=a+8|0,q=(q&7|0)==0?0:0-q&7,$=a+q|0,q=U-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[a+U+4>>2]=40,t[6988]=t[7103];break}for(i>>>0<(t[6985]|0)>>>0&&(t[6985]=i),r=i+o|0,A=28372;;){if((t[A>>2]|0)==(r|0)){G=162;break}if(e=t[A+8>>2]|0,e)A=e;else break}if((G|0)==162&&(t[A+12>>2]&8|0)==0){t[A>>2]=i,m=A+4|0,t[m>>2]=(t[m>>2]|0)+o,m=i+8|0,m=i+((m&7|0)==0?0:0-m&7)|0,A=r+8|0,A=r+((A&7|0)==0?0:0-A&7)|0,f=m+M|0,l=A-m-M|0,t[m+4>>2]=M|3;e:do if((a|0)==(A|0))U=(t[6984]|0)+l|0,t[6984]=U,t[6987]=f,t[f+4>>2]=U|1;else{if((t[6986]|0)==(A|0)){U=(t[6983]|0)+l|0,t[6983]=U,t[6986]=f,t[f+4>>2]=U|1,t[f+U>>2]=U;break}if(e=t[A+4>>2]|0,(e&3|0)==1){o=e&-8,n=e>>>3;t:do if(e>>>0<256)if(e=t[A+8>>2]|0,r=t[A+12>>2]|0,(r|0)==(e|0)){t[6981]=t[6981]&~(1<>2]=r,t[r+8>>2]=e;break}else{i=t[A+24>>2]|0,e=t[A+12>>2]|0;do if((e|0)==(A|0)){if(r=A+16|0,n=r+4|0,e=t[n>>2]|0,e)r=n;else if(e=t[r>>2]|0,!e){e=0;break}for(;;)if(s=e+20|0,n=t[s>>2]|0,n)e=n,r=s;else if(s=e+16|0,n=t[s>>2]|0,n)e=n,r=s;else break;t[r>>2]=0}else U=t[A+8>>2]|0,t[U+12>>2]=e,t[e+8>>2]=U;while(!1);if(!i)break;r=t[A+28>>2]|0,n=28228+(r<<2)|0;do if((t[n>>2]|0)!=(A|0)){if(U=i+16|0,t[((t[U>>2]|0)==(A|0)?U:i+20|0)>>2]=e,!e)break t}else{if(t[n>>2]=e,e|0)break;t[6982]=t[6982]&~(1<>2]=i,r=A+16|0,n=t[r>>2]|0,n|0&&(t[e+16>>2]=n,t[n+24>>2]=e),r=t[r+4>>2]|0,!r)break;t[e+20>>2]=r,t[r+24>>2]=e}while(!1);A=A+o|0,s=o+l|0}else s=l;if(A=A+4|0,t[A>>2]=t[A>>2]&-2,t[f+4>>2]=s|1,t[f+s>>2]=s,A=s>>>3,s>>>0<256){r=27964+(A<<1<<2)|0,e=t[6981]|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=f,t[A+12>>2]=f,t[f+8>>2]=A,t[f+12>>2]=r;break}A=s>>>8;do if(!A)n=0;else{if(s>>>0>16777215){n=31;break}$=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,n=14-(q|$|n)+(U<>>15)|0,n=s>>>(n+7|0)&1|n<<1}while(!1);if(A=28228+(n<<2)|0,t[f+28>>2]=n,e=f+16|0,t[e+4>>2]=0,t[e>>2]=0,e=t[6982]|0,r=1<>2]=f,t[f+24>>2]=A,t[f+12>>2]=f,t[f+8>>2]=f;break}A=t[A>>2]|0;t:do if((t[A+4>>2]&-8|0)!=(s|0)){for(n=s<<((n|0)==31?0:25-(n>>>1)|0);r=A+16+(n>>>31<<2)|0,e=t[r>>2]|0,!!e;)if((t[e+4>>2]&-8|0)==(s|0)){A=e;break t}else n=n<<1,A=e;t[r>>2]=f,t[f+24>>2]=A,t[f+12>>2]=f,t[f+8>>2]=f;break e}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=f,t[$>>2]=f,t[f+8>>2]=U,t[f+12>>2]=A,t[f+24>>2]=0}while(!1);return U=m+8|0,b=BA,U|0}for(A=28372;e=t[A>>2]|0,!(e>>>0<=a>>>0&&(U=e+(t[A+4>>2]|0)|0,U>>>0>a>>>0));)A=t[A+8>>2]|0;s=U+-47|0,e=s+8|0,e=s+((e&7|0)==0?0:0-e&7)|0,s=a+16|0,e=e>>>0>>0?a:e,A=e+8|0,r=o+-40|0,q=i+8|0,q=(q&7|0)==0?0:0-q&7,$=i+q|0,q=r-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[i+r+4>>2]=40,t[6988]=t[7103],r=e+4|0,t[r>>2]=27,t[A>>2]=t[7093],t[A+4>>2]=t[7094],t[A+8>>2]=t[7095],t[A+12>>2]=t[7096],t[7093]=i,t[7094]=o,t[7096]=0,t[7095]=A,A=e+24|0;do $=A,A=A+4|0,t[A>>2]=7;while(($+8|0)>>>0>>0);if((e|0)!=(a|0)){if(i=e-a|0,t[r>>2]=t[r>>2]&-2,t[a+4>>2]=i|1,t[e>>2]=i,A=i>>>3,i>>>0<256){r=27964+(A<<1<<2)|0,e=t[6981]|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=a,t[A+12>>2]=a,t[a+8>>2]=A,t[a+12>>2]=r;break}if(A=i>>>8,A?i>>>0>16777215?n=31:($=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,n=14-(q|$|n)+(U<>>15)|0,n=i>>>(n+7|0)&1|n<<1):n=0,r=28228+(n<<2)|0,t[a+28>>2]=n,t[a+20>>2]=0,t[s>>2]=0,A=t[6982]|0,e=1<>2]=a,t[a+24>>2]=r,t[a+12>>2]=a,t[a+8>>2]=a;break}A=t[r>>2]|0;e:do if((t[A+4>>2]&-8|0)!=(i|0)){for(n=i<<((n|0)==31?0:25-(n>>>1)|0);r=A+16+(n>>>31<<2)|0,e=t[r>>2]|0,!!e;)if((t[e+4>>2]&-8|0)==(i|0)){A=e;break e}else n=n<<1,A=e;t[r>>2]=a,t[a+24>>2]=A,t[a+12>>2]=a,t[a+8>>2]=a;break A}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=a,t[$>>2]=a,t[a+8>>2]=U,t[a+12>>2]=A,t[a+24>>2]=0}}else U=t[6985]|0,(U|0)==0|i>>>0>>0&&(t[6985]=i),t[7093]=i,t[7094]=o,t[7096]=0,t[6990]=t[7099],t[6989]=-1,t[6994]=27964,t[6993]=27964,t[6996]=27972,t[6995]=27972,t[6998]=27980,t[6997]=27980,t[7e3]=27988,t[6999]=27988,t[7002]=27996,t[7001]=27996,t[7004]=28004,t[7003]=28004,t[7006]=28012,t[7005]=28012,t[7008]=28020,t[7007]=28020,t[7010]=28028,t[7009]=28028,t[7012]=28036,t[7011]=28036,t[7014]=28044,t[7013]=28044,t[7016]=28052,t[7015]=28052,t[7018]=28060,t[7017]=28060,t[7020]=28068,t[7019]=28068,t[7022]=28076,t[7021]=28076,t[7024]=28084,t[7023]=28084,t[7026]=28092,t[7025]=28092,t[7028]=28100,t[7027]=28100,t[7030]=28108,t[7029]=28108,t[7032]=28116,t[7031]=28116,t[7034]=28124,t[7033]=28124,t[7036]=28132,t[7035]=28132,t[7038]=28140,t[7037]=28140,t[7040]=28148,t[7039]=28148,t[7042]=28156,t[7041]=28156,t[7044]=28164,t[7043]=28164,t[7046]=28172,t[7045]=28172,t[7048]=28180,t[7047]=28180,t[7050]=28188,t[7049]=28188,t[7052]=28196,t[7051]=28196,t[7054]=28204,t[7053]=28204,t[7056]=28212,t[7055]=28212,U=o+-40|0,q=i+8|0,q=(q&7|0)==0?0:0-q&7,$=i+q|0,q=U-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[i+U+4>>2]=40,t[6988]=t[7103];while(!1);if(A=t[6984]|0,A>>>0>M>>>0)return q=A-M|0,t[6984]=q,U=t[6987]|0,$=U+M|0,t[6987]=$,t[$+4>>2]=q|1,t[U+4>>2]=M|3,U=U+8|0,b=BA,U|0}return U=oa()|0,t[U>>2]=12,U=0,b=BA,U|0}function qA(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(e){r=e+-8|0,s=t[6985]|0,e=t[e+-4>>2]|0,A=e&-8,a=r+A|0;do if(e&1)l=r,o=r;else{if(n=t[r>>2]|0,!(e&3)||(o=r+(0-n)|0,i=n+A|0,o>>>0>>0))return;if((t[6986]|0)==(o|0)){if(e=a+4|0,A=t[e>>2]|0,(A&3|0)!=3){l=o,A=i;break}t[6983]=i,t[e>>2]=A&-2,t[o+4>>2]=i|1,t[o+i>>2]=i;return}if(r=n>>>3,n>>>0<256)if(e=t[o+8>>2]|0,A=t[o+12>>2]|0,(A|0)==(e|0)){t[6981]=t[6981]&~(1<>2]=A,t[A+8>>2]=e,l=o,A=i;break}s=t[o+24>>2]|0,e=t[o+12>>2]|0;do if((e|0)==(o|0)){if(A=o+16|0,r=A+4|0,e=t[r>>2]|0,e)A=r;else if(e=t[A>>2]|0,!e){e=0;break}for(;;)if(n=e+20|0,r=t[n>>2]|0,r)e=r,A=n;else if(n=e+16|0,r=t[n>>2]|0,r)e=r,A=n;else break;t[A>>2]=0}else l=t[o+8>>2]|0,t[l+12>>2]=e,t[e+8>>2]=l;while(!1);if(s){if(A=t[o+28>>2]|0,r=28228+(A<<2)|0,(t[r>>2]|0)==(o|0)){if(t[r>>2]=e,!e){t[6982]=t[6982]&~(1<>2]|0)==(o|0)?l:s+20|0)>>2]=e,!e){l=o,A=i;break}t[e+24>>2]=s,A=o+16|0,r=t[A>>2]|0,r|0&&(t[e+16>>2]=r,t[r+24>>2]=e),A=t[A+4>>2]|0,A?(t[e+20>>2]=A,t[A+24>>2]=e,l=o,A=i):(l=o,A=i)}else l=o,A=i}while(!1);if(!(o>>>0>=a>>>0)&&(e=a+4|0,n=t[e>>2]|0,!!(n&1))){if(n&2)t[e>>2]=n&-2,t[l+4>>2]=A|1,t[o+A>>2]=A,s=A;else{if((t[6987]|0)==(a|0)){if(a=(t[6984]|0)+A|0,t[6984]=a,t[6987]=l,t[l+4>>2]=a|1,(l|0)!=(t[6986]|0))return;t[6986]=0,t[6983]=0;return}if((t[6986]|0)==(a|0)){a=(t[6983]|0)+A|0,t[6983]=a,t[6986]=o,t[l+4>>2]=a|1,t[o+a>>2]=a;return}s=(n&-8)+A|0,r=n>>>3;do if(n>>>0<256)if(A=t[a+8>>2]|0,e=t[a+12>>2]|0,(e|0)==(A|0)){t[6981]=t[6981]&~(1<>2]=e,t[e+8>>2]=A;break}else{i=t[a+24>>2]|0,e=t[a+12>>2]|0;do if((e|0)==(a|0)){if(A=a+16|0,r=A+4|0,e=t[r>>2]|0,e)A=r;else if(e=t[A>>2]|0,!e){r=0;break}for(;;)if(n=e+20|0,r=t[n>>2]|0,r)e=r,A=n;else if(n=e+16|0,r=t[n>>2]|0,r)e=r,A=n;else break;t[A>>2]=0,r=e}else r=t[a+8>>2]|0,t[r+12>>2]=e,t[e+8>>2]=r,r=e;while(!1);if(i|0){if(e=t[a+28>>2]|0,A=28228+(e<<2)|0,(t[A>>2]|0)==(a|0)){if(t[A>>2]=r,!r){t[6982]=t[6982]&~(1<>2]|0)==(a|0)?n:i+20|0)>>2]=r,!r)break;t[r+24>>2]=i,e=a+16|0,A=t[e>>2]|0,A|0&&(t[r+16>>2]=A,t[A+24>>2]=r),e=t[e+4>>2]|0,e|0&&(t[r+20>>2]=e,t[e+24>>2]=r)}}while(!1);if(t[l+4>>2]=s|1,t[o+s>>2]=s,(l|0)==(t[6986]|0)){t[6983]=s;return}}if(e=s>>>3,s>>>0<256){r=27964+(e<<1<<2)|0,A=t[6981]|0,e=1<>2]|0):(t[6981]=A|e,e=r,A=r+8|0),t[A>>2]=l,t[e+12>>2]=l,t[l+8>>2]=e,t[l+12>>2]=r;return}e=s>>>8,e?s>>>0>16777215?n=31:(o=(e+1048320|0)>>>16&8,a=e<>>16&4,a=a<>>16&2,n=14-(i|o|n)+(a<>>15)|0,n=s>>>(n+7|0)&1|n<<1):n=0,e=28228+(n<<2)|0,t[l+28>>2]=n,t[l+20>>2]=0,t[l+16>>2]=0,A=t[6982]|0,r=1<>2]=l,t[l+24>>2]=e,t[l+12>>2]=l,t[l+8>>2]=l;else{e=t[e>>2]|0;e:do if((t[e+4>>2]&-8|0)!=(s|0)){for(n=s<<((n|0)==31?0:25-(n>>>1)|0);r=e+16+(n>>>31<<2)|0,A=t[r>>2]|0,!!A;)if((t[A+4>>2]&-8|0)==(s|0)){e=A;break e}else n=n<<1,e=A;t[r>>2]=l,t[l+24>>2]=e,t[l+12>>2]=l,t[l+8>>2]=l;break A}while(!1);o=e+8|0,a=t[o>>2]|0,t[a+12>>2]=l,t[o>>2]=l,t[l+8>>2]=a,t[l+12>>2]=e,t[l+24>>2]=0}while(!1);if(a=(t[6989]|0)+-1|0,t[6989]=a,!(a|0)){for(e=28380;e=t[e>>2]|0,e;)e=e+8|0;t[6989]=-1}}}}function Qt(e,A){e=e|0,A=A|0;var r=0;return e?(r=Pe(A,e)|0,(A|e)>>>0>65535&&(r=((r>>>0)/(e>>>0)|0|0)==(A|0)?r:-1)):r=0,e=y0(r)|0,!e||!(t[e+-4>>2]&3)||W0(e|0,0,r|0)|0,e|0}function KA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,r=e+r>>>0,YA(A+n+(r>>>0>>0|0)>>>0|0),r|0|0}function ct(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,n=A-n-(r>>>0>e>>>0|0)>>>0,YA(n|0),e-r>>>0|0|0}function di(e){return e=e|0,(e?31-(nt(e^e-1)|0)|0:32)|0}function ls(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0;if(m=e,a=A,f=a,o=r,R=n,l=R,!f)return i=(s|0)!=0,l?i?(t[s>>2]=e|0,t[s+4>>2]=A&0,R=0,s=0,YA(R|0),s|0):(R=0,s=0,YA(R|0),s|0):(i&&(t[s>>2]=(m>>>0)%(o>>>0),t[s+4>>2]=0),R=0,s=(m>>>0)/(o>>>0)>>>0,YA(R|0),s|0);i=(l|0)==0;do if(o){if(!i){if(i=(nt(l|0)|0)-(nt(f|0)|0)|0,i>>>0<=31){M=i+1|0,l=31-i|0,A=i-31>>31,o=M,e=m>>>(M>>>0)&A|f<>>(M>>>0)&A,i=0,l=m<>2]=e|0,t[s+4>>2]=a|A&0,R=0,s=0,YA(R|0),s|0):(R=0,s=0,YA(R|0),s|0)}if(i=o-1|0,i&o|0){l=(nt(o|0)|0)+33-(nt(f|0)|0)|0,L=64-l|0,M=32-l|0,a=M>>31,I=l-32|0,A=I>>31,o=l,e=M-1>>31&f>>>(I>>>0)|(f<>>(l>>>0))&A,A=A&f>>>(l>>>0),i=m<>>(I>>>0))&a|m<>31;break}return s|0&&(t[s>>2]=i&m,t[s+4>>2]=0),(o|0)==1?(I=a|A&0,L=e|0|0,YA(I|0),L|0):(L=di(o|0)|0,I=f>>>(L>>>0)|0,L=f<<32-L|m>>>(L>>>0)|0,YA(I|0),L|0)}else{if(i)return s|0&&(t[s>>2]=(f>>>0)%(o>>>0),t[s+4>>2]=0),I=0,L=(f>>>0)/(o>>>0)>>>0,YA(I|0),L|0;if(!m)return s|0&&(t[s>>2]=0,t[s+4>>2]=(f>>>0)%(l>>>0)),I=0,L=(f>>>0)/(l>>>0)>>>0,YA(I|0),L|0;if(i=l-1|0,!(i&l))return s|0&&(t[s>>2]=e|0,t[s+4>>2]=i&f|A&0),I=0,L=f>>>((di(l|0)|0)>>>0),YA(I|0),L|0;if(i=(nt(l|0)|0)-(nt(f|0)|0)|0,i>>>0<=30){A=i+1|0,l=31-i|0,o=A,e=f<>>(A>>>0),A=f>>>(A>>>0),i=0,l=m<>2]=e|0,t[s+4>>2]=a|A&0,I=0,L=0,YA(I|0),L|0):(I=0,L=0,YA(I|0),L|0)}while(!1);if(!o)f=l,a=0,l=0;else{M=r|0|0,m=R|n&0,f=KA(M|0,m|0,-1,-1)|0,r=S()|0,a=l,l=0;do n=a,a=i>>>31|a<<1,i=l|i<<1,n=e<<1|n>>>31|0,R=e>>>31|A<<1|0,ct(f|0,r|0,n|0,R|0)|0,L=S()|0,I=L>>31|((L|0)<0?-1:0)<<1,l=I&1,e=ct(n|0,R|0,I&M|0,(((L|0)<0?-1:0)>>31|((L|0)<0?-1:0)<<1)&m|0)|0,A=S()|0,o=o-1|0;while((o|0)!=0);f=a,a=0}return o=0,s|0&&(t[s>>2]=e,t[s+4>>2]=A),I=(i|0)>>>31|(f|o)<<1|(o<<1|i>>>31)&0|a,L=(i<<1|0)&-2|l,YA(I|0),L|0}function V0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;return f=A>>31|((A|0)<0?-1:0)<<1,a=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,i=n>>31|((n|0)<0?-1:0)<<1,s=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,l=ct(f^e|0,a^A|0,f|0,a|0)|0,o=S()|0,e=i^f,A=s^a,ct((ls(l,o,ct(i^r|0,s^n|0,i|0,s|0)|0,S()|0,0)|0)^e|0,(S()|0)^A|0,e|0,A|0)|0}function la(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return i=e&65535,s=A&65535,r=Pe(s,i)|0,n=e>>>16,e=(r>>>16)+(Pe(s,n)|0)|0,s=A>>>16,A=Pe(s,i)|0,YA((e>>>16)+(Pe(s,n)|0)+(((e&65535)+A|0)>>>16)|0),e+A<<16|r&65535|0|0}function ft(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;return s=e,i=r,r=la(s,i)|0,e=S()|0,YA((Pe(A,i)|0)+(Pe(n,s)|0)+e|e&0|0),r|0|0|0}function jr(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;return s=b,b=b+16|0,l=s|0,o=A>>31|((A|0)<0?-1:0)<<1,i=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,f=n>>31|((n|0)<0?-1:0)<<1,a=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,e=ct(o^e|0,i^A|0,o|0,i|0)|0,A=S()|0,ls(e,A,ct(f^r|0,a^n|0,f|0,a|0)|0,S()|0,l)|0,n=ct(t[l>>2]^o|0,t[l+4>>2]^i|0,o|0,i|0)|0,r=S()|0,b=s,YA(r|0),n|0}function Rr(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;return i=b,b=b+16|0,s=i|0,ls(e,A,r,n,s)|0,b=i,YA(t[s+4>>2]|0),t[s>>2]|0|0}function hi(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A>>r|0),e>>>r|(A&(1<>r-32|0)}function wA(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A>>>r|0),e>>>r|(A&(1<>>r-32|0)}function CA(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A<>>32-r|0),e<=0?+He(e+.5):+gt(e-.5)}function Ir(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if((r|0)>=8192)return l0(e|0,A|0,r|0)|0,e|0;if(i=e|0,s=e+r|0,(e&3)==(A&3)){for(;e&3;){if(!r)return i|0;xA[e>>0]=xA[A>>0]|0,e=e+1|0,A=A+1|0,r=r-1|0}for(r=s&-4|0,n=r-64|0;(e|0)<=(n|0);)t[e>>2]=t[A>>2],t[e+4>>2]=t[A+4>>2],t[e+8>>2]=t[A+8>>2],t[e+12>>2]=t[A+12>>2],t[e+16>>2]=t[A+16>>2],t[e+20>>2]=t[A+20>>2],t[e+24>>2]=t[A+24>>2],t[e+28>>2]=t[A+28>>2],t[e+32>>2]=t[A+32>>2],t[e+36>>2]=t[A+36>>2],t[e+40>>2]=t[A+40>>2],t[e+44>>2]=t[A+44>>2],t[e+48>>2]=t[A+48>>2],t[e+52>>2]=t[A+52>>2],t[e+56>>2]=t[A+56>>2],t[e+60>>2]=t[A+60>>2],e=e+64|0,A=A+64|0;for(;(e|0)<(r|0);)t[e>>2]=t[A>>2],e=e+4|0,A=A+4|0}else for(r=s-4|0;(e|0)<(r|0);)xA[e>>0]=xA[A>>0]|0,xA[e+1>>0]=xA[A+1>>0]|0,xA[e+2>>0]=xA[A+2>>0]|0,xA[e+3>>0]=xA[A+3>>0]|0,e=e+4|0,A=A+4|0;for(;(e|0)<(s|0);)xA[e>>0]=xA[A>>0]|0,e=e+1|0,A=A+1|0;return i|0}function W0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;if(i=e+r|0,A=A&255,(r|0)>=67){for(;e&3;)xA[e>>0]=A,e=e+1|0;for(n=i&-4|0,o=A|A<<8|A<<16|A<<24,s=n-64|0;(e|0)<=(s|0);)t[e>>2]=o,t[e+4>>2]=o,t[e+8>>2]=o,t[e+12>>2]=o,t[e+16>>2]=o,t[e+20>>2]=o,t[e+24>>2]=o,t[e+28>>2]=o,t[e+32>>2]=o,t[e+36>>2]=o,t[e+40>>2]=o,t[e+44>>2]=o,t[e+48>>2]=o,t[e+52>>2]=o,t[e+56>>2]=o,t[e+60>>2]=o,e=e+64|0;for(;(e|0)<(n|0);)t[e>>2]=o,e=e+4|0}for(;(e|0)<(i|0);)xA[e>>0]=A,e=e+1|0;return i-r|0}function gi(e){return e=+e,e>=0?+He(e+.5):+gt(e-.5)}function Y0(e){e=e|0;var A=0,r=0,n=0;return n=P0()|0,r=t[De>>2]|0,A=r+e|0,(e|0)>0&(A|0)<(r|0)|(A|0)<0?(m0(A|0)|0,Nt(12),-1):(A|0)>(n|0)&&!(a0(A|0)|0)?(Nt(12),-1):(t[De>>2]=A,r|0)}return{___divdi3:V0,___muldi3:ft,___remdi3:jr,___uremdi3:Rr,_areNeighborCells:$n,_bitshift64Ashr:hi,_bitshift64Lshr:wA,_bitshift64Shl:CA,_calloc:Qt,_cellAreaKm2:Dl,_cellAreaM2:_l,_cellAreaRads2:ns,_cellToBoundary:_r,_cellToCenterChild:Ks,_cellToChildPos:wl,_cellToChildren:en,_cellToChildrenSize:p0,_cellToLatLng:ar,_cellToLocalIj:Fl,_cellToParent:_t,_cellToVertex:Xt,_cellToVertexes:ta,_cellsToDirectedEdge:yn,_cellsToLinkedMultiPolygon:pt,_childPosToCell:vl,_compactCells:fl,_constructCell:we,_destroyLinkedMultiPolygon:Xs,_directedEdgeToBoundary:or,_directedEdgeToCells:Mr,_edgeLengthKm:jl,_edgeLengthM:Rl,_edgeLengthRads:Tl,_emscripten_replace_memory:E0,_free:qA,_getBaseCellNumber:te,_getDirectedEdgeDestination:xn,_getDirectedEdgeOrigin:Sr,_getHexagonAreaAvgKm2:qs,_getHexagonAreaAvgM2:Sl,_getHexagonEdgeLengthAvgKm:Ml,_getHexagonEdgeLengthAvgM:Bl,_getIcosahedronFaces:Zs,_getIndexDigit:be,_getNumCells:bn,_getPentagons:es,_getRes0Cells:Wr,_getResolution:_A,_greatCircleDistanceKm:rn,_greatCircleDistanceM:kl,_greatCircleDistanceRads:bl,_gridDisk:v,_gridDiskDistances:_,_gridDistance:Ql,_gridPathCells:zl,_gridPathCellsSize:Ol,_gridRing:dA,_gridRingUnsafe:jA,_i64Add:KA,_i64Subtract:ct,_isPentagon:Oe,_isResClassIII:ml,_isValidCell:Ue,_isValidDirectedEdge:Xr,_isValidIndex:Bt,_isValidVertex:li,_latLngToCell:Xn,_llvm_ctlz_i64:as,_llvm_maxnum_f64:mi,_llvm_minnum_f64:En,_llvm_round_f64:Sn,_localIjToCell:Pl,_malloc:y0,_maxFaceCount:yl,_maxGridDiskSize:d,_maxPolygonToCellsSize:ce,_maxPolygonToCellsSizeExperimental:Ul,_memcpy:Ir,_memset:W0,_originToDirectedEdges:Br,_pentagonCount:xl,_polygonToCells:kt,_polygonToCellsExperimental:Gl,_readInt64AsDoubleFromPointer:Jl,_res0CellCount:Vr,_round:gi,_sbrk:Y0,_sizeOfCellBoundary:Yl,_sizeOfCoordIJ:ql,_sizeOfGeoLoop:Kl,_sizeOfGeoPolygon:Zl,_sizeOfH3Index:Vl,_sizeOfLatLng:Wl,_sizeOfLinkedGeoPolygon:$l,_uncompactCells:dl,_uncompactCellsSize:hl,_vertexToLatLng:ra,establishStackSpace:S0,stackAlloc:$t,stackRestore:O0,stackSave:Q0}})(rr,N0,yA);u.___divdi3=gA.___divdi3,u.___muldi3=gA.___muldi3,u.___remdi3=gA.___remdi3,u.___uremdi3=gA.___uremdi3,u._areNeighborCells=gA._areNeighborCells,u._bitshift64Ashr=gA._bitshift64Ashr,u._bitshift64Lshr=gA._bitshift64Lshr,u._bitshift64Shl=gA._bitshift64Shl,u._calloc=gA._calloc,u._cellAreaKm2=gA._cellAreaKm2,u._cellAreaM2=gA._cellAreaM2,u._cellAreaRads2=gA._cellAreaRads2,u._cellToBoundary=gA._cellToBoundary,u._cellToCenterChild=gA._cellToCenterChild,u._cellToChildPos=gA._cellToChildPos,u._cellToChildren=gA._cellToChildren,u._cellToChildrenSize=gA._cellToChildrenSize,u._cellToLatLng=gA._cellToLatLng,u._cellToLocalIj=gA._cellToLocalIj,u._cellToParent=gA._cellToParent,u._cellToVertex=gA._cellToVertex,u._cellToVertexes=gA._cellToVertexes,u._cellsToDirectedEdge=gA._cellsToDirectedEdge,u._cellsToLinkedMultiPolygon=gA._cellsToLinkedMultiPolygon,u._childPosToCell=gA._childPosToCell,u._compactCells=gA._compactCells,u._constructCell=gA._constructCell,u._destroyLinkedMultiPolygon=gA._destroyLinkedMultiPolygon,u._directedEdgeToBoundary=gA._directedEdgeToBoundary,u._directedEdgeToCells=gA._directedEdgeToCells,u._edgeLengthKm=gA._edgeLengthKm,u._edgeLengthM=gA._edgeLengthM,u._edgeLengthRads=gA._edgeLengthRads;var d0=u._emscripten_replace_memory=gA._emscripten_replace_memory;u._free=gA._free,u._getBaseCellNumber=gA._getBaseCellNumber,u._getDirectedEdgeDestination=gA._getDirectedEdgeDestination,u._getDirectedEdgeOrigin=gA._getDirectedEdgeOrigin,u._getHexagonAreaAvgKm2=gA._getHexagonAreaAvgKm2,u._getHexagonAreaAvgM2=gA._getHexagonAreaAvgM2,u._getHexagonEdgeLengthAvgKm=gA._getHexagonEdgeLengthAvgKm,u._getHexagonEdgeLengthAvgM=gA._getHexagonEdgeLengthAvgM,u._getIcosahedronFaces=gA._getIcosahedronFaces,u._getIndexDigit=gA._getIndexDigit,u._getNumCells=gA._getNumCells,u._getPentagons=gA._getPentagons,u._getRes0Cells=gA._getRes0Cells,u._getResolution=gA._getResolution,u._greatCircleDistanceKm=gA._greatCircleDistanceKm,u._greatCircleDistanceM=gA._greatCircleDistanceM,u._greatCircleDistanceRads=gA._greatCircleDistanceRads,u._gridDisk=gA._gridDisk,u._gridDiskDistances=gA._gridDiskDistances,u._gridDistance=gA._gridDistance,u._gridPathCells=gA._gridPathCells,u._gridPathCellsSize=gA._gridPathCellsSize,u._gridRing=gA._gridRing,u._gridRingUnsafe=gA._gridRingUnsafe,u._i64Add=gA._i64Add,u._i64Subtract=gA._i64Subtract,u._isPentagon=gA._isPentagon,u._isResClassIII=gA._isResClassIII,u._isValidCell=gA._isValidCell,u._isValidDirectedEdge=gA._isValidDirectedEdge,u._isValidIndex=gA._isValidIndex,u._isValidVertex=gA._isValidVertex,u._latLngToCell=gA._latLngToCell,u._llvm_ctlz_i64=gA._llvm_ctlz_i64,u._llvm_maxnum_f64=gA._llvm_maxnum_f64,u._llvm_minnum_f64=gA._llvm_minnum_f64,u._llvm_round_f64=gA._llvm_round_f64,u._localIjToCell=gA._localIjToCell,u._malloc=gA._malloc,u._maxFaceCount=gA._maxFaceCount,u._maxGridDiskSize=gA._maxGridDiskSize,u._maxPolygonToCellsSize=gA._maxPolygonToCellsSize,u._maxPolygonToCellsSizeExperimental=gA._maxPolygonToCellsSizeExperimental,u._memcpy=gA._memcpy,u._memset=gA._memset,u._originToDirectedEdges=gA._originToDirectedEdges,u._pentagonCount=gA._pentagonCount,u._polygonToCells=gA._polygonToCells,u._polygonToCellsExperimental=gA._polygonToCellsExperimental,u._readInt64AsDoubleFromPointer=gA._readInt64AsDoubleFromPointer,u._res0CellCount=gA._res0CellCount,u._round=gA._round,u._sbrk=gA._sbrk,u._sizeOfCellBoundary=gA._sizeOfCellBoundary,u._sizeOfCoordIJ=gA._sizeOfCoordIJ,u._sizeOfGeoLoop=gA._sizeOfGeoLoop,u._sizeOfGeoPolygon=gA._sizeOfGeoPolygon,u._sizeOfH3Index=gA._sizeOfH3Index,u._sizeOfLatLng=gA._sizeOfLatLng,u._sizeOfLinkedGeoPolygon=gA._sizeOfLinkedGeoPolygon,u._uncompactCells=gA._uncompactCells,u._uncompactCellsSize=gA._uncompactCellsSize,u._vertexToLatLng=gA._vertexToLatLng,u.establishStackSpace=gA.establishStackSpace;var at=u.stackAlloc=gA.stackAlloc,Fe=u.stackRestore=gA.stackRestore,i0=u.stackSave=gA.stackSave;if(u.asm=gA,u.cwrap=uA,u.setValue=V,u.getValue=W,Qe){Be(Qe)||(Qe=C(Qe));{Xe();var Zt=function(rA){rA.byteLength&&(rA=new Uint8Array(rA)),LA.set(rA,z),u.memoryInitializerRequest&&delete u.memoryInitializerRequest.response,vt()},xt=function(){T(Qe,Zt,function(){throw"could not load memory initializer "+Qe})},bt=f0(Qe);if(bt)Zt(bt.buffer);else if(u.memoryInitializerRequest){var o0=function(){var rA=u.memoryInitializerRequest,pA=rA.response;if(rA.status!==200&&rA.status!==0){var IA=f0(u.memoryInitializerRequestURL);if(IA)pA=IA.buffer;else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+rA.status+", retrying "+Qe),xt();return}}Zt(pA)};u.memoryInitializerRequest.response?setTimeout(o0,0):u.memoryInitializerRequest.addEventListener("load",o0)}else xt()}}var wt;qe=function rA(){wt||It(),wt||(qe=rA)};function It(rA){if($e>0||(Le(),$e>0))return;function pA(){wt||(wt=!0,!oA&&(se(),me(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),ue()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),pA()},1)):pA()}u.run=It;function ht(rA){throw u.onAbort&&u.onAbort(rA),rA+="",Q(rA),D(rA),oA=!0,"abort("+rA+"). Build with -s ASSERTIONS=1 for more info."}if(u.abort=ht,u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return It(),c})(typeof jt=="object"?jt:{}),re="number",ee=re,zr=re,oe=re,le=re,dt=re,PA=re,Cf=[["sizeOfH3Index",re],["sizeOfLatLng",re],["sizeOfCellBoundary",re],["sizeOfGeoLoop",re],["sizeOfGeoPolygon",re],["sizeOfLinkedGeoPolygon",re],["sizeOfCoordIJ",re],["readInt64AsDoubleFromPointer",re],["isValidCell",zr,[oe,le]],["isValidIndex",zr,[oe,le]],["latLngToCell",ee,[re,re,dt,PA]],["cellToLatLng",ee,[oe,le,PA]],["cellToBoundary",ee,[oe,le,PA]],["maxGridDiskSize",ee,[re,PA]],["gridDisk",ee,[oe,le,re,PA]],["gridDiskDistances",ee,[oe,le,re,PA,PA]],["gridRing",ee,[oe,le,re,PA]],["gridRingUnsafe",ee,[oe,le,re,PA]],["maxPolygonToCellsSize",ee,[PA,dt,re,PA]],["polygonToCells",ee,[PA,dt,re,PA]],["maxPolygonToCellsSizeExperimental",ee,[PA,dt,re,PA]],["polygonToCellsExperimental",ee,[PA,dt,re,re,re,PA]],["cellsToLinkedMultiPolygon",ee,[PA,re,PA]],["destroyLinkedMultiPolygon",null,[PA]],["compactCells",ee,[PA,PA,re,re]],["uncompactCells",ee,[PA,re,re,PA,re,dt]],["uncompactCellsSize",ee,[PA,re,re,dt,PA]],["isPentagon",zr,[oe,le]],["isResClassIII",zr,[oe,le]],["getBaseCellNumber",re,[oe,le]],["getResolution",re,[oe,le]],["getIndexDigit",re,[oe,le,re]],["constructCell",ee,[re,re,PA,PA]],["maxFaceCount",ee,[oe,le,PA]],["getIcosahedronFaces",ee,[oe,le,PA]],["cellToParent",ee,[oe,le,dt,PA]],["cellToChildren",ee,[oe,le,dt,PA]],["cellToCenterChild",ee,[oe,le,dt,PA]],["cellToChildrenSize",ee,[oe,le,dt,PA]],["cellToChildPos",ee,[oe,le,dt,PA]],["childPosToCell",ee,[re,re,oe,le,dt,PA]],["areNeighborCells",ee,[oe,le,oe,le,PA]],["cellsToDirectedEdge",ee,[oe,le,oe,le,PA]],["getDirectedEdgeOrigin",ee,[oe,le,PA]],["getDirectedEdgeDestination",ee,[oe,le,PA]],["isValidDirectedEdge",zr,[oe,le]],["directedEdgeToCells",ee,[oe,le,PA]],["originToDirectedEdges",ee,[oe,le,PA]],["directedEdgeToBoundary",ee,[oe,le,PA]],["gridDistance",ee,[oe,le,oe,le,PA]],["gridPathCells",ee,[oe,le,oe,le,PA]],["gridPathCellsSize",ee,[oe,le,oe,le,PA]],["cellToLocalIj",ee,[oe,le,oe,le,re,PA]],["localIjToCell",ee,[oe,le,PA,re,PA]],["getHexagonAreaAvgM2",ee,[dt,PA]],["getHexagonAreaAvgKm2",ee,[dt,PA]],["getHexagonEdgeLengthAvgM",ee,[dt,PA]],["getHexagonEdgeLengthAvgKm",ee,[dt,PA]],["greatCircleDistanceM",re,[PA,PA]],["greatCircleDistanceKm",re,[PA,PA]],["greatCircleDistanceRads",re,[PA,PA]],["cellAreaM2",ee,[oe,le,PA]],["cellAreaKm2",ee,[oe,le,PA]],["cellAreaRads2",ee,[oe,le,PA]],["edgeLengthM",ee,[oe,le,PA]],["edgeLengthKm",ee,[oe,le,PA]],["edgeLengthRads",ee,[oe,le,PA]],["getNumCells",ee,[dt,PA]],["getRes0Cells",ee,[PA]],["res0CellCount",re],["getPentagons",ee,[re,PA]],["pentagonCount",re],["cellToVertex",ee,[oe,le,re,PA]],["cellToVertexes",ee,[oe,le,PA]],["vertexToLatLng",ee,[oe,le,PA]],["isValidVertex",zr,[oe,le]]],Ef=0,Sf=1,Mf=2,Bf=3,Df=4,_f=5,Tf=6,jf=7,Rf=8,If=9,Lf=10,Nf=11,Ff=12,Pf=13,Qf=14,Of=15,zf=16,Hf=17,Gf=18,Uf=19,rt={};rt[Ef]="Success";rt[Sf]="The operation failed but a more specific error is not available";rt[Mf]="Argument was outside of acceptable range";rt[Bf]="Latitude or longitude arguments were outside of acceptable range";rt[Df]="Resolution argument was outside of acceptable range";rt[_f]="Cell argument was not valid";rt[Tf]="Directed edge argument was not valid";rt[jf]="Undirected edge argument was not valid";rt[Rf]="Vertex argument was not valid";rt[If]="Pentagon distortion was encountered";rt[Lf]="Duplicate input";rt[Nf]="Cell arguments were not neighbors";rt[Ff]="Cell arguments had incompatible resolutions";rt[Pf]="Memory allocation failed";rt[Qf]="Bounds of provided memory were insufficient";rt[Of]="Mode or flags argument was not valid";rt[zf]="Index argument was not valid";rt[Hf]="Base cell number was outside of acceptable range";rt[Gf]="Child indexing digits invalid";rt[Uf]="Child indexing digits refer to a deleted subsequence";var Vf=1e3,Wf=1001,rl=1002,Zn={};Zn[Vf]="Unknown unit";Zn[Wf]="Array length out of bounds";Zn[rl]="Got unexpected null value for H3 index";var Yf="Unknown error";function nl(c,u,p){var y=p&&"value"in p,x=new Error((c[u]||Yf)+" (code: "+u+(y?", value: "+p.value:"")+")");return x.code=u,x}function Kf(c,u){var p=arguments.length===2?{value:u}:{};return nl(rt,c,p)}function Zf(c,u){var p=arguments.length===2?{value:u}:{};return nl(Zn,c,p)}function sl(c){if(c!==0)throw Kf(c)}var v0={};Cf.forEach(function(u){v0[u[0]]=jt.cwrap.apply(jt,u)});var Gr=16,$f=4,Vn=8,js=v0.sizeOfH3Index(),qf=v0.sizeOfLatLng(),Jf=v0.sizeOfCellBoundary();v0.sizeOfGeoPolygon();v0.sizeOfGeoLoop();v0.sizeOfLinkedGeoPolygon();v0.sizeOfCoordIJ();function Xf(c){if(!c)throw Zf(rl);return c}var A2=/[^0-9a-fA-F]/;function e2(c){if(Array.isArray(c)&&c.length===2&&Number.isInteger(c[0])&&Number.isInteger(c[1]))return c;if(typeof c!="string"||A2.test(c))return[0,0];var u=parseInt(c.substring(0,c.length-8),Gr),p=parseInt(c.substring(c.length-8),Gr);return[p,u]}function Vi(c){if(c>=0)return c.toString(Gr);c=c&2147483647;var u=il(8,c.toString(Gr)),p=(parseInt(u[0],Gr)+8).toString(Gr);return u=p+u.substring(1),u}function t2(c,u){return Vi(u)+il(8,Vi(c))}function il(c,u){for(var p=c-u.length,y="",x=0;x.85?.9+(c-.85)/.15*.1:.1+(c-.15)/.7*.8}function al(c,u,p,y){const x=p-u;if(x<.001)return Yi(y[12]);const C=Math.max(0,Math.min(1,(c-u)/x)),T=m2(C),Q=Math.min(23,Math.floor(T*24));return Yi(y[Q])}function g2(c){const u=new Map;for(const C of c){if(typeof C.lat!="number"||typeof C.lon!="number"||isNaN(C.lat)||isNaN(C.lon))continue;const T=i2(C.lat,C.lon,a2),Q=u.get(T),D=C.weight;Q?(Q.count++,Q.qualitySum+=D):u.set(T,{count:1,qualitySum:D})}const p=[];let y=1/0,x=-1/0;for(const[C,T]of u.entries()){const Q=T.qualitySum/T.count;p.push({hexId:C,count:T.count,avgQuality:Q}),y=Math.min(y,Q),x=Math.max(x,Q)}return{cells:p,minQuality:p.length>0?y:0,maxQuality:p.length>0?x:0}}function p2(c,u,p,y){const x=[];for(const C of c){const Q=ol(C.hexId).map(([E,P])=>[P,E]);Q.push(Q[0]);const D=al(C.avgQuality,u,p,y);x.push({type:"Feature",properties:{color:D,quality:C.avgQuality,count:C.count},geometry:{type:"Polygon",coordinates:[Q]}})}return{type:"FeatureCollection",features:x}}async function y2(c,u,p,y,x){const C=[];let T=0;for(;T[V,z]);P.push(P[0]);const O=al(D.avgQuality,u,p,y);C.push({type:"Feature",properties:{color:O,quality:D.avgQuality,count:D.count},geometry:{type:"Polygon",coordinates:[P]}})}TrequestAnimationFrame(D))}return{type:"FeatureCollection",features:C}}function x2(c,u){const[p,y]=j.useState(c);return j.useEffect(()=>{const x=setTimeout(()=>y(c),u);return()=>clearTimeout(x)},[c,u]),p}function w2({coveragePoints:c,visible:u,terrainEnabled:p=!1,brightness:y=u2,basemapMode:x="dark"}){const{current:C}=Ar(),[T,Q]=j.useState(null);j.useEffect(()=>{const Z=()=>{var iA;const vA=(iA=C==null?void 0:C.getMap)==null?void 0:iA.call(C);vA&&!T&&Q(vA)};Z();const uA=setInterval(Z,50),sA=setTimeout(()=>clearInterval(uA),5e3);return()=>{clearInterval(uA),clearTimeout(sA)}},[C,T]);const[D,E]=j.useState(null),[P,O]=j.useState(!1),z=j.useRef({aborted:!1}),V=j.useRef(0),W=j.useRef(x),oA=x2(c,c2),J=j.useMemo(()=>h2(x),[x]);j.useEffect(()=>{if(!oA||!Array.isArray(oA)||oA.length===0){queueMicrotask(()=>{E(null),V.current=0});return}const Z=W.current!==x;if(oA.length===V.current&&D&&!Z)return;V.current=oA.length,W.current=x,z.current.aborted=!0,z.current={aborted:!1};const uA=z.current;O(!0);const{cells:sA,minQuality:vA,maxQuality:iA}=g2(oA);if(sA.length===0){E(null),O(!1);return}if(sA.length{!uA.aborted&&fA&&E(fA)}).finally(()=>{uA.aborted||O(!1)}),()=>{uA.aborted=!0}},[oA,J]),j.useEffect(()=>{if(!T)return;const Z=()=>{var uA,sA;try{const vA=T.getLayer(hr),iA=T.getSource(dr);if(u&&D&&D.features.length>0){if(iA?T.getSource(dr).setData(D):T.addSource(dr,{type:"geojson",data:D}),!vA){const fA=T.getLayer("topology-weak-edges-native"),RA=(sA=(uA=T.getStyle())==null?void 0:uA.layers)==null?void 0:sA.find(EA=>EA.type==="symbol"),DA=fA?"topology-weak-edges-native":RA==null?void 0:RA.id;T.addLayer({id:hr,type:"fill",source:dr,paint:{"fill-color":["get","color"],"fill-opacity":y}},DA)}}else vA&&T.removeLayer(hr),iA&&T.removeSource(dr)}catch(vA){console.warn("[WardrivingHexLayerMapLibre] Layer update error:",vA)}};T.isStyleLoaded()?Z():T.once("style.load",Z)},[T,u,D,p]),j.useEffect(()=>{if(!(!T||!u))try{T.getLayer(hr)&&T.setPaintProperty(hr,"fill-opacity",y)}catch{}},[T,y,u]),j.useEffect(()=>()=>{if(T)try{T.getLayer(hr)&&T.removeLayer(hr),T.getSource(dr)&&T.removeSource(dr)}catch{}},[T]);const eA=(D==null?void 0:D.features.length)??0;return eA>0&&u?g.jsx("div",{"data-testid":"wardriving-hexlayer-maplibre-active","data-point-count":(c==null?void 0:c.length)||0,"data-cell-count":eA,"data-terrain-enabled":p,"data-is-processing":P,style:{display:"none"}}):null}const Ki="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png",Zi="terrarium",$i=256,qi=14,ln={shadowColor:"rgba(10, 10, 10, 0.6)",highlightColor:"rgba(245, 240, 230, 0.4)",accentColor:"rgba(90, 75, 65, 0.3)",illuminationDirection:315,exaggeration:.35},K0="terrain-dem",Hr="hillshade-dem",Fn="terrain-hillshade";function v2({enabled:c,exaggeration:u=4}){const{current:p}=Ar(),[y,x]=j.useState(null),C=j.useRef(null);return j.useEffect(()=>{const T=()=>{var P;const E=(P=p==null?void 0:p.getMap)==null?void 0:P.call(p);E&&!y&&x(E)};T();const Q=setInterval(T,50),D=setTimeout(()=>clearInterval(Q),5e3);return()=>{clearInterval(Q),clearTimeout(D)}},[p,y]),j.useEffect(()=>{if(!y)return;let T=!0;const Q=()=>{var D,E;if(T)try{if(y.getSource(Hr)||y.addSource(Hr,{type:"raster-dem",tiles:[Ki],encoding:Zi,tileSize:$i,maxzoom:qi}),!y.getLayer(Fn)){const P=(E=(D=y.getStyle())==null?void 0:D.layers)==null?void 0:E.find(O=>O.type==="symbol");y.addLayer({id:Fn,type:"hillshade",source:Hr,paint:{"hillshade-shadow-color":ln.shadowColor,"hillshade-highlight-color":ln.highlightColor,"hillshade-accent-color":ln.accentColor,"hillshade-illumination-direction":ln.illuminationDirection,"hillshade-exaggeration":ln.exaggeration}},P==null?void 0:P.id)}y.getSource(K0)||y.addSource(K0,{type:"raster-dem",tiles:[Ki],encoding:Zi,tileSize:$i,maxzoom:qi})}catch(P){console.error("[TerrainLayer] Source/layer setup error:",P)}};return y.isStyleLoaded()?Q():(y.once("style.load",Q),y.once("load",()=>{T&&!y.getSource(Hr)&&Q()})),()=>{T=!1}},[y]),j.useEffect(()=>{if(!y)return;let T=!0,Q=!1;const D=()=>{if(!(!T||!y.getSource(K0)))try{c?(y.setCenterClampedToGround(!1),y.setTerrain({source:K0,exaggeration:u}),y.setMaxPitch(70),!Q&&y.getPitch()<30&&!y.isMoving()&&(Q=!0,C.current!==null&&clearTimeout(C.current),C.current=window.setTimeout(()=>{C.current=null,T&&!y.isMoving()&&y.getPitch()<30&&y.easeTo({pitch:45,duration:1e3})},200))):(y.setTerrain(null),y.setCenterClampedToGround(!0),y.getPitch()>0&&!y.isMoving()&&y.easeTo({pitch:0,duration:800}),y.setMaxPitch(60))}catch(E){console.error("[TerrainLayer] Terrain state error:",E)}};if(y.isStyleLoaded()&&y.getSource(K0))D();else{const E=()=>{y.getSource(K0)&&D()};y.once("idle",E)}return()=>{T=!1,C.current!==null&&(clearTimeout(C.current),C.current=null)}},[y,c,u]),j.useEffect(()=>()=>{var T;try{(T=y==null?void 0:y.getStyle)!=null&&T.call(y)&&y.isStyleLoaded()&&(y.setTerrain(null),y.getLayer(Fn)&&y.removeLayer(Fn),y.getSource(Hr)&&y.removeSource(Hr),y.getSource(K0)&&y.removeSource(K0))}catch{}},[y]),null}const b2=.03,k2=.1,C2=2,E2=3,S2=.02,M2=3;function B2(c,u=M2){if(c.length<3||u<=0)return c;let p=c;for(let y=0;y0&&x.push([x[0][0],x[0][1]]),p=x}return p}function D2(c,u){let p=1/0,y=-1/0,x=1/0,C=-1/0;for(const[T,Q]of c)Ty&&(y=T),QC&&(C=Q);return p-=u,y+=u,x-=u,C+=u,{minX:p,minY:x,maxX:y,maxY:C,width:y-p,height:C-x}}function _2(c,u={}){if(c.length(eA-C.minX)/C.width*P,V=eA=>(eA-C.minY)/C.height*O,W=eA=>eA/P*C.width+C.minX,oA=eA=>eA/O*C.height+C.minY,J=p/C.width*P;try{const Z=ac().x(DA=>z(DA[0])).y(DA=>V(DA[1])).size([P,O]).bandwidth(Math.max(5,J)).cellSize(x)(c);if(Z.length===0)return{coordinates:[],valid:!1};const sA=Math.max(...Z.map(DA=>DA.value))*y;let vA=Z[0],iA=1/0;for(const DA of Z){const EA=Math.abs(DA.value-sA);EA0){const LA=bA[0],NA=bA[bA.length-1];(LA[0]!==NA[0]||LA[1]!==NA[1])&&bA.push([LA[0],LA[1]])}if(bA.length>=4){const LA=B2(bA);EA.push(LA)}}EA.length>0&&fA.push(EA)}const RA=[];for(const DA of fA)for(const EA of DA)RA.push(EA);return{coordinates:fA,valid:fA.length>0}}catch(eA){return console.warn("[KDE Contour] Failed to generate contour:",eA),{coordinates:[],valid:!1}}}function T2(c,u={}){const p=_2(c,u);return!p.valid||p.coordinates.length===0?null:p.coordinates.length===1?{type:"Polygon",coordinates:p.coordinates[0]}:{type:"MultiPolygon",coordinates:p.coordinates}}const j2="mincut-partition",R2="mincut-partition-fill",I2="mincut-partition-stroke",L2=3,N2=.05,F2=.15,P2=.008,Ji=12;function Xi(c,u,p){return(u[0]-c[0])*(p[1]-c[1])-(u[1]-c[1])*(p[0]-c[0])}function Q2(c){if(c.length<3)return c;const u=[...c].sort((x,C)=>x[0]-C[0]||x[1]-C[1]),p=[];for(const x of u){for(;p.length>=2&&Xi(p[p.length-2],p[p.length-1],x)<=0;)p.pop();p.push(x)}const y=[];for(let x=u.length-1;x>=0;x--){const C=u[x];for(;y.length>=2&&Xi(y[y.length-2],y[y.length-1],C)<=0;)y.pop();y.push(C)}return p.pop(),y.pop(),p.concat(y)}function O2(c,u){if(c.length<3)return c;let p=0,y=0;for(const[x,C]of c)p+=x,y+=C;return p/=c.length,y/=c.length,c.map(([x,C])=>{const T=x-p,Q=C-y,D=Math.sqrt(T*T+Q*Q);if(D<1e-4)return[x,C];const E=(D+u)/D;return[p+T*E,y+Q*E]})}function z2(c,u,p,y,x){const C=x*x,T=C*x;return[.5*(2*u[0]+(-c[0]+p[0])*x+(2*c[0]-5*u[0]+4*p[0]-y[0])*C+(-c[0]+3*u[0]-3*p[0]+y[0])*T),.5*(2*u[1]+(-c[1]+p[1])*x+(2*c[1]-5*u[1]+4*p[1]-y[1])*C+(-c[1]+3*u[1]-3*p[1]+y[1])*T)]}function H2(c){if(c.length<3)return c;const u=[],p=c.length;for(let y=0;yc?U2(c,u,x,C):{type:"FeatureCollection",features:[]},[c,u,x,C]),D=p?y:0,E={"fill-color":["get","color"],"fill-opacity":D},P={"line-color":["get","borderColor"],"line-width":T,"line-opacity":D};return g.jsxs(J0,{id:j2,type:"geojson",data:Q,children:[g.jsx(t0,{id:R2,type:"fill",paint:E}),g.jsx(t0,{id:I2,type:"line",paint:P})]})}function W2(c,u=!1,p=!1,y=!1,x=.7,C){const T=vo(C);return y?x>=.75?T.restBright:T.rest:x>=.85?T.rest:(x>=.7,T.restDim)}function Ao(c){return[c[1],c[0]]}function Y2(c,u,p,y=12){const[x,C]=c,[T,Q]=u,D=[];for(let E=0;E<=y;E++){const P=E/y,O=C+(Q-C)*P,z=x+(T-x)*P,V=4*p*P*(1-P);D.push([O,z,V])}return D}function eo(c,u,p,y,x,C,T,Q,D,E,P,O="dark"){const z=Ws(),V=[];let W=1/0,oA=-1/0;const J=[];for(const Z of c){const uA=Z.edge.avgConfidence??(u?.7:.5),sA=Z.edge.certainCount/Math.max(T,1),vA=uA*.7+sA*.3+(u?.5:0);J.push({polyline:Z,brightnessScore:vA}),W=Math.min(W,vA),oA=Math.max(oA,vA)}if(J.length===0)return{type:"FeatureCollection",features:[]};const eA=oA-W||1;J.sort((Z,uA)=>Z.brightnessScore-uA.brightnessScore);for(const{polyline:Z,brightnessScore:uA}of J){const{from:sA,to:vA,edge:iA}=Z,fA=p.get(iA.key)??0;if(fA<=0)continue;const RA=Q.has(iA.key),DA=D.has(iA.key),EA=iA.avgConfidence??(u?.7:.5),yA=E===iA.key,bA=P[iA.fromHash],LA=P[iA.toHash],NA=(bA==null?void 0:bA.node_name)||(bA==null?void 0:bA.name)||iA.fromHash.slice(0,8),GA=(LA==null?void 0:LA.node_name)||(LA==null?void 0:LA.name)||iA.toHash.slice(0,8),kA=[sA[0]+(vA[0]-sA[0])*fA,sA[1]+(vA[1]-sA[1])*fA];let cA;if(!u)cA=1.5;else{const ae=C.get(iA.key)??Ms(iA.certainCount),JA=x.get(iA.key)??ae;cA=JA+(ae-JA)*y,yA?cA=Math.max(cA*1.6,4.5):DA&&(cA=cA*1.3)}let lA;yA?lA=z.edges.highlight:lA=W2(!1,iA.isDirectPathEdge??!1,RA,DA,EA,O);let TA;yA?TA=z.edges.highlight:iA.isDirectPathEdge?TA=z.edges.hoverDirect:RA?TA=z.edges.hoverLoop:TA=z.edges.hoverStandard;let MA;if(!u)MA=(.3+EA*.3)*fA;else{const ae=Math.min(fA*1.5,1)*z.edgeOpacity;MA=DA?ae*1.15:ae}yA&&(MA=.95);const WA=(uA-W)/eA;V.push({type:"Feature",properties:{key:iA.key,baseColor:lA,hoverColor:TA,baseWidth:cA,baseOpacity:MA,brightnessScore:WA,isLoopEdge:RA,isBackbone:DA,isDirectPath:iA.isDirectPathEdge??!1,isHubConnection:iA.isHubConnection??!1,isZeroHop:iA.isZeroHop??!1,isValidated:u,certainCount:iA.certainCount,confidence:EA,symmetryRatio:iA.symmetryRatio??1,dominantDirection:iA.dominantDirection??"balanced",fromName:NA,toName:GA,fromHash:iA.fromHash,toHash:iA.toHash},geometry:{type:"LineString",coordinates:[Ao(sA),Ao(kA)]}})}return{type:"FeatureCollection",features:V}}const K2=150,Z2=8;function to(c,u){const p=Ws(),y=[];let x=0;for(const C of c){const T=u.get(C.hash);T&&T.blendedScore>x&&(x=T.blendedScore)}for(const C of c){const{from:T,to:Q,hash:D,neighbor:E,lastHopData:P}=C,O=`neighbor-${D}`,z=(P==null?void 0:P.avgRssi)??E.rssi??null,V=(P==null?void 0:P.avgSnr)??E.snr??null,W=(P==null?void 0:P.count)??0,oA=(P==null?void 0:P.confidence)??1,J=u.get(D),eA=(J==null?void 0:J.listenerScore)??0,Z=(J==null?void 0:J.loudScore)??0,uA=(J==null?void 0:J.blendedScore)??0,sA=x>0?uA/x:0,vA=C.rxAdvertCount??0,iA=C.txProxyCount??0,fA=vA+iA,RA=fA>0?(iA-vA)/fA:0,DA=Y2(T,Q,K2,Z2);y.push({type:"Feature",properties:{key:O,hash:D,name:E.node_name||E.name||D.slice(0,8),prefix:D.slice(2,4).toUpperCase(),color:p.neighborColor,width:2.5,opacity:.85,rssi:z,snr:V,packetCount:W,confidence:oA,hasAvgRssi:(P==null?void 0:P.avgRssi)!==void 0,hasAvgSnr:(P==null?void 0:P.avgSnr)!==void 0,isNeighborEdge:!0,listenerScore:eA,loudScore:Z,blendedScore:uA,trafficWeight:sA,linkAsymmetry:RA,rxAdvertCount:vA,txProxyCount:iA},geometry:{type:"LineString",coordinates:DA}})}return{type:"FeatureCollection",features:y}}function $2({map:c,showTopology:u,validatedPolylines:p,weakPolylines:y,maxCertainCount:x,loopEdgeKeys:C,backboneEdgeKeys:T,highlightedEdgeKey:Q,neighbors:D,validatedSourceId:E,weakSourceId:P,neighborPolylines:O=[],showNeighborLines:z=!0,neighborSourceId:V,neighborLinkScores:W=new Map,basemapMode:oA}){const J=j.useRef(null);j.useEffect(()=>{const se=c&&"current"in c?c.current:c;J.current=se});const eA=j.useRef(new Map),Z=j.useRef(1),uA=j.useRef(new Map),sA=j.useRef(new Map),vA=j.useRef(!1),iA=j.useRef(null),fA=j.useRef(u),RA=j.useRef(new Set),DA=j.useRef(""),EA=j.useRef(new Map),yA=j.useRef(""),bA=j.useRef(""),LA=j.useRef(""),NA=j.useRef(p),GA=j.useRef(y),kA=j.useRef(x),cA=j.useRef(C),lA=j.useRef(T),TA=j.useRef(Q),MA=j.useRef(D),WA=j.useRef(O),ae=j.useRef(z),JA=j.useRef(W),ZA=j.useRef(oA);j.useEffect(()=>{NA.current=p,GA.current=y,kA.current=x,cA.current=C,lA.current=T,TA.current=Q,MA.current=D,WA.current=O,ae.current=z,JA.current=W,ZA.current=oA},[p,y,x,C,T,Q,D,O,z,W,oA]);const UA=j.useCallback((se=!1)=>{var Ce,Se,pe,Ke,$e,qe,Xe,vt,Qe,Je;const me=J.current;if(!me)return;const ue=me.getSource(E),Ye=me.getSource(P),ke=me.getSource(V);if(ue){const Be=eo(NA.current,!0,eA.current,Z.current,uA.current,sA.current,kA.current,cA.current,lA.current,TA.current,MA.current,ZA.current),ze=`${Be.features.length}:${((Se=(Ce=Be.features[0])==null?void 0:Ce.properties)==null?void 0:Se.key)??""}:${((Ke=(pe=Be.features[Be.features.length-1])==null?void 0:pe.properties)==null?void 0:Ke.key)??""}:${Array.from(eA.current.values()).reduce((ot,Rt)=>ot+Rt,0).toFixed(2)}`;(se||ze!==yA.current)&&(ue.setData(Be),yA.current=ze)}if(Ye){const Be=eo(GA.current,!1,eA.current,Z.current,uA.current,sA.current,kA.current,cA.current,lA.current,TA.current,MA.current,ZA.current),ze=`${Be.features.length}:${((qe=($e=Be.features[0])==null?void 0:$e.properties)==null?void 0:qe.key)??""}:${((vt=(Xe=Be.features[Be.features.length-1])==null?void 0:Xe.properties)==null?void 0:vt.key)??""}`;(se||ze!==bA.current)&&(Ye.setData(Be),bA.current=ze)}if(ke&&WA.current.length>0){const Be=to(WA.current,JA.current),ze=`${Be.features.length}:${((Je=(Qe=Be.features[0])==null?void 0:Qe.properties)==null?void 0:Je.hash)??""}`;(se||ze!==LA.current)&&(ke.setData(Be),LA.current=ze)}},[E,P,V]),Ie=j.useCallback(()=>{iA.current&&(cancelAnimationFrame(iA.current),iA.current=null),eA.current=new Map,Z.current=1,uA.current=new Map,sA.current=new Map,vA.current=!1,RA.current=new Set,DA.current="",EA.current=new Map},[]);j.useEffect(()=>{const se=fA.current,me=u;if(fA.current=u,!!J.current){if(iA.current&&(cancelAnimationFrame(iA.current),iA.current=null),se&&!me&&!vA.current){vA.current=!0;const Ye=new Map(eA.current);let ke=null;const Ce=Se=>{ke||(ke=Se);const pe=Se-ke,Ke=Math.min(pe/hc,1),$e=Go(Ke);for(const[qe,Xe]of Ye)eA.current.set(qe,Xe*(1-$e));UA(!0),Ke<1?iA.current=requestAnimationFrame(Ce):(vA.current=!1,eA.current=new Map,RA.current=new Set,DA.current="",uA.current=new Map,sA.current=new Map,iA.current=null,UA(!0))};iA.current=requestAnimationFrame(Ce)}!se&&me&&(eA.current=new Map,RA.current=new Set,DA.current="")}},[u,UA]),j.useEffect(()=>{const se=J.current;if(!u||vA.current||!se)return;const me=[...p,...y],ue=me.map(pe=>`${pe.edge.key}:${pe.edge.certainCount}`).sort().join(","),Ye=RA.current.size===0,ke=DA.current!==""&&DA.current!==ue;if(!Ye&&!ke){UA();return}const Ce=[],Se=[];for(const{edge:pe}of me)RA.current.has(pe.key)?Se.push(pe.key):Ce.push(pe.key);ke&&Se.length>0&&(uA.current=new Map(EA.current),Z.current=0),sA.current=new Map;for(const{edge:pe}of p){const Ke=Ms(pe.certainCount);sA.current.set(pe.key,Ke)}for(const pe of Ce)eA.current.set(pe,0);for(const pe of Se)eA.current.has(pe)||eA.current.set(pe,1);if(Ce.length>0||ke&&Se.length>0){iA.current&&(cancelAnimationFrame(iA.current),iA.current=null);let pe=null;const Ke=Math.min(100,Dn/Math.max(Ce.length,1)/2),$e=qe=>{pe||(pe=qe);const Xe=qe-pe;for(let Qe=0;Qe0){const Qe=Math.min(Xe/Dn,1);Z.current=Es(Qe)}UA(!0);const vt=Dn+(Ce.length-1)*Ke;Xe{const se=J.current;if(!se||!V)return;const me=()=>{const ke=se.getSource(V);if(!ke)return!1;if(O.length>0){const Ce=to(O,W);ke.setData(Ce)}else ke.setData({type:"FeatureCollection",features:[]});return!0};if(me())return;const ue=ke=>{ke.sourceId===V&&me()&&se.off("sourcedata",ue)};se.on("sourcedata",ue);const Ye=()=>{me()&&(se.off("styledata",Ye),se.off("sourcedata",ue))};return se.on("styledata",Ye),()=>{se.off("sourcedata",ue),se.off("styledata",Ye)}},[V,O,W]);const Le=j.useRef(oA);return j.useEffect(()=>{oA!==Le.current&&(Le.current=oA,yA.current="",bA.current="",LA.current="",UA(!0))},[oA,UA]),j.useEffect(()=>()=>{iA.current&&(cancelAnimationFrame(iA.current),iA.current=null)},[]),{isExiting:vA.current,isAnimating:iA.current!==null,resetAnimationState:Ie,weightAnimProgress:Z.current,animStartWeights:uA.current,animTargetWeights:sA.current}}function q2({activeFilters:c,neighborHashes:u,hubConnectedNodes:p,directNodeSet:y,localConnectedNodes:x,nodeTypeMap:C,showTopology:T}){const[Q,D]=j.useState(new Map),E=j.useMemo(()=>[...c].sort().join(","),[c]),P=j.useRef(E),O=j.useRef(!1),z=j.useRef(new Map),V=j.useRef(null),W=j.useRef(p),oA=j.useRef(y),J=j.useRef(x),eA=j.useRef(C),Z=j.useRef(T);return j.useEffect(()=>{W.current=p,oA.current=y,J.current=x,eA.current=C,Z.current=T},[p,y,x,C,T]),j.useEffect(()=>{const sA=P.current,vA=E;if(P.current=E,sA===vA)return;V.current&&(cancelAnimationFrame(V.current),V.current=null);const iA=new Set(sA?sA.split(",").filter(Boolean):[]),fA=c,RA=W.current,DA=oA.current,EA=eA.current;for(const kA of u)z.current.has(kA)||z.current.set(kA,Math.random());const yA=(kA,cA)=>{if(cA.size===0)return!1;const lA=EA.get(kA)??"unknown";return!!(cA.has("repeater")&&lA==="repeater"||cA.has("companion")&&(lA==="companion"||lA==="unknown")||cA.has("room_server")&&lA==="room_server"||cA.has("direct")&&DA.has(kA)||cA.has("hubs")&&RA.has(kA))},bA=[];for(const kA of u){const cA=yA(kA,iA),lA=yA(kA,fA);cA!==lA&&bA.push({hash:kA,startOpacity:cA?1:0,targetOpacity:lA?1:0})}if(bA.length===0)return;O.current=!0,D(kA=>{const cA=new Map(kA);for(const{hash:lA,startOpacity:TA}of bA)cA.set(lA,TA);return cA});const LA=bA;let NA=null;const GA=kA=>{NA||(NA=kA);const cA=kA-NA;let lA=!0;D(()=>{const MA=new Map;for(const{hash:WA,startOpacity:ae,targetOpacity:JA}of LA){const ZA=(z.current.get(WA)??0)*Di,UA=Math.max(0,cA-ZA),Ie=Math.min(UA/Bi,1),Le=Es(Ie),se=ae+(JA-ae)*Le;MA.set(WA,se),Ie<1&&(lA=!1)}return MA});const TA=Bi+Di;cA{V.current&&(cancelAnimationFrame(V.current),V.current=null),O.current=!1}},[E,c,u]),{nodeOpacities:Q,getNodeOpacity:(sA,vA)=>O.current&&Q.has(sA)?Q.get(sA):vA?1:0}}const xs=240,ro=240;function J2(c,u){if(c{T.current=C},[C]);const Q=j.useRef(0),D=j.useRef(null),E=j.useRef(new Map),P=j.useRef(new Map);j.useEffect(()=>{P.current=X2(c)},[c]);const O=j.useRef(null);return j.useEffect(()=>{const z=()=>{const V=performance.now(),W=E.current;if(W.size===0){D.current=null,x(new Map);return}const oA=new Map,J=[];for(const[eA,{startTime:Z,staggerDelay:uA}]of W){const sA=V-Z-uA;if(!(sA<0))if(sA>=_n)J.push(eA);else{const vA=J2(sA,_n);vA>0&&oA.set(eA,vA)}}for(const eA of J)W.delete(eA);x(oA),W.size>0&&O.current?D.current=requestAnimationFrame(O.current):D.current=null};O.current=z},[]),j.useEffect(()=>{if(!p)return;const z=T.current;if(z.length===0)return;const V=Q.current,W=z.filter(Z=>(Z.timestamp??0)>V);if(V===0){const Z=z.reduce((uA,sA)=>Math.max(uA,sA.timestamp??0),0);Q.current=Z;return}if(W.length===0)return;const oA=W.reduce((Z,uA)=>Math.max(Z,uA.timestamp??0),0);Q.current=oA;const J=performance.now();let eA=0;for(const Z of W){const uA=_o(Z,u);if(!uA||uA.original.length===0)continue;const sA=A1(uA.original,P.current,u);if(sA.length===0)continue;const vA=_n*.5;for(let iA=0;iA()=>{D.current!==null&&(cancelAnimationFrame(D.current),D.current=null)},[]),{blinkingNodes:y,blinkColor:dc}}const Z0="edge-blink-source",pr="edge-blink-layer",Rs=1e3,Is=1e3,ws=150,t1=175,r1=3e4,n1=e0.teal,s1="#8B7BAD",i1=2.5,o1=1.875,l1=.5,Wn="node-markers-layer";function a1(c){if(!c.getLayer(pr))return;const u=c.getLayer(Wn)?Wn:void 0;try{c.moveLayer(pr,u)}catch{}}function u1(c,u){const p=new Map;for(const y of Object.keys(c)){const x=dn(y);p.has(x)||p.set(x,y)}if(u){const y=dn(u);p.set(y,u)}return p}function c1(c){return c<0||c>=Rs?0:1-c/Rs}function f1(c){if(c<0||c>=Is)return 0;const u=c/Is;return Math.pow(1-u,3)}function Pn(c){return[c[1],c[0]]}function d1({map:c,nodeCoordinates:u,packets:p,localHash:y,neighbors:x,meshTopology:C,enabled:T=!0}){const Q=j.useRef(null),D=c&&"current"in c?c.current:c;j.useEffect(()=>{Q.current=D},[D]);const E=j.useRef(!1),P=j.useRef(null),O=j.useRef([]),z=j.useRef(0),V=j.useRef(!1),[W,oA]=j.useState(!1),J=j.useRef(null),eA=j.useRef([]),Z=j.useRef(new Map),uA=j.useRef(u);j.useEffect(()=>{uA.current=u},[u]),j.useEffect(()=>{Z.current=u1(x,y)},[x,y]),j.useEffect(()=>{if(!T){J.current&&(clearTimeout(J.current),J.current=null),eA.current=[],P.current!==null&&(cancelAnimationFrame(P.current),P.current=null),O.current=[];const fA=Q.current;if(fA&&E.current){const RA=fA.getSource(Z0);RA&&RA.setData({type:"FeatureCollection",features:[]})}V.current=!1,z.current=0}},[T]),j.useEffect(()=>{const fA=D;if(!fA)return;let RA=null,DA=!1;const EA=()=>{if(!DA&&!E.current)try{fA.getLayer(pr)&&fA.removeLayer(pr),fA.getSource(Z0)&&fA.removeSource(Z0),fA.addSource(Z0,{type:"geojson",data:{type:"FeatureCollection",features:[]}});const yA=fA.getLayer(Wn)?Wn:void 0;fA.addLayer({id:pr,type:"line",source:Z0,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],s1,n1],"line-width":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],o1,i1],"line-opacity":["*",["get","opacityMult"],["interpolate",["linear"],["get","intensity"],0,0,.1,.8,.5,1,1,1]]}},yA),E.current=!0,oA(!0),RA&&(clearInterval(RA),RA=null)}catch{}};return fA.isStyleLoaded()&&EA(),fA.once("style.load",()=>{EA()}),E.current||(RA=setInterval(()=>{if(E.current){RA&&clearInterval(RA);return}EA()},100),setTimeout(()=>{RA&&(clearInterval(RA),RA=null)},5e3)),()=>{DA=!0,RA&&clearInterval(RA),P.current!==null&&(cancelAnimationFrame(P.current),P.current=null);const yA=Q.current;if(yA&&E.current){try{yA.getLayer(pr)&&yA.removeLayer(pr),yA.getSource(Z0)&&yA.removeSource(Z0)}catch{}E.current=!1,oA(!1)}}},[D]);const sA=j.useRef(()=>{});j.useEffect(()=>{sA.current=()=>{const fA=Q.current;if(!fA)return;const RA=fA.getSource(Z0);if(!RA)return;const DA=performance.now(),EA=O.current,yA=[],bA=[];for(const LA of EA){const NA=DA-LA.startTime-LA.delay,GA=LA.isSpeculative?Is:Rs;if(NA0&&yA.push({type:"Feature",properties:{intensity:kA,opacityMult:LA.isSpeculative?l1:1,isSpeculative:LA.isSpeculative??!1},geometry:{type:"LineString",coordinates:[LA.fromCoord,LA.toCoord]}})}}RA.setData({type:"FeatureCollection",features:yA}),O.current=bA,bA.length>0?P.current=requestAnimationFrame(()=>sA.current()):P.current=null}},[]);const vA=j.useCallback(()=>{const fA=Q.current;fA&&a1(fA),P.current===null&&(P.current=requestAnimationFrame(()=>sA.current()))},[]),iA=j.useCallback(()=>{if(!Q.current||!E.current)return;const RA=eA.current;if(eA.current=[],J.current=null,RA.length===0)return;const DA=Z.current,EA=uA.current;if(DA.size===0)return;const yA=performance.now();let bA=0,LA=!1;const NA=new Set;for(const GA of RA){const kA=_o(GA,y);if(!kA||kA.original.length<2)continue;const cA=kA.original;let lA=0,TA=null;for(let JA=0;JA0){JA.sort((Le,se)=>se.confidence-Le.confidence);const ZA=Math.max(1,Math.ceil(JA.length*.25)),UA=JA.slice(0,ZA),Ie=bA+lA*ws;for(const{edgeKey:Le,otherHash:se}of UA){const me=EA.get(TA),ue=EA.get(se);O.current.push({edgeKey:Le,fromCoord:Pn(me),toCoord:Pn(ue),startTime:yA,delay:Ie,isSpeculative:!0}),NA.add(Le),LA=!0}}}lA>0&&(bA+=lA*ws*.5)}LA&&vA()},[y,C,vA]);j.useEffect(()=>{const fA=Q.current;if(!T||!fA||!W||p.length===0)return;const RA=Date.now(),DA=z.current;if(!V.current){V.current=!0;const bA=(RA-r1)/1e3,LA=p.filter(GA=>(GA.timestamp??0)>=bA);let NA=0;for(const GA of p){const kA=GA.timestamp??0;kA>NA&&(NA=kA)}if(z.current=NA,LA.length>0){LA.sort((kA,cA)=>(kA.timestamp??0)-(cA.timestamp??0));const GA=LA.slice(-20);eA.current.push(...GA),iA()}return}const EA=p.filter(bA=>(bA.timestamp??0)>DA);if(EA.length===0)return;let yA=0;for(const bA of EA){const LA=bA.timestamp??0;LA>yA&&(yA=LA)}z.current=yA,eA.current.push(...EA),J.current&&clearTimeout(J.current),J.current=setTimeout(iA,t1)},[T,p,iA,W]),j.useEffect(()=>()=>{J.current&&clearTimeout(J.current)},[])}var $0={},mr={};/** + `,children:[g.jsxs("div",{className:"flex items-center justify-between gap-2 px-3 py-2 sm:py-2 min-h-[44px] sm:min-h-0 border-b border-edge-subtle",children:[g.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[g.jsx(Vo,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5 text-sys-green shrink-0"}),g.jsx(Or,{prefix:c.nodeA.prefix,name:z}),g.jsx("span",{className:"type-data-xs text-fg-muted",children:"↔"}),g.jsx(Or,{prefix:c.nodeB.prefix,name:V})]}),g.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[oA>0&&g.jsx("span",{className:"type-data-xs text-fg-muted",title:xi(oA),children:Bo(oA)}),g.jsx(Ot,{plain:!0,color:"muted",onClick:u,className:"!p-1.5 sm:!p-0.5 !rounded-md min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center",children:g.jsx(mn,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5"})})]})]}),g.jsxs("div",{className:"px-3 py-2.5 border-b border-edge-subtle",children:[g.jsxs("div",{className:"space-y-1.5 mb-2",children:[g.jsxs("div",{className:"flex items-center justify-between cursor-help",title:`${c.nodeA.prefix}→${c.nodeB.prefix}: mean of ${((GA=c.aToB)==null?void 0:GA.count)??0} measurements`,children:[g.jsxs("span",{className:"flex items-center gap-1",children:[g.jsx(Or,{prefix:c.nodeA.prefix,name:z}),g.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),g.jsx(Or,{prefix:c.nodeB.prefix,name:V})]}),c.aToB?g.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${fn(c.aToB.mean,E)}`,children:[c.aToB.mean.toFixed(1),g.jsx("span",{className:"text-fg-muted font-normal ml-0.5",children:"dB"})]}):g.jsx("span",{className:"type-data-sm text-fg-muted",children:"—"})]}),g.jsxs("div",{className:"flex items-center justify-between cursor-help",title:`${c.nodeB.prefix}→${c.nodeA.prefix}: mean of ${((kA=c.bToA)==null?void 0:kA.count)??0} measurements`,children:[g.jsxs("span",{className:"flex items-center gap-1",children:[g.jsx(Or,{prefix:c.nodeB.prefix,name:V}),g.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),g.jsx(Or,{prefix:c.nodeA.prefix,name:z})]}),c.bToA?g.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${fn(c.bToA.mean,E)}`,children:[c.bToA.mean.toFixed(1),g.jsx("span",{className:"text-fg-muted font-normal ml-0.5",children:"dB"})]}):g.jsx("span",{className:"type-data-sm text-fg-muted",children:"—"})]})]}),g.jsxs("div",{className:"grid grid-cols-2 gap-0 -mx-3 border-t border-edge-subtle",children:[g.jsx("div",{className:"px-3 pt-2 pb-1 border-r border-edge-subtle",children:g.jsx(Ui,{stats:c.aToB,direction:`${c.nodeA.prefix}→${c.nodeB.prefix}`,sf:E,noiseFloor:T})}),g.jsx("div",{className:"px-3 pt-2 pb-1",children:g.jsx(Ui,{stats:c.bToA,direction:`${c.nodeB.prefix}→${c.nodeA.prefix}`,sf:E,noiseFloor:T})})]})]}),g.jsxs("div",{className:"px-3 py-1.5 border-b border-edge-subtle",children:[W!=="insufficient"&&g.jsxs("div",{className:"flex items-center justify-between gap-2 py-[3px] cursor-help",title:eA,children:[g.jsx("span",{className:"type-data-xs text-fg-muted",children:"Trend"}),g.jsx("span",{className:"data-box data-box-compact",children:g.jsxs("span",{className:"flex items-center gap-1",children:[yf(W),g.jsx("span",{className:"text-fg-secondary capitalize",children:W})]})})]}),J>0&&g.jsx(Gn,{label:"Unique traces",value:J.toString(),tooltip:sA})]}),O.length>0&&g.jsxs("div",{className:"px-3 py-2 flex-1 min-h-0 flex flex-col",children:[g.jsxs("p",{className:"type-micro text-fg-secondary mb-1 shrink-0",children:["Source packets (",O.length,")"]}),g.jsx("div",{className:"overflow-y-auto flex-1 min-h-0 overscroll-contain",style:{scrollbarGutter:"stable"},children:O.map((cA,lA)=>{const TA=Al(cA),MA=TA?el(cA,TA):null,WA=MA?Math.max(0,MA.length-1):0,ae=MA?MA.map(UA=>(p==null?void 0:p.get(UA))??UA).join(" → "):null,JA=Q===lA,$A=cA.id??`${cA.packet_hash}-${cA.timestamp}`;return g.jsxs("div",{className:"rounded-sm",style:lA%2===1?xf:void 0,children:[g.jsxs("button",{onClick:()=>D(JA?null:lA),className:"flex items-center gap-1.5 py-[3px] px-1 w-full text-left text-[10px] font-mono text-fg-secondary hover:text-fg-primary transition-colors group",children:[JA?g.jsx(ko,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"}):g.jsx(yu,{className:"w-2.5 h-2.5 text-fg-muted shrink-0 opacity-0 group-hover:opacity-100 transition-opacity"}),g.jsx("span",{className:"text-fg-muted w-[52px] shrink-0",children:xi(cA.timestamp)}),ae?g.jsx("span",{className:"text-fg-secondary truncate min-w-0",title:MA.join(" → "),children:ae}):g.jsx("span",{className:"text-fg-muted truncate min-w-0 italic",children:"path n/a"}),g.jsxs("span",{className:"text-fg-muted shrink-0",children:[WA,"h"]}),cA.snr!=null&&g.jsx("span",{className:`shrink-0 tabular-nums ${fn(cA.snr,E)}`,children:cA.snr.toFixed(1)})]}),JA&&g.jsxs("div",{className:"mb-1 mt-0.5 mx-1 pl-2 border-l border-edge-subtle space-y-0.5 text-[10px]",children:[cA.rssi!=null&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"RSSI"}),g.jsxs("span",{className:"font-mono tabular-nums text-fg-secondary",children:[cA.rssi," dBm"]})]}),cA.snr!=null&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"SNR"}),g.jsxs("span",{className:`font-mono tabular-nums ${fn(cA.snr,E)}`,children:[cA.snr.toFixed(1)," dB"]})]}),g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"Route"}),g.jsx("span",{className:"font-mono text-fg-secondary",children:Ca(cA.route??cA.route_type)})]}),cA.packet_hash&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"Hash"}),g.jsxs("button",{onClick:UA=>{UA.stopPropagation(),Us(cA.packet_hash)},className:"flex items-center gap-1 font-mono text-fg-secondary hover:text-fg-primary transition-colors",title:"Copy packet hash",children:[g.jsx("span",{className:"truncate max-w-[120px]",children:cA.packet_hash}),g.jsx(Gs,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"})]})]}),cA.src_hash&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"Source"}),g.jsx("span",{className:"font-mono text-fg-secondary truncate max-w-[140px]",title:cA.src_hash,children:cA.src_hash})]}),MA&&MA.length>0&&g.jsxs("div",{className:"flex items-center justify-between gap-2",children:[g.jsx("span",{className:"text-fg-muted",children:"Path"}),g.jsx("span",{className:"font-mono text-fg-secondary truncate max-w-[140px]",title:MA.join(" → "),children:MA.join(" → ")})]})]})]},$A)})})]})]})})}const vf={getItem:c=>{try{return localStorage.getItem(c)}catch{return null}},setItem:(c,u)=>{try{localStorage.setItem(c,u)}catch{}},removeItem:c=>{try{localStorage.removeItem(c)}catch{}}},tl=Eo()(ou(c=>({isEnabled:!1,toggle:()=>c(u=>({isEnabled:!u.isEnabled})),setEnabled:u=>c({isEnabled:u})}),{name:"pymc-live-trace",storage:lu(()=>vf)})),bf=()=>tl(c=>c.isEnabled),kf=()=>tl(c=>c.toggle);var jt=(function(c){c=c||{};var u=typeof c<"u"?c:{},p={},y;for(y in u)u.hasOwnProperty(y)&&(p[y]=u[y]);var x="";function C(rA){return u.locateFile?u.locateFile(rA,x):x+rA}var T;typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),x.indexOf("blob:")!==0?x=x.substr(0,x.lastIndexOf("/")+1):x="",T=function(pA,IA,xA){var t=new XMLHttpRequest;t.open("GET",pA,!0),t.responseType="arraybuffer",t.onload=function(){if(t.status==200||t.status==0&&t.response){IA(t.response);return}var ge=f0(pA);if(ge){IA(ge.buffer);return}xA()},t.onerror=xA,t.send(null)};var Q=u.print||console.log.bind(console),D=u.printErr||console.warn.bind(console);for(y in p)p.hasOwnProperty(y)&&(u[y]=p[y]);p=null,u.arguments&&u.arguments;var E=0,P=function(rA){E=rA},O=function(){return E},z=8;function V(rA,pA,IA,xA){switch(IA=IA||"i8",IA.charAt(IA.length-1)==="*"&&(IA="i32"),IA){case"i1":bA[rA>>0]=pA;break;case"i8":bA[rA>>0]=pA;break;case"i16":NA[rA>>1]=pA;break;case"i32":GA[rA>>2]=pA;break;case"i64":ot=[pA>>>0,(ze=pA,+Ce(ze)>=1?ze>0?(Ke(+pe(ze/4294967296),4294967295)|0)>>>0:~~+Se((ze-+(~~ze>>>0))/4294967296)>>>0:0)],GA[rA>>2]=ot[0],GA[rA+4>>2]=ot[1];break;case"float":kA[rA>>2]=pA;break;case"double":cA[rA>>3]=pA;break;default:ht("invalid type for setValue: "+IA)}}function W(rA,pA,IA){switch(pA=pA||"i8",pA.charAt(pA.length-1)==="*"&&(pA="i32"),pA){case"i1":return bA[rA>>0];case"i8":return bA[rA>>0];case"i16":return NA[rA>>1];case"i32":return GA[rA>>2];case"i64":return GA[rA>>2];case"float":return kA[rA>>2];case"double":return cA[rA>>3];default:ht("invalid type for getValue: "+pA)}return null}var oA=!1;function J(rA,pA){rA||ht("Assertion failed: "+pA)}function eA(rA){var pA=u["_"+rA];return J(pA,"Cannot call unknown function "+rA+", make sure it is exported"),pA}function $(rA,pA,IA,xA,t){var k={string:function(ie){var et=0;if(ie!=null&&ie!==0){var Lt=(ie.length<<2)+1;et=at(Lt),RA(ie,et,Lt)}return et},array:function(ie){var et=at(ie.length);return DA(ie,et),et}};function ge(ie){return pA==="string"?iA(ie):pA==="boolean"?!!ie:ie}var De=eA(rA),He=[],ZA=0;if(xA)for(var ye=0;ye=xA);)++t;if(t-pA>16&&rA.subarray&&sA)return sA.decode(rA.subarray(pA,t));for(var k="";pA>10,56320|ZA&1023)}}return k}function iA(rA,pA){return rA?vA(LA,rA,pA):""}function fA(rA,pA,IA,xA){if(!(xA>0))return 0;for(var t=IA,k=IA+xA-1,ge=0;ge=55296&&De<=57343){var He=rA.charCodeAt(++ge);De=65536+((De&1023)<<10)|He&1023}if(De<=127){if(IA>=k)break;pA[IA++]=De}else if(De<=2047){if(IA+1>=k)break;pA[IA++]=192|De>>6,pA[IA++]=128|De&63}else if(De<=65535){if(IA+2>=k)break;pA[IA++]=224|De>>12,pA[IA++]=128|De>>6&63,pA[IA++]=128|De&63}else{if(IA+3>=k)break;pA[IA++]=240|De>>18,pA[IA++]=128|De>>12&63,pA[IA++]=128|De>>6&63,pA[IA++]=128|De&63}}return pA[IA]=0,IA-t}function RA(rA,pA,IA){return fA(rA,LA,pA,IA)}typeof TextDecoder<"u"&&new TextDecoder("utf-16le");function DA(rA,pA){bA.set(rA,pA)}function EA(rA,pA){return rA%pA>0&&(rA+=pA-rA%pA),rA}var yA,bA,LA,NA,GA,kA,cA;function lA(rA){yA=rA,u.HEAP8=bA=new Int8Array(rA),u.HEAP16=NA=new Int16Array(rA),u.HEAP32=GA=new Int32Array(rA),u.HEAPU8=LA=new Uint8Array(rA),u.HEAPU16=new Uint16Array(rA),u.HEAPU32=new Uint32Array(rA),u.HEAPF32=kA=new Float32Array(rA),u.HEAPF64=cA=new Float64Array(rA)}var TA=5271536,MA=28624,WA=u.TOTAL_MEMORY||33554432;u.buffer?yA=u.buffer:yA=new ArrayBuffer(WA),WA=yA.byteLength,lA(yA),GA[MA>>2]=TA;function ae(rA){for(;rA.length>0;){var pA=rA.shift();if(typeof pA=="function"){pA();continue}var IA=pA.func;typeof IA=="number"?pA.arg===void 0?u.dynCall_v(IA):u.dynCall_vi(IA,pA.arg):IA(pA.arg===void 0?null:pA.arg)}}var JA=[],$A=[],UA=[],Ie=[];function Le(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)Ye(u.preRun.shift());ae(JA)}function se(){ae($A)}function me(){ae(UA)}function ue(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)ke(u.postRun.shift());ae(Ie)}function Ye(rA){JA.unshift(rA)}function ke(rA){Ie.unshift(rA)}var Ce=Math.abs,Se=Math.ceil,pe=Math.floor,Ke=Math.min,Ze=0,qe=null;function Xe(rA){Ze++,u.monitorRunDependencies&&u.monitorRunDependencies(Ze)}function vt(rA){if(Ze--,u.monitorRunDependencies&&u.monitorRunDependencies(Ze),Ze==0&&qe){var pA=qe;qe=null,pA()}}u.preloadedImages={},u.preloadedAudios={};var Qe=null,Je="data:application/octet-stream;base64,";function Be(rA){return String.prototype.startsWith?rA.startsWith(Je):rA.indexOf(Je)===0}var ze,ot;Qe="data:application/octet-stream;base64,AAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAAAQAAAAQAAAADAAAABgAAAAUAAAACAAAAAAAAAAIAAAADAAAAAQAAAAQAAAAGAAAAAAAAAAUAAAADAAAABgAAAAQAAAAFAAAAAAAAAAEAAAACAAAABAAAAAUAAAAGAAAAAAAAAAIAAAADAAAAAQAAAAUAAAACAAAAAAAAAAEAAAADAAAABgAAAAQAAAAGAAAAAAAAAAUAAAACAAAAAQAAAAQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAAAAAAEAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAYAAAAAAAAABQAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAMAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABQAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAYAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAYAAAAAAAAAAwAAAAIAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFAAAABAAAAAAAAAABAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAYAAAAAAAAABAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAgAAAAQAAAADAAAACAAAAAEAAAAHAAAABgAAAAkAAAAAAAAAAwAAAAIAAAACAAAA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AAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAABQAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAFAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAAAwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAUAAAABAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAABAAAAAUAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAIAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAD/////AQAAAAAAAAADAAAABAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAUAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAD//////////wEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAAAAAAAAAAABAAAAAgAAAAYAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAAAAAAAAAAAAQAAAAEAAAAFAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAAAAAAAAAAABAAAAAwAAAAcAAAAGAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADgAAAAIAAAAAAAAAAAAAAAEAAAAAAAAACQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAMAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAAAAAAAAAAAAAEAAAAEAAAACAAAAAoAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAAAAAAAAAAAAQAAAAsAAAAPAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAAAAAAAAAAAAQAAAAwAAAAQAAAADAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAAAAAAAAAAABAAAACgAAABMAAAAIAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAAAAAAAAAAAAAEAAAANAAAAEQAAAA0AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAACAAAAAAAAAAAAAAABAAAADgAAABIAAAAPAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABIAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAgAAAAAAAAAAAAAAAQAAAP//////////EwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAASAAAAAAAAABgAAAAAAAAAIQAAAAAAAAAeAAAAAAAAACAAAAADAAAAMQAAAAEAAAAwAAAAAwAAADIAAAADAAAACAAAAAAAAAAFAAAABQAAAAoAAAAFAAAAFgAAAAAAAAAQAAAAAAAAABIAAAAAAAAAKQAAAAEAAAAhAAAAAAAAAB4AAAAAAAAABAAAAAAAAAAAAAAABQAAAAIAAAAFAAAADwAAAAEAAAAIAAAAAAAAAAUAAAAFAAAAHwAAAAEAAAAWAAAAAAAAABAAAAAAAAAAAgAAAAAAAAAGAAAAAAAAAA4AAAAAAAAACgAAAAAAAAALAAAAAAAAABEAAAADAAAAGAAAAAEAAAAXAAAAAwAAABkAAAADAAAAAAAAAAAAAAABAAAABQAAAAkAAAAFAAAABQAAAAAAAAACAAAAAAAAAAYAAAAAAAAAEgAAAAEAAAAKAAAAAAAAAAsAAAAAAAAABAAAAAEAAAADAAAABQAAAAcAAAAFAAAACAAAAAEAAAAAAAAAAAAAAAEAAAAFAAAAEAAAAAEAAAAFAAAAAAAAAAIAAAAAAAAABwAAAAAAAAAVAAAAAAAAACYAAAAAAAAACQAAAAAAAAATAAAAAAAAACIAAAADAAAADgAAAAEAAAAUAAAAAwAAACQAAAADAAAAAwAAAAAAAAANAAAABQAAAB0AAAAFAAAAAQAAAAAAAAAHAAAAAAAAABUAAAAAAAAABgAAAAEAAAAJAAAAAAAAABMAAAAAAAAABAAAAAIAAAAMAAAA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Zhu25b633D8c1YgmzowSQNM25BRKWARArGS08/lNxD+LFssHwmMRQLC5aNcxBgJABL9HT0WRF0CjCmJmOGEOQHsuaVzMP/s/TWJCaGGwBUCeu1PAPLzjP9nqN9DZOBNAKE4JcydbCkCGtbd1qjPzP8dgm9U8jhVAtPeKTkVwDkCeCLss5l37P401XMPLmBdAFd29VMVQDUBg0yA55h75Pz6odcYLCRdApBM4rBrkAkDyAVWgQxbRP4XDMnK20hFAymLlF7EmzD8GUgo9XBHlP3lbK7T9COc/k+OhPthhy7+YGEpnrOvCPzBFhLs15u4/epbqB6H4uz9IuuLF5svev6lzLKY31es/CaQ0envF5z8ZY0xlUADXv7zaz7HYEuI/CfbK1sn16T8uAQfWwxLWPzKn/YuFN94/5KdbC1AFu793fyCSnlfvPzK2y4doAMY/NRg5t1/X6b/shq4QJaHDP5yNIAKPOeI/vpn7BSE30r/X4YQrO6nrv78Ziv/Thto/DqJ1Y6+y5z9l51NaxFrlv8QlA65HOLS/86dxiEc96z+Hj0+LFjneP6LzBZ8LTc2/DaJ1Y6+y579l51NaxFrlP8QlA65HOLQ/8qdxiEc967+Jj0+LFjnev6LzBZ8LTc0/1qdbC1AFuz93fyCSnlfvvzK2y4doAMa/NRg5t1/X6T/vhq4QJaHDv5yNIAKPOeK/wJn7BSE30j/W4YQrO6nrP78Ziv/Thtq/CaQ0envF578XY0xlUADXP7zaz7HYEuK/CvbK1sn16b8rAQfWwxLWvzKn/YuFN96/zWLlF7EmzL8GUgo9XBHlv3lbK7T9COe/kOOhPthhyz+cGEpnrOvCvzBFhLs15u6/c5bqB6H4u79IuuLF5sveP6lzLKY31eu/AQAAAP////8HAAAA/////zEAAAD/////VwEAAP////9hCQAA/////6dBAAD/////kcsBAP/////3kAwA/////8H2VwAAAAAAAAAAAAAAAAACAAAA/////w4AAAD/////YgAAAP////+uAgAA/////8ISAAD/////ToMAAP////8ilwMA/////+4hGQD/////gu2vAAAAAAAAAAAAAAAAAAAAAAACAAAA//////////8BAAAAAwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////////////////////AQAAAAAAAAACAAAA////////////////AwAAAP//////////////////////////////////////////////////////////AgAAAP//////////AQAAAAAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD/////////////////////AQAAAP///////////////wIAAAD///////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAD///////////////8CAAAAAQAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8BAAAAAgAAAP///////////////wAAAAD/////////////////////AwAAAP///////////////////////////////wIAAAD///////////////8BAAAA/////////////////////wAAAAD/////////////////////AwAAAP////////////////////////////////////////////////////8DAAAA/////////////////////wAAAAABAAAA//////////8CAAAA//////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAA////////////////AgAAAAAAAAABAAAA//////////////////////////////////////////////////////////////////////////8DAAAAAQAAAP//////////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAAAAAAAAAAIAAAABAAAAAQAAAAIAAAACAAAAAAAAAAUAAAAFAAAAAAAAAAIAAAACAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAEAAAACAAAAAgAAAAIAAAAAAAAABQAAAAYAAAAAAAAAAgAAAAIAAAADAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAAAAAACAAAAAQAAAAMAAAACAAAAAgAAAAAAAAAFAAAABwAAAAAAAAACAAAAAgAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAAAAAAAAAIAAAABAAAABAAAAAIAAAACAAAAAAAAAAUAAAAIAAAAAAAAAAIAAAACAAAAAwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAIAAAAAAAAAAgAAAAEAAAAAAAAAAgAAAAIAAAAAAAAABQAAAAkAAAAAAAAAAgAAAAIAAAADAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAgAAAAIAAAAAAAAAAwAAAA4AAAACAAAAAAAAAAIAAAADAAAAAAAAAAAAAAACAAAAAgAAAAMAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAACAAAAAgAAAAAAAAADAAAACgAAAAIAAAAAAAAAAgAAAAMAAAABAAAAAAAAAAIAAAACAAAAAwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAACAAAAAAAAAAMAAAALAAAAAgAAAAAAAAACAAAAAwAAAAIAAAAAAAAAAgAAAAIAAAADAAAACAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAIAAAAAAAAAAwAAAAwAAAACAAAAAAAAAAIAAAADAAAAAwAAAAAAAAACAAAAAgAAAAMAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAACAAAAAgAAAAAAAAADAAAADQAAAAIAAAAAAAAAAgAAAAMAAAAEAAAAAAAAAAIAAAACAAAAAwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAACAAAAAAAAAAMAAAAGAAAAAgAAAAAAAAACAAAAAwAAAA8AAAAAAAAAAgAAAAIAAAADAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAgAAAAIAAAAAAAAAAwAAAAcAAAACAAAAAAAAAAIAAAADAAAAEAAAAAAAAAACAAAAAgAAAAMAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAgAAAAAAAAADAAAACAAAAAIAAAAAAAAAAgAAAAMAAAARAAAAAAAAAAIAAAACAAAAAwAAAA0AAAAAAAAAAAAAAAAAAAAAAAAACAAAAAIAAAACAAAAAAAAAAMAAAAJAAAAAgAAAAAAAAACAAAAAwAAABIAAAAAAAAAAgAAAAIAAAADAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAgAAAAIAAAAAAAAAAwAAAAUAAAACAAAAAAAAAAIAAAADAAAAEwAAAAAAAAACAAAAAgAAAAMAAAAPAAAAAAAAAAAAAAAAAAAAAAAAABAAAAACAAAAAAAAAAIAAAABAAAAEwAAAAIAAAACAAAAAAAAAAUAAAAKAAAAAAAAAAIAAAACAAAAAwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAIAAAAAAAAAAgAAAAEAAAAPAAAAAgAAAAIAAAAAAAAABQAAAAsAAAAAAAAAAgAAAAIAAAADAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAgAAAAAAAAACAAAAAQAAABAAAAACAAAAAgAAAAAAAAAFAAAADAAAAAAAAAACAAAAAgAAAAMAAAASAAAAAAAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAIAAAABAAAAEQAAAAIAAAACAAAAAAAAAAUAAAANAAAAAAAAAAIAAAACAAAAAwAAABMAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAIAAAAAAAAAAgAAAAEAAAASAAAAAgAAAAIAAAAAAAAABQAAAA4AAAAAAAAAAgAAAAIAAAADAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAEAAAACAAAAAQAAAAAAAAACAAAAAAAAAAUAAAAEAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAQAAAAAAAAABQAAAAAAAAACAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAgAAAAEAAAAAAAAAAQAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAEAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAFAAAABAAAAAAAAAABAAAABQAAAAQAAAAAAAAABQAAAAUAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAQAAAAAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAA6B6FaUp9QQTPXMuL4myJBraiDfBwx9UBYJseitzTIQOL5if9jqZtAnXX+Z+ycb0C3pucbhRBCQG8wJBYqpRRAlWbDCzCY5z/eFWBUEve6P/+qo4Q50Y4/D9YM3iCcYT8fcA2QJSA0P4ADxu0qAAc/BNcGolVJ2j5d9FACqwquPh9z7MthtI9CSUSYJke/YUJQ/64OyjU0Qpi0+HCmFQdCm3GfIVdh2kHsJ11kAyauQYC3UDFJOoFBSJsFV1OwU0FK5fcxX4AmQWhy/zZIt/lACqaCPsBjzUDbdUNIScugQMYQlVJ4MXNANiuq8GTvRUDxTXnulxEZQFZ8QX5kpuw/qmG/JwYFlEAluh3Q6DB+QKn4vyNq0GZAKOXekas+UUB8xabXXhI6QG63C2pLtSNAdDBtyNfLDUDyOcu67ID2P0rCMvRXAeE/Ki2TSVyzyT9Dk+8Sz2uzP5J+w5ARWp0/NQAoOiMuhj9YnP+RyMJwPxgW7TvQVFk/KgsLYF0kQz9g5dAC6IwzQcgHPVvDex1B1XjppodHBkHJq3OMM9fwQNvcmJ7wddlAInGPpQs/w0BRobq5EBmtQJZ2ai7n+ZVAtv2G5E+bgECG+gIfKBlpQK5f8jdI91JAL39sL/WpPEB8rGxhDqklQK6yUf43XhBAxL9y/tK8+D86XyZpgrHiPwAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAP////8AAAAAAAAAAAAAAAABAAAAAAAAAAAAAAD/////AAAAAAAAAAABAAAAAQAAAAAAAAAAAAAA/////wAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAP////8FAAAABQAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////AAAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAABQAAAAEAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAQABAAABAQAAAAAAAQAAAAEAAAABAAEAAAAAAAAAAAAAAAAAAAAAquJYWJZl+D9jaeZNtj/zPwwdI9KqaeO/qGefXwdHdz+q4lhYlmX4P+OrlPMN3PI/DB0j0qpp47+7SQLV4VIEQKriWFiWZfg/r2kma3tz8T82eQmLqNIGwMRIWXMqSvo/fcCszPux9j+jara6ozTwP6hnn18HR3c/MSoKLequ8r+SabgA2nj0P7jBLbDOHO8/1Ym/ICfH4T+6lxjvlFXHv73m373LRPU/0vXyDVxo7T+ToKRHJXMAQF/33578aPE/pAyy64tD9T8+U/hCvyruPwxv8Y7YYwLAuXYr8NAiCEB4+LDK0Sn0P1Qeuy4j+eo/OMx50n7K7L+TrGB/nyf8v5ehC2fbYPM/aXMKexiT6z8mFRIMjg/zP7yUVwGGBNw/E6opHERf8z/z0wR2g9DqPw4pBpcOhvu/NbA29uWAA8DMaTExyXzyP02biiQ+Ruk/S8jz2/FKBEB1pzZnpbb9P7pQU4wLfPI//7ZcQXeG6D9CqEQvAYoIwDB2VB6sSgRAVyv8H5We8T+EHWF8XNPmPzB2wT8Nrrg/SEi+cX+w4L8of+GtdSDxP1sjk5AdouU/6ZjOVru13r8K0obqI6bxvwVbdNXyhfA/w5GG024n5z+rwmtMzP8BwLw9pSX49QXABe/2uQxP8D+b6wCzCvXkP7uGT87fK+Q/pz/JWw4coj+qoBf2J0nwP/yE3PUo0+I/vFJeHcaC+D96luSIqvntP/bf8sHUYu8/gZNN41mL4z9bhOqVOF4FwO6lmAh1hQhAbCVxbdhk7z+1C8NdDcfiPwG36x/0OQBAx0WJ76c2+D9nlSHXANfuP2HlfZ3gqOE/EwnVlVPg9r96+oHzEH//v5bXzdT1Auw/DM3GwLsA4D9p/8uoKcr+v+U9x5DQVAPAehjSdghb7D9sc1IetODgP8MVwwB1pu6/azPk6OGe978W8t/TUc3rP+0QMvYfP+A/RsG/QpSE8D+l3uwScxzgPwQaifgujuw/k1Vti1I43z8MAwLnSh0GQH5nYnwwZgJAiGUzWC5s6j8WyyI/BbLgPw4iUapGeQJAB3W+imnp/j9BLWR4ssrpP2t+gG5Pstk/cpBsfm6DCMCOpU9dOZsFQEv8nFypHeo/ehJ6i+6S2D9jqlGEmarLv7STC5TRiOa/bC+x8WZD6D9H3yUkWpDZP8gZvmCMuQLAreY19/eRBsCoPOc8UzzpP6KI/QV+y9g/t/MoboyWzT+Hv5q3Zu3Mvy2xROCT4uY/9gQitMMg1T9abAqhWMDkv1oLTavoUfG/PMUJP9CD5j+fHRX3t6fSPz7W2gk6bvs/WRnuHwqN9D8YFturGCTmP1EZczv0b9I/5t4exabB5D/1ESLh5fTEP9X2z6SYweQ/6lv3I2zT0D9zkRGNUNMAQKoSvc4EIfs/Xggt8wQI5T+mJHHg/w/SP4lhT/9t8vQ/DrZ/DbwH7D+XlhbYZrjkP34LIpFt6c4/lwfp8fLX9L+j96CTTf76v3WdNhEv9uM/d8c3o4lV0D/vFdCHVcsFwAHeDq0F1QhApbYqcZiN5D9KoilqByXLPwX0/diA0vq/0fo0GxnxAMBbaTkvlCzjP/RrFrWXrMs/UYTrky7jA0DB9f4FiZYAQEGAk/3QzeE/r/TeqE8t0D/OqjlsnPbvvz8RKU8JOfW/smSEbK/O4T8MzuyPm3DDP/rFtctq9gZAfb1EVEaSA0Dts5dVInnhP18SFMc79MM/7y34cw6LAMDFrRJsZO0DwC2KLvLSYuA/hx5wcUHewz+49SnK/4ruPyeS0PX9a+E/ZxaaLvvZ3z8WPu5T2QS8Pygo4RIvMqa/BJ0Kqsd0279cKW4ay8jdP3b05bmZ364/10/qtdxk2r+Bcz6CDMvpv54qOw+Amdw/qLV71pW7sT/YKc80nIPUP8OfIaBJ77G/LyTuD1un2z+diYu8efWzP1wU7ACkfwjAZroyPL1yBkAmv3lKJJbbPysKSE4W+p0/dIgqY79TA8ATLTOQ3tsGwJ2zweD/Xdg/XO/jXeFUaL8VW2qLFKfov1cA9Aa6XfK/tIa7YGgI2T+f3hu/sxqPv2nXdPpf3Pc/jkw8Jbda8j+tT/z8tGPVP1yBHpJd35k/KYvYOy1s8j/yz+kCQjPrP9+agH7x59g/PZfJ9aBhpr/rDKzvYBb+PwtkiaGCt/c/vb1mVr+f1T/JIHwHc8Govw7aeF6+9vG/Xv7kD6fp979isYioQYHVP7AIQZuSFrG/3z1AdUTnAUDN3XY9O7f9P0AdQ9ljYNQ/dJANJPTOrb8kLECUiiPlP4yF7UgmStA/9xGmXxCG1T9qZzix4W2zv2SGJRJVrPe/Fh9a2M/B/b8IexzFCoPSP9y1QFD2bLe/Q86cWLJe/b+mOOfYm78BwOTjkPAGE9E/8aPCUKu/ub9pPZyLCiUGwBA7Mev/BQlALOmrlRi+0j+AMJ/dKULBv7iLtL6a6QRAEMDV/yajAUDa62dE3crJP1P70RgBUbq/38hVnR6esT/s1tG10Z/Ov/zLwalHPss/dTS9NKTXx78nMcRzCIEHQAabxDsAmQRA0tyLK3gSyT+Aui7nOhDGv5Gs58z3WgHATN3forJuBMCAui7nOhDGP9Lciyt4Esm/WAJyHQ4c7z8UP5HFIs3iP3U0vTSk18c//MvBqUc+y7+cvv8HLg/Kvy1I/mHsI+K/U/vRGAFRuj/a62dE3crJv8p+WV8KlQjAuQ/nOP43B0CAMJ/dKULBPyzpq5UYvtK/ZoU+VoLh4L9etLlRUfvtv/GjwlCrv7k/5OOQ8AYT0b9DfT9FhufXPwUX8hJp+4u/3LVAUPZstz8IexzFCoPSv9+L609E5fQ/q9Fz7X2J7T9qZzix4W2zP/cRpl8QhtW/vtNilqGX+j8MOy7QJoL0P3SQDST0zq0/QB1D2WNg1L8IIjSvGNkDwGB8Jou2GAfAsAhBm5IWsT9isYioQYHVvyS9D3zb6uy/gnwRa7uM9L/JIHwHc8GoP729Zla/n9W/CsAHJZwmAEDEW6OYT1r6Pz2XyfWgYaY/35qAfvHn2L83Tdy4lS30vxf2/gZ0jPq/XIEekl3fmb+tT/z8tGPVvybPr2zJ1/+/K7mJ0ypVAsCf3hu/sxqPPwCGu2BoCNm/5oITrpZn+r+UDUyDP+n/v1zv413hVGg/nbPB4P9d2L9MlmkxNvgCQMtZlKE85v8/KwpIThb6nb8mv3lKJJbbv8+SZsTvOOc/pQCIIOYw0j+diYu8efWzvy8k7g9bp9u/kxYDa+pKtD9XlYvA8HnVv6i1e9aVu7G/nio7D4CZ3L/WR6rNh5EGwCkgQweBkghAdvTluZnfrr9cKW4ay8jdvxbjhr1f1QVAR5C0MzivAkAWPu5T2QS8v2cWmi772d+/cKj4lzLJCEBx2QJfYrMFQIcecHFB3sO/LYou8tJi4L+jr7lhO38BwIcI0Nb7xgTAXxIUxzv0w7/ts5dVInnhv0T+l8DZLfE/MP3FoFvS5D8MzuyPm3DDv7JkhGyvzuG/tzhzRIRc0b9Ovv3/0z7mv6/03qhPLdC/m4CT/dDN4b9dwjU5VCQBQBBJX1ntCv0/9GsWtZesy79baTkvlCzjv1mjYgEz++S/oW6KnOQW8b9KoilqByXLv6W2KnGYjeS/SmaKz3Vx9z+BZB5yxGHwP3fHN6OJVdC/dZ02ES/2478PuaBjLrXaP4/JU81pPaO/fgsikW3pzr+XlhbYZrjkv4tSn7YDbP0/f2LnFKlF9z+mJHHg/w/Sv14ILfMECOW/mfg4qYhR/b+OP+RQDCACwOpb9yNs09C/1fbPpJjB5L9pN2WOVZ3wv3hHy9nxIve/URlzO/Rv0r8YFturGCTmv1d1/KKR8QPA8gsy9qzSB8CfHRX3t6fSvzzFCT/Qg+a/EYStnrzV9r/2QJqI7Lb9v/YEIrTDINW/LbFE4JPi5r/7kQEs5fEDQHunnf4GeQBAooj9BX7L2L+oPOc8Uzzpv+ydYY2SSAfAL4HK6CRTB0BH3yUkWpDZv2wvsfFmQ+i/Ik0Yzruh6T8fM3LoGoDUP3oSeovukti/S/ycXKkd6r9rEv+7UWcHQCRIQe/GfwNAa36Abk+y2b9BLWR4ssrpv9KT87qa0bM/FTyktw823L8WyyI/BbLgv4hlM1gubOq/DizMp9Ki6r8b5ckdjVrzv5NVbYtSON+/BBqJ+C6O7L/dUBFqgyXYv00Wh18r7+q/7RAy9h8/4L8W8t/TUc3rv4RM5DKx3wDAfvWIj94aBcBsc1IetODgv3oY0nYIW+y/oGcTFF54AUDkJqS/FKX6PwzNxsC7AOC/ltfN1PUC7L+5Wrz/zHnzP6688w2rNOc/YeV9neCo4b9nlSHXANfuvw9RsxKjY/s/1V8GteXE8j+1C8NdDcfiv2wlcW3YZO+/IOywaA7Q8b9bFP+4Tg36v4GTTeNZi+O/9t/ywdRi77+tRc3yFR7eP2bkcHXJkLO//ITc9SjT4r+qoBf2J0nwv2YHKoswwfm/iQcLspCjAcCb6wCzCvXkvwXv9rkMT/C/YkuwYAMXBMApCNUai9kIwMORhtNuJ+e/BVt01fKF8L+ZqWEfvIjsP6h693QZYNk/WyOTkB2i5b8of+GtdSDxvwpaaulDSwVADMQAX+lOAECEHWF8XNPmv1cr/B+VnvG/XyFG6opcCMD/mtR32/UEQP+2XEF3hui/ulBTjAt88r/imfCfRP+yP9zbvtc8XeO/TZuKJD5G6b/MaTExyXzyvxiTQeElXOO/rbJRQVGN9L/z0wR2g9DqvxOqKRxEX/O/FDGCEei99j9x8zV4VYTmP2lzCnsYk+u/l6ELZ9tg878pRXacaDT/v3k6GZRqoQXAVB67LiP56r94+LDK0Sn0vwO6pZ9b7wFAvK0nKVcc9j8+U/hCvyruv6QMsuuLQ/W/FPhKFYv46j8MyxaDTOW/v9L18g1caO2/vebfvctE9b/7GD8ZrF3xv3gx1AR9bQDAuMEtsM4c77+SabgA2nj0v5xKFIwxsATArKNSBaKsB0Cjara6ozTwv33ArMz7sfa/dF2U0FcWCcDxL357DJX/P69pJmt7c/G/quJYWJZl+L/YntVJlnrSP4sRLzXM+fe/46uU8w3c8r+q4lhYlmX4v85lu5+QRwRAsI0H/WU8479jaeZNtj/zv6riWFiWZfi/sI0H/WU847/OZbufkEcEQHAoPUBrnss/9exKzDtFtT88wM8kax+gP9OqeKeAYog/MW0ItiZvcj+ph+smvt5bP2lCaV5dEUU/StaUmQDaLz+kK9y22BMYP0O3whZuMwI/IIbgZGWE6z7UkjYaEM3UPuezxwa9cr8+LybxRMnFpz6E1N8DbPiRPsYjySMvK3s+//////8fAAj//////zMQCP////9/MiAI/////28yMAj/////YzJACP///z9iMlAI////N2IyYAj///8zYjJwCP//vzNiMoAI//+rM2IykAj/f6szYjKgCP8PqzNiMrAI/wOrM2IywAi/A6szYjLQCJ8DqzNiMuAImQOrM2Iy8Aj//////z8PCP//////Kx8I/////38pLwj/////Pyk/CP////85KU8I////PzgpXwj///8POClvCP///w44KX8I//8fDjgpjwj//w8OOCmfCP9/DQ44Ka8I/w8NDjgpvwj/DQ0OOCnPCP8MDQ44Kd8IxwwNDjgp7wjEDA0OOCn/CAcAAAAHAAAAAQAAAAIAAAAEAAAAAwAAAAAAAAAAAAAABwAAAAMAAAABAAAAAgAAAAUAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAAAAQAAAAMAAAAOAAAABgAAAAsAAAACAAAABwAAAAEAAAAYAAAABQAAAAoAAAABAAAABgAAAAAAAAAmAAAABwAAAAwAAAADAAAACAAAAAIAAAAxAAAACQAAAA4AAAAAAAAABQAAAAQAAAA6AAAACAAAAA0AAAAEAAAACQAAAAMAAAA/AAAACwAAAAYAAAAPAAAACgAAABAAAABIAAAADAAAAAcAAAAQAAAACwAAABEAAABTAAAACgAAAAUAAAATAAAADgAAAA8AAABhAAAADQAAAAgAAAARAAAADAAAABIAAABrAAAADgAAAAkAAAASAAAADQAAABMAAAB1AAAADwAAABMAAAARAAAAEgAAABAAAAAGAAAAAgAAAAMAAAAFAAAABAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAwAAAAEAAAAFAAAABAAAAAAAAAAAAAAABwAAAAUAAAADAAAABAAAAAEAAAAAAAAAAgAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAABgtRFT7Ifk/GC1EVPsh+b8YLURU+yEJQBgtRFT7IQnAYWxnb3MuYwBoM05laWdoYm9yUm90YXRpb25zAGNvb3JkaWprLmMAX3VwQXA3Q2hlY2tlZABfdXBBcDdyQ2hlY2tlZABkaXJlY3RlZEVkZ2UuYwBkaXJlY3RlZEVkZ2VUb0JvdW5kYXJ5AGFkamFjZW50RmFjZURpclt0bXBGaWprLmZhY2VdW2ZpamsuZmFjZV0gPT0gS0kAZmFjZWlqay5jAF9mYWNlSWprUGVudFRvQ2VsbEJvdW5kYXJ5AGFkamFjZW50RmFjZURpcltjZW50ZXJJSksuZmFjZV1bZmFjZTJdID09IEtJAF9mYWNlSWprVG9DZWxsQm91bmRhcnkAaDNJbmRleC5jAGNvbXBhY3RDZWxscwBsYXRMbmdUb0NlbGwAY2VsbFRvQ2hpbGRQb3MAdmFsaWRhdGVDaGlsZFBvcwBsYXRMbmcuYwBjZWxsQXJlYVJhZHMyAHBvbHlnb24tPm5leHQgPT0gTlVMTABsaW5rZWRHZW8uYwBhZGROZXdMaW5rZWRQb2x5Z29uAG5leHQgIT0gTlVMTABsb29wICE9IE5VTEwAYWRkTmV3TGlua2VkTG9vcABwb2x5Z29uLT5maXJzdCA9PSBOVUxMAGFkZExpbmtlZExvb3AAY29vcmQgIT0gTlVMTABhZGRMaW5rZWRDb29yZABsb29wLT5maXJzdCA9PSBOVUxMAGlubmVyTG9vcHMgIT0gTlVMTABub3JtYWxpemVNdWx0aVBvbHlnb24AYmJveGVzICE9IE5VTEwAY2FuZGlkYXRlcyAhPSBOVUxMAGZpbmRQb2x5Z29uRm9ySG9sZQBjYW5kaWRhdGVCQm94ZXMgIT0gTlVMTAByZXZEaXIgIT0gSU5WQUxJRF9ESUdJVABsb2NhbGlqLmMAY2VsbFRvTG9jYWxJamsAYmFzZUNlbGwgIT0gb3JpZ2luQmFzZUNlbGwAIShvcmlnaW5PblBlbnQgJiYgaW5kZXhPblBlbnQpAGJhc2VDZWxsID09IG9yaWdpbkJhc2VDZWxsAGJhc2VDZWxsICE9IElOVkFMSURfQkFTRV9DRUxMAGxvY2FsSWprVG9DZWxsACFfaXNCYXNlQ2VsbFBlbnRhZ29uKGJhc2VDZWxsKQBiYXNlQ2VsbFJvdGF0aW9ucyA+PSAwAGdyaWRQYXRoQ2VsbHMAcG9seWZpbGwuYwBpdGVyU3RlcFBvbHlnb25Db21wYWN0ADAAdmVydGV4LmMAdmVydGV4Um90YXRpb25zAGNlbGxUb1ZlcnRleABncmFwaC0+YnVja2V0cyAhPSBOVUxMAHZlcnRleEdyYXBoLmMAaW5pdFZlcnRleEdyYXBoAG5vZGUgIT0gTlVMTABhZGRWZXJ0ZXhOb2Rl";var Rt=28640;function b0(rA,pA,IA,xA){ht("Assertion failed: "+iA(rA)+", at: "+[pA?iA(pA):"unknown filename",IA,xA?iA(xA):"unknown function"])}function Yt(){return bA.length}function Kt(rA,pA,IA){LA.set(LA.subarray(pA,pA+IA),rA)}function L0(rA){return u.___errno_location&&(GA[u.___errno_location()>>2]=rA),rA}function er(rA){ht("OOM")}function k0(rA){try{var pA=new ArrayBuffer(rA);return pA.byteLength!=rA?void 0:(new Int8Array(pA).set(bA),d0(pA),lA(pA),1)}catch{}}function zt(rA){var pA=Yt(),IA=16777216,xA=2147483648-IA;if(rA>xA)return!1;for(var t=16777216,k=Math.max(pA,t);k>4,t=(De&15)<<4|He>>2,k=(He&3)<<6|ZA,IA=IA+String.fromCharCode(xA),He!==64&&(IA=IA+String.fromCharCode(t)),ZA!==64&&(IA=IA+String.fromCharCode(k));while(ye13780509?(A=bn(15,A)|0,A|0):(r=((e|0)<0)<<31>>31,s=ft(e|0,r|0,3,0)|0,n=S()|0,r=KA(e|0,r|0,1,0)|0,r=ft(s|0,n|0,r|0,S()|0)|0,r=KA(r|0,S()|0,1,0)|0,e=S()|0,t[A>>2]=r,t[A+4>>2]=e,A=0,A|0)}function v(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,_(e,A,r,n,0)|0}function _(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0;if(a=b,b=b+16|0,o=a,!(F(e,A,r,n,s)|0))return n=0,b=a,n|0;do if((r|0)>=0){if((r|0)>13780509){if(i=bn(15,o)|0,i|0)break;l=o,o=t[l>>2]|0,l=t[l+4>>2]|0}else i=((r|0)<0)<<31>>31,f=ft(r|0,i|0,3,0)|0,l=S()|0,i=KA(r|0,i|0,1,0)|0,i=ft(f|0,l|0,i|0,S()|0)|0,i=KA(i|0,S()|0,1,0)|0,l=S()|0,t[o>>2]=i,t[o+4>>2]=l,o=i;if(W0(n|0,0,o<<3|0)|0,s|0){W0(s|0,0,o<<2|0)|0,i=X(e,A,r,n,s,o,l,0)|0;break}i=Qt(o,4)|0,i?(f=X(e,A,r,n,i,o,l,0)|0,qA(i),i=f):i=13}else i=2;while(!1);return f=i,b=a,f|0}function F(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0;if(G=b,b=b+16|0,I=G,L=G+8|0,R=I,t[R>>2]=e,t[R+4>>2]=A,(r|0)<0)return L=2,b=G,L|0;if(i=n,t[i>>2]=e,t[i+4>>2]=A,i=(s|0)!=0,i&&(t[s>>2]=0),Oe(e,A)|0)return L=9,b=G,L|0;t[L>>2]=0;A:do if((r|0)>=1)if(i)for(m=1,f=0,M=0,R=1,i=e;;){if(!(f|M)){if(i=K(i,A,4,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,Oe(i,A)|0){i=9;break A}}if(i=K(i,A,t[26800+(M<<2)>>2]|0,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(m<<3)|0,t[e>>2]=i,t[e+4>>2]=A,t[s+(m<<2)>>2]=R,e=f+1|0,o=(e|0)==(R|0),l=M+1|0,a=(l|0)==6,Oe(i,A)|0){i=9;break A}if(R=R+(a&o&1)|0,(R|0)>(r|0)){i=0;break}else m=m+1|0,f=o?0:e,M=o?a?0:l:M}else for(m=1,f=0,M=0,R=1,i=e;;){if(!(f|M)){if(i=K(i,A,4,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,Oe(i,A)|0){i=9;break A}}if(i=K(i,A,t[26800+(M<<2)>>2]|0,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(m<<3)|0,t[e>>2]=i,t[e+4>>2]=A,e=f+1|0,o=(e|0)==(R|0),l=M+1|0,a=(l|0)==6,Oe(i,A)|0){i=9;break A}if(R=R+(a&o&1)|0,(R|0)>(r|0)){i=0;break}else m=m+1|0,f=o?0:e,M=o?a?0:l:M}else i=0;while(!1);return L=i,b=G,L|0}function X(e,A,r,n,s,i,o,l){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0,o=o|0,l=l|0;var a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0;if(G=b,b=b+16|0,I=G+8|0,L=G,a=Rr(e|0,A|0,i|0,o|0)|0,m=S()|0,M=n+(a<<3)|0,Y=M,nA=t[Y>>2]|0,Y=t[Y+4>>2]|0,f=(nA|0)==(e|0)&(Y|0)==(A|0),!((nA|0)==0&(Y|0)==0|f))do a=KA(a|0,m|0,1,0)|0,a=jr(a|0,S()|0,i|0,o|0)|0,m=S()|0,M=n+(a<<3)|0,nA=M,Y=t[nA>>2]|0,nA=t[nA+4>>2]|0,f=(Y|0)==(e|0)&(nA|0)==(A|0);while(!((Y|0)==0&(nA|0)==0|f));if(a=s+(a<<2)|0,f&&(t[a>>2]|0)<=(l|0)||(nA=M,t[nA>>2]=e,t[nA+4>>2]=A,t[a>>2]=l,(l|0)>=(r|0)))return nA=0,b=G,nA|0;switch(f=l+1|0,t[I>>2]=0,a=K(e,A,2,I,L)|0,a|0){case 9:{R=9;break}case 0:{a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a||(R=9);break}}A:do if((R|0)==9){switch(t[I>>2]=0,a=K(e,A,3,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=K(e,A,1,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=K(e,A,5,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=K(e,A,4,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=K(e,A,6,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,s,i,o,f)|0,a|0)break A;break}default:break A}return nA=0,b=G,nA|0}while(!1);return nA=a,b=G,nA|0}function K(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0;if(r>>>0>6)return s=1,s|0;if(M=(t[n>>2]|0)%6|0,t[n>>2]=M,(M|0)>0){i=0;do r=Gt(r)|0,i=i+1|0;while((i|0)<(t[n>>2]|0))}if(M=wA(e|0,A|0,45)|0,S()|0,m=M&127,m>>>0>121)return s=5,s|0;a=Pt(e,A)|0,i=wA(e|0,A|0,52)|0,S()|0,i=i&15;A:do if(!i)f=8;else{for(;;){if(o=(15-i|0)*3|0,l=wA(e|0,A|0,o|0)|0,S()|0,l=l&7,(l|0)==7){A=5;break}if(L=(Jt(i)|0)==0,i=i+-1|0,R=CA(7,0,o|0)|0,A=A&~(S()|0),I=CA(t[(L?432:16)+(l*28|0)+(r<<2)>>2]|0,0,o|0)|0,o=S()|0,r=t[(L?640:224)+(l*28|0)+(r<<2)>>2]|0,e=I|e&~R,A=o|A,!r){r=0;break A}if(!i){f=8;break A}}return A|0}while(!1);(f|0)==8&&(L=t[848+(m*28|0)+(r<<2)>>2]|0,I=CA(L|0,0,45)|0,e=I|e,A=S()|0|A&-1040385,r=t[4272+(m*28|0)+(r<<2)>>2]|0,(L&127|0)==127&&(L=CA(t[848+(m*28|0)+20>>2]|0,0,45)|0,A=S()|0|A&-1040385,r=t[4272+(m*28|0)+20>>2]|0,e=lr(L|e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+1)),l=wA(e|0,A|0,45)|0,S()|0,l=l&127;A:do if(je(l)|0){e:do if((Pt(e,A)|0)==1){if((m|0)!=(l|0))if(M0(l,t[7696+(m*28|0)>>2]|0)|0){e=Jn(e,A)|0,o=1,A=S()|0;break}else OA(27795,26864,533,26872);switch(a|0){case 3:{e=lr(e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+1,o=0;break e}case 5:{e=Jn(e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+5,o=0;break e}case 0:return L=9,L|0;default:return L=1,L|0}}else o=0;while(!1);if((r|0)>0){i=0;do e=qn(e,A)|0,A=S()|0,i=i+1|0;while((i|0)!=(r|0))}if((m|0)!=(l|0)){if(!(Et(l)|0)){if((o|0)!=0|(Pt(e,A)|0)!=5)break;t[n>>2]=(t[n>>2]|0)+1;break}switch(M&127){case 8:case 118:break A}(Pt(e,A)|0)!=3&&(t[n>>2]=(t[n>>2]|0)+1)}}else if((r|0)>0){i=0;do e=lr(e,A)|0,A=S()|0,i=i+1|0;while((i|0)!=(r|0))}while(!1);return t[n>>2]=((t[n>>2]|0)+r|0)%6|0,L=s,t[L>>2]=e,t[L+4>>2]=A,L=0,L|0}function dA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,jA(e,A,r,n)|0?(W0(n|0,0,r*48|0)|0,n=XA(e,A,r,n)|0,n|0):(n=0,n|0)}function jA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0;if(L=b,b=b+16|0,R=L,I=L+8|0,M=R,t[M>>2]=e,t[M+4>>2]=A,(r|0)<0)return I=2,b=L,I|0;if(!r)return I=n,t[I>>2]=e,t[I+4>>2]=A,I=0,b=L,I|0;t[I>>2]=0;A:do if(Oe(e,A)|0)e=9;else{s=0,M=e;do{if(e=K(M,A,4,I,R)|0,e|0)break A;if(A=R,M=t[A>>2]|0,A=t[A+4>>2]|0,s=s+1|0,Oe(M,A)|0){e=9;break A}}while((s|0)<(r|0));m=n,t[m>>2]=M,t[m+4>>2]=A,m=r+-1|0,f=0,e=1;do{if(s=26800+(f<<2)|0,(f|0)==5)for(o=t[s>>2]|0,i=0,s=e;;){if(e=R,e=K(t[e>>2]|0,t[e+4>>2]|0,o,I,R)|0,e|0)break A;if((i|0)!=(m|0))if(a=R,l=t[a>>2]|0,a=t[a+4>>2]|0,e=n+(s<<3)|0,t[e>>2]=l,t[e+4>>2]=a,!(Oe(l,a)|0))e=s+1|0;else{e=9;break A}else e=s;if(i=i+1|0,(i|0)>=(r|0))break;s=e}else for(o=R,a=t[s>>2]|0,l=0,s=e,i=t[o>>2]|0,o=t[o+4>>2]|0;;){if(e=K(i,o,a,I,R)|0,e|0)break A;if(o=R,i=t[o>>2]|0,o=t[o+4>>2]|0,e=n+(s<<3)|0,t[e>>2]=i,t[e+4>>2]=o,e=s+1|0,Oe(i,o)|0){e=9;break A}if(l=l+1|0,(l|0)>=(r|0))break;s=e}f=f+1|0}while(f>>>0<6);e=R,e=(M|0)==(t[e>>2]|0)&&(A|0)==(t[e+4>>2]|0)?0:9}while(!1);return I=e,b=L,I|0}function XA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;if(M=b,b=b+16|0,o=M,!r)return t[n>>2]=e,t[n+4>>2]=A,n=0,b=M,n|0;do if((r|0)>=0){if((r|0)>13780509){if(s=bn(15,o)|0,s|0)break;i=o,s=t[i>>2]|0,i=t[i+4>>2]|0}else s=((r|0)<0)<<31>>31,m=ft(r|0,s|0,3,0)|0,i=S()|0,s=KA(r|0,s|0,1,0)|0,s=ft(m|0,i|0,s|0,S()|0)|0,s=KA(s|0,S()|0,1,0)|0,i=S()|0,m=o,t[m>>2]=s,t[m+4>>2]=i;if(f=Qt(s,8)|0,!f)s=13;else{if(m=Qt(s,4)|0,!m){qA(f),s=13;break}if(s=X(e,A,r,f,m,s,i,0)|0,s|0){qA(f),qA(m);break}if(A=t[o>>2]|0,o=t[o+4>>2]|0,(o|0)>0|(o|0)==0&A>>>0>0){s=0,l=0,a=0;do e=f+(l<<3)|0,i=t[e>>2]|0,e=t[e+4>>2]|0,!((i|0)==0&(e|0)==0)&&(t[m+(l<<2)>>2]|0)==(r|0)&&(R=n+(s<<3)|0,t[R>>2]=i,t[R+4>>2]=e,s=s+1|0),l=KA(l|0,a|0,1,0)|0,a=S()|0;while((a|0)<(o|0)|(a|0)==(o|0)&l>>>0>>0)}qA(f),qA(m),s=0}}else s=2;while(!1);return R=s,b=M,R|0}function Ae(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;for(l=b,b=b+16|0,i=l,o=l+8|0,s=(Oe(e,A)|0)==0,s=s?1:2;;){if(t[o>>2]=0,f=(K(e,A,s,o,i)|0)==0,a=i,f&((t[a>>2]|0)==(r|0)?(t[a+4>>2]|0)==(n|0):0)){e=4;break}if(s=s+1|0,s>>>0>=7){s=7,e=4;break}}return(e|0)==4?(b=l,s|0):0}function ce(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;if(l=b,b=b+48|0,s=l+16|0,i=l+8|0,o=l,r=sn(r)|0,r|0)return o=r,b=l,o|0;if(f=e,a=t[f+4>>2]|0,r=i,t[r>>2]=t[f>>2],t[r+4>>2]=a,ri(i,s),r=mA(s,A,o)|0,!r){if(A=t[i>>2]|0,i=t[e+8>>2]|0,(i|0)>0){s=t[e+12>>2]|0,r=0;do A=(t[s+(r<<3)>>2]|0)+A|0,r=r+1|0;while((r|0)<(i|0))}r=o,s=t[r>>2]|0,r=t[r+4>>2]|0,i=((A|0)<0)<<31>>31,(r|0)<(i|0)|(r|0)==(i|0)&s>>>0>>0?(r=o,t[r>>2]=A,t[r+4>>2]=i,r=i):A=s,a=KA(A|0,r|0,12,0)|0,f=S()|0,r=o,t[r>>2]=a,t[r+4>>2]=f,r=n,t[r>>2]=a,t[r+4>>2]=f,r=0}return f=r,b=l,f|0}function Ge(e,A,r,n,s,i,o){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0,o=o|0;var l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,he=0,We=0,Tt=0,pi=0;if(Ve=b,b=b+64|0,ne=Ve+48|0,HA=Ve+32|0,SA=Ve+24|0,BA=Ve+8|0,zA=Ve,a=t[e>>2]|0,(a|0)<=0)return ve=0,b=Ve,ve|0;for(QA=e+4|0,fe=ne+8|0,de=HA+8|0,Ee=BA+8|0,l=0,Z=0;;){f=t[QA>>2]|0,q=f+(Z<<4)|0,t[ne>>2]=t[q>>2],t[ne+4>>2]=t[q+4>>2],t[ne+8>>2]=t[q+8>>2],t[ne+12>>2]=t[q+12>>2],(Z|0)==(a+-1|0)?(t[HA>>2]=t[f>>2],t[HA+4>>2]=t[f+4>>2],t[HA+8>>2]=t[f+8>>2],t[HA+12>>2]=t[f+12>>2]):(q=f+(Z+1<<4)|0,t[HA>>2]=t[q>>2],t[HA+4>>2]=t[q+4>>2],t[HA+8>>2]=t[q+8>>2],t[HA+12>>2]=t[q+12>>2]),a=FA(ne,HA,n,SA)|0;A:do if(a)f=0,l=a;else if(a=SA,f=t[a>>2]|0,a=t[a+4>>2]|0,(a|0)>0|(a|0)==0&f>>>0>0){nA=0,q=0;e:for(;;){if(We=1/(+(f>>>0)+4294967296*+(a|0)),pi=+k[ne>>3],a=ct(f|0,a|0,nA|0,q|0)|0,Tt=+(a>>>0)+4294967296*+(S()|0),he=+(nA>>>0)+4294967296*+(q|0),k[BA>>3]=We*(pi*Tt)+We*(+k[HA>>3]*he),k[Ee>>3]=We*(+k[fe>>3]*Tt)+We*(+k[de>>3]*he),a=Xn(BA,n,zA)|0,a|0){l=a;break}Y=zA,G=t[Y>>2]|0,Y=t[Y+4>>2]|0,R=Rr(G|0,Y|0,A|0,r|0)|0,m=S()|0,a=o+(R<<3)|0,M=a,f=t[M>>2]|0,M=t[M+4>>2]|0;t:do if((f|0)==0&(M|0)==0)U=a,ve=16;else for(I=0,L=0;;){if((I|0)>(r|0)|(I|0)==(r|0)&L>>>0>A>>>0){l=1;break e}if((f|0)==(G|0)&(M|0)==(Y|0))break t;if(a=KA(R|0,m|0,1,0)|0,R=jr(a|0,S()|0,A|0,r|0)|0,m=S()|0,L=KA(L|0,I|0,1,0)|0,I=S()|0,a=o+(R<<3)|0,M=a,f=t[M>>2]|0,M=t[M+4>>2]|0,(f|0)==0&(M|0)==0){U=a,ve=16;break}}while(!1);if((ve|0)==16&&(ve=0,!((G|0)==0&(Y|0)==0))&&(L=U,t[L>>2]=G,t[L+4>>2]=Y,L=i+(t[s>>2]<<3)|0,t[L>>2]=G,t[L+4>>2]=Y,L=s,L=KA(t[L>>2]|0,t[L+4>>2]|0,1,0)|0,G=S()|0,Y=s,t[Y>>2]=L,t[Y+4>>2]=G),nA=KA(nA|0,q|0,1,0)|0,q=S()|0,a=SA,f=t[a>>2]|0,a=t[a+4>>2]|0,!((a|0)>(q|0)|(a|0)==(q|0)&f>>>0>nA>>>0)){f=1;break A}}f=0}else f=1;while(!1);if(Z=Z+1|0,!f){ve=21;break}if(a=t[e>>2]|0,(Z|0)>=(a|0)){l=0,ve=21;break}}return(ve|0)==21?(b=Ve,l|0):0}function kt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,he=0,We=0,Tt=0;if(Tt=b,b=b+112|0,ve=Tt+80|0,a=Tt+72|0,Ve=Tt,he=Tt+56|0,s=sn(r)|0,s|0)return We=s,b=Tt,We|0;if(f=e+8|0,We=y0((t[f>>2]<<5)+32|0)|0,!We)return We=13,b=Tt,We|0;if(is(e,We),s=sn(r)|0,!s){if(HA=e,SA=t[HA+4>>2]|0,s=a,t[s>>2]=t[HA>>2],t[s+4>>2]=SA,ri(a,ve),s=mA(ve,A,Ve)|0,s)HA=0,SA=0;else{if(s=t[a>>2]|0,i=t[f>>2]|0,(i|0)>0){o=t[e+12>>2]|0,r=0;do s=(t[o+(r<<3)>>2]|0)+s|0,r=r+1|0;while((r|0)!=(i|0));r=s}else r=s;s=Ve,i=t[s>>2]|0,s=t[s+4>>2]|0,o=((r|0)<0)<<31>>31,(s|0)<(o|0)|(s|0)==(o|0)&i>>>0>>0?(s=Ve,t[s>>2]=r,t[s+4>>2]=o,s=o):r=i,HA=KA(r|0,s|0,12,0)|0,SA=S()|0,s=Ve,t[s>>2]=HA,t[s+4>>2]=SA,s=0}if(!s){if(r=Qt(HA,8)|0,!r)return qA(We),We=13,b=Tt,We|0;if(l=Qt(HA,8)|0,!l)return qA(We),qA(r),We=13,b=Tt,We|0;Ee=ve,t[Ee>>2]=0,t[Ee+4>>2]=0,Ee=e,ne=t[Ee+4>>2]|0,s=a,t[s>>2]=t[Ee>>2],t[s+4>>2]=ne,s=Ge(a,HA,SA,A,ve,r,l)|0;A:do if(s)qA(r),qA(l),qA(We);else{e:do if((t[f>>2]|0)>0){for(o=e+12|0,i=0;s=Ge((t[o>>2]|0)+(i<<3)|0,HA,SA,A,ve,r,l)|0,i=i+1|0,!(s|0);)if((i|0)>=(t[f>>2]|0))break e;qA(r),qA(l),qA(We);break A}while(!1);(SA|0)>0|(SA|0)==0&HA>>>0>0&&W0(l|0,0,HA<<3|0)|0,ne=ve,Ee=t[ne+4>>2]|0;e:do if((Ee|0)>0|(Ee|0)==0&(t[ne>>2]|0)>>>0>0){QA=r,fe=l,de=r,Ee=l,ne=r,s=r,U=r,BA=l,zA=l,r=l;t:for(;;){for(Y=0,nA=0,q=0,Z=0,i=0,o=0;;){l=Ve,a=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));if(A=QA+(Y<<3)|0,f=t[A>>2]|0,A=t[A+4>>2]|0,F(f,A,1,Ve,0)|0){l=Ve,a=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));l=Qt(7,4)|0,l|0&&(X(f,A,1,Ve,l,7,0,0)|0,qA(l))}for(G=0;;){L=Ve+(G<<3)|0,I=t[L>>2]|0,L=t[L+4>>2]|0;r:do if((I|0)==0&(L|0)==0)l=i,a=o;else{if(m=Rr(I|0,L|0,HA|0,SA|0)|0,f=S()|0,l=n+(m<<3)|0,A=l,a=t[A>>2]|0,A=t[A+4>>2]|0,!((a|0)==0&(A|0)==0)){M=0,R=0;do{if((M|0)>(SA|0)|(M|0)==(SA|0)&R>>>0>HA>>>0)break t;if((a|0)==(I|0)&(A|0)==(L|0)){l=i,a=o;break r}l=KA(m|0,f|0,1,0)|0,m=jr(l|0,S()|0,HA|0,SA|0)|0,f=S()|0,R=KA(R|0,M|0,1,0)|0,M=S()|0,l=n+(m<<3)|0,A=l,a=t[A>>2]|0,A=t[A+4>>2]|0}while(!((a|0)==0&(A|0)==0))}if((I|0)==0&(L|0)==0){l=i,a=o;break}ar(I,L,he)|0,os(e,We,he)|0&&(R=KA(i|0,o|0,1,0)|0,o=S()|0,M=l,t[M>>2]=I,t[M+4>>2]=L,i=fe+(i<<3)|0,t[i>>2]=I,t[i+4>>2]=L,i=R),l=i,a=o}while(!1);if(G=G+1|0,G>>>0>=7)break;i=l,o=a}if(Y=KA(Y|0,nA|0,1,0)|0,nA=S()|0,q=KA(q|0,Z|0,1,0)|0,Z=S()|0,o=ve,i=t[o>>2]|0,o=t[o+4>>2]|0,(Z|0)<(o|0)|(Z|0)==(o|0)&q>>>0>>0)i=l,o=a;else break}if((o|0)>0|(o|0)==0&i>>>0>0){i=0,o=0;do Z=QA+(i<<3)|0,t[Z>>2]=0,t[Z+4>>2]=0,i=KA(i|0,o|0,1,0)|0,o=S()|0,Z=ve,q=t[Z+4>>2]|0;while((o|0)<(q|0)|((o|0)==(q|0)?i>>>0<(t[Z>>2]|0)>>>0:0))}if(Z=ve,t[Z>>2]=l,t[Z+4>>2]=a,(a|0)>0|(a|0)==0&l>>>0>0)G=r,Y=zA,nA=ne,q=BA,Z=fe,r=U,zA=s,BA=de,U=G,s=Y,ne=Ee,Ee=nA,de=q,fe=QA,QA=Z;else break e}qA(de),qA(Ee),qA(We),s=1;break A}else s=l;while(!1);qA(We),qA(r),qA(s),s=0}while(!1);return We=s,b=Tt,We|0}}return qA(We),We=s,b=Tt,We|0}function Ct(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(m=b,b=b+176|0,a=m,(A|0)<1)return ai(r,0,0),f=0,b=m,f|0;for(l=e,l=wA(t[l>>2]|0,t[l+4>>2]|0,52)|0,S()|0,ai(r,(A|0)>6?A:6,l&15),l=0;n=e+(l<<3)|0,n=_r(t[n>>2]|0,t[n+4>>2]|0,a)|0,!(n|0);){if(n=t[a>>2]|0,(n|0)>0){o=0;do i=a+8+(o<<4)|0,o=o+1|0,n=a+8+(((o|0)%(n|0)|0)<<4)|0,s=sa(r,n,i)|0,s?fi(r,s)|0:na(r,i,n)|0,n=t[a>>2]|0;while((o|0)<(n|0))}if(l=l+1|0,(l|0)>=(A|0)){n=0,f=13;break}}return(f|0)==13?(b=m,n|0):(ui(r),f=n,b=m,f|0)}function pt(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;if(i=b,b=b+32|0,n=i,s=i+16|0,e=Ct(e,A,s)|0,e|0)return r=e,b=i,r|0;if(t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,e=ci(s)|0,e|0)do{A=Il(r)|0;do Ll(A,e)|0,o=e+16|0,t[n>>2]=t[o>>2],t[n+4>>2]=t[o+4>>2],t[n+8>>2]=t[o+8>>2],t[n+12>>2]=t[o+12>>2],fi(s,e)|0,e=ia(s,n)|0;while((e|0)!=0);e=ci(s)|0}while((e|0)!=0);return ui(s),e=Nl(r)|0,e?(Xs(r),o=e,b=i,o|0):(o=0,b=i,o|0)}function je(e){return e=e|0,e>>>0>121?(e=0,e|0):(e=t[7696+(e*28|0)+16>>2]|0,e|0)}function Et(e){return e=e|0,(e|0)==4|(e|0)==117|0}function g0(e){return e=e|0,t[11120+((t[e>>2]|0)*216|0)+((t[e+4>>2]|0)*72|0)+((t[e+8>>2]|0)*24|0)+(t[e+12>>2]<<3)>>2]|0}function u0(e){return e=e|0,t[11120+((t[e>>2]|0)*216|0)+((t[e+4>>2]|0)*72|0)+((t[e+8>>2]|0)*24|0)+(t[e+12>>2]<<3)+4>>2]|0}function z0(e,A){e=e|0,A=A|0,e=7696+(e*28|0)|0,t[A>>2]=t[e>>2],t[A+4>>2]=t[e+4>>2],t[A+8>>2]=t[e+8>>2],t[A+12>>2]=t[e+12>>2]}function qt(e,A){e=e|0,A=A|0;var r=0,n=0;if(A>>>0>20)return A=-1,A|0;do if((t[11120+(A*216|0)>>2]|0)!=(e|0))if((t[11120+(A*216|0)+8>>2]|0)!=(e|0))if((t[11120+(A*216|0)+16>>2]|0)!=(e|0))if((t[11120+(A*216|0)+24>>2]|0)!=(e|0))if((t[11120+(A*216|0)+32>>2]|0)!=(e|0))if((t[11120+(A*216|0)+40>>2]|0)!=(e|0))if((t[11120+(A*216|0)+48>>2]|0)!=(e|0))if((t[11120+(A*216|0)+56>>2]|0)!=(e|0))if((t[11120+(A*216|0)+64>>2]|0)!=(e|0))if((t[11120+(A*216|0)+72>>2]|0)!=(e|0))if((t[11120+(A*216|0)+80>>2]|0)!=(e|0))if((t[11120+(A*216|0)+88>>2]|0)!=(e|0))if((t[11120+(A*216|0)+96>>2]|0)!=(e|0))if((t[11120+(A*216|0)+104>>2]|0)!=(e|0))if((t[11120+(A*216|0)+112>>2]|0)!=(e|0))if((t[11120+(A*216|0)+120>>2]|0)!=(e|0))if((t[11120+(A*216|0)+128>>2]|0)!=(e|0))if((t[11120+(A*216|0)+136>>2]|0)==(e|0))e=2,r=1,n=2;else{if((t[11120+(A*216|0)+144>>2]|0)==(e|0)){e=0,r=2,n=0;break}if((t[11120+(A*216|0)+152>>2]|0)==(e|0)){e=0,r=2,n=1;break}if((t[11120+(A*216|0)+160>>2]|0)==(e|0)){e=0,r=2,n=2;break}if((t[11120+(A*216|0)+168>>2]|0)==(e|0)){e=1,r=2,n=0;break}if((t[11120+(A*216|0)+176>>2]|0)==(e|0)){e=1,r=2,n=1;break}if((t[11120+(A*216|0)+184>>2]|0)==(e|0)){e=1,r=2,n=2;break}if((t[11120+(A*216|0)+192>>2]|0)==(e|0)){e=2,r=2,n=0;break}if((t[11120+(A*216|0)+200>>2]|0)==(e|0)){e=2,r=2,n=1;break}if((t[11120+(A*216|0)+208>>2]|0)==(e|0)){e=2,r=2,n=2;break}else e=-1;return e|0}else e=2,r=1,n=1;else e=2,r=1,n=0;else e=1,r=1,n=2;else e=1,r=1,n=1;else e=1,r=1,n=0;else e=0,r=1,n=2;else e=0,r=1,n=1;else e=0,r=1,n=0;else e=2,r=0,n=2;else e=2,r=0,n=1;else e=2,r=0,n=0;else e=1,r=0,n=2;else e=1,r=0,n=1;else e=1,r=0,n=0;else e=0,r=0,n=2;else e=0,r=0,n=1;else e=0,r=0,n=0;while(!1);return A=t[11120+(A*216|0)+(r*72|0)+(e*24|0)+(n<<3)+4>>2]|0,A|0}function M0(e,A){return e=e|0,A=A|0,(t[7696+(e*28|0)+20>>2]|0)==(A|0)?(A=1,A|0):(A=(t[7696+(e*28|0)+24>>2]|0)==(A|0),A|0)}function nr(e,A){return e=e|0,A=A|0,t[848+(e*28|0)+(A<<2)>>2]|0}function sr(e,A){return e=e|0,A=A|0,(t[848+(e*28|0)>>2]|0)==(A|0)?(A=0,A|0):(t[848+(e*28|0)+4>>2]|0)==(A|0)?(A=1,A|0):(t[848+(e*28|0)+8>>2]|0)==(A|0)?(A=2,A|0):(t[848+(e*28|0)+12>>2]|0)==(A|0)?(A=3,A|0):(t[848+(e*28|0)+16>>2]|0)==(A|0)?(A=4,A|0):(t[848+(e*28|0)+20>>2]|0)==(A|0)?(A=5,A|0):((t[848+(e*28|0)+24>>2]|0)==(A|0)?6:7)|0}function Vr(){return 122}function Wr(e){e=e|0;var A=0,r=0,n=0;A=0;do CA(A|0,0,45)|0,n=S()|0|134225919,r=e+(A<<3)|0,t[r>>2]=-1,t[r+4>>2]=n,A=A+1|0;while((A|0)!=122);return 0}function Yr(e){e=e|0;var A=0,r=0,n=0;return n=+k[e+16>>3],r=+k[e+24>>3],A=n-r,+(n>3]<+k[e+24>>3]|0}function ir(e){return e=e|0,+(+k[e>>3]-+k[e+8>>3])}function c0(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;return r=+k[A>>3],!(r>=+k[e+8>>3])||!(r<=+k[e>>3])?(A=0,A|0):(n=+k[e+16>>3],r=+k[e+24>>3],s=+k[A+8>>3],A=s>=r,e=s<=n&1,n>3]<+k[A+8>>3]||+k[e+8>>3]>+k[A>>3]?(n=0,n|0):(i=+k[e+16>>3],r=e+24|0,m=+k[r>>3],o=i>3],s=A+24|0,a=+k[s>>3],l=f>3],A)||(m=+Vt(+k[r>>3],e),m>+Vt(+k[n>>3],A))?(l=0,l|0):(l=1,l|0))}function B0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0;i=+k[e+16>>3],a=+k[e+24>>3],e=i>3],o=+k[A+24>>3],s=l>2]=e?s|A?1:2:0,t[n>>2]=s?e?1:A?2:1:0}function H(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;return+k[e>>3]<+k[A>>3]||+k[e+8>>3]>+k[A+8>>3]?(n=0,n|0):(n=e+16|0,a=+k[n>>3],i=+k[e+24>>3],o=a>3],s=A+24|0,f=+k[s>>3],l=m>3],A)?(m=+Vt(+k[n>>3],e),l=m>=+Vt(+k[r>>3],A),l|0):(l=0,l|0))}function aA(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;s=b,b=b+176|0,n=s,t[n>>2]=4,l=+k[A>>3],k[n+8>>3]=l,i=+k[A+16>>3],k[n+16>>3]=i,k[n+24>>3]=l,l=+k[A+24>>3],k[n+32>>3]=l,o=+k[A+8>>3],k[n+40>>3]=o,k[n+48>>3]=l,k[n+56>>3]=o,k[n+64>>3]=i,A=n+72|0,r=A+96|0;do t[A>>2]=0,A=A+4|0;while((A|0)<(r|0));Ir(e|0,n|0,168)|0,b=s}function mA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0;L=b,b=b+288|0,m=L+264|0,M=L+96|0,f=L,l=f,a=l+96|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));return A=es(A,f)|0,A|0?(I=A,b=L,I|0):(a=f,f=t[a>>2]|0,a=t[a+4>>2]|0,ar(f,a,m)|0,_r(f,a,M)|0,o=+rn(m,M+8|0),k[m>>3]=+k[e>>3],a=m+8|0,k[a>>3]=+k[e+16>>3],k[M>>3]=+k[e+8>>3],f=M+8|0,k[f>>3]=+k[e+24>>3],s=+rn(m,M),Y=+k[a>>3]-+k[f>>3],i=+ZA(+Y),G=+k[m>>3]-+k[M>>3],n=+ZA(+G),!(Y==0|G==0)&&(Y=+mi(+i,+n),Y=+gt(+(s*s/+En(+(Y/+En(+i,+n)),3)/(o*(o*2.59807621135)*.8))),k[ge>>3]=Y,R=~~Y>>>0,I=+ZA(Y)>=1?Y>0?~~+At(+He(Y/4294967296),4294967295)>>>0:~~+gt((Y-+(~~Y>>>0))/4294967296)>>>0:0,(t[ge+4>>2]&2146435072|0)!=2146435072)?(M=(R|0)==0&(I|0)==0,A=r,t[A>>2]=M?1:R,t[A+4>>2]=M?0:I,A=0):A=1,I=A,b=L,I|0)}function FA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0;f=b,b=b+288|0,o=f+264|0,l=f+96|0,a=f,s=a,i=s+96|0;do t[s>>2]=0,s=s+4|0;while((s|0)<(i|0));return r=es(r,a)|0,r|0?(n=r,b=f,n|0):(r=a,s=t[r>>2]|0,r=t[r+4>>2]|0,ar(s,r,o)|0,_r(s,r,l)|0,m=+rn(o,l+8|0),m=+gt(+(+rn(e,A)/(m*2))),k[ge>>3]=m,r=~~m>>>0,s=+ZA(m)>=1?m>0?~~+At(+He(m/4294967296),4294967295)>>>0:~~+gt((m-+(~~m>>>0))/4294967296)>>>0:0,(t[ge+4>>2]&2146435072|0)==2146435072?(n=1,b=f,n|0):(a=(r|0)==0&(s|0)==0,t[n>>2]=a?1:r,t[n+4>>2]=a?0:s,n=0,b=f,n|0))}function VA(e,A){e=e|0,A=+A;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;i=e+16|0,o=+k[i>>3],r=e+24|0,s=+k[r>>3],n=o-s,n=o>3],l=e+8|0,a=+k[l>>3],m=f-a,n=(n*A-n)*.5,A=(m*A-m)*.5,f=f+A,k[e>>3]=f>1.5707963267948966?1.5707963267948966:f,A=a-A,k[l>>3]=A<-1.5707963267948966?-1.5707963267948966:A,A=o+n,A=A>3.141592653589793?A+-6.283185307179586:A,k[i>>3]=A<-3.141592653589793?A+6.283185307179586:A,A=s-n,A=A>3.141592653589793?A+-6.283185307179586:A,k[r>>3]=A<-3.141592653589793?A+6.283185307179586:A}function xe(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0,t[e>>2]=A,t[e+4>>2]=r,t[e+8>>2]=n}function tt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;M=A+8|0,t[M>>2]=0,a=+k[e>>3],o=+ZA(+a),f=+k[e+8>>3],l=+ZA(+f)*1.1547005383792515,o=o+l*.5,r=~~o,e=~~l,o=o-+(r|0),l=l-+(e|0);do if(o<.5)if(o<.3333333333333333)if(t[A>>2]=r,l<(o+1)*.5){t[A+4>>2]=e;break}else{e=e+1|0,t[A+4>>2]=e;break}else if(R=1-o,e=(!(l>2]=e,R<=l&l>2]=r;break}else{t[A>>2]=r;break}else{if(!(o<.6666666666666666))if(r=r+1|0,t[A>>2]=r,l>2]=e;break}else{e=e+1|0,t[A+4>>2]=e;break}if(l<1-o){if(t[A+4>>2]=e,o*2+-1>2]=r;break}}else e=e+1|0,t[A+4>>2]=e;r=r+1|0,t[A>>2]=r}while(!1);do if(a<0)if(e&1){m=(e+1|0)/2|0,m=ct(r|0,((r|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-((+(m>>>0)+4294967296*+(S()|0))*2+1)),t[A>>2]=r;break}else{m=(e|0)/2|0,m=ct(r|0,((r|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-(+(m>>>0)+4294967296*+(S()|0))*2),t[A>>2]=r;break}while(!1);m=A+4|0,f<0&&(r=r-((e<<1|1|0)/2|0)|0,t[A>>2]=r,e=0-e|0,t[m>>2]=e),n=e-r|0,(r|0)<0?(s=0-r|0,t[m>>2]=n,t[M>>2]=s,t[A>>2]=0,e=n,r=0):s=0,(e|0)<0&&(r=r-e|0,t[A>>2]=r,s=s-e|0,t[M>>2]=s,t[m>>2]=0,e=0),i=r-s|0,n=e-s|0,(s|0)<0&&(t[A>>2]=i,t[m>>2]=n,t[M>>2]=0,e=n,r=i,s=0),n=(e|0)<(r|0)?e:r,n=(s|0)<(n|0)?s:n,!((n|0)<=0)&&(t[A>>2]=r-n,t[m>>2]=e-n,t[M>>2]=s-n)}function Me(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0;A=t[e>>2]|0,o=e+4|0,r=t[o>>2]|0,(A|0)<0&&(r=r-A|0,t[o>>2]=r,i=e+8|0,t[i>>2]=(t[i>>2]|0)-A,t[e>>2]=0,A=0),(r|0)<0?(A=A-r|0,t[e>>2]=A,i=e+8|0,s=(t[i>>2]|0)-r|0,t[i>>2]=s,t[o>>2]=0,r=0):(s=e+8|0,i=s,s=t[s>>2]|0),(s|0)<0&&(A=A-s|0,t[e>>2]=A,r=r-s|0,t[o>>2]=r,t[i>>2]=0,s=0),n=(r|0)<(A|0)?r:A,n=(s|0)<(n|0)?s:n,!((n|0)<=0)&&(t[e>>2]=A-n,t[o>>2]=r-n,t[i>>2]=s-n)}function ut(e,A){e=e|0,A=A|0;var r=0,n=0;n=t[e+8>>2]|0,r=+((t[e+4>>2]|0)-n|0),k[A>>3]=+((t[e>>2]|0)-n|0)-r*.5,k[A+8>>3]=r*.8660254037844386}function $e(e,A,r){e=e|0,A=A|0,r=r|0,t[r>>2]=(t[A>>2]|0)+(t[e>>2]|0),t[r+4>>2]=(t[A+4>>2]|0)+(t[e+4>>2]|0),t[r+8>>2]=(t[A+8>>2]|0)+(t[e+8>>2]|0)}function yt(e,A,r){e=e|0,A=A|0,r=r|0,t[r>>2]=(t[e>>2]|0)-(t[A>>2]|0),t[r+4>>2]=(t[e+4>>2]|0)-(t[A+4>>2]|0),t[r+8>>2]=(t[e+8>>2]|0)-(t[A+8>>2]|0)}function st(e,A){e=e|0,A=A|0;var r=0,n=0;r=Pe(t[e>>2]|0,A)|0,t[e>>2]=r,r=e+4|0,n=Pe(t[r>>2]|0,A)|0,t[r>>2]=n,e=e+8|0,A=Pe(t[e>>2]|0,A)|0,t[e>>2]=A}function St(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;o=t[e>>2]|0,l=(o|0)<0,n=(t[e+4>>2]|0)-(l?o:0)|0,i=(n|0)<0,s=(i?0-n|0:0)+((t[e+8>>2]|0)-(l?o:0))|0,r=(s|0)<0,e=r?0:s,A=(i?0:n)-(r?s:0)|0,s=(l?0:o)-(i?n:0)-(r?s:0)|0,r=(A|0)<(s|0)?A:s,r=(e|0)<(r|0)?e:r,n=(r|0)>0,e=e-(n?r:0)|0,A=A-(n?r:0)|0;A:do switch(s-(n?r:0)|0){case 0:switch(A|0){case 0:return l=(e|0)==0?0:(e|0)==1?1:7,l|0;case 1:return l=(e|0)==0?2:(e|0)==1?3:7,l|0;default:break A}case 1:switch(A|0){case 0:return l=(e|0)==0?4:(e|0)==1?5:7,l|0;case 1:{if(!e)e=6;else break A;return e|0}default:break A}}while(!1);return l=7,l|0}function wr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0;if(a=e+8|0,o=t[a>>2]|0,l=(t[e>>2]|0)-o|0,f=e+4|0,o=(t[f>>2]|0)-o|0,l>>>0>715827881|o>>>0>715827881){if(n=(l|0)>0,s=2147483647-l|0,i=-2147483648-l|0,(n?(s|0)<(l|0):(i|0)>(l|0))||(r=l<<1,n?(2147483647-r|0)<(l|0):(-2147483648-r|0)>(l|0))||((o|0)>0?(2147483647-o|0)<(o|0):(-2147483648-o|0)>(o|0))||(A=l*3|0,r=o<<1,(n?(s|0)<(r|0):(i|0)>(r|0))||((l|0)>-1?(A|-2147483648|0)>=(o|0):(A^-2147483648|0)<(o|0))))return f=1,f|0}else r=o<<1,A=l*3|0;return n=U0(+(A-o|0)*.14285714285714285)|0,t[e>>2]=n,s=U0(+(r+l|0)*.14285714285714285)|0,t[f>>2]=s,t[a>>2]=0,r=(s|0)<(n|0),A=r?n:s,r=r?s:n,(r|0)<0&&(((r|0)==-2147483648||((A|0)>0?(2147483647-A|0)<(r|0):(-2147483648-A|0)>(r|0)))&&OA(27795,26892,354,26903),((A|0)>-1?(A|-2147483648|0)>=(r|0):(A^-2147483648|0)<(r|0))&&OA(27795,26892,354,26903)),A=s-n|0,(n|0)<0?(r=0-n|0,t[f>>2]=A,t[a>>2]=r,t[e>>2]=0,n=0):(A=s,r=0),(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[a>>2]=r,t[f>>2]=0,A=0),i=n-r|0,s=A-r|0,(r|0)<0?(t[e>>2]=i,t[f>>2]=s,t[a>>2]=0,A=s,s=i,r=0):s=n,n=(A|0)<(s|0)?A:s,n=(r|0)<(n|0)?r:n,(n|0)<=0?(f=0,f|0):(t[e>>2]=s-n,t[f>>2]=A-n,t[a>>2]=r-n,f=0,f|0)}function gn(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(o=e+8|0,s=t[o>>2]|0,i=(t[e>>2]|0)-s|0,l=e+4|0,s=(t[l>>2]|0)-s|0,i>>>0>715827881|s>>>0>715827881){if(r=(i|0)>0,(r?(2147483647-i|0)<(i|0):(-2147483648-i|0)>(i|0))||(A=i<<1,n=(s|0)>0,n?(2147483647-s|0)<(s|0):(-2147483648-s|0)>(s|0)))return l=1,l|0;if(a=s<<1,(n?(2147483647-a|0)<(s|0):(-2147483648-a|0)>(s|0))||(r?(2147483647-A|0)<(s|0):(-2147483648-A|0)>(s|0))||(r=s*3|0,(s|0)>-1?(r|-2147483648|0)>=(i|0):(r^-2147483648|0)<(i|0)))return a=1,a|0}else r=s*3|0,A=i<<1;return n=U0(+(A+s|0)*.14285714285714285)|0,t[e>>2]=n,s=U0(+(r-i|0)*.14285714285714285)|0,t[l>>2]=s,t[o>>2]=0,r=(s|0)<(n|0),A=r?n:s,r=r?s:n,(r|0)<0&&(((r|0)==-2147483648||((A|0)>0?(2147483647-A|0)<(r|0):(-2147483648-A|0)>(r|0)))&&OA(27795,26892,402,26917),((A|0)>-1?(A|-2147483648|0)>=(r|0):(A^-2147483648|0)<(r|0))&&OA(27795,26892,402,26917)),A=s-n|0,(n|0)<0?(r=0-n|0,t[l>>2]=A,t[o>>2]=r,t[e>>2]=0,n=0):(A=s,r=0),(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[o>>2]=r,t[l>>2]=0,A=0),i=n-r|0,s=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=s,t[o>>2]=0,A=s,s=i,r=0):s=n,n=(A|0)<(s|0)?A:s,n=(r|0)<(n|0)?r:n,(n|0)<=0?(a=0,a|0):(t[e>>2]=s-n,t[l>>2]=A-n,t[o>>2]=r-n,a=0,a|0)}function vr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;o=e+8|0,r=t[o>>2]|0,A=(t[e>>2]|0)-r|0,l=e+4|0,r=(t[l>>2]|0)-r|0,n=U0(+((A*3|0)-r|0)*.14285714285714285)|0,t[e>>2]=n,A=U0(+((r<<1)+A|0)*.14285714285714285)|0,t[l>>2]=A,t[o>>2]=0,r=A-n|0,(n|0)<0?(i=0-n|0,t[l>>2]=r,t[o>>2]=i,t[e>>2]=0,A=r,n=0,r=i):r=0,(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[o>>2]=r,t[l>>2]=0,A=0),i=n-r|0,s=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=s,t[o>>2]=0,A=s,s=i,r=0):s=n,n=(A|0)<(s|0)?A:s,n=(r|0)<(n|0)?r:n,!((n|0)<=0)&&(t[e>>2]=s-n,t[l>>2]=A-n,t[o>>2]=r-n)}function br(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;o=e+8|0,r=t[o>>2]|0,A=(t[e>>2]|0)-r|0,l=e+4|0,r=(t[l>>2]|0)-r|0,n=U0(+((A<<1)+r|0)*.14285714285714285)|0,t[e>>2]=n,A=U0(+((r*3|0)-A|0)*.14285714285714285)|0,t[l>>2]=A,t[o>>2]=0,r=A-n|0,(n|0)<0?(i=0-n|0,t[l>>2]=r,t[o>>2]=i,t[e>>2]=0,A=r,n=0,r=i):r=0,(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[o>>2]=r,t[l>>2]=0,A=0),i=n-r|0,s=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=s,t[o>>2]=0,A=s,s=i,r=0):s=n,n=(A|0)<(s|0)?A:s,n=(r|0)<(n|0)?r:n,!((n|0)<=0)&&(t[e>>2]=s-n,t[l>>2]=A-n,t[o>>2]=r-n)}function kr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;A=t[e>>2]|0,o=e+4|0,r=t[o>>2]|0,l=e+8|0,n=t[l>>2]|0,s=r+(A*3|0)|0,t[e>>2]=s,r=n+(r*3|0)|0,t[o>>2]=r,A=(n*3|0)+A|0,t[l>>2]=A,n=r-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=n,t[l>>2]=A,t[e>>2]=0,r=n,n=0):n=s,(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=s,t[l>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[o>>2]=s-r,t[l>>2]=A-r)}function Ht(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;s=t[e>>2]|0,o=e+4|0,A=t[o>>2]|0,l=e+8|0,r=t[l>>2]|0,n=(A*3|0)+s|0,s=r+(s*3|0)|0,t[e>>2]=s,t[o>>2]=n,A=(r*3|0)+A|0,t[l>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=r,t[l>>2]=A,t[e>>2]=0,s=0):r=n,(r|0)<0&&(s=s-r|0,t[e>>2]=s,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=s-A|0,n=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=n,t[l>>2]=0,s=i,A=0):n=r,r=(n|0)<(s|0)?n:s,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=s-r,t[o>>2]=n-r,t[l>>2]=A-r)}function pn(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;(A+-1|0)>>>0>=6||(s=(t[15440+(A*12|0)>>2]|0)+(t[e>>2]|0)|0,t[e>>2]=s,l=e+4|0,n=(t[15440+(A*12|0)+4>>2]|0)+(t[l>>2]|0)|0,t[l>>2]=n,o=e+8|0,A=(t[15440+(A*12|0)+8>>2]|0)+(t[o>>2]|0)|0,t[o>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[l>>2]=r,t[o>>2]=A,t[e>>2]=0,n=0):(r=n,n=s),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[o>>2]=A,t[l>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[l>>2]=s,t[o>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[l>>2]=s-r,t[o>>2]=A-r))}function Cr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;s=t[e>>2]|0,o=e+4|0,A=t[o>>2]|0,l=e+8|0,r=t[l>>2]|0,n=A+s|0,s=r+s|0,t[e>>2]=s,t[o>>2]=n,A=r+A|0,t[l>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=r,t[l>>2]=A,t[e>>2]=0,n=0):(r=n,n=s),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=s,t[l>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[o>>2]=s-r,t[l>>2]=A-r)}function D0(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;A=t[e>>2]|0,o=e+4|0,n=t[o>>2]|0,l=e+8|0,r=t[l>>2]|0,s=n+A|0,t[e>>2]=s,n=r+n|0,t[o>>2]=n,A=r+A|0,t[l>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=r,t[l>>2]=A,t[e>>2]=0,n=0):(r=n,n=s),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=s,t[l>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[o>>2]=s-r,t[l>>2]=A-r)}function Gt(e){switch(e=e|0,e|0){case 1:{e=5;break}case 5:{e=4;break}case 4:{e=6;break}case 6:{e=2;break}case 2:{e=3;break}case 3:{e=1;break}}return e|0}function Ut(e){switch(e=e|0,e|0){case 1:{e=3;break}case 3:{e=2;break}case 2:{e=6;break}case 6:{e=4;break}case 4:{e=5;break}case 5:{e=1;break}}return e|0}function Kr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;A=t[e>>2]|0,o=e+4|0,r=t[o>>2]|0,l=e+8|0,n=t[l>>2]|0,s=r+(A<<1)|0,t[e>>2]=s,r=n+(r<<1)|0,t[o>>2]=r,A=(n<<1)+A|0,t[l>>2]=A,n=r-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=n,t[l>>2]=A,t[e>>2]=0,r=n,n=0):n=s,(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=n-A|0,s=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=s,t[l>>2]=0,n=i,A=0):s=r,r=(s|0)<(n|0)?s:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[o>>2]=s-r,t[l>>2]=A-r)}function $r(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;s=t[e>>2]|0,o=e+4|0,A=t[o>>2]|0,l=e+8|0,r=t[l>>2]|0,n=(A<<1)+s|0,s=r+(s<<1)|0,t[e>>2]=s,t[o>>2]=n,A=(r<<1)+A|0,t[l>>2]=A,r=n-s|0,(s|0)<0?(A=A-s|0,t[o>>2]=r,t[l>>2]=A,t[e>>2]=0,s=0):r=n,(r|0)<0&&(s=s-r|0,t[e>>2]=s,A=A-r|0,t[l>>2]=A,t[o>>2]=0,r=0),i=s-A|0,n=r-A|0,(A|0)<0?(t[e>>2]=i,t[o>>2]=n,t[l>>2]=0,s=i,A=0):n=r,r=(n|0)<(s|0)?n:s,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=s-r,t[o>>2]=n-r,t[l>>2]=A-r)}function Er(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;return o=(t[e>>2]|0)-(t[A>>2]|0)|0,l=(o|0)<0,n=(t[e+4>>2]|0)-(t[A+4>>2]|0)-(l?o:0)|0,i=(n|0)<0,s=(l?0-o|0:0)+(t[e+8>>2]|0)-(t[A+8>>2]|0)+(i?0-n|0:0)|0,e=(s|0)<0,A=e?0:s,r=(i?0:n)-(e?s:0)|0,s=(l?0:o)-(i?n:0)-(e?s:0)|0,e=(r|0)<(s|0)?r:s,e=(A|0)<(e|0)?A:e,n=(e|0)>0,A=A-(n?e:0)|0,r=r-(n?e:0)|0,e=s-(n?e:0)|0,e=(e|0)>-1?e:0-e|0,r=(r|0)>-1?r:0-r|0,A=(A|0)>-1?A:0-A|0,A=(r|0)>(A|0)?r:A,((e|0)>(A|0)?e:A)|0}function Zr(e,A){e=e|0,A=A|0;var r=0;r=t[e+8>>2]|0,t[A>>2]=(t[e>>2]|0)-r,t[A+4>>2]=(t[e+4>>2]|0)-r}function Mt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;return n=t[e>>2]|0,t[A>>2]=n,s=t[e+4>>2]|0,o=A+4|0,t[o>>2]=s,l=A+8|0,t[l>>2]=0,r=(s|0)<(n|0),e=r?n:s,r=r?s:n,(r|0)<0&&((r|0)==-2147483648||((e|0)>0?(2147483647-e|0)<(r|0):(-2147483648-e|0)>(r|0))||((e|0)>-1?(e|-2147483648|0)>=(r|0):(e^-2147483648|0)<(r|0)))?(A=1,A|0):(e=s-n|0,(n|0)<0?(r=0-n|0,t[o>>2]=e,t[l>>2]=r,t[A>>2]=0,n=0):(e=s,r=0),(e|0)<0&&(n=n-e|0,t[A>>2]=n,r=r-e|0,t[l>>2]=r,t[o>>2]=0,e=0),i=n-r|0,s=e-r|0,(r|0)<0?(t[A>>2]=i,t[o>>2]=s,t[l>>2]=0,e=s,s=i,r=0):s=n,n=(e|0)<(s|0)?e:s,n=(r|0)<(n|0)?r:n,(n|0)<=0?(A=0,A|0):(t[A>>2]=s-n,t[o>>2]=e-n,t[l>>2]=r-n,A=0,A|0))}function qr(e){e=e|0;var A=0,r=0,n=0,s=0;A=e+8|0,s=t[A>>2]|0,r=s-(t[e>>2]|0)|0,t[e>>2]=r,n=e+4|0,e=(t[n>>2]|0)-s|0,t[n>>2]=e,t[A>>2]=0-(e+r)}function Jr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;r=t[e>>2]|0,A=0-r|0,t[e>>2]=A,o=e+8|0,t[o>>2]=0,l=e+4|0,n=t[l>>2]|0,s=n+r|0,(r|0)>0?(t[l>>2]=s,t[o>>2]=r,t[e>>2]=0,A=0,n=s):r=0,(n|0)<0?(i=A-n|0,t[e>>2]=i,r=r-n|0,t[o>>2]=r,t[l>>2]=0,s=i-r|0,A=0-r|0,(r|0)<0?(t[e>>2]=s,t[l>>2]=A,t[o>>2]=0,n=A,r=0):(n=0,s=i)):s=A,A=(n|0)<(s|0)?n:s,A=(r|0)<(A|0)?r:A,!((A|0)<=0)&&(t[e>>2]=s-A,t[l>>2]=n-A,t[o>>2]=r-A)}function Zn(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0;if(M=b,b=b+64|0,m=M,l=M+56|0,!(!0&(A&2013265920|0)==134217728&(!0&(n&2013265920|0)==134217728)))return s=5,b=M,s|0;if((e|0)==(r|0)&(A|0)==(n|0))return t[s>>2]=0,s=0,b=M,s|0;if(o=wA(e|0,A|0,52)|0,S()|0,o=o&15,f=wA(r|0,n|0,52)|0,S()|0,(o|0)!=(f&15|0))return s=12,b=M,s|0;if(i=o+-1|0,o>>>0>1){_t(e,A,i,m)|0,_t(r,n,i,l)|0,f=m,a=t[f>>2]|0,f=t[f+4>>2]|0;A:do if((a|0)==(t[l>>2]|0)&&(f|0)==(t[l+4>>2]|0)){o=(o^15)*3|0,i=wA(e|0,A|0,o|0)|0,S()|0,i=i&7,o=wA(r|0,n|0,o|0)|0,S()|0,o=o&7;do if((i|0)==0|(o|0)==0)t[s>>2]=1,i=0;else if((i|0)==7)i=5;else{if((i|0)==1|(o|0)==1&&Oe(a,f)|0){i=5;break}if((t[15536+(i<<2)>>2]|0)!=(o|0)&&(t[15568+(i<<2)>>2]|0)!=(o|0))break A;t[s>>2]=1,i=0}while(!1);return s=i,b=M,s|0}while(!1)}i=m,o=i+56|0;do t[i>>2]=0,i=i+4|0;while((i|0)<(o|0));return v(e,A,1,m)|0,A=m,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0))&&(A=m+8|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+16|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+24|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+32|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+40|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))?(i=m+48|0,i=((t[i>>2]|0)==(r|0)?(t[i+4>>2]|0)==(n|0):0)&1):i=1,t[s>>2]=i,s=0,b=M,s|0}function yn(e,A,r,n,s){return e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,r=Ae(e,A,r,n)|0,(r|0)==7?(s=11,s|0):(n=CA(r|0,0,56)|0,A=A&-2130706433|(S()|0)|268435456,t[s>>2]=e|n,t[s+4>>2]=A,s=0,s|0)}function Sr(e,A,r){return e=e|0,A=A|0,r=r|0,!0&(A&2013265920|0)==268435456?(t[r>>2]=e,t[r+4>>2]=A&-2130706433|134217728,r=0,r|0):(r=6,r|0)}function xn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;return s=b,b=b+16|0,n=s,t[n>>2]=0,!0&(A&2013265920|0)==268435456?(i=wA(e|0,A|0,56)|0,S()|0,n=K(e,A&-2130706433|134217728,i&7,n,r)|0,b=s,n|0):(n=6,b=s,n|0)}function Xr(e,A){e=e|0,A=A|0;var r=0;switch(r=wA(e|0,A|0,56)|0,S()|0,r&7){case 0:case 7:return r=0,r|0}return r=A&-2130706433|134217728,!(!0&(A&2013265920|0)==268435456)||!0&(A&117440512|0)==16777216&(Oe(e,r)|0)!=0?(r=0,r|0):(r=Ue(e,r)|0,r|0)}function Mr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;return s=b,b=b+16|0,n=s,!0&(A&2013265920|0)==268435456?(i=A&-2130706433|134217728,o=r,t[o>>2]=e,t[o+4>>2]=i,t[n>>2]=0,A=wA(e|0,A|0,56)|0,S()|0,n=K(e,i,A&7,n,r+8|0)|0,b=s,n|0):(n=6,b=s,n|0)}function Br(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;return s=(Oe(e,A)|0)==0,A=A&-2130706433,n=r,t[n>>2]=s?e:0,t[n+4>>2]=s?A|285212672:0,n=r+8|0,t[n>>2]=e,t[n+4>>2]=A|301989888,n=r+16|0,t[n>>2]=e,t[n+4>>2]=A|318767104,n=r+24|0,t[n>>2]=e,t[n+4>>2]=A|335544320,n=r+32|0,t[n>>2]=e,t[n+4>>2]=A|352321536,r=r+40|0,t[r>>2]=e,t[r+4>>2]=A|369098752,0}function or(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;return o=b,b=b+16|0,s=o,i=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(n=wA(e|0,A|0,56)|0,S()|0,n=ea(e,i,n&7)|0,(n|0)==-1?(t[r>>2]=0,i=6,b=o,i|0):(Dr(e,i,s)|0&&OA(27795,26932,282,26947),A=wA(e|0,A|0,52)|0,S()|0,A=A&15,Oe(e,i)|0?w(s,A,n,2,r):AA(s,A,n,2,r),i=0,b=o,i|0)):(i=6,b=o,i|0)}function wn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;n=b,b=b+16|0,s=n,vn(e,A,r,s),tt(s,r+4|0),b=n}function vn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0;if(l=b,b=b+16|0,a=l,An(e,r,a),i=+Lt(+(1-+k[a>>3]*.5)),i<1e-16){t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,t[n+12>>2]=0,b=l;return}if(a=t[r>>2]|0,s=+k[15920+(a*24|0)>>3],s=+tn(s-+tn(+Cl(15600+(a<<4)|0,e))),Jt(A)|0?o=+tn(s+-.3334731722518321):o=s,s=+et(+i)*2.618033988749896,(A|0)>0){e=0;do s=s*2.6457513110645907,e=e+1|0;while((e|0)!=(A|0))}i=+_e(+o)*s,k[n>>3]=i,o=+ie(+o)*s,k[n+8>>3]=o,b=l}function An(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(i=b,b=b+32|0,s=i,Aa(e,s),t[A>>2]=0,k[r>>3]=5,n=+it(16400,s),n<+k[r>>3]&&(t[A>>2]=0,k[r>>3]=n),n=+it(16424,s),n<+k[r>>3]&&(t[A>>2]=1,k[r>>3]=n),n=+it(16448,s),n<+k[r>>3]&&(t[A>>2]=2,k[r>>3]=n),n=+it(16472,s),n<+k[r>>3]&&(t[A>>2]=3,k[r>>3]=n),n=+it(16496,s),n<+k[r>>3]&&(t[A>>2]=4,k[r>>3]=n),n=+it(16520,s),n<+k[r>>3]&&(t[A>>2]=5,k[r>>3]=n),n=+it(16544,s),n<+k[r>>3]&&(t[A>>2]=6,k[r>>3]=n),n=+it(16568,s),n<+k[r>>3]&&(t[A>>2]=7,k[r>>3]=n),n=+it(16592,s),n<+k[r>>3]&&(t[A>>2]=8,k[r>>3]=n),n=+it(16616,s),n<+k[r>>3]&&(t[A>>2]=9,k[r>>3]=n),n=+it(16640,s),n<+k[r>>3]&&(t[A>>2]=10,k[r>>3]=n),n=+it(16664,s),n<+k[r>>3]&&(t[A>>2]=11,k[r>>3]=n),n=+it(16688,s),n<+k[r>>3]&&(t[A>>2]=12,k[r>>3]=n),n=+it(16712,s),n<+k[r>>3]&&(t[A>>2]=13,k[r>>3]=n),n=+it(16736,s),n<+k[r>>3]&&(t[A>>2]=14,k[r>>3]=n),n=+it(16760,s),n<+k[r>>3]&&(t[A>>2]=15,k[r>>3]=n),n=+it(16784,s),n<+k[r>>3]&&(t[A>>2]=16,k[r>>3]=n),n=+it(16808,s),n<+k[r>>3]&&(t[A>>2]=17,k[r>>3]=n),n=+it(16832,s),n<+k[r>>3]&&(t[A>>2]=18,k[r>>3]=n),n=+it(16856,s),!(n<+k[r>>3])){b=i;return}t[A>>2]=19,k[r>>3]=n,b=i}function H0(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0;if(i=+Xl(e),i<1e-16){A=15600+(A<<4)|0,t[s>>2]=t[A>>2],t[s+4>>2]=t[A+4>>2],t[s+8>>2]=t[A+8>>2],t[s+12>>2]=t[A+12>>2];return}if(o=+Te(+ +k[e+8>>3],+ +k[e>>3]),(r|0)>0){e=0;do i=i*.37796447300922725,e=e+1|0;while((e|0)!=(r|0))}l=i*.3333333333333333,n?(r=(Jt(r)|0)==0,i=+mt(+((r?l:l*.37796447300922725)*.381966011250105))):(i=+mt(+(i*.381966011250105)),Jt(r)|0&&(o=+tn(o+.3334731722518321))),El(15600+(A<<4)|0,+tn(+k[15920+(A*24|0)>>3]-o),i,s)}function h(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;n=b,b=b+16|0,s=n,ut(e+4|0,s),H0(s,t[e>>2]|0,A,0,r),b=n}function w(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,he=0;if(ve=b,b=b+272|0,i=ve+256|0,q=ve+240|0,ne=ve,HA=ve+224|0,SA=ve+208|0,Z=ve+176|0,U=ve+160|0,BA=ve+192|0,zA=ve+144|0,QA=ve+128|0,fe=ve+112|0,de=ve+96|0,Ee=ve+80|0,t[i>>2]=A,t[q>>2]=t[e>>2],t[q+4>>2]=t[e+4>>2],t[q+8>>2]=t[e+8>>2],t[q+12>>2]=t[e+12>>2],B(q,i,ne),t[s>>2]=0,q=n+r+((n|0)==5&1)|0,(q|0)<=(r|0)){b=ve;return}a=t[i>>2]|0,f=HA+4|0,m=Z+4|0,M=r+5|0,R=16880+(a<<2)|0,I=16960+(a<<2)|0,L=QA+8|0,G=fe+8|0,Y=de+8|0,nA=SA+4|0,l=r;A:for(;;){o=ne+(((l|0)%5|0)<<4)|0,t[SA>>2]=t[o>>2],t[SA+4>>2]=t[o+4>>2],t[SA+8>>2]=t[o+8>>2],t[SA+12>>2]=t[o+12>>2];do;while((N(SA,a,0,1)|0)==2);if((l|0)>(r|0)&(Jt(A)|0)!=0){if(t[Z>>2]=t[SA>>2],t[Z+4>>2]=t[SA+4>>2],t[Z+8>>2]=t[SA+8>>2],t[Z+12>>2]=t[SA+12>>2],ut(f,U),n=t[Z>>2]|0,i=t[17040+(n*80|0)+(t[HA>>2]<<2)>>2]|0,t[Z>>2]=t[18640+(n*80|0)+(i*20|0)>>2],o=t[18640+(n*80|0)+(i*20|0)+16>>2]|0,(o|0)>0){e=0;do Cr(m),e=e+1|0;while((e|0)<(o|0))}switch(o=18640+(n*80|0)+(i*20|0)+4|0,t[BA>>2]=t[o>>2],t[BA+4>>2]=t[o+4>>2],t[BA+8>>2]=t[o+8>>2],st(BA,(t[R>>2]|0)*3|0),$e(m,BA,m),Me(m),ut(m,zA),Ve=+(t[I>>2]|0),k[QA>>3]=Ve*3,k[L>>3]=0,he=Ve*-1.5,k[fe>>3]=he,k[G>>3]=Ve*2.598076211353316,k[de>>3]=he,k[Y>>3]=Ve*-2.598076211353316,t[17040+((t[Z>>2]|0)*80|0)+(t[SA>>2]<<2)>>2]|0){case 1:{e=fe,n=QA;break}case 3:{e=de,n=fe;break}case 2:{e=QA,n=de;break}default:{e=12;break A}}ii(U,zA,n,e,Ee),H0(Ee,t[Z>>2]|0,a,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1}if((l|0)<(M|0)&&(ut(nA,Z),H0(Z,t[SA>>2]|0,a,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1),t[HA>>2]=t[SA>>2],t[HA+4>>2]=t[SA+4>>2],t[HA+8>>2]=t[SA+8>>2],t[HA+12>>2]=t[SA+12>>2],l=l+1|0,(l|0)>=(q|0)){e=3;break}}if((e|0)==3){b=ve;return}else(e|0)==12&&OA(26970,27017,572,27027)}function B(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0;a=b,b=b+128|0,n=a+64|0,s=a,i=n,o=20240,l=i+60|0;do t[i>>2]=t[o>>2],i=i+4|0,o=o+4|0;while((i|0)<(l|0));i=s,o=20304,l=i+60|0;do t[i>>2]=t[o>>2],i=i+4|0,o=o+4|0;while((i|0)<(l|0));l=(Jt(t[A>>2]|0)|0)==0,n=l?n:s,s=e+4|0,Kr(s),$r(s),Jt(t[A>>2]|0)|0&&(Ht(s),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,$e(s,n,A),Me(A),t[r+16>>2]=t[e>>2],A=r+20|0,$e(s,n+12|0,A),Me(A),t[r+32>>2]=t[e>>2],A=r+36|0,$e(s,n+24|0,A),Me(A),t[r+48>>2]=t[e>>2],A=r+52|0,$e(s,n+36|0,A),Me(A),t[r+64>>2]=t[e>>2],r=r+68|0,$e(s,n+48|0,r),Me(r),b=a}function N(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0;if(L=b,b=b+32|0,R=L+12|0,l=L,I=e+4|0,M=t[16960+(A<<2)>>2]|0,m=(n|0)!=0,M=m?M*3|0:M,s=t[I>>2]|0,f=e+8|0,o=t[f>>2]|0,m){if(i=e+12|0,n=t[i>>2]|0,s=o+s+n|0,(s|0)==(M|0))return I=1,b=L,I|0;a=i}else a=e+12|0,n=t[a>>2]|0,s=o+s+n|0;if((s|0)<=(M|0))return I=0,b=L,I|0;do if((n|0)>0){if(n=t[e>>2]|0,(o|0)>0){i=18640+(n*80|0)+60|0,n=e;break}n=18640+(n*80|0)+40|0,r?(xe(R,M,0,0),yt(I,R,l),D0(l),$e(l,R,I),i=n,n=e):(i=n,n=e)}else i=18640+((t[e>>2]|0)*80|0)+20|0,n=e;while(!1);if(t[n>>2]=t[i>>2],s=i+16|0,(t[s>>2]|0)>0){n=0;do Cr(I),n=n+1|0;while((n|0)<(t[s>>2]|0))}return e=i+4|0,t[R>>2]=t[e>>2],t[R+4>>2]=t[e+4>>2],t[R+8>>2]=t[e+8>>2],A=t[16880+(A<<2)>>2]|0,st(R,m?A*3|0:A),$e(I,R,I),Me(I),m?n=((t[f>>2]|0)+(t[I>>2]|0)+(t[a>>2]|0)|0)==(M|0)?1:2:n=2,I=n,b=L,I|0}function tA(e,A){e=e|0,A=A|0;var r=0;do r=N(e,A,0,1)|0;while((r|0)==2);return r|0}function AA(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0;if(de=b,b=b+240|0,i=de+224|0,BA=de+208|0,zA=de,QA=de+192|0,fe=de+176|0,Y=de+160|0,nA=de+144|0,q=de+128|0,Z=de+112|0,U=de+96|0,t[i>>2]=A,t[BA>>2]=t[e>>2],t[BA+4>>2]=t[e+4>>2],t[BA+8>>2]=t[e+8>>2],t[BA+12>>2]=t[e+12>>2],hA(BA,i,zA),t[s>>2]=0,G=n+r+((n|0)==6&1)|0,(G|0)<=(r|0)){b=de;return}a=t[i>>2]|0,f=r+6|0,m=16960+(a<<2)|0,M=nA+8|0,R=q+8|0,I=Z+8|0,L=QA+4|0,o=0,l=r,n=-1;A:for(;;){if(i=(l|0)%6|0,e=zA+(i<<4)|0,t[QA>>2]=t[e>>2],t[QA+4>>2]=t[e+4>>2],t[QA+8>>2]=t[e+8>>2],t[QA+12>>2]=t[e+12>>2],e=o,o=N(QA,a,0,1)|0,(l|0)>(r|0)&(Jt(A)|0)!=0&&(e|0)!=1&&(t[QA>>2]|0)!=(n|0)){switch(ut(zA+(((i+5|0)%6|0)<<4)+4|0,fe),ut(zA+(i<<4)+4|0,Y),Ee=+(t[m>>2]|0),k[nA>>3]=Ee*3,k[M>>3]=0,ne=Ee*-1.5,k[q>>3]=ne,k[R>>3]=Ee*2.598076211353316,k[Z>>3]=ne,k[I>>3]=Ee*-2.598076211353316,i=t[BA>>2]|0,t[17040+(i*80|0)+(((n|0)==(i|0)?t[QA>>2]|0:n)<<2)>>2]|0){case 1:{e=q,n=nA;break}case 3:{e=Z,n=q;break}case 2:{e=nA,n=Z;break}default:{e=8;break A}}ii(fe,Y,n,e,U),!(oi(fe,U)|0)&&!(oi(Y,U)|0)&&(H0(U,t[BA>>2]|0,a,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1)}if((l|0)<(f|0)&&(ut(L,fe),H0(fe,t[QA>>2]|0,a,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1),l=l+1|0,(l|0)>=(G|0)){e=3;break}else n=t[QA>>2]|0}if((e|0)==3){b=de;return}else(e|0)==8&&OA(27054,27017,737,27099)}function hA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0;a=b,b=b+160|0,n=a+80|0,s=a,i=n,o=20368,l=i+72|0;do t[i>>2]=t[o>>2],i=i+4|0,o=o+4|0;while((i|0)<(l|0));i=s,o=20448,l=i+72|0;do t[i>>2]=t[o>>2],i=i+4|0,o=o+4|0;while((i|0)<(l|0));l=(Jt(t[A>>2]|0)|0)==0,n=l?n:s,s=e+4|0,Kr(s),$r(s),Jt(t[A>>2]|0)|0&&(Ht(s),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,$e(s,n,A),Me(A),t[r+16>>2]=t[e>>2],A=r+20|0,$e(s,n+12|0,A),Me(A),t[r+32>>2]=t[e>>2],A=r+36|0,$e(s,n+24|0,A),Me(A),t[r+48>>2]=t[e>>2],A=r+52|0,$e(s,n+36|0,A),Me(A),t[r+64>>2]=t[e>>2],A=r+68|0,$e(s,n+48|0,A),Me(A),t[r+80>>2]=t[e>>2],r=r+84|0,$e(s,n+60|0,r),Me(r),b=a}function _A(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,52)|0,S()|0,A&15|0}function te(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,45)|0,S()|0,A&127|0}function be(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,(r+-1|0)>>>0>14?(n=4,n|0):(r=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,t[n>>2]=r&7,n=0,n|0)}function we(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;if(e>>>0>15)return n=4,n|0;if(A>>>0>121)return n=17,n|0;o=CA(e|0,0,52)|0,s=S()|0,l=CA(A|0,0,45)|0,s=s|(S()|0)|134225919;A:do if((e|0)>=1){for(l=1,o=(xA[20528+A>>0]|0)!=0,i=-1;;){if(A=t[r+(l+-1<<2)>>2]|0,A>>>0>6){s=18,A=10;break}if(!((A|0)==0|o^1))if((A|0)==1){s=19,A=10;break}else o=0;if(f=(15-l|0)*3|0,a=CA(7,0,f|0)|0,s=s&~(S()|0),A=CA(A|0,((A|0)<0)<<31>>31|0,f|0)|0,i=A|i&~a,s=S()|0|s,(l|0)<(e|0))l=l+1|0;else break A}if((A|0)==10)return s|0}else i=-1;while(!1);return f=n,t[f>>2]=i,t[f+4>>2]=s,f=0,f|0}function Ue(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;return!(!0&(A&-16777216|0)==134217728)||(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0,r=r&127,r>>>0>121)?(e=0,e|0):(o=(n^15)*3|0,s=wA(e|0,A|0,o|0)|0,o=CA(s|0,S()|0,o|0)|0,s=S()|0,i=ct(-1227133514,-1171,o|0,s|0)|0,!((o&613566756&i|0)==0&(s&4681&(S()|0)|0)==0)||(o=(n*3|0)+19|0,i=CA(~e|0,~A|0,o|0)|0,o=wA(i|0,S()|0,o|0)|0,!((n|0)==15|(o|0)==0&(S()|0)==0))?(o=0,o|0):!(xA[20528+r>>0]|0)||(A=A&8191,(e|0)==0&(A|0)==0)?(o=1,o|0):(o=as(e|0,A|0)|0,S()|0,((63-o|0)%3|0|0)!=0|0))}function Bt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;return!0&(A&-16777216|0)==134217728&&(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0,r=r&127,r>>>0<=121)&&(o=(n^15)*3|0,s=wA(e|0,A|0,o|0)|0,o=CA(s|0,S()|0,o|0)|0,s=S()|0,i=ct(-1227133514,-1171,o|0,s|0)|0,(o&613566756&i|0)==0&(s&4681&(S()|0)|0)==0)&&(o=(n*3|0)+19|0,i=CA(~e|0,~A|0,o|0)|0,o=wA(i|0,S()|0,o|0)|0,(n|0)==15|(o|0)==0&(S()|0)==0)&&(!(xA[20528+r>>0]|0)||(r=A&8191,(e|0)==0&(r|0)==0)||(o=as(e|0,r|0)|0,S()|0,(63-o|0)%3|0|0))||Xr(e,A)|0?(o=1,o|0):(o=(li(e,A)|0)!=0&1,o|0)}function Dt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0;if(s=CA(A|0,0,52)|0,i=S()|0,r=CA(r|0,0,45)|0,r=i|(S()|0)|134225919,(A|0)<1){i=-1,n=r,A=e,t[A>>2]=i,e=e+4|0,t[e>>2]=n;return}for(i=1,s=-1;o=(15-i|0)*3|0,l=CA(7,0,o|0)|0,r=r&~(S()|0),o=CA(n|0,0,o|0)|0,s=s&~l|o,r=r|(S()|0),(i|0)!=(A|0);)i=i+1|0;l=e,o=l,t[o>>2]=s,l=l+4|0,t[l>>2]=r}function _t(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;if(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,r>>>0>15)return n=4,n|0;if((i|0)<(r|0))return n=12,n|0;if((i|0)==(r|0))return t[n>>2]=e,t[n+4>>2]=A,n=0,n|0;if(s=CA(r|0,0,52)|0,s=s|e,e=S()|0|A&-15728641,(i|0)>(r|0))do A=CA(7,0,(14-r|0)*3|0)|0,r=r+1|0,s=A|s,e=S()|0|e;while((r|0)<(i|0));return t[n>>2]=s,t[n+4>>2]=e,n=0,n|0}function p0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;if(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,!((r|0)<16&(i|0)<=(r|0)))return n=4,n|0;s=r-i|0,r=wA(e|0,A|0,45)|0,S()|0;A:do if(!(je(r&127)|0))r=G0(7,0,s,((s|0)<0)<<31>>31)|0,s=S()|0;else{e:do if(i|0){for(r=1;o=CA(7,0,(15-r|0)*3|0)|0,!!((o&e|0)==0&((S()|0)&A|0)==0);)if(r>>>0>>0)r=r+1|0;else break e;r=G0(7,0,s,((s|0)<0)<<31>>31)|0,s=S()|0;break A}while(!1);r=G0(7,0,s,((s|0)<0)<<31>>31)|0,r=ft(r|0,S()|0,5,0)|0,r=KA(r|0,S()|0,-5,-1)|0,r=V0(r|0,S()|0,6,0)|0,r=KA(r|0,S()|0,1,0)|0,s=S()|0}while(!1);return o=n,t[o>>2]=r,t[o+4>>2]=s,o=0,o|0}function Oe(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;if(s=wA(e|0,A|0,45)|0,S()|0,!(je(s&127)|0))return s=0,s|0;s=wA(e|0,A|0,52)|0,S()|0,s=s&15;A:do if(!s)r=0;else for(n=1;;){if(r=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,r=r&7,r|0)break A;if(n>>>0>>0)n=n+1|0;else{r=0;break}}while(!1);return s=(r|0)==0&1,s|0}function en(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0;if(o=b,b=b+16|0,i=o,ts(i,e,A,r),A=i,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0)return b=o,0;s=0,r=0;do l=n+(s<<3)|0,t[l>>2]=e,t[l+4>>2]=A,s=KA(s|0,r|0,1,0)|0,r=S()|0,rs(i),l=i,e=t[l>>2]|0,A=t[l+4>>2]|0;while(!((e|0)==0&(A|0)==0));return b=o,0}function Ys(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,(n|0)<(r|0)?(r=A,n=e,YA(r|0),n|0):(r=CA(-1,-1,((n-r|0)*3|0)+3|0)|0,n=CA(~r|0,~(S()|0)|0,(15-n|0)*3|0)|0,r=~(S()|0)&A,n=~n&e,YA(r|0),n|0)}function Ks(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0;return s=wA(e|0,A|0,52)|0,S()|0,s=s&15,(r|0)<16&(s|0)<=(r|0)?((s|0)<(r|0)&&(s=CA(-1,-1,((r+-1-s|0)*3|0)+3|0)|0,s=CA(~s|0,~(S()|0)|0,(15-r|0)*3|0)|0,A=~(S()|0)&A,e=~s&e),s=CA(r|0,0,52)|0,r=A&-15728641|(S()|0),t[n>>2]=e|s,t[n+4>>2]=r,n=0,n|0):(n=4,n|0)}function fl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0;if((r|0)==0&(n|0)==0)return SA=0,SA|0;if(s=e,i=t[s>>2]|0,s=t[s+4>>2]|0,!0&(s&15728640|0)==0){if(!((n|0)>0|(n|0)==0&r>>>0>0)||(SA=A,t[SA>>2]=i,t[SA+4>>2]=s,(r|0)==1&(n|0)==0))return SA=0,SA|0;s=1,i=0;do ne=e+(s<<3)|0,HA=t[ne+4>>2]|0,SA=A+(s<<3)|0,t[SA>>2]=t[ne>>2],t[SA+4>>2]=HA,s=KA(s|0,i|0,1,0)|0,i=S()|0;while((i|0)<(n|0)|(i|0)==(n|0)&s>>>0>>0);return s=0,s|0}if(Ee=r<<3,HA=y0(Ee)|0,!HA)return SA=13,SA|0;if(Ir(HA|0,e|0,Ee|0)|0,ne=Qt(r,8)|0,!ne)return qA(HA),SA=13,SA|0;A:for(;;){s=HA,f=t[s>>2]|0,s=t[s+4>>2]|0,fe=wA(f|0,s|0,52)|0,S()|0,fe=fe&15,de=fe+-1|0,QA=(fe|0)!=0,zA=(n|0)>0|(n|0)==0&r>>>0>0;e:do if(QA&zA){if(q=CA(de|0,0,52)|0,Z=S()|0,de>>>0>15){if(!((f|0)==0&(s|0)==0)){SA=16;break A}for(i=0,e=0;;){if(i=KA(i|0,e|0,1,0)|0,e=S()|0,!((e|0)<(n|0)|(e|0)==(n|0)&i>>>0>>0))break e;if(o=HA+(i<<3)|0,BA=t[o>>2]|0,o=t[o+4>>2]|0,!((BA|0)==0&(o|0)==0)){s=o,SA=16;break A}}}for(l=f,e=s,i=0,o=0;;){if(!((l|0)==0&(e|0)==0)){if(!(!0&(e&117440512|0)==0)){SA=21;break A}if(m=wA(l|0,e|0,52)|0,S()|0,m=m&15,(m|0)<(de|0)){s=12,SA=27;break A}if((m|0)!=(de|0)&&(l=l|q,e=e&-15728641|Z,m>>>0>=fe>>>0)){a=de;do BA=CA(7,0,(14-a|0)*3|0)|0,a=a+1|0,l=BA|l,e=S()|0|e;while(a>>>0>>0)}if(R=Rr(l|0,e|0,r|0,n|0)|0,I=S()|0,a=ne+(R<<3)|0,m=a,M=t[m>>2]|0,m=t[m+4>>2]|0,!((M|0)==0&(m|0)==0)){Y=0,nA=0;do{if((Y|0)>(n|0)|(Y|0)==(n|0)&nA>>>0>r>>>0){SA=31;break A}if((M|0)==(l|0)&(m&-117440513|0)==(e|0)){L=wA(M|0,m|0,56)|0,S()|0,L=L&7,G=L+1|0,BA=wA(M|0,m|0,45)|0,S()|0;t:do if(!(je(BA&127)|0))m=7;else{if(M=wA(M|0,m|0,52)|0,S()|0,M=M&15,!M){m=6;break}for(m=1;;){if(BA=CA(7,0,(15-m|0)*3|0)|0,!((BA&l|0)==0&((S()|0)&e|0)==0)){m=7;break t}if(m>>>0>>0)m=m+1|0;else{m=6;break}}}while(!1);if((L+2|0)>>>0>m>>>0){SA=41;break A}BA=CA(G|0,0,56)|0,e=S()|0|e&-117440513,U=a,t[U>>2]=0,t[U+4>>2]=0,l=BA|l}else R=KA(R|0,I|0,1,0)|0,R=jr(R|0,S()|0,r|0,n|0)|0,I=S()|0;nA=KA(nA|0,Y|0,1,0)|0,Y=S()|0,a=ne+(R<<3)|0,m=a,M=t[m>>2]|0,m=t[m+4>>2]|0}while(!((M|0)==0&(m|0)==0))}BA=a,t[BA>>2]=l,t[BA+4>>2]=e}if(i=KA(i|0,o|0,1,0)|0,o=S()|0,!((o|0)<(n|0)|(o|0)==(n|0)&i>>>0>>0))break e;e=HA+(i<<3)|0,l=t[e>>2]|0,e=t[e+4>>2]|0}}while(!1);if(BA=KA(r|0,n|0,5,0)|0,U=S()|0,U>>>0<0|(U|0)==0&BA>>>0<11){SA=85;break}if(BA=V0(r|0,n|0,6,0)|0,S()|0,BA=Qt(BA,8)|0,!BA){SA=48;break}do if(zA){for(G=0,e=0,L=0,Y=0;;){if(m=ne+(G<<3)|0,o=m,i=t[o>>2]|0,o=t[o+4>>2]|0,(i|0)==0&(o|0)==0)U=L;else{M=wA(i|0,o|0,56)|0,S()|0,M=M&7,l=M+1|0,R=o&-117440513,U=wA(i|0,o|0,45)|0,S()|0;e:do if(je(U&127)|0){if(I=wA(i|0,o|0,52)|0,S()|0,I=I&15,I|0)for(a=1;;){if(U=CA(7,0,(15-a|0)*3|0)|0,!((i&U|0)==0&(R&(S()|0)|0)==0))break e;if(a>>>0>>0)a=a+1|0;else break}o=CA(l|0,0,56)|0,i=o|i,o=S()|0|R,l=m,t[l>>2]=i,t[l+4>>2]=o,l=M+2|0}while(!1);(l|0)==7?(U=BA+(e<<3)|0,t[U>>2]=i,t[U+4>>2]=o&-117440513,e=KA(e|0,L|0,1,0)|0,U=S()|0):U=L}if(G=KA(G|0,Y|0,1,0)|0,Y=S()|0,(Y|0)<(n|0)|(Y|0)==(n|0)&G>>>0>>0)L=U;else break}if(zA){if(nA=de>>>0>15,q=CA(de|0,0,52)|0,Z=S()|0,!QA){for(i=0,a=0,l=0,o=0;(f|0)==0&(s|0)==0||(de=A+(i<<3)|0,t[de>>2]=f,t[de+4>>2]=s,i=KA(i|0,a|0,1,0)|0,a=S()|0),l=KA(l|0,o|0,1,0)|0,o=S()|0,!!((o|0)<(n|0)|(o|0)==(n|0)&l>>>0>>0);)s=HA+(l<<3)|0,f=t[s>>2]|0,s=t[s+4>>2]|0;s=U;break}for(i=0,a=0,o=0,l=0;;){do if(!((f|0)==0&(s|0)==0)){if(I=wA(f|0,s|0,52)|0,S()|0,I=I&15,nA|(I|0)<(de|0)){SA=80;break A}if((I|0)!=(de|0)){if(m=f|q,M=s&-15728641|Z,I>>>0>=fe>>>0){R=de;do QA=CA(7,0,(14-R|0)*3|0)|0,R=R+1|0,m=QA|m,M=S()|0|M;while(R>>>0>>0)}}else m=f,M=s;L=Rr(m|0,M|0,r|0,n|0)|0,R=0,I=0,Y=S()|0;do{if((R|0)>(n|0)|(R|0)==(n|0)&I>>>0>r>>>0){SA=81;break A}if(QA=ne+(L<<3)|0,G=t[QA+4>>2]|0,(G&-117440513|0)==(M|0)&&(t[QA>>2]|0)==(m|0)){SA=65;break}QA=KA(L|0,Y|0,1,0)|0,L=jr(QA|0,S()|0,r|0,n|0)|0,Y=S()|0,I=KA(I|0,R|0,1,0)|0,R=S()|0,QA=ne+(L<<3)|0}while(!((t[QA>>2]|0)==(m|0)&&(t[QA+4>>2]|0)==(M|0)));if((SA|0)==65&&(SA=0,!0&(G&117440512|0)==100663296))break;QA=A+(i<<3)|0,t[QA>>2]=f,t[QA+4>>2]=s,i=KA(i|0,a|0,1,0)|0,a=S()|0}while(!1);if(o=KA(o|0,l|0,1,0)|0,l=S()|0,!((l|0)<(n|0)|(l|0)==(n|0)&o>>>0>>0))break;s=HA+(o<<3)|0,f=t[s>>2]|0,s=t[s+4>>2]|0}s=U}else i=0,s=U}else i=0,e=0,s=0;while(!1);if(W0(ne|0,0,Ee|0)|0,Ir(HA|0,BA|0,e<<3|0)|0,qA(BA),(e|0)==0&(s|0)==0){SA=89;break}else A=A+(i<<3)|0,n=s,r=e}if((SA|0)==16)!0&(s&117440512|0)==0?(s=4,SA=27):SA=21;else if((SA|0)==31)OA(27795,27122,620,27132);else{if((SA|0)==41)return qA(HA),qA(ne),SA=10,SA|0;if((SA|0)==48)return qA(HA),qA(ne),SA=13,SA|0;(SA|0)==80?OA(27795,27122,711,27132):(SA|0)==81?OA(27795,27122,723,27132):(SA|0)==85&&(Ir(A|0,HA|0,r<<3|0)|0,SA=89)}return(SA|0)==21?(qA(HA),qA(ne),SA=5,SA|0):(SA|0)==27?(qA(HA),qA(ne),SA=s,SA|0):(SA|0)==89?(qA(HA),qA(ne),SA=0,SA|0):0}function dl(e,A,r,n,s,i,o){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0,o=o|0;var l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0;if(G=b,b=b+16|0,L=G,!((r|0)>0|(r|0)==0&A>>>0>0))return L=0,b=G,L|0;if((o|0)>=16)return L=12,b=G,L|0;R=0,I=0,M=0,l=0;A:for(;;){if(f=e+(R<<3)|0,a=t[f>>2]|0,f=t[f+4>>2]|0,m=wA(a|0,f|0,52)|0,S()|0,(m&15|0)>(o|0)){l=12,a=11;break}if(ts(L,a,f,o),m=L,f=t[m>>2]|0,m=t[m+4>>2]|0,(f|0)==0&(m|0)==0)a=M;else{a=M;do{if(!((l|0)<(i|0)|(l|0)==(i|0)&a>>>0>>0)){a=10;break A}M=n+(a<<3)|0,t[M>>2]=f,t[M+4>>2]=m,a=KA(a|0,l|0,1,0)|0,l=S()|0,rs(L),M=L,f=t[M>>2]|0,m=t[M+4>>2]|0}while(!((f|0)==0&(m|0)==0))}if(R=KA(R|0,I|0,1,0)|0,I=S()|0,(I|0)<(r|0)|(I|0)==(r|0)&R>>>0>>0)M=a;else{l=0,a=11;break}}return(a|0)==10?(L=14,b=G,L|0):(a|0)==11?(b=G,l|0):0}function hl(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;R=b,b=b+16|0,M=R;A:do if((r|0)>0|(r|0)==0&A>>>0>0){for(f=0,o=0,i=0,m=0;;){if(a=e+(f<<3)|0,l=t[a>>2]|0,a=t[a+4>>2]|0,!((l|0)==0&(a|0)==0)&&(a=(p0(l,a,n,M)|0)==0,l=M,o=KA(t[l>>2]|0,t[l+4>>2]|0,o|0,i|0)|0,i=S()|0,!a)){i=12;break}if(f=KA(f|0,m|0,1,0)|0,m=S()|0,!((m|0)<(r|0)|(m|0)==(r|0)&f>>>0>>0))break A}return b=R,i|0}else o=0,i=0;while(!1);return t[s>>2]=o,t[s+4>>2]=i,s=0,b=R,s|0}function ml(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,52)|0,S()|0,A&1|0}function Pt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;if(s=wA(e|0,A|0,52)|0,S()|0,s=s&15,!s)return s=0,s|0;for(n=1;;){if(r=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,r=r&7,r|0){n=5;break}if(n>>>0>>0)n=n+1|0;else{r=0,n=5;break}}return(n|0)==5?r|0:0}function qn(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(a=wA(e|0,A|0,52)|0,S()|0,a=a&15,!a)return l=A,a=e,YA(l|0),a|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=CA(7,0,i|0)|0,s=S()|0,o=wA(e|0,A|0,i|0)|0,S()|0,i=CA(Gt(o&7)|0,0,i|0)|0,o=S()|0,e=i|e&~n,A=o|A&~s;A:do if(!r)if((i&n|0)==0&(o&s|0)==0)r=0;else if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)r=1;else{r=1;e:for(;;){switch(o=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,o&7){case 1:break e;case 0:break;default:{r=1;break A}}if(r>>>0>>0)r=r+1|0;else{r=1;break A}}for(r=1;;)if(o=(15-r|0)*3|0,s=wA(e|0,A|0,o|0)|0,S()|0,i=CA(7,0,o|0)|0,A=A&~(S()|0),o=CA(Gt(s&7)|0,0,o|0)|0,e=e&~i|o,A=A|(S()|0),r>>>0>>0)r=r+1|0;else{r=1;break}}while(!1);if(l>>>0>>0)l=l+1|0;else break}return YA(A|0),e|0}function lr(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)return r=A,n=e,YA(r|0),n|0;for(r=1;i=(15-r|0)*3|0,o=wA(e|0,A|0,i|0)|0,S()|0,s=CA(7,0,i|0)|0,A=A&~(S()|0),i=CA(Gt(o&7)|0,0,i|0)|0,e=i|e&~s,A=S()|0|A,r>>>0>>0;)r=r+1|0;return YA(A|0),e|0}function gl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(a=wA(e|0,A|0,52)|0,S()|0,a=a&15,!a)return l=A,a=e,YA(l|0),a|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=CA(7,0,i|0)|0,s=S()|0,o=wA(e|0,A|0,i|0)|0,S()|0,i=CA(Ut(o&7)|0,0,i|0)|0,o=S()|0,e=i|e&~n,A=o|A&~s;A:do if(!r)if((i&n|0)==0&(o&s|0)==0)r=0;else if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)r=1;else{r=1;e:for(;;){switch(o=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,o&7){case 1:break e;case 0:break;default:{r=1;break A}}if(r>>>0>>0)r=r+1|0;else{r=1;break A}}for(r=1;;)if(s=(15-r|0)*3|0,i=CA(7,0,s|0)|0,o=A&~(S()|0),A=wA(e|0,A|0,s|0)|0,S()|0,A=CA(Ut(A&7)|0,0,s|0)|0,e=e&~i|A,A=o|(S()|0),r>>>0>>0)r=r+1|0;else{r=1;break}}while(!1);if(l>>>0>>0)l=l+1|0;else break}return YA(A|0),e|0}function Jn(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)return r=A,n=e,YA(r|0),n|0;for(r=1;o=(15-r|0)*3|0,i=CA(7,0,o|0)|0,s=A&~(S()|0),A=wA(e|0,A|0,o|0)|0,S()|0,A=CA(Ut(A&7)|0,0,o|0)|0,e=A|e&~i,A=S()|0|s,r>>>0>>0;)r=r+1|0;return YA(A|0),e|0}function pl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(a=b,b=b+64|0,l=a+40|0,n=a+24|0,s=a+12|0,i=a,CA(A|0,0,52)|0,r=S()|0|134225919,!A)return(t[e+4>>2]|0)>2||(t[e+8>>2]|0)>2||(t[e+12>>2]|0)>2?(o=0,l=0,YA(o|0),b=a,l|0):(CA(g0(e)|0,0,45)|0,o=S()|0|r,l=-1,YA(o|0),b=a,l|0);if(t[l>>2]=t[e>>2],t[l+4>>2]=t[e+4>>2],t[l+8>>2]=t[e+8>>2],t[l+12>>2]=t[e+12>>2],o=l+4|0,(A|0)>0)for(e=-1;t[n>>2]=t[o>>2],t[n+4>>2]=t[o+4>>2],t[n+8>>2]=t[o+8>>2],A&1?(vr(o),t[s>>2]=t[o>>2],t[s+4>>2]=t[o+4>>2],t[s+8>>2]=t[o+8>>2],kr(s)):(br(o),t[s>>2]=t[o>>2],t[s+4>>2]=t[o+4>>2],t[s+8>>2]=t[o+8>>2],Ht(s)),yt(n,s,i),Me(i),m=(15-A|0)*3|0,f=CA(7,0,m|0)|0,r=r&~(S()|0),m=CA(St(i)|0,0,m|0)|0,e=m|e&~f,r=S()|0|r,(A|0)>1;)A=A+-1|0;else e=-1;A:do if((t[o>>2]|0)<=2&&(t[l+8>>2]|0)<=2&&(t[l+12>>2]|0)<=2){if(n=g0(l)|0,A=CA(n|0,0,45)|0,A=A|e,e=S()|0|r&-1040385,i=u0(l)|0,!(je(n)|0)){if((i|0)<=0)break;for(s=0;;){if(n=wA(A|0,e|0,52)|0,S()|0,n=n&15,n)for(r=1;m=(15-r|0)*3|0,l=wA(A|0,e|0,m|0)|0,S()|0,f=CA(7,0,m|0)|0,e=e&~(S()|0),m=CA(Gt(l&7)|0,0,m|0)|0,A=A&~f|m,e=e|(S()|0),r>>>0>>0;)r=r+1|0;if(s=s+1|0,(s|0)==(i|0))break A}}s=wA(A|0,e|0,52)|0,S()|0,s=s&15;e:do if(s){r=1;t:for(;;){switch(m=wA(A|0,e|0,(15-r|0)*3|0)|0,S()|0,m&7){case 1:break t;case 0:break;default:break e}if(r>>>0>>0)r=r+1|0;else break e}if(M0(n,t[l>>2]|0)|0)for(r=1;l=(15-r|0)*3|0,f=CA(7,0,l|0)|0,m=e&~(S()|0),e=wA(A|0,e|0,l|0)|0,S()|0,e=CA(Ut(e&7)|0,0,l|0)|0,A=A&~f|e,e=m|(S()|0),r>>>0>>0;)r=r+1|0;else for(r=1;m=(15-r|0)*3|0,l=wA(A|0,e|0,m|0)|0,S()|0,f=CA(7,0,m|0)|0,e=e&~(S()|0),m=CA(Gt(l&7)|0,0,m|0)|0,A=A&~f|m,e=e|(S()|0),r>>>0>>0;)r=r+1|0}while(!1);if((i|0)>0){r=0;do A=qn(A,e)|0,e=S()|0,r=r+1|0;while((r|0)!=(i|0))}}else A=0,e=0;while(!1);return f=e,m=A,YA(f|0),b=a,m|0}function Jt(e){return e=e|0,(e|0)%2|0|0}function Xn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;return s=b,b=b+16|0,n=s,A>>>0>15?(n=4,b=s,n|0):(t[e+4>>2]&2146435072|0)==2146435072||(t[e+8+4>>2]&2146435072|0)==2146435072?(n=3,b=s,n|0):(wn(e,A,n),A=pl(n,A)|0,n=S()|0,t[r>>2]=A,t[r+4>>2]=n,(A|0)==0&(n|0)==0&&OA(27795,27122,1050,27145),n=0,b=s,n|0)}function As(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;if(s=r+4|0,i=wA(e|0,A|0,52)|0,S()|0,i=i&15,o=wA(e|0,A|0,45)|0,S()|0,n=(i|0)==0,je(o&127)|0){if(n)return o=1,o|0;n=1}else{if(n)return o=0,o|0;(t[s>>2]|0)==0&&(t[r+8>>2]|0)==0?n=(t[r+12>>2]|0)!=0&1:n=1}for(r=1;r&1?kr(s):Ht(s),o=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,pn(s,o&7),r>>>0>>0;)r=r+1|0;return n|0}function Dr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(m=b,b=b+16|0,a=m,f=wA(e|0,A|0,45)|0,S()|0,f=f&127,f>>>0>121)return t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,t[r+12>>2]=0,f=5,b=m,f|0;A:do if((je(f)|0)!=0&&(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,(i|0)!=0)){n=1;e:for(;;){switch(l=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,l&7){case 5:break e;case 0:break;default:{n=A;break A}}if(n>>>0>>0)n=n+1|0;else{n=A;break A}}for(s=1,n=A;A=(15-s|0)*3|0,o=CA(7,0,A|0)|0,l=n&~(S()|0),n=wA(e|0,n|0,A|0)|0,S()|0,n=CA(Ut(n&7)|0,0,A|0)|0,e=e&~o|n,n=l|(S()|0),s>>>0>>0;)s=s+1|0}else n=A;while(!1);if(l=7696+(f*28|0)|0,t[r>>2]=t[l>>2],t[r+4>>2]=t[l+4>>2],t[r+8>>2]=t[l+8>>2],t[r+12>>2]=t[l+12>>2],!(As(e,n,r)|0))return f=0,b=m,f|0;if(o=r+4|0,t[a>>2]=t[o>>2],t[a+4>>2]=t[o+4>>2],t[a+8>>2]=t[o+8>>2],i=wA(e|0,n|0,52)|0,S()|0,l=i&15,i&1?(Ht(o),i=l+1|0):i=l,!(je(f)|0))n=0;else{A:do if(!l)n=0;else for(A=1;;){if(s=wA(e|0,n|0,(15-A|0)*3|0)|0,S()|0,s=s&7,s|0){n=s;break A}if(A>>>0>>0)A=A+1|0;else{n=0;break}}while(!1);n=(n|0)==4&1}if(!(N(r,i,n,0)|0))(i|0)!=(l|0)&&(t[o>>2]=t[a>>2],t[o+4>>2]=t[a+4>>2],t[o+8>>2]=t[a+8>>2]);else{if(je(f)|0)do;while((N(r,i,0,0)|0)!=0);(i|0)!=(l|0)&&br(o)}return f=0,b=m,f|0}function ar(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;return i=b,b=b+16|0,n=i,s=Dr(e,A,n)|0,s|0?(b=i,s|0):(s=wA(e|0,A|0,52)|0,S()|0,h(n,s&15,r),s=0,b=i,s|0)}function _r(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0;if(o=b,b=b+16|0,i=o,n=Dr(e,A,i)|0,n|0)return i=n,b=o,i|0;n=wA(e|0,A|0,45)|0,S()|0,n=(je(n&127)|0)==0,s=wA(e|0,A|0,52)|0,S()|0,s=s&15;A:do if(!n){if(s|0)for(n=1;;){if(l=CA(7,0,(15-n|0)*3|0)|0,!((l&e|0)==0&((S()|0)&A|0)==0))break A;if(n>>>0>>0)n=n+1|0;else break}return w(i,s,0,5,r),l=0,b=o,l|0}while(!1);return AA(i,s,0,6,r),l=0,b=o,l|0}function yl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(s=wA(e|0,A|0,45)|0,S()|0,!(je(s&127)|0))return s=2,t[r>>2]=s,0;if(s=wA(e|0,A|0,52)|0,S()|0,s=s&15,!s)return s=5,t[r>>2]=s,0;for(n=1;;){if(i=CA(7,0,(15-n|0)*3|0)|0,!((i&e|0)==0&((S()|0)&A|0)==0)){n=2,e=6;break}if(n>>>0>>0)n=n+1|0;else{n=5,e=6;break}}return(e|0)==6&&(t[r>>2]=n),0}function $s(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0;M=b,b=b+128|0,f=M+112|0,i=M+96|0,m=M,s=wA(e|0,A|0,52)|0,S()|0,l=s&15,t[f>>2]=l,o=wA(e|0,A|0,45)|0,S()|0,o=o&127;A:do if(je(o)|0){if(l|0)for(n=1;;){if(a=CA(7,0,(15-n|0)*3|0)|0,!((a&e|0)==0&((S()|0)&A|0)==0)){s=0;break A}if(n>>>0>>0)n=n+1|0;else break}if(s&1)s=1;else return a=CA(l+1|0,0,52)|0,m=S()|0|A&-15728641,f=CA(7,0,(14-l|0)*3|0)|0,m=$s((a|e)&~f,m&~(S()|0),r)|0,b=M,m|0}else s=0;while(!1);if(n=Dr(e,A,i)|0,!n){s?(B(i,f,m),a=5):(hA(i,f,m),a=6);A:do if(je(o)|0)if(!l)e=5;else for(n=1;;){if(o=CA(7,0,(15-n|0)*3|0)|0,!((o&e|0)==0&((S()|0)&A|0)==0)){e=2;break A}if(n>>>0>>0)n=n+1|0;else{e=5;break}}else e=2;while(!1);W0(r|0,-1,e<<2|0)|0;A:do if(s)for(i=0;;){if(o=m+(i<<4)|0,tA(o,t[f>>2]|0)|0,o=t[o>>2]|0,l=t[r>>2]|0,(l|0)==-1|(l|0)==(o|0))n=r;else{s=0;do{if(s=s+1|0,s>>>0>=e>>>0){n=1;break A}n=r+(s<<2)|0,l=t[n>>2]|0}while(!((l|0)==-1|(l|0)==(o|0)))}if(t[n>>2]=o,i=i+1|0,i>>>0>=a>>>0){n=0;break}}else for(i=0;;){if(o=m+(i<<4)|0,N(o,t[f>>2]|0,0,1)|0,o=t[o>>2]|0,l=t[r>>2]|0,(l|0)==-1|(l|0)==(o|0))n=r;else{s=0;do{if(s=s+1|0,s>>>0>=e>>>0){n=1;break A}n=r+(s<<2)|0,l=t[n>>2]|0}while(!((l|0)==-1|(l|0)==(o|0)))}if(t[n>>2]=o,i=i+1|0,i>>>0>=a>>>0){n=0;break}}while(!1)}return m=n,b=M,m|0}function xl(){return 12}function es(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(e>>>0>15)return l=4,l|0;if(CA(e|0,0,52)|0,l=S()|0|134225919,!e){r=0,n=0;do je(n)|0&&(CA(n|0,0,45)|0,o=l|(S()|0),e=A+(r<<3)|0,t[e>>2]=-1,t[e+4>>2]=o,r=r+1|0),n=n+1|0;while((n|0)!=122);return r=0,r|0}r=0,o=0;do{if(je(o)|0){for(CA(o|0,0,45)|0,n=1,s=-1,i=l|(S()|0);a=CA(7,0,(15-n|0)*3|0)|0,s=s&~a,i=i&~(S()|0),(n|0)!=(e|0);)n=n+1|0;a=A+(r<<3)|0,t[a>>2]=s,t[a+4>>2]=i,r=r+1|0}o=o+1|0}while((o|0)!=122);return r=0,r|0}function wl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0;if(q=b,b=b+16|0,Y=q,nA=wA(e|0,A|0,52)|0,S()|0,nA=nA&15,r>>>0>15)return nA=4,b=q,nA|0;if((nA|0)<(r|0))return nA=12,b=q,nA|0;if((nA|0)!=(r|0))if(i=CA(r|0,0,52)|0,i=i|e,l=S()|0|A&-15728641,(nA|0)>(r|0)){a=r;do G=CA(7,0,(14-a|0)*3|0)|0,a=a+1|0,i=G|i,l=S()|0|l;while((a|0)<(nA|0));G=i}else G=i;else G=e,l=A;L=wA(G|0,l|0,45)|0,S()|0;A:do if(je(L&127)|0){if(a=wA(G|0,l|0,52)|0,S()|0,a=a&15,a|0)for(i=1;;){if(L=CA(7,0,(15-i|0)*3|0)|0,!((L&G|0)==0&((S()|0)&l|0)==0)){f=33;break A}if(i>>>0>>0)i=i+1|0;else break}if(L=n,t[L>>2]=0,t[L+4>>2]=0,(nA|0)>(r|0)){for(L=A&-15728641,I=nA;;){if(R=I,I=I+-1|0,I>>>0>15|(nA|0)<(I|0)){f=19;break}if((nA|0)!=(I|0))if(i=CA(I|0,0,52)|0,i=i|e,a=S()|0|L,(nA|0)<(R|0))M=i;else{f=I;do M=CA(7,0,(14-f|0)*3|0)|0,f=f+1|0,i=M|i,a=S()|0|a;while((f|0)<(nA|0));M=i}else M=e,a=A;if(m=wA(M|0,a|0,45)|0,S()|0,!(je(m&127)|0))i=0;else{m=wA(M|0,a|0,52)|0,S()|0,m=m&15;e:do if(!m)i=0;else for(f=1;;){if(i=wA(M|0,a|0,(15-f|0)*3|0)|0,S()|0,i=i&7,i|0)break e;if(f>>>0>>0)f=f+1|0;else{i=0;break}}while(!1);i=(i|0)==0&1}if(a=wA(e|0,A|0,(15-R|0)*3|0)|0,S()|0,a=a&7,(a|0)==7){s=5,f=42;break}if(i=(i|0)!=0,(a|0)==1&i){s=5,f=42;break}if(M=a+(((a|0)!=0&i)<<31>>31)|0,M|0&&(f=nA-R|0,f=G0(7,0,f,((f|0)<0)<<31>>31)|0,m=S()|0,i?(i=ft(f|0,m|0,5,0)|0,i=KA(i|0,S()|0,-5,-1)|0,i=V0(i|0,S()|0,6,0)|0,i=KA(i|0,S()|0,1,0)|0,a=S()|0):(i=f,a=m),R=M+-1|0,R=ft(f|0,m|0,R|0,((R|0)<0)<<31>>31|0)|0,R=KA(i|0,a|0,R|0,S()|0)|0,M=S()|0,m=n,m=KA(R|0,M|0,t[m>>2]|0,t[m+4>>2]|0)|0,M=S()|0,R=n,t[R>>2]=m,t[R+4>>2]=M),(I|0)<=(r|0)){f=37;break}}if((f|0)==19)OA(27795,27122,1367,27158);else if((f|0)==37){o=n,s=t[o+4>>2]|0,o=t[o>>2]|0;break}else if((f|0)==42)return b=q,s|0}else s=0,o=0}else f=33;while(!1);A:do if((f|0)==33)if(L=n,t[L>>2]=0,t[L+4>>2]=0,(nA|0)>(r|0)){for(i=nA;;){if(s=wA(e|0,A|0,(15-i|0)*3|0)|0,S()|0,s=s&7,(s|0)==7){s=5;break}if(o=nA-i|0,o=G0(7,0,o,((o|0)<0)<<31>>31)|0,s=ft(o|0,S()|0,s|0,0)|0,o=S()|0,L=n,o=KA(t[L>>2]|0,t[L+4>>2]|0,s|0,o|0)|0,s=S()|0,L=n,t[L>>2]=o,t[L+4>>2]=s,i=i+-1|0,(i|0)<=(r|0))break A}return b=q,s|0}else s=0,o=0;while(!1);return p0(G,l,nA,Y)|0&&OA(27795,27122,1327,27173),nA=Y,Y=t[nA+4>>2]|0,((s|0)>-1|(s|0)==-1&o>>>0>4294967295)&((Y|0)>(s|0)|((Y|0)==(s|0)?(t[nA>>2]|0)>>>0>o>>>0:0))?(nA=0,b=q,nA|0):(OA(27795,27122,1407,27158),0)}function vl(e,A,r,n,s,i){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0;var o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0;if(M=b,b=b+16|0,o=M,s>>>0>15)return i=4,b=M,i|0;if(l=wA(r|0,n|0,52)|0,S()|0,l=l&15,(l|0)>(s|0))return i=12,b=M,i|0;if(p0(r,n,s,o)|0&&OA(27795,27122,1327,27173),m=o,f=t[m+4>>2]|0,!(((A|0)>-1|(A|0)==-1&e>>>0>4294967295)&((f|0)>(A|0)|((f|0)==(A|0)?(t[m>>2]|0)>>>0>e>>>0:0))))return i=2,b=M,i|0;m=s-l|0,s=CA(s|0,0,52)|0,a=S()|0|n&-15728641,f=i,t[f>>2]=s|r,t[f+4>>2]=a,f=wA(r|0,n|0,45)|0,S()|0;A:do if(je(f&127)|0){if(l|0)for(o=1;;){if(f=CA(7,0,(15-o|0)*3|0)|0,!((f&r|0)==0&((S()|0)&n|0)==0))break A;if(o>>>0>>0)o=o+1|0;else break}if((m|0)<1)return i=0,b=M,i|0;for(f=l^15,n=-1,a=1,o=1;;){l=m-a|0,l=G0(7,0,l,((l|0)<0)<<31>>31)|0,r=S()|0;do if(o)if(o=ft(l|0,r|0,5,0)|0,o=KA(o|0,S()|0,-5,-1)|0,o=V0(o|0,S()|0,6,0)|0,s=S()|0,(A|0)>(s|0)|(A|0)==(s|0)&e>>>0>o>>>0){A=KA(e|0,A|0,-1,-1)|0,A=ct(A|0,S()|0,o|0,s|0)|0,o=S()|0,R=i,L=t[R>>2]|0,R=t[R+4>>2]|0,G=(f+n|0)*3|0,I=CA(7,0,G|0)|0,R=R&~(S()|0),n=V0(A|0,o|0,l|0,r|0)|0,e=S()|0,s=KA(n|0,e|0,2,0)|0,G=CA(s|0,S()|0,G|0)|0,R=S()|0|R,s=i,t[s>>2]=G|L&~I,t[s+4>>2]=R,e=ft(n|0,e|0,l|0,r|0)|0,e=ct(A|0,o|0,e|0,S()|0)|0,o=0,A=S()|0;break}else{G=i,I=t[G>>2]|0,G=t[G+4>>2]|0,L=CA(7,0,(f+n|0)*3|0)|0,G=G&~(S()|0),o=i,t[o>>2]=I&~L,t[o+4>>2]=G,o=1;break}else I=i,s=t[I>>2]|0,I=t[I+4>>2]|0,n=(f+n|0)*3|0,R=CA(7,0,n|0)|0,I=I&~(S()|0),G=V0(e|0,A|0,l|0,r|0)|0,o=S()|0,n=CA(G|0,o|0,n|0)|0,I=S()|0|I,L=i,t[L>>2]=n|s&~R,t[L+4>>2]=I,o=ft(G|0,o|0,l|0,r|0)|0,e=ct(e|0,A|0,o|0,S()|0)|0,o=0,A=S()|0;while(!1);if((m|0)>(a|0))n=~a,a=a+1|0;else{A=0;break}}return b=M,A|0}while(!1);if((m|0)<1)return G=0,b=M,G|0;for(s=l^15,o=1;;)if(L=m-o|0,L=G0(7,0,L,((L|0)<0)<<31>>31)|0,G=S()|0,a=i,r=t[a>>2]|0,a=t[a+4>>2]|0,l=(s-o|0)*3|0,n=CA(7,0,l|0)|0,a=a&~(S()|0),R=V0(e|0,A|0,L|0,G|0)|0,I=S()|0,l=CA(R|0,I|0,l|0)|0,a=S()|0|a,f=i,t[f>>2]=l|r&~n,t[f+4>>2]=a,G=ft(R|0,I|0,L|0,G|0)|0,e=ct(e|0,A|0,G|0,S()|0)|0,A=S()|0,(m|0)<=(o|0)){A=0;break}else o=o+1|0;return b=M,A|0}function ts(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;s=wA(A|0,r|0,52)|0,S()|0,s=s&15,(A|0)==0&(r|0)==0|((n|0)>15|(s|0)>(n|0))?(i=-1,A=-1,r=0,s=0):(A=Ys(A,r,s+1|0,n)|0,o=(S()|0)&-15728641,r=CA(n|0,0,52)|0,r=A|r,o=o|(S()|0),A=(Oe(r,o)|0)==0,i=s,A=A?-1:n,s=o),o=e,t[o>>2]=r,t[o+4>>2]=s,t[e+8>>2]=i,t[e+12>>2]=A}function Zs(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;if(s=wA(e|0,A|0,52)|0,S()|0,s=s&15,i=n+8|0,t[i>>2]=s,(e|0)==0&(A|0)==0|((r|0)>15|(s|0)>(r|0))){r=n,t[r>>2]=0,t[r+4>>2]=0,t[i>>2]=-1,t[n+12>>2]=-1;return}if(e=Ys(e,A,s+1|0,r)|0,i=(S()|0)&-15728641,s=CA(r|0,0,52)|0,s=e|s,i=i|(S()|0),e=n,t[e>>2]=s,t[e+4>>2]=i,e=n+12|0,Oe(s,i)|0){t[e>>2]=r;return}else{t[e>>2]=-1;return}}function rs(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0;if(r=e,A=t[r>>2]|0,r=t[r+4>>2]|0,!((A|0)==0&(r|0)==0)&&(n=wA(A|0,r|0,52)|0,S()|0,n=n&15,l=CA(1,0,(n^15)*3|0)|0,A=KA(l|0,S()|0,A|0,r|0)|0,r=S()|0,l=e,t[l>>2]=A,t[l+4>>2]=r,l=e+8|0,o=t[l>>2]|0,!((n|0)<(o|0)))){for(a=e+12|0,i=n;;){if((i|0)==(o|0)){n=5;break}if(f=(i|0)==(t[a>>2]|0),s=(15-i|0)*3|0,n=wA(A|0,r|0,s|0)|0,S()|0,n=n&7,f&((n|0)==1&!0)){n=7;break}if(!((n|0)==7&!0)){n=10;break}if(f=CA(1,0,s|0)|0,A=KA(A|0,r|0,f|0,S()|0)|0,r=S()|0,f=e,t[f>>2]=A,t[f+4>>2]=r,(i|0)>(o|0))i=i+-1|0;else{n=10;break}}if((n|0)==5){f=e,t[f>>2]=0,t[f+4>>2]=0,t[l>>2]=-1,t[a>>2]=-1;return}else if((n|0)==7){o=CA(1,0,s|0)|0,o=KA(A|0,r|0,o|0,S()|0)|0,l=S()|0,f=e,t[f>>2]=o,t[f+4>>2]=l,t[a>>2]=i+-1;return}else if((n|0)==10)return}}function tn(e){e=+e;var A=0;return A=e<0?e+6.283185307179586:e,+(e>=6.283185307179586?A+-6.283185307179586:A)}function Tr(e,A){return e=e|0,A=A|0,+ZA(+(+k[e>>3]-+k[A>>3]))<17453292519943298e-27?(A=+ZA(+(+k[e+8>>3]-+k[A+8>>3]))<17453292519943298e-27,A|0):(A=0,A|0)}function Vt(e,A){switch(e=+e,A=A|0,A|0){case 1:{e=e<0?e+6.283185307179586:e;break}case 2:{e=e>0?e+-6.283185307179586:e;break}}return+e}function bl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+k[A>>3],n=+k[e>>3],i=+ie(+((s-n)*.5)),r=+ie(+((+k[A+8>>3]-+k[e+8>>3])*.5)),r=i*i+r*(+_e(+s)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2)}function rn(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+k[A>>3],n=+k[e>>3],i=+ie(+((s-n)*.5)),r=+ie(+((+k[A+8>>3]-+k[e+8>>3])*.5)),r=i*i+r*(+_e(+s)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2*6371.007180918475)}function kl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+k[A>>3],n=+k[e>>3],i=+ie(+((s-n)*.5)),r=+ie(+((+k[A+8>>3]-+k[e+8>>3])*.5)),r=i*i+r*(+_e(+s)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2*6371.007180918475*1e3)}function Cl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;return i=+k[A>>3],n=+_e(+i),s=+k[A+8>>3]-+k[e+8>>3],o=n*+ie(+s),r=+k[e>>3],+ +Te(+o,+(+ie(+i)*+_e(+r)-+_e(+s)*(n*+ie(+r))))}function El(e,A,r,n){e=e|0,A=+A,r=+r,n=n|0;var s=0,i=0,o=0,l=0;if(r<1e-16){t[n>>2]=t[e>>2],t[n+4>>2]=t[e+4>>2],t[n+8>>2]=t[e+8>>2],t[n+12>>2]=t[e+12>>2];return}i=A<0?A+6.283185307179586:A,i=A>=6.283185307179586?i+-6.283185307179586:i;do if(i<1e-16)A=+k[e>>3]+r,k[n>>3]=A,s=n;else{if(s=+ZA(+(i+-3.141592653589793))<1e-16,A=+k[e>>3],s){A=A-r,k[n>>3]=A,s=n;break}if(o=+_e(+r),r=+ie(+r),A=o*+ie(+A)+ +_e(+i)*(r*+_e(+A)),A=A>1?1:A,A=+h0(+(A<-1?-1:A)),k[n>>3]=A,+ZA(+(A+-1.5707963267948966))<1e-16){k[n>>3]=1.5707963267948966,k[n+8>>3]=0;return}if(+ZA(+(A+1.5707963267948966))<1e-16){k[n>>3]=-1.5707963267948966,k[n+8>>3]=0;return}if(l=1/+_e(+A),i=r*+ie(+i)*l,r=+k[e>>3],A=l*((o-+ie(+A)*+ie(+r))/+_e(+r)),o=i>1?1:i,A=A>1?1:A,A=+k[e+8>>3]+ +Te(+(o<-1?-1:o),+(A<-1?-1:A)),A>3.141592653589793)do A=A+-6.283185307179586;while(A>3.141592653589793);if(A<-3.141592653589793)do A=A+6.283185307179586;while(A<-3.141592653589793);k[n+8>>3]=A;return}while(!1);if(+ZA(+(A+-1.5707963267948966))<1e-16){k[s>>3]=1.5707963267948966,k[n+8>>3]=0;return}if(+ZA(+(A+1.5707963267948966))<1e-16){k[s>>3]=-1.5707963267948966,k[n+8>>3]=0;return}if(A=+k[e+8>>3],A>3.141592653589793)do A=A+-6.283185307179586;while(A>3.141592653589793);if(A<-3.141592653589793)do A=A+6.283185307179586;while(A<-3.141592653589793);k[n+8>>3]=A}function qs(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(k[A>>3]=+k[20656+(e<<3)>>3],A=0,A|0)}function Sl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(k[A>>3]=+k[20784+(e<<3)>>3],A=0,A|0)}function Ml(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(k[A>>3]=+k[20912+(e<<3)>>3],A=0,A|0)}function Bl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(k[A>>3]=+k[21040+(e<<3)>>3],A=0,A|0)}function bn(e,A){e=e|0,A=A|0;var r=0;return e>>>0>15?(A=4,A|0):(r=G0(7,0,e,((e|0)<0)<<31>>31)|0,r=ft(r|0,S()|0,120,0)|0,e=S()|0,t[A>>2]=r|2,t[A+4>>2]=e,A=0,A|0)}function Js(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;return R=+k[A>>3],m=+k[e>>3],a=+ie(+((R-m)*.5)),i=+k[A+8>>3],f=+k[e+8>>3],o=+ie(+((i-f)*.5)),l=+_e(+m),M=+_e(+R),o=a*a+o*(M*l*o),o=+Te(+ +ye(+o),+ +ye(+(1-o)))*2,a=+k[r>>3],R=+ie(+((a-R)*.5)),n=+k[r+8>>3],i=+ie(+((n-i)*.5)),s=+_e(+a),i=R*R+i*(M*s*i),i=+Te(+ +ye(+i),+ +ye(+(1-i)))*2,a=+ie(+((m-a)*.5)),n=+ie(+((f-n)*.5)),n=a*a+n*(l*s*n),n=+Te(+ +ye(+n),+ +ye(+(1-n)))*2,s=(o+i+n)*.5,+(+mt(+ +ye(+(+et(+(s*.5))*+et(+((s-o)*.5))*+et(+((s-i)*.5))*+et(+((s-n)*.5)))))*4)}function ns(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0;if(l=b,b=b+192|0,i=l+168|0,o=l,s=ar(e,A,i)|0,s|0)return r=s,b=l,r|0;if(_r(e,A,o)|0&&OA(27795,27190,415,27199),A=t[o>>2]|0,(A|0)>0){if(n=+Js(o+8|0,o+8+(((A|0)!=1&1)<<4)|0,i)+0,(A|0)!=1){e=1;do s=e,e=e+1|0,n=n+ +Js(o+8+(s<<4)|0,o+8+(((e|0)%(A|0)|0)<<4)|0,i);while((e|0)<(A|0))}}else n=0;return k[r>>3]=n,r=0,b=l,r|0}function Dl(e,A,r){return e=e|0,A=A|0,r=r|0,e=ns(e,A,r)|0,e|0||(k[r>>3]=+k[r>>3]*6371.007180918475*6371.007180918475),e|0}function _l(e,A,r){return e=e|0,A=A|0,r=r|0,e=ns(e,A,r)|0,e|0||(k[r>>3]=+k[r>>3]*6371.007180918475*6371.007180918475*1e3*1e3),e|0}function Tl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(l=b,b=b+176|0,o=l,e=or(e,A,o)|0,e|0)return o=e,b=l,o|0;if(k[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,b=l,o|0;A=e+-1|0,e=0,n=+k[o+8>>3],s=+k[o+16>>3],i=0;do e=e+1|0,f=n,n=+k[o+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=s,s=+k[o+8+(e<<4)+8>>3],a=+ie(+((s-a)*.5)),a=m*m+a*(+_e(+n)*+_e(+f)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)<(A|0));return k[r>>3]=i,o=0,b=l,o|0}function jl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(l=b,b=b+176|0,o=l,e=or(e,A,o)|0,e|0)return o=e,i=+k[r>>3],i=i*6371.007180918475,k[r>>3]=i,b=l,o|0;if(k[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,i=0,i=i*6371.007180918475,k[r>>3]=i,b=l,o|0;A=e+-1|0,e=0,n=+k[o+8>>3],s=+k[o+16>>3],i=0;do e=e+1|0,f=n,n=+k[o+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=s,s=+k[o+8+(e<<4)+8>>3],a=+ie(+((s-a)*.5)),a=m*m+a*(+_e(+f)*+_e(+n)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)!=(A|0));return k[r>>3]=i,o=0,m=i,m=m*6371.007180918475,k[r>>3]=m,b=l,o|0}function Rl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(l=b,b=b+176|0,o=l,e=or(e,A,o)|0,e|0)return o=e,i=+k[r>>3],i=i*6371.007180918475,i=i*1e3,k[r>>3]=i,b=l,o|0;if(k[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,i=0,i=i*6371.007180918475,i=i*1e3,k[r>>3]=i,b=l,o|0;A=e+-1|0,e=0,n=+k[o+8>>3],s=+k[o+16>>3],i=0;do e=e+1|0,f=n,n=+k[o+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=s,s=+k[o+8+(e<<4)+8>>3],a=+ie(+((s-a)*.5)),a=m*m+a*(+_e(+f)*+_e(+n)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)!=(A|0));return k[r>>3]=i,o=0,m=i,m=m*6371.007180918475,m=m*1e3,k[r>>3]=m,b=l,o|0}function Il(e){e=e|0;var A=0,r=0,n=0;return A=Qt(1,12)|0,A||OA(27280,27235,49,27293),r=e+4|0,n=t[r>>2]|0,n|0?(n=n+8|0,t[n>>2]=A,t[r>>2]=A,A|0):(t[e>>2]|0&&OA(27310,27235,61,27333),n=e,t[n>>2]=A,t[r>>2]=A,A|0)}function Ll(e,A){e=e|0,A=A|0;var r=0,n=0;return n=y0(24)|0,n||OA(27347,27235,78,27361),t[n>>2]=t[A>>2],t[n+4>>2]=t[A+4>>2],t[n+8>>2]=t[A+8>>2],t[n+12>>2]=t[A+12>>2],t[n+16>>2]=0,A=e+4|0,r=t[A>>2]|0,r|0?(t[r+16>>2]=n,t[A>>2]=n,n|0):(t[e>>2]|0&&OA(27376,27235,82,27361),t[e>>2]=n,t[A>>2]=n,n|0)}function Xs(e){e=e|0;var A=0,r=0,n=0,s=0;if(e)for(n=1;;){if(A=t[e>>2]|0,A|0)do{if(r=t[A>>2]|0,r|0)do s=r,r=t[r+16>>2]|0,qA(s);while((r|0)!=0);s=A,A=t[A+8>>2]|0,qA(s)}while((A|0)!=0);if(A=e,e=t[e+8>>2]|0,n||qA(A),e)n=0;else break}}function Nl(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0,fe=0,de=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,he=0;if(s=e+8|0,t[s>>2]|0)return he=1,he|0;if(n=t[e>>2]|0,!n)return he=0,he|0;A=n,r=0;do r=r+1|0,A=t[A+8>>2]|0;while((A|0)!=0);if(r>>>0<2)return he=0,he|0;ve=y0(r<<2)|0,ve||OA(27396,27235,317,27415),SA=y0(r<<5)|0,SA||OA(27437,27235,321,27415),t[e>>2]=0,zA=e+4|0,t[zA>>2]=0,t[s>>2]=0,r=0,HA=0,BA=0,M=0;A:for(;;){if(m=t[n>>2]|0,m){i=0,o=m;do{if(a=+k[o+8>>3],A=o,o=t[o+16>>2]|0,f=(o|0)==0,s=f?m:o,l=+k[s+8>>3],+ZA(+(a-l))>3.141592653589793){he=14;break}i=i+(l-a)*(+k[A>>3]+ +k[s>>3])}while(!f);if((he|0)==14){he=0,i=0,A=m;do U=+k[A+8>>3],ne=A+16|0,Ee=t[ne>>2]|0,Ee=(Ee|0)==0?m:Ee,Z=+k[Ee+8>>3],i=i+(+k[A>>3]+ +k[Ee>>3])*((Z<0?Z+6.283185307179586:Z)-(U<0?U+6.283185307179586:U)),A=t[((A|0)==0?n:ne)>>2]|0;while((A|0)!=0)}i>0?(t[ve+(HA<<2)>>2]=n,HA=HA+1|0,s=BA,A=M):he=19}else he=19;if((he|0)==19){he=0;do if(r){if(A=r+8|0,t[A>>2]|0){he=21;break A}if(r=Qt(1,12)|0,!r){he=23;break A}t[A>>2]=r,s=r+4|0,o=r,A=M}else if(M){s=zA,o=M+8|0,A=n,r=e;break}else if(t[e>>2]|0){he=27;break A}else{s=zA,o=e,A=n,r=e;break}while(!1);if(t[o>>2]=n,t[s>>2]=n,o=SA+(BA<<5)|0,f=t[n>>2]|0,f){for(m=SA+(BA<<5)+8|0,k[m>>3]=17976931348623157e292,M=SA+(BA<<5)+24|0,k[M>>3]=17976931348623157e292,k[o>>3]=-17976931348623157e292,R=SA+(BA<<5)+16|0,k[R>>3]=-17976931348623157e292,nA=17976931348623157e292,q=-17976931348623157e292,s=0,I=f,a=17976931348623157e292,G=17976931348623157e292,Y=-17976931348623157e292,l=-17976931348623157e292;i=+k[I>>3],U=+k[I+8>>3],I=t[I+16>>2]|0,L=(I|0)==0,Z=+k[(L?f:I)+8>>3],i>3]=i,a=i),U>3]=U,G=U),i>Y?k[o>>3]=i:i=Y,U>l&&(k[R>>3]=U,l=U),nA=U>0&Uq?U:q,s=s|+ZA(+(U-Z))>3.141592653589793,!L;)Y=i;s&&(k[R>>3]=q,k[M>>3]=nA)}else t[o>>2]=0,t[o+4>>2]=0,t[o+8>>2]=0,t[o+12>>2]=0,t[o+16>>2]=0,t[o+20>>2]=0,t[o+24>>2]=0,t[o+28>>2]=0;s=BA+1|0}if(ne=n+8|0,n=t[ne>>2]|0,t[ne>>2]=0,n)BA=s,M=A;else{he=45;break}}if((he|0)==21)OA(27213,27235,35,27247);else if((he|0)==23)OA(27267,27235,37,27247);else if((he|0)==27)OA(27310,27235,61,27333);else if((he|0)==45){A:do if((HA|0)>0){for(ne=(s|0)==0,de=s<<2,Ee=(e|0)==0,fe=0,A=0;;){if(QA=t[ve+(fe<<2)>>2]|0,ne)he=73;else{if(BA=y0(de)|0,!BA){he=50;break}if(zA=y0(de)|0,!zA){he=52;break}e:do if(Ee)r=0;else{for(s=0,r=0,o=e;n=SA+(s<<5)|0,Ai(t[o>>2]|0,n,t[QA>>2]|0)|0?(t[BA+(r<<2)>>2]=o,t[zA+(r<<2)>>2]=n,L=r+1|0):L=r,o=t[o+8>>2]|0,o;)s=s+1|0,r=L;if((L|0)>0)if(n=t[BA>>2]|0,(L|0)==1)r=n;else for(R=0,I=-1,r=n,M=n;;){for(f=t[M>>2]|0,n=0,o=0;s=t[t[BA+(o<<2)>>2]>>2]|0,(s|0)==(f|0)?m=n:m=n+((Ai(s,t[zA+(o<<2)>>2]|0,t[f>>2]|0)|0)&1)|0,o=o+1|0,(o|0)!=(L|0);)n=m;if(s=(m|0)>(I|0),r=s?M:r,n=R+1|0,(n|0)==(L|0))break e;R=n,I=s?m:I,M=t[BA+(n<<2)>>2]|0}else r=0}while(!1);if(qA(BA),qA(zA),r){if(s=r+4|0,n=t[s>>2]|0,n)r=n+8|0;else if(t[r>>2]|0){he=70;break}t[r>>2]=QA,t[s>>2]=QA}else he=73}if((he|0)==73){if(he=0,A=t[QA>>2]|0,A|0)do zA=A,A=t[A+16>>2]|0,qA(zA);while((A|0)!=0);qA(QA),A=1}if(fe=fe+1|0,(fe|0)>=(HA|0)){Ve=A;break A}}(he|0)==50?OA(27452,27235,249,27471):(he|0)==52?OA(27490,27235,252,27471):(he|0)==70&&OA(27310,27235,61,27333)}else Ve=0;while(!1);return qA(ve),qA(SA),he=Ve,he|0}return 0}function Ai(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(!(c0(A,r)|0)||(A=Ft(A)|0,n=+k[r>>3],s=+k[r+8>>3],s=A&s<0?s+6.283185307179586:s,e=t[e>>2]|0,!e))return e=0,e|0;if(A){A=0,f=s,r=e;A:for(;;){for(;o=+k[r>>3],s=+k[r+8>>3],r=r+16|0,m=t[r>>2]|0,m=(m|0)==0?e:m,i=+k[m>>3],l=+k[m+8>>3],o>i?(a=o,o=l):(a=i,i=o,o=s,s=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=t[r>>2]|0,!r){r=22;break A}if(l=o<0?o+6.283185307179586:o,o=s<0?s+6.283185307179586:s,f=l==f|o==f?f+-2220446049250313e-31:f,a=l+(o-l)*((n-i)/(a-i)),(a<0?a+6.283185307179586:a)>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}else{A=0,f=s,r=e;A:for(;;){for(;o=+k[r>>3],s=+k[r+8>>3],r=r+16|0,m=t[r>>2]|0,m=(m|0)==0?e:m,i=+k[m>>3],l=+k[m+8>>3],o>i?(a=o,o=l):(a=i,i=o,o=s,s=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=t[r>>2]|0,!r){r=22;break A}if(f=o==f|s==f?f+-2220446049250313e-31:f,o+(s-o)*((n-i)/(a-i))>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}return 0}function _0(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0;if(q=b,b=b+32|0,nA=q+16|0,Y=q,i=wA(e|0,A|0,52)|0,S()|0,i=i&15,I=wA(r|0,n|0,52)|0,S()|0,(i|0)!=(I&15|0))return nA=12,b=q,nA|0;if(f=wA(e|0,A|0,45)|0,S()|0,f=f&127,m=wA(r|0,n|0,45)|0,S()|0,m=m&127,f>>>0>121|m>>>0>121)return nA=5,b=q,nA|0;if(I=(f|0)!=(m|0),I){if(l=sr(f,m)|0,(l|0)==7)return nA=1,b=q,nA|0;a=sr(m,f)|0,(a|0)==7?OA(27514,27538,161,27548):(L=l,o=a)}else L=0,o=0;M=je(f)|0,R=je(m)|0,t[nA>>2]=0,t[nA+4>>2]=0,t[nA+8>>2]=0,t[nA+12>>2]=0;do if(L){if(m=t[4272+(f*28|0)+(L<<2)>>2]|0,l=(m|0)>0,R)if(l){f=0,a=r,l=n;do a=gl(a,l)|0,l=S()|0,o=Ut(o)|0,(o|0)==1&&(o=Ut(1)|0),f=f+1|0;while((f|0)!=(m|0));m=o,f=a,a=l}else m=o,f=r,a=n;else if(l){f=0,a=r,l=n;do a=Jn(a,l)|0,l=S()|0,o=Ut(o)|0,f=f+1|0;while((f|0)!=(m|0));m=o,f=a,a=l}else m=o,f=r,a=n;if(As(f,a,nA)|0,I||OA(27563,27538,191,27548),l=(M|0)!=0,o=(R|0)!=0,l&o&&OA(27590,27538,192,27548),l){if(o=Pt(e,A)|0,(o|0)==7){i=5;break}if(xA[22e3+(o*7|0)+L>>0]|0){i=1;break}a=t[21168+(o*28|0)+(L<<2)>>2]|0,f=a}else if(o){if(o=Pt(f,a)|0,(o|0)==7){i=5;break}if(xA[22e3+(o*7|0)+m>>0]|0){i=1;break}f=0,a=t[21168+(m*28|0)+(o<<2)>>2]|0}else f=0,a=0;if((f|a|0)<0)i=5;else{if((a|0)>0){l=nA+4|0,o=0;do D0(l),o=o+1|0;while((o|0)!=(a|0))}if(t[Y>>2]=0,t[Y+4>>2]=0,t[Y+8>>2]=0,pn(Y,L),i|0)for(;Jt(i)|0?kr(Y):Ht(Y),(i|0)>1;)i=i+-1|0;if((f|0)>0){i=0;do D0(Y),i=i+1|0;while((i|0)!=(f|0))}G=nA+4|0,$e(G,Y,G),Me(G),G=51}}else if(As(r,n,nA)|0,(M|0)!=0&(R|0)!=0)if((m|0)!=(f|0)&&OA(27621,27538,261,27548),o=Pt(e,A)|0,i=Pt(r,n)|0,(o|0)==7|(i|0)==7)i=5;else if(xA[22e3+(o*7|0)+i>>0]|0)i=1;else if(o=t[21168+(o*28|0)+(i<<2)>>2]|0,(o|0)>0){l=nA+4|0,i=0;do D0(l),i=i+1|0;while((i|0)!=(o|0));G=51}else G=51;else G=51;while(!1);return(G|0)==51&&(i=nA+4|0,t[s>>2]=t[i>>2],t[s+4>>2]=t[i+4>>2],t[s+8>>2]=t[i+8>>2],i=0),nA=i,b=q,nA|0}function ei(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0;if(G=b,b=b+48|0,f=G+36|0,o=G+24|0,l=G+12|0,a=G,s=wA(e|0,A|0,52)|0,S()|0,s=s&15,R=wA(e|0,A|0,45)|0,S()|0,R=R&127,R>>>0>121)return n=5,b=G,n|0;if(m=je(R)|0,CA(s|0,0,52)|0,Y=S()|0|134225919,i=n,t[i>>2]=-1,t[i+4>>2]=Y,!s)return s=St(r)|0,(s|0)==7||(s=nr(R,s)|0,(s|0)==127)?(Y=1,b=G,Y|0):(I=CA(s|0,0,45)|0,L=S()|0,R=n,L=t[R+4>>2]&-1040385|L,Y=n,t[Y>>2]=t[R>>2]|I,t[Y+4>>2]=L,Y=0,b=G,Y|0);for(t[f>>2]=t[r>>2],t[f+4>>2]=t[r+4>>2],t[f+8>>2]=t[r+8>>2],r=s;;){if(i=r,r=r+-1|0,t[o>>2]=t[f>>2],t[o+4>>2]=t[f+4>>2],t[o+8>>2]=t[f+8>>2],Jt(i)|0){if(s=wr(f)|0,s|0){r=13;break}t[l>>2]=t[f>>2],t[l+4>>2]=t[f+4>>2],t[l+8>>2]=t[f+8>>2],kr(l)}else{if(s=gn(f)|0,s|0){r=13;break}t[l>>2]=t[f>>2],t[l+4>>2]=t[f+4>>2],t[l+8>>2]=t[f+8>>2],Ht(l)}if(yt(o,l,a),Me(a),s=n,q=t[s>>2]|0,s=t[s+4>>2]|0,Z=(15-i|0)*3|0,nA=CA(7,0,Z|0)|0,s=s&~(S()|0),Z=CA(St(a)|0,0,Z|0)|0,s=S()|0|s,Y=n,t[Y>>2]=Z|q&~nA,t[Y+4>>2]=s,(i|0)<=1){r=14;break}}A:do if((r|0)!=13&&(r|0)==14)if((t[f>>2]|0)<=1&&(t[f+4>>2]|0)<=1&&(t[f+8>>2]|0)<=1){r=St(f)|0,s=nr(R,r)|0,(s|0)==127?a=0:a=je(s)|0;e:do if(r){if(m){if(s=Pt(e,A)|0,(s|0)==7){s=5;break A}if(i=t[21376+(s*28|0)+(r<<2)>>2]|0,(i|0)>0){s=r,r=0;do s=Gt(s)|0,r=r+1|0;while((r|0)!=(i|0))}else s=r;if((s|0)==1){s=9;break A}r=nr(R,s)|0,(r|0)==127&&OA(27648,27538,411,27678),je(r)|0?OA(27693,27538,412,27678):(L=r,I=i,M=s)}else L=s,I=0,M=r;if(l=t[4272+(R*28|0)+(M<<2)>>2]|0,(l|0)<=-1&&OA(27724,27538,419,27678),!a){if((I|0)<0){s=5;break A}if(I|0){i=n,s=0,r=t[i>>2]|0,i=t[i+4>>2]|0;do r=lr(r,i)|0,i=S()|0,Z=n,t[Z>>2]=r,t[Z+4>>2]=i,s=s+1|0;while((s|0)<(I|0))}if((l|0)<=0){s=L,r=58;break}for(i=n,s=0,r=t[i>>2]|0,i=t[i+4>>2]|0;;)if(r=lr(r,i)|0,i=S()|0,Z=n,t[Z>>2]=r,t[Z+4>>2]=i,s=s+1|0,(s|0)==(l|0)){s=L,r=58;break e}}if(o=sr(L,R)|0,(o|0)==7&&OA(27514,27538,428,27678),s=n,r=t[s>>2]|0,s=t[s+4>>2]|0,(l|0)>0){i=0;do r=lr(r,s)|0,s=S()|0,Z=n,t[Z>>2]=r,t[Z+4>>2]=s,i=i+1|0;while((i|0)!=(l|0))}if(s=Pt(r,s)|0,(s|0)==7&&OA(27795,27538,440,27678),r=Et(L)|0,r=t[(r?21792:21584)+(o*28|0)+(s<<2)>>2]|0,(r|0)<0&&OA(27795,27538,454,27678),!r)s=L,r=58;else{o=n,s=0,i=t[o>>2]|0,o=t[o+4>>2]|0;do i=qn(i,o)|0,o=S()|0,Z=n,t[Z>>2]=i,t[Z+4>>2]=o,s=s+1|0;while((s|0)<(r|0));s=L,r=58}}else if((m|0)!=0&(a|0)!=0){if(r=Pt(e,A)|0,i=n,i=Pt(t[i>>2]|0,t[i+4>>2]|0)|0,(r|0)==7|(i|0)==7){s=5;break A}if(i=t[21376+(r*28|0)+(i<<2)>>2]|0,(i|0)<0){s=5;break A}if(!i)r=59;else{l=n,r=0,o=t[l>>2]|0,l=t[l+4>>2]|0;do o=lr(o,l)|0,l=S()|0,Z=n,t[Z>>2]=o,t[Z+4>>2]=l,r=r+1|0;while((r|0)<(i|0));r=58}}else r=58;while(!1);if((r|0)==58&&a&&(r=59),(r|0)==59&&(Z=n,(Pt(t[Z>>2]|0,t[Z+4>>2]|0)|0)==1)){s=9;break}Z=n,nA=t[Z>>2]|0,Z=t[Z+4>>2]&-1040385,q=CA(s|0,0,45)|0,Z=Z|(S()|0),s=n,t[s>>2]=nA|q,t[s+4>>2]=Z,s=0}else s=1;while(!1);return Z=s,b=G,Z|0}function Fl(e,A,r,n,s,i){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0;var o=0,l=0;return l=b,b=b+16|0,o=l,s?e=15:(e=_0(e,A,r,n,o)|0,e||(Zr(o,i),e=0)),b=l,e|0}function Pl(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0;return o=b,b=b+16|0,i=o,n?r=15:(r=Mt(r,i)|0,r||(r=ei(e,A,i,s)|0)),b=o,r|0}function Ql(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0;return a=b,b=b+32|0,o=a+12|0,l=a,i=_0(e,A,e,A,o)|0,i|0?(l=i,b=a,l|0):(e=_0(e,A,r,n,l)|0,e|0?(l=e,b=a,l|0):(o=Er(o,l)|0,l=s,t[l>>2]=o,t[l+4>>2]=((o|0)<0)<<31>>31,l=0,b=a,l|0))}function Ol(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0;return a=b,b=b+32|0,o=a+12|0,l=a,i=_0(e,A,e,A,o)|0,!i&&(i=_0(e,A,r,n,l)|0,!i)?(n=Er(o,l)|0,n=KA(n|0,((n|0)<0)<<31>>31|0,1,0)|0,o=S()|0,l=s,t[l>>2]=n,t[l+4>>2]=o,l=0,b=a,l|0):(l=i,b=a,l|0)}function zl(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0,fe=0;if(QA=b,b=b+48|0,BA=QA+24|0,o=QA+12|0,zA=QA,i=_0(e,A,e,A,BA)|0,!i&&(i=_0(e,A,r,n,o)|0,!i)){Z=Er(BA,o)|0,U=((Z|0)<0)<<31>>31,t[BA>>2]=0,t[BA+4>>2]=0,t[BA+8>>2]=0,t[o>>2]=0,t[o+4>>2]=0,t[o+8>>2]=0,_0(e,A,e,A,BA)|0&&OA(27795,27538,692,27747),_0(e,A,r,n,o)|0&&OA(27795,27538,697,27747),qr(BA),qr(o),m=(Z|0)==0?0:1/+(Z|0),r=t[BA>>2]|0,G=m*+((t[o>>2]|0)-r|0),Y=BA+4|0,n=t[Y>>2]|0,nA=m*+((t[o+4>>2]|0)-n|0),q=BA+8|0,i=t[q>>2]|0,m=m*+((t[o+8>>2]|0)-i|0),t[zA>>2]=r,M=zA+4|0,t[M>>2]=n,R=zA+8|0,t[R>>2]=i;A:do if((Z|0)<0)i=0;else for(I=0,L=0;;){a=+(L>>>0)+4294967296*+(I|0),fe=G*a+ +(r|0),l=nA*a+ +(n|0),a=m*a+ +(i|0),r=~~+Sn(+fe),o=~~+Sn(+l),i=~~+Sn(+a),fe=+ZA(+(+(r|0)-fe)),l=+ZA(+(+(o|0)-l)),a=+ZA(+(+(i|0)-a));do if(fe>l&fe>a)r=0-(o+i)|0,n=o;else if(f=0-r|0,l>a){n=f-i|0;break}else{n=o,i=f-o|0;break}while(!1);if(t[zA>>2]=r,t[M>>2]=n,t[R>>2]=i,Jr(zA),i=ei(e,A,zA,s+(L<<3)|0)|0,i|0)break A;if(!((I|0)<(U|0)|(I|0)==(U|0)&L>>>0>>0)){i=0;break A}r=KA(L|0,I|0,1,0)|0,n=S()|0,I=n,L=r,r=t[BA>>2]|0,n=t[Y>>2]|0,i=t[q>>2]|0}while(!1);return zA=i,b=QA,zA|0}return zA=i,b=QA,zA|0}function G0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;if((r|0)==0&(n|0)==0)return s=0,i=1,YA(s|0),i|0;i=e,s=A,e=1,A=0;do o=(r&1|0)==0&!0,e=ft((o?1:i)|0,(o?0:s)|0,e|0,A|0)|0,A=S()|0,r=hi(r|0,n|0,1)|0,n=S()|0,i=ft(i|0,s|0,i|0,s|0)|0,s=S()|0;while(!((r|0)==0&(n|0)==0));return YA(A|0),e|0}function ss(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0;l=b,b=b+16|0,i=l,o=wA(e|0,A|0,52)|0,S()|0,o=o&15;do if(o){if(s=ar(e,A,i)|0,!s){f=+k[i>>3],a=1/+_e(+f),m=+k[25968+(o<<3)>>3],k[r>>3]=f+m,k[r+8>>3]=f-m,f=+k[i+8>>3],a=m*a,k[r+16>>3]=a+f,k[r+24>>3]=f-a;break}return o=s,b=l,o|0}else{if(s=wA(e|0,A|0,45)|0,S()|0,s=s&127,s>>>0>121)return o=5,b=l,o|0;i=22064+(s<<5)|0,t[r>>2]=t[i>>2],t[r+4>>2]=t[i+4>>2],t[r+8>>2]=t[i+8>>2],t[r+12>>2]=t[i+12>>2],t[r+16>>2]=t[i+16>>2],t[r+20>>2]=t[i+20>>2],t[r+24>>2]=t[i+24>>2],t[r+28>>2]=t[i+28>>2];break}while(!1);return VA(r,n?1.4:1.1),n=26096+(o<<3)|0,(t[n>>2]|0)==(e|0)&&(t[n+4>>2]|0)==(A|0)&&(k[r>>3]=1.5707963267948966),o=26224+(o<<3)|0,(t[o>>2]|0)==(e|0)&&(t[o+4>>2]|0)==(A|0)&&(k[r+8>>3]=-1.5707963267948966),+k[r>>3]!=1.5707963267948966&&+k[r+8>>3]!=-1.5707963267948966?(o=0,b=l,o|0):(k[r+16>>3]=3.141592653589793,k[r+24>>3]=-3.141592653589793,o=0,b=l,o|0)}function Hl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0;f=b,b=b+48|0,o=f+32|0,i=f+40|0,l=f,Dt(o,0,0,0),a=t[o>>2]|0,o=t[o+4>>2]|0;do if(r>>>0<=15){if(s=sn(n)|0,s|0){n=l,t[n>>2]=0,t[n+4>>2]=0,t[l+8>>2]=s,t[l+12>>2]=-1,n=l+16|0,a=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,xA[n+12>>0]=0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}if(s=Qt((t[A+8>>2]|0)+1|0,32)|0,s){is(A,s),m=l,t[m>>2]=a,t[m+4>>2]=o,t[l+8>>2]=0,t[l+12>>2]=r,t[l+16>>2]=n,t[l+20>>2]=A,t[l+24>>2]=s,xA[l+28>>0]=0,a=l+29|0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}else{n=l,t[n>>2]=0,t[n+4>>2]=0,t[l+8>>2]=13,t[l+12>>2]=-1,n=l+16|0,a=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,xA[n+12>>0]=0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}}else a=l,t[a>>2]=0,t[a+4>>2]=0,t[l+8>>2]=4,t[l+12>>2]=-1,a=l+16|0,m=l+29|0,t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,xA[a+12>>0]=0,xA[m>>0]=xA[i>>0]|0,xA[m+1>>0]=xA[i+1>>0]|0,xA[m+2>>0]=xA[i+2>>0]|0;while(!1);kn(l),t[e>>2]=t[l>>2],t[e+4>>2]=t[l+4>>2],t[e+8>>2]=t[l+8>>2],t[e+12>>2]=t[l+12>>2],t[e+16>>2]=t[l+16>>2],t[e+20>>2]=t[l+20>>2],t[e+24>>2]=t[l+24>>2],t[e+28>>2]=t[l+28>>2],b=f}function kn(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0;if(U=b,b=b+336|0,I=U+168|0,L=U,n=e,r=t[n>>2]|0,n=t[n+4>>2]|0,(r|0)==0&(n|0)==0){b=U;return}if(A=e+28|0,xA[A>>0]|0?(r=ti(r,n)|0,n=S()|0):xA[A>>0]=1,Z=e+20|0,!(t[t[Z>>2]>>2]|0)){A=e+24|0,r=t[A>>2]|0,r|0&&qA(r),q=e,t[q>>2]=0,t[q+4>>2]=0,t[e+8>>2]=0,t[Z>>2]=0,t[e+12>>2]=-1,t[e+16>>2]=0,t[A>>2]=0,b=U;return}q=e+16|0,A=t[q>>2]|0,s=A&15;A:do if((r|0)==0&(n|0)==0)nA=e+24|0;else{G=e+12|0,M=(s|0)==3,m=A&255,a=(s|1|0)==3,R=e+24|0,f=(s+-1|0)>>>0<3,o=(s|2|0)==3,l=L+8|0;e:for(;;){if(i=wA(r|0,n|0,52)|0,S()|0,i=i&15,(i|0)==(t[G>>2]|0)){switch(m&15){case 0:case 2:case 3:{if(s=ar(r,n,I)|0,s|0){Y=15;break e}if(os(t[Z>>2]|0,t[R>>2]|0,I)|0){Y=19;break e}break}}if(a&&(s=t[(t[Z>>2]|0)+4>>2]|0,t[I>>2]=t[s>>2],t[I+4>>2]=t[s+4>>2],t[I+8>>2]=t[s+8>>2],t[I+12>>2]=t[s+12>>2],c0(26832,I)|0)){if(Xn(t[(t[Z>>2]|0)+4>>2]|0,i,L)|0){Y=25;break}if(s=L,(t[s>>2]|0)==(r|0)&&(t[s+4>>2]|0)==(n|0)){Y=29;break}}if(f){if(s=_r(r,n,I)|0,s|0){Y=32;break}if(ss(r,n,L,0)|0){Y=36;break}if(o&&ni(t[Z>>2]|0,t[R>>2]|0,I,L)|0){Y=42;break}if(a&&si(t[Z>>2]|0,t[R>>2]|0,I,L)|0){Y=42;break}}if(M){if(A=ss(r,n,I,1)|0,s=t[R>>2]|0,A|0){Y=45;break}if(Ne(s,I)|0){if(aA(L,I),H(I,t[R>>2]|0)|0){Y=53;break}if(os(t[Z>>2]|0,t[R>>2]|0,l)|0){Y=53;break}if(si(t[Z>>2]|0,t[R>>2]|0,L,I)|0){Y=53;break}}}}do if((i|0)<(t[G>>2]|0)){if(A=ss(r,n,I,1)|0,s=t[R>>2]|0,A|0){Y=58;break e}if(!(Ne(s,I)|0)){Y=73;break}if(H(t[R>>2]|0,I)|0&&(aA(L,I),ni(t[Z>>2]|0,t[R>>2]|0,L,I)|0)){Y=65;break e}if(r=Ks(r,n,i+1|0,L)|0,r|0){Y=67;break e}n=L,r=t[n>>2]|0,n=t[n+4>>2]|0}else Y=73;while(!1);if((Y|0)==73&&(Y=0,r=ti(r,n)|0,n=S()|0),(r|0)==0&(n|0)==0){nA=R;break A}}switch(Y|0){case 15:{A=t[R>>2]|0,A|0&&qA(A),Y=e,t[Y>>2]=0,t[Y+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=s,Y=20;break}case 19:{t[e>>2]=r,t[e+4>>2]=n,Y=20;break}case 25:{OA(27795,27761,470,27772);break}case 29:{t[e>>2]=r,t[e+4>>2]=n,b=U;return}case 32:{A=t[R>>2]|0,A|0&&qA(A),nA=e,t[nA>>2]=0,t[nA+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=s,b=U;return}case 36:{OA(27795,27761,493,27772);break}case 42:{t[e>>2]=r,t[e+4>>2]=n,b=U;return}case 45:{s|0&&qA(s),Y=e,t[Y>>2]=0,t[Y+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=A,Y=55;break}case 53:{t[e>>2]=r,t[e+4>>2]=n,Y=55;break}case 58:{s|0&&qA(s),Y=e,t[Y>>2]=0,t[Y+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=A,Y=71;break}case 65:{t[e>>2]=r,t[e+4>>2]=n,Y=71;break}case 67:{A=t[R>>2]|0,A|0&&qA(A),nA=e,t[nA>>2]=0,t[nA+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[R>>2]=0,t[e+8>>2]=r,b=U;return}}if((Y|0)==20){b=U;return}else if((Y|0)==55){b=U;return}else if((Y|0)==71){b=U;return}}while(!1);A=t[nA>>2]|0,A|0&&qA(A),Y=e,t[Y>>2]=0,t[Y+4>>2]=0,t[e+8>>2]=0,t[Z>>2]=0,t[e+12>>2]=-1,t[q>>2]=0,t[nA>>2]=0,b=U}function ti(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0;M=b,b=b+16|0,m=M,n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0;do if(n){for(;r=CA(n+4095|0,0,52)|0,s=S()|0|A&-15728641,i=(15-n|0)*3|0,o=CA(7,0,i|0)|0,l=S()|0,r=r|e|o,s=s|l,a=wA(e|0,A|0,i|0)|0,S()|0,a=a&7,n=n+-1|0,!(a>>>0<6);)if(n)A=s,e=r;else{f=4;break}if((f|0)==4){r=wA(r|0,s|0,45)|0,S()|0;break}return m=(a|0)==0&(Oe(r,s)|0)!=0,m=CA((m?2:1)+a|0,0,i|0)|0,f=S()|0|A&~l,m=m|e&~o,YA(f|0),b=M,m|0}while(!1);return r=r&127,r>>>0>120?(f=0,m=0,YA(f|0),b=M,m|0):(Dt(m,0,r+1|0,0),f=t[m+4>>2]|0,m=t[m>>2]|0,YA(f|0),b=M,m|0)}function Gl(e,A,r,n,s,i){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,i=i|0;var o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0;Y=b,b=b+160|0,M=Y+80|0,l=Y+64|0,R=Y+112|0,G=Y,Hl(M,e,A,r),f=M,ts(l,t[f>>2]|0,t[f+4>>2]|0,A),f=l,a=t[f>>2]|0,f=t[f+4>>2]|0,o=t[M+8>>2]|0,I=R+4|0,t[I>>2]=t[M>>2],t[I+4>>2]=t[M+4>>2],t[I+8>>2]=t[M+8>>2],t[I+12>>2]=t[M+12>>2],t[I+16>>2]=t[M+16>>2],t[I+20>>2]=t[M+20>>2],t[I+24>>2]=t[M+24>>2],t[I+28>>2]=t[M+28>>2],I=G,t[I>>2]=a,t[I+4>>2]=f,I=G+8|0,t[I>>2]=o,e=G+12|0,A=R,r=e+36|0;do t[e>>2]=t[A>>2],e=e+4|0,A=A+4|0;while((e|0)<(r|0));if(R=G+48|0,t[R>>2]=t[l>>2],t[R+4>>2]=t[l+4>>2],t[R+8>>2]=t[l+8>>2],t[R+12>>2]=t[l+12>>2],(a|0)==0&(f|0)==0)return G=o,b=Y,G|0;r=G+16|0,m=G+24|0,M=G+28|0,o=0,l=0,A=a,e=f;do{if(!((o|0)<(s|0)|(o|0)==(s|0)&l>>>0>>0)){L=4;break}if(f=l,l=KA(l|0,o|0,1,0)|0,o=S()|0,f=i+(f<<3)|0,t[f>>2]=A,t[f+4>>2]=e,rs(R),e=R,A=t[e>>2]|0,e=t[e+4>>2]|0,(A|0)==0&(e|0)==0){if(kn(r),A=r,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0){L=10;break}Zs(e,A,t[M>>2]|0,R),e=R,A=t[e>>2]|0,e=t[e+4>>2]|0}f=G,t[f>>2]=A,t[f+4>>2]=e}while(!((A|0)==0&(e|0)==0));return(L|0)==4?(e=G+40|0,A=t[e>>2]|0,A|0&&qA(A),L=G+16|0,t[L>>2]=0,t[L+4>>2]=0,t[m>>2]=0,t[G+36>>2]=0,t[M>>2]=-1,t[G+32>>2]=0,t[e>>2]=0,Zs(0,0,0,R),t[G>>2]=0,t[G+4>>2]=0,t[I>>2]=0,G=14,b=Y,G|0):((L|0)==10&&(t[G>>2]=0,t[G+4>>2]=0,t[I>>2]=t[m>>2]),G=t[I>>2]|0,b=Y,G|0)}function Ul(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0;if(M=b,b=b+48|0,a=M+32|0,l=M+40|0,f=M,!(t[e>>2]|0))return m=n,t[m>>2]=0,t[m+4>>2]=0,m=0,b=M,m|0;Dt(a,0,0,0),o=a,s=t[o>>2]|0,o=t[o+4>>2]|0;do if(A>>>0>15)m=f,t[m>>2]=0,t[m+4>>2]=0,t[f+8>>2]=4,t[f+12>>2]=-1,m=f+16|0,r=f+29|0,t[m>>2]=0,t[m+4>>2]=0,t[m+8>>2]=0,xA[m+12>>0]=0,xA[r>>0]=xA[l>>0]|0,xA[r+1>>0]=xA[l+1>>0]|0,xA[r+2>>0]=xA[l+2>>0]|0,r=4,m=9;else{if(r=sn(r)|0,r|0){a=f,t[a>>2]=0,t[a+4>>2]=0,t[f+8>>2]=r,t[f+12>>2]=-1,a=f+16|0,m=f+29|0,t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,xA[a+12>>0]=0,xA[m>>0]=xA[l>>0]|0,xA[m+1>>0]=xA[l+1>>0]|0,xA[m+2>>0]=xA[l+2>>0]|0,m=9;break}if(r=Qt((t[e+8>>2]|0)+1|0,32)|0,!r){m=f,t[m>>2]=0,t[m+4>>2]=0,t[f+8>>2]=13,t[f+12>>2]=-1,m=f+16|0,r=f+29|0,t[m>>2]=0,t[m+4>>2]=0,t[m+8>>2]=0,xA[m+12>>0]=0,xA[r>>0]=xA[l>>0]|0,xA[r+1>>0]=xA[l+1>>0]|0,xA[r+2>>0]=xA[l+2>>0]|0,r=13,m=9;break}is(e,r),I=f,t[I>>2]=s,t[I+4>>2]=o,o=f+8|0,t[o>>2]=0,t[f+12>>2]=A,t[f+20>>2]=e,t[f+24>>2]=r,xA[f+28>>0]=0,s=f+29|0,xA[s>>0]=xA[l>>0]|0,xA[s+1>>0]=xA[l+1>>0]|0,xA[s+2>>0]=xA[l+2>>0]|0,t[f+16>>2]=3,R=+ir(r),R=R*+Yr(r),i=+ZA(+ +k[r>>3]),i=R/+_e(+ +En(+i,+ +ZA(+ +k[r+8>>3])))*6371.007180918475*6371.007180918475,s=f+12|0,r=t[s>>2]|0;A:do if((r|0)>0)do{if(qs(r+-1|0,a)|0,!(i/+k[a>>3]>10))break A;I=t[s>>2]|0,r=I+-1|0,t[s>>2]=r}while((I|0)>1);while(!1);if(kn(f),s=n,t[s>>2]=0,t[s+4>>2]=0,s=f,r=t[s>>2]|0,s=t[s+4>>2]|0,!((r|0)==0&(s|0)==0))do p0(r,s,A,a)|0,l=a,e=n,l=KA(t[e>>2]|0,t[e+4>>2]|0,t[l>>2]|0,t[l+4>>2]|0)|0,e=S()|0,I=n,t[I>>2]=l,t[I+4>>2]=e,kn(f),I=f,r=t[I>>2]|0,s=t[I+4>>2]|0;while(!((r|0)==0&(s|0)==0));r=t[o>>2]|0}while(!1);return I=r,b=M,I|0}function nn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;if(!(c0(A,r)|0)||(A=Ft(A)|0,n=+k[r>>3],s=+k[r+8>>3],s=A&s<0?s+6.283185307179586:s,R=t[e>>2]|0,(R|0)<=0))return R=0,R|0;if(M=t[e+4>>2]|0,A){A=0,m=s,r=-1,e=0;A:for(;;){for(f=e;o=+k[M+(f<<4)>>3],s=+k[M+(f<<4)+8>>3],e=(r+2|0)%(R|0)|0,i=+k[M+(e<<4)>>3],l=+k[M+(e<<4)+8>>3],o>i?(a=o,o=l):(a=i,i=o,o=s,s=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=f+1|0,(r|0)>=(R|0)){r=22;break A}else e=f,f=r,r=e;if(l=o<0?o+6.283185307179586:o,o=s<0?s+6.283185307179586:s,m=l==m|o==m?m+-2220446049250313e-31:m,a=l+(o-l)*((n-i)/(a-i)),(a<0?a+6.283185307179586:a)>m&&(A=A^1),e=f+1|0,(e|0)>=(R|0)){r=22;break}else r=f}if((r|0)==22)return A|0}else{A=0,m=s,r=-1,e=0;A:for(;;){for(f=e;o=+k[M+(f<<4)>>3],s=+k[M+(f<<4)+8>>3],e=(r+2|0)%(R|0)|0,i=+k[M+(e<<4)>>3],l=+k[M+(e<<4)+8>>3],o>i?(a=o,o=l):(a=i,i=o,o=s,s=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=f+1|0,(r|0)>=(R|0)){r=22;break A}else e=f,f=r,r=e;if(m=o==m|s==m?m+-2220446049250313e-31:m,o+(s-o)*((n-i)/(a-i))>m&&(A=A^1),e=f+1|0,(e|0)>=(R|0)){r=22;break}else r=f}if((r|0)==22)return A|0}return 0}function ri(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0;if(L=t[e>>2]|0,!L){t[A>>2]=0,t[A+4>>2]=0,t[A+8>>2]=0,t[A+12>>2]=0,t[A+16>>2]=0,t[A+20>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0;return}if(G=A+8|0,k[G>>3]=17976931348623157e292,Y=A+24|0,k[Y>>3]=17976931348623157e292,k[A>>3]=-17976931348623157e292,nA=A+16|0,k[nA>>3]=-17976931348623157e292,!((L|0)<=0)){for(R=t[e+4>>2]|0,f=17976931348623157e292,m=-17976931348623157e292,M=0,e=-1,i=17976931348623157e292,o=17976931348623157e292,a=-17976931348623157e292,n=-17976931348623157e292,I=0;r=+k[R+(I<<4)>>3],l=+k[R+(I<<4)+8>>3],e=e+2|0,s=+k[R+(((e|0)==(L|0)?0:e)<<4)+8>>3],r>3]=r,i=r),l>3]=l,o=l),r>a?k[A>>3]=r:r=a,l>n&&(k[nA>>3]=l,n=l),f=l>0&lm?l:m,M=M|+ZA(+(l-s))>3.141592653589793,e=I+1|0,(e|0)!=(L|0);)q=I,a=r,I=e,e=q;M&&(k[nA>>3]=m,k[Y>>3]=f)}}function sn(e){return e=e|0,(e>>>0<4?0:15)|0}function is(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0;if(L=t[e>>2]|0,L){if(G=A+8|0,k[G>>3]=17976931348623157e292,Y=A+24|0,k[Y>>3]=17976931348623157e292,k[A>>3]=-17976931348623157e292,nA=A+16|0,k[nA>>3]=-17976931348623157e292,(L|0)>0){for(s=t[e+4>>2]|0,R=17976931348623157e292,I=-17976931348623157e292,n=0,r=-1,a=17976931348623157e292,f=17976931348623157e292,M=-17976931348623157e292,o=-17976931348623157e292,q=0;i=+k[s+(q<<4)>>3],m=+k[s+(q<<4)+8>>3],zA=r+2|0,l=+k[s+(((zA|0)==(L|0)?0:zA)<<4)+8>>3],i>3]=i,a=i),m>3]=m,f=m),i>M?k[A>>3]=i:i=M,m>o&&(k[nA>>3]=m,o=m),R=m>0&mI?m:I,n=n|+ZA(+(m-l))>3.141592653589793,r=q+1|0,(r|0)!=(L|0);)zA=q,M=i,q=r,r=zA;n&&(k[nA>>3]=I,k[Y>>3]=R)}}else t[A>>2]=0,t[A+4>>2]=0,t[A+8>>2]=0,t[A+12>>2]=0,t[A+16>>2]=0,t[A+20>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0;if(zA=e+8|0,r=t[zA>>2]|0,!((r|0)<=0)){BA=e+12|0,U=0;do if(s=t[BA>>2]|0,n=U,U=U+1|0,Y=A+(U<<5)|0,nA=t[s+(n<<3)>>2]|0,nA){if(q=A+(U<<5)+8|0,k[q>>3]=17976931348623157e292,e=A+(U<<5)+24|0,k[e>>3]=17976931348623157e292,k[Y>>3]=-17976931348623157e292,Z=A+(U<<5)+16|0,k[Z>>3]=-17976931348623157e292,(nA|0)>0){for(L=t[s+(n<<3)+4>>2]|0,R=17976931348623157e292,I=-17976931348623157e292,s=0,n=-1,G=0,a=17976931348623157e292,f=17976931348623157e292,m=-17976931348623157e292,o=-17976931348623157e292;i=+k[L+(G<<4)>>3],M=+k[L+(G<<4)+8>>3],n=n+2|0,l=+k[L+(((n|0)==(nA|0)?0:n)<<4)+8>>3],i>3]=i,a=i),M>3]=M,f=M),i>m?k[Y>>3]=i:i=m,M>o&&(k[Z>>3]=M,o=M),R=M>0&MI?M:I,s=s|+ZA(+(M-l))>3.141592653589793,n=G+1|0,(n|0)!=(nA|0);)QA=G,G=n,m=i,n=QA;s&&(k[Z>>3]=I,k[e>>3]=R)}}else t[Y>>2]=0,t[Y+4>>2]=0,t[Y+8>>2]=0,t[Y+12>>2]=0,t[Y+16>>2]=0,t[Y+20>>2]=0,t[Y+24>>2]=0,t[Y+28>>2]=0,r=t[zA>>2]|0;while((U|0)<(r|0))}}function os(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(!(nn(e,A,r)|0))return s=0,s|0;if(s=e+8|0,(t[s>>2]|0)<=0)return s=1,s|0;for(n=e+12|0,e=0;;){if(i=e,e=e+1|0,nn((t[n>>2]|0)+(i<<3)|0,A+(e<<5)|0,r)|0){e=0,n=6;break}if((e|0)>=(t[s>>2]|0)){e=1,n=6;break}}return(n|0)==6?e|0:0}function ni(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(f=b,b=b+16|0,l=f,o=r+8|0,!(nn(e,A,o)|0))return a=0,b=f,a|0;a=e+8|0;A:do if((t[a>>2]|0)>0){for(i=e+12|0,s=0;;){if(m=s,s=s+1|0,nn((t[i>>2]|0)+(m<<3)|0,A+(s<<5)|0,o)|0){s=0;break}if((s|0)>=(t[a>>2]|0))break A}return b=f,s|0}while(!1);if(Cn(e,A,r,n)|0)return m=0,b=f,m|0;t[l>>2]=t[r>>2],t[l+4>>2]=o,s=t[a>>2]|0;A:do if((s|0)>0)for(e=e+12|0,o=0,i=s;;){if(s=t[e>>2]|0,(t[s+(o<<3)>>2]|0)>0){if(nn(l,n,t[s+(o<<3)+4>>2]|0)|0){s=0;break A}if(s=o+1|0,Cn((t[e>>2]|0)+(o<<3)|0,A+(s<<5)|0,r,n)|0){s=0;break A}i=t[a>>2]|0}else s=o+1|0;if((s|0)<(i|0))o=s;else{s=1;break}}else s=1;while(!1);return m=s,b=f,m|0}function Cn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0,zA=0,QA=0,fe=0;if(zA=b,b=b+176|0,q=zA+172|0,s=zA+168|0,Z=zA,!(Ne(A,n)|0))return e=0,b=zA,e|0;if(B0(A,n,q,s),Ir(Z|0,r|0,168)|0,(t[r>>2]|0)>0){A=0;do QA=Z+8+(A<<4)+8|0,nA=+Vt(+k[QA>>3],t[s>>2]|0),k[QA>>3]=nA,A=A+1|0;while((A|0)<(t[r>>2]|0))}G=+k[n>>3],Y=+k[n+8>>3],nA=+Vt(+k[n+16>>3],t[s>>2]|0),I=+Vt(+k[n+24>>3],t[s>>2]|0);A:do if((t[e>>2]|0)>0){if(n=e+4|0,s=t[Z>>2]|0,(s|0)<=0){for(A=0;;)if(A=A+1|0,(A|0)>=(t[e>>2]|0)){A=0;break A}}for(r=0;;){if(A=t[n>>2]|0,R=+k[A+(r<<4)>>3],L=+Vt(+k[A+(r<<4)+8>>3],t[q>>2]|0),A=t[n>>2]|0,r=r+1|0,QA=(r|0)%(t[e>>2]|0)|0,i=+k[A+(QA<<4)>>3],o=+Vt(+k[A+(QA<<4)+8>>3],t[q>>2]|0),!(R>=G)|!(i>=G)&&!(R<=Y)|!(i<=Y)&&!(L<=I)|!(o<=I)&&!(L>=nA)|!(o>=nA)){M=i-R,f=o-L,A=0;do if(fe=A,A=A+1|0,QA=(A|0)==(s|0)?0:A,i=+k[Z+8+(fe<<4)+8>>3],o=+k[Z+8+(QA<<4)+8>>3]-i,l=+k[Z+8+(fe<<4)>>3],a=+k[Z+8+(QA<<4)>>3]-l,m=M*o-f*a,m!=0&&(U=L-i,BA=R-l,a=(U*a-o*BA)/m,!(a<0|a>1))&&(m=(M*U-f*BA)/m,m>=0&m<=1)){A=1;break A}while((A|0)<(s|0))}if((r|0)>=(t[e>>2]|0)){A=0;break}}}else A=0;while(!1);return fe=A,b=zA,fe|0}function si(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;if(Cn(e,A,r,n)|0)return i=1,i|0;if(i=e+8|0,(t[i>>2]|0)<=0)return i=0,i|0;for(s=e+12|0,e=0;;){if(o=e,e=e+1|0,Cn((t[s>>2]|0)+(o<<3)|0,A+(e<<5)|0,r,n)|0){e=1,s=6;break}if((e|0)>=(t[i>>2]|0)){e=0,s=6;break}}return(s|0)==6?e|0:0}function Vl(){return 8}function Wl(){return 16}function Yl(){return 168}function Kl(){return 8}function $l(){return 16}function Zl(){return 12}function ql(){return 8}function Jl(e){return e=e|0,+(+((t[e>>2]|0)>>>0)+4294967296*+(t[e+4>>2]|0))}function Xl(e){e=e|0;var A=0,r=0;return r=+k[e>>3],A=+k[e+8>>3],+ +ye(+(r*r+A*A))}function ii(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0;f=+k[e>>3],a=+k[A>>3]-f,l=+k[e+8>>3],o=+k[A+8>>3]-l,M=+k[r>>3],i=+k[n>>3]-M,R=+k[r+8>>3],m=+k[n+8>>3]-R,i=(i*(l-R)-(f-M)*m)/(a*m-o*i),k[s>>3]=f+a*i,k[s+8>>3]=l+o*i}function oi(e,A){return e=e|0,A=A|0,+ZA(+(+k[e>>3]-+k[A>>3]))<11920928955078125e-23?(A=+ZA(+(+k[e+8>>3]-+k[A+8>>3]))<11920928955078125e-23,A|0):(A=0,A|0)}function it(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;return s=+k[e>>3]-+k[A>>3],n=+k[e+8>>3]-+k[A+8>>3],r=+k[e+16>>3]-+k[A+16>>3],+(s*s+n*n+r*r)}function Aa(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;r=+k[e>>3],n=+_e(+r),r=+ie(+r),k[A+16>>3]=r,r=+k[e+8>>3],s=n*+_e(+r),k[A>>3]=s,r=n*+ie(+r),k[A+8>>3]=r}function ea(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(i=b,b=b+16|0,s=i,n=Oe(e,A)|0,(r+-1|0)>>>0>5||(n=(n|0)!=0,(r|0)==1&n))return s=-1,b=i,s|0;do if(on(e,A,s)|0)n=-1;else if(n){n=((t[26352+(r<<2)>>2]|0)+5-(t[s>>2]|0)|0)%5|0;break}else{n=((t[26384+(r<<2)>>2]|0)+6-(t[s>>2]|0)|0)%6|0;break}while(!1);return s=n,b=i,s|0}function on(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0;if(m=b,b=b+32|0,l=m+16|0,a=m,n=Dr(e,A,l)|0,n|0)return r=n,b=m,r|0;i=te(e,A)|0,f=Pt(e,A)|0,z0(i,a),n=qt(i,t[l>>2]|0)|0;do if(je(i)|0){do switch(i|0){case 4:{s=0;break}case 14:{s=1;break}case 24:{s=2;break}case 38:{s=3;break}case 49:{s=4;break}case 58:{s=5;break}case 63:{s=6;break}case 72:{s=7;break}case 83:{s=8;break}case 97:{s=9;break}case 107:{s=10;break}case 117:{s=11;break}default:OA(27795,27797,75,27806)}while(!1);if(o=t[26416+(s*24|0)+8>>2]|0,A=t[26416+(s*24|0)+16>>2]|0,e=t[l>>2]|0,(e|0)!=(t[a>>2]|0)&&(a=Et(i)|0,e=t[l>>2]|0,a|(e|0)==(A|0)&&(n=(n+1|0)%6|0)),(f|0)==3&(e|0)==(A|0)){n=(n+5|0)%6|0;break}(f|0)==5&(e|0)==(o|0)&&(n=(n+1|0)%6|0)}while(!1);return t[r>>2]=n,r=0,b=m,r|0}function Xt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0;if(Z=b,b=b+32|0,q=Z+24|0,Y=Z+20|0,L=Z+8|0,I=Z+16|0,R=Z,a=(Oe(e,A)|0)==0,a=a?6:5,m=wA(e|0,A|0,52)|0,S()|0,m=m&15,a>>>0<=r>>>0)return n=2,b=Z,n|0;M=(m|0)==0,!M&&(G=CA(7,0,(m^15)*3|0)|0,(G&e|0)==0&((S()|0)&A|0)==0)?s=r:i=4;A:do if((i|0)==4){if(s=(Oe(e,A)|0)!=0,((s?4:5)|0)<(r|0)||on(e,A,q)|0||(i=(t[q>>2]|0)+r|0,s?s=26704+(((i|0)%5|0)<<2)|0:s=26736+(((i|0)%6|0)<<2)|0,G=t[s>>2]|0,(G|0)==7))return n=1,b=Z,n|0;t[Y>>2]=0,s=K(e,A,G,Y,L)|0;do if(!s){if(l=L,f=t[l>>2]|0,l=t[l+4>>2]|0,o=l>>>0>>0|(l|0)==(A|0)&f>>>0>>0,i=o?f:e,o=o?l:A,!M&&(M=CA(7,0,(m^15)*3|0)|0,(f&M|0)==0&(l&(S()|0)|0)==0))s=r;else{if(l=(r+-1+a|0)%(a|0)|0,s=Oe(e,A)|0,(l|0)<0&&OA(27795,27797,248,27822),a=(s|0)!=0,((a?4:5)|0)<(l|0)&&OA(27795,27797,248,27822),on(e,A,q)|0&&OA(27795,27797,248,27822),s=(t[q>>2]|0)+l|0,a?s=26704+(((s|0)%5|0)<<2)|0:s=26736+(((s|0)%6|0)<<2)|0,l=t[s>>2]|0,(l|0)==7&&OA(27795,27797,248,27822),t[I>>2]=0,s=K(e,A,l,I,R)|0,s|0)break;f=R,a=t[f>>2]|0,f=t[f+4>>2]|0;do if(f>>>0>>0|(f|0)==(o|0)&a>>>0>>0){if(Oe(a,f)|0?i=Ae(a,f,e,A)|0:i=t[26800+((((t[I>>2]|0)+(t[26768+(l<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,s=Oe(a,f)|0,(i+-1|0)>>>0>5){s=-1,i=a,o=f;break}if(s=(s|0)!=0,(i|0)==1&s){s=-1,i=a,o=f;break}do if(on(a,f,q)|0)s=-1;else if(s){s=((t[26352+(i<<2)>>2]|0)+5-(t[q>>2]|0)|0)%5|0;break}else{s=((t[26384+(i<<2)>>2]|0)+6-(t[q>>2]|0)|0)%6|0;break}while(!1);i=a,o=f}else s=r;while(!1);l=L,f=t[l>>2]|0,l=t[l+4>>2]|0}if((i|0)==(f|0)&(o|0)==(l|0)){if(a=(Oe(f,l)|0)!=0,a?e=Ae(f,l,e,A)|0:e=t[26800+((((t[Y>>2]|0)+(t[26768+(G<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,s=Oe(f,l)|0,(e+-1|0)>>>0<=5&&(nA=(s|0)!=0,!((e|0)==1&nA)))do if(on(f,l,q)|0)s=-1;else if(nA){s=((t[26352+(e<<2)>>2]|0)+5-(t[q>>2]|0)|0)%5|0;break}else{s=((t[26384+(e<<2)>>2]|0)+6-(t[q>>2]|0)|0)%6|0;break}while(!1);else s=-1;s=s+1|0,s=(s|0)==6|a&(s|0)==5?0:s}A=o,e=i;break A}while(!1);return n=s,b=Z,n|0}while(!1);return nA=CA(s|0,0,56)|0,q=S()|0|A&-2130706433|536870912,t[n>>2]=nA|e,t[n+4>>2]=q,n=0,b=Z,n|0}function ta(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;return i=(Oe(e,A)|0)==0,n=Xt(e,A,0,r)|0,s=(n|0)==0,i?!s||(n=Xt(e,A,1,r+8|0)|0,n|0)||(n=Xt(e,A,2,r+16|0)|0,n|0)||(n=Xt(e,A,3,r+24|0)|0,n|0)||(n=Xt(e,A,4,r+32|0)|0,n)?(i=n,i|0):Xt(e,A,5,r+40|0)|0:!s||(n=Xt(e,A,1,r+8|0)|0,n|0)||(n=Xt(e,A,2,r+16|0)|0,n|0)||(n=Xt(e,A,3,r+24|0)|0,n|0)||(n=Xt(e,A,4,r+32|0)|0,n|0)?(i=n,i|0):(i=r+40|0,t[i>>2]=0,t[i+4>>2]=0,i=0,i|0)}function ra(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,a=0;return a=b,b=b+192|0,s=a,i=a+168|0,o=wA(e|0,A|0,56)|0,S()|0,o=o&7,l=A&-2130706433|134217728,n=Dr(e,l,i)|0,n|0?(l=n,b=a,l|0):(A=wA(e|0,A|0,52)|0,S()|0,A=A&15,Oe(e,l)|0?w(i,A,o,1,s):AA(i,A,o,1,s),l=s+8|0,t[r>>2]=t[l>>2],t[r+4>>2]=t[l+4>>2],t[r+8>>2]=t[l+8>>2],t[r+12>>2]=t[l+12>>2],l=0,b=a,l|0)}function li(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=b,b=b+16|0,r=s,!(!0&(A&2013265920|0)==536870912)||(n=A&-2130706433|134217728,!(Ue(e,n)|0))?(n=0,b=s,n|0):(i=wA(e|0,A|0,56)|0,S()|0,i=(Xt(e,n,i&7,r)|0)==0,n=r,n=i&((t[n>>2]|0)==(e|0)?(t[n+4>>2]|0)==(A|0):0)&1,b=s,n|0)}function ai(e,A,r){e=e|0,A=A|0,r=r|0;var n=0;(A|0)>0?(n=Qt(A,4)|0,t[e>>2]=n,n||OA(27835,27858,40,27872)):t[e>>2]=0,t[e+4>>2]=A,t[e+8>>2]=0,t[e+12>>2]=r}function ui(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0;s=e+4|0,i=e+12|0,o=e+8|0;A:for(;;){for(r=t[s>>2]|0,A=0;;){if((A|0)>=(r|0))break A;if(n=t[e>>2]|0,l=t[n+(A<<2)>>2]|0,!l)A=A+1|0;else break}A=n+(~~(+ZA(+(+lt(10,+ +(15-(t[i>>2]|0)|0))*(+k[l>>3]+ +k[l+8>>3])))%+(r|0))>>>0<<2)|0,r=t[A>>2]|0;e:do if(r|0){if(n=l+32|0,(r|0)==(l|0))t[A>>2]=t[n>>2];else{if(r=r+32|0,A=t[r>>2]|0,!A)break;for(;(A|0)!=(l|0);)if(r=A+32|0,A=t[r>>2]|0,!A)break e;t[r>>2]=t[n>>2]}qA(l),t[o>>2]=(t[o>>2]|0)+-1}while(!1)}qA(t[e>>2]|0)}function ci(e){e=e|0;var A=0,r=0,n=0;for(n=t[e+4>>2]|0,r=0;;){if((r|0)>=(n|0)){A=0,r=4;break}if(A=t[(t[e>>2]|0)+(r<<2)>>2]|0,!A)r=r+1|0;else{r=4;break}}return(r|0)==4?A|0:0}function fi(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;if(r=~~(+ZA(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+k[A>>3]+ +k[A+8>>3])))%+(t[e+4>>2]|0))>>>0,r=(t[e>>2]|0)+(r<<2)|0,n=t[r>>2]|0,!n)return i=1,i|0;i=A+32|0;do if((n|0)!=(A|0)){if(r=t[n+32>>2]|0,!r)return i=1,i|0;for(s=r;;){if((s|0)==(A|0)){s=8;break}if(r=t[s+32>>2]|0,r)n=s,s=r;else{r=1,s=10;break}}if((s|0)==8){t[n+32>>2]=t[i>>2];break}else if((s|0)==10)return r|0}else t[r>>2]=t[i>>2];while(!1);return qA(A),i=e+8|0,t[i>>2]=(t[i>>2]|0)+-1,i=0,i|0}function na(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;i=y0(40)|0,i||OA(27888,27858,98,27901),t[i>>2]=t[A>>2],t[i+4>>2]=t[A+4>>2],t[i+8>>2]=t[A+8>>2],t[i+12>>2]=t[A+12>>2],s=i+16|0,t[s>>2]=t[r>>2],t[s+4>>2]=t[r+4>>2],t[s+8>>2]=t[r+8>>2],t[s+12>>2]=t[r+12>>2],t[i+32>>2]=0,s=~~(+ZA(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+k[A>>3]+ +k[A+8>>3])))%+(t[e+4>>2]|0))>>>0,s=(t[e>>2]|0)+(s<<2)|0,n=t[s>>2]|0;do if(!n)t[s>>2]=i;else{for(;!(Tr(n,A)|0&&Tr(n+16|0,r)|0);)if(s=t[n+32>>2]|0,n=(s|0)==0?n:s,!(t[n+32>>2]|0)){o=10;break}if((o|0)==10){t[n+32>>2]=i;break}return qA(i),o=n,o|0}while(!1);return o=e+8|0,t[o>>2]=(t[o>>2]|0)+1,o=i,o|0}function sa(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;if(s=~~(+ZA(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+k[A>>3]+ +k[A+8>>3])))%+(t[e+4>>2]|0))>>>0,s=t[(t[e>>2]|0)+(s<<2)>>2]|0,!s)return r=0,r|0;if(!r){for(e=s;;){if(Tr(e,A)|0){n=10;break}if(e=t[e+32>>2]|0,!e){e=0,n=10;break}}if((n|0)==10)return e|0}for(e=s;;){if(Tr(e,A)|0&&Tr(e+16|0,r)|0){n=10;break}if(e=t[e+32>>2]|0,!e){e=0,n=10;break}}return(n|0)==10?e|0:0}function ia(e,A){e=e|0,A=A|0;var r=0;if(r=~~(+ZA(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+k[A>>3]+ +k[A+8>>3])))%+(t[e+4>>2]|0))>>>0,e=t[(t[e>>2]|0)+(r<<2)>>2]|0,!e)return r=0,r|0;for(;;){if(Tr(e,A)|0){A=5;break}if(e=t[e+32>>2]|0,!e){e=0,A=5;break}}return(A|0)==5?e|0:0}function oa(){return 27920}function U0(e){return e=+e,~~+gi(+e)|0}function y0(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0,G=0,Y=0,nA=0,q=0,Z=0,U=0,BA=0;BA=b,b=b+16|0,R=BA;do if(e>>>0<245){if(f=e>>>0<11?16:e+11&-8,e=f>>>3,M=t[6981]|0,r=M>>>e,r&3|0)return A=(r&1^1)+e|0,e=27964+(A<<1<<2)|0,r=e+8|0,n=t[r>>2]|0,s=n+8|0,i=t[s>>2]|0,(i|0)==(e|0)?t[6981]=M&~(1<>2]=e,t[r>>2]=i),U=A<<3,t[n+4>>2]=U|3,U=n+U+4|0,t[U>>2]=t[U>>2]|1,U=s,b=BA,U|0;if(m=t[6983]|0,f>>>0>m>>>0){if(r|0)return A=2<>>12&16,A=A>>>l,r=A>>>5&8,A=A>>>r,i=A>>>2&4,A=A>>>i,e=A>>>1&2,A=A>>>e,n=A>>>1&1,n=(r|l|i|e|n)+(A>>>n)|0,A=27964+(n<<1<<2)|0,e=A+8|0,i=t[e>>2]|0,l=i+8|0,r=t[l>>2]|0,(r|0)==(A|0)?(e=M&~(1<>2]=A,t[e>>2]=r,e=M),U=n<<3,o=U-f|0,t[i+4>>2]=f|3,s=i+f|0,t[s+4>>2]=o|1,t[i+U>>2]=o,m|0&&(n=t[6986]|0,A=m>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=n,t[A+12>>2]=n,t[n+8>>2]=A,t[n+12>>2]=r),t[6983]=o,t[6986]=s,U=l,b=BA,U|0;if(i=t[6982]|0,i){for(r=(i&0-i)+-1|0,s=r>>>12&16,r=r>>>s,n=r>>>5&8,r=r>>>n,o=r>>>2&4,r=r>>>o,l=r>>>1&2,r=r>>>l,a=r>>>1&1,a=t[28228+((n|s|o|l|a)+(r>>>a)<<2)>>2]|0,r=a,l=a,a=(t[a+4>>2]&-8)-f|0;e=t[r+16>>2]|0,!(!e&&(e=t[r+20>>2]|0,!e));)o=(t[e+4>>2]&-8)-f|0,s=o>>>0>>0,r=e,l=s?e:l,a=s?o:a;if(o=l+f|0,o>>>0>l>>>0){s=t[l+24>>2]|0,A=t[l+12>>2]|0;do if((A|0)==(l|0)){if(e=l+20|0,A=t[e>>2]|0,!A&&(e=l+16|0,A=t[e>>2]|0,!A)){r=0;break}for(;;)if(n=A+20|0,r=t[n>>2]|0,r)A=r,e=n;else if(n=A+16|0,r=t[n>>2]|0,r)A=r,e=n;else break;t[e>>2]=0,r=A}else r=t[l+8>>2]|0,t[r+12>>2]=A,t[A+8>>2]=r,r=A;while(!1);do if(s|0){if(A=t[l+28>>2]|0,e=28228+(A<<2)|0,(l|0)==(t[e>>2]|0)){if(t[e>>2]=r,!r){t[6982]=i&~(1<>2]|0)==(l|0)?U:s+20|0)>>2]=r,!r)break;t[r+24>>2]=s,A=t[l+16>>2]|0,A|0&&(t[r+16>>2]=A,t[A+24>>2]=r),A=t[l+20>>2]|0,A|0&&(t[r+20>>2]=A,t[A+24>>2]=r)}while(!1);return a>>>0<16?(U=a+f|0,t[l+4>>2]=U|3,U=l+U+4|0,t[U>>2]=t[U>>2]|1):(t[l+4>>2]=f|3,t[o+4>>2]=a|1,t[o+a>>2]=a,m|0&&(n=t[6986]|0,A=m>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=A|M,A=r,e=r+8|0),t[e>>2]=n,t[A+12>>2]=n,t[n+8>>2]=A,t[n+12>>2]=r),t[6983]=a,t[6986]=o),U=l+8|0,b=BA,U|0}else M=f}else M=f}else M=f}else if(e>>>0<=4294967231)if(e=e+11|0,f=e&-8,n=t[6982]|0,n){s=0-f|0,e=e>>>8,e?f>>>0>16777215?a=31:(M=(e+1048320|0)>>>16&8,G=e<>>16&4,G=G<>>16&2,a=14-(l|M|a)+(G<>>15)|0,a=f>>>(a+7|0)&1|a<<1):a=0,r=t[28228+(a<<2)>>2]|0;A:do if(!r)r=0,e=0,G=61;else for(e=0,l=f<<((a|0)==31?0:25-(a>>>1)|0),i=0;;){if(o=(t[r+4>>2]&-8)-f|0,o>>>0>>0)if(o)e=r,s=o;else{e=r,s=0,G=65;break A}if(G=t[r+20>>2]|0,r=t[r+16+(l>>>31<<2)>>2]|0,i=(G|0)==0|(G|0)==(r|0)?i:G,r)l=l<<1;else{r=i,G=61;break}}while(!1);if((G|0)==61){if((r|0)==0&(e|0)==0){if(e=2<>>12&16,M=M>>>o,i=M>>>5&8,M=M>>>i,l=M>>>2&4,M=M>>>l,a=M>>>1&2,M=M>>>a,r=M>>>1&1,e=0,r=t[28228+((i|o|l|a|r)+(M>>>r)<<2)>>2]|0}r?G=65:(l=e,o=s)}if((G|0)==65)for(i=r;;)if(M=(t[i+4>>2]&-8)-f|0,r=M>>>0>>0,s=r?M:s,e=r?i:e,r=t[i+16>>2]|0,r||(r=t[i+20>>2]|0),r)i=r;else{l=e,o=s;break}if((l|0)!=0&&o>>>0<((t[6983]|0)-f|0)>>>0&&(m=l+f|0,m>>>0>l>>>0)){i=t[l+24>>2]|0,A=t[l+12>>2]|0;do if((A|0)==(l|0)){if(e=l+20|0,A=t[e>>2]|0,!A&&(e=l+16|0,A=t[e>>2]|0,!A)){A=0;break}for(;;)if(s=A+20|0,r=t[s>>2]|0,r)A=r,e=s;else if(s=A+16|0,r=t[s>>2]|0,r)A=r,e=s;else break;t[e>>2]=0}else U=t[l+8>>2]|0,t[U+12>>2]=A,t[A+8>>2]=U;while(!1);do if(i){if(e=t[l+28>>2]|0,r=28228+(e<<2)|0,(l|0)==(t[r>>2]|0)){if(t[r>>2]=A,!A){n=n&~(1<>2]|0)==(l|0)?U:i+20|0)>>2]=A,!A)break;t[A+24>>2]=i,e=t[l+16>>2]|0,e|0&&(t[A+16>>2]=e,t[e+24>>2]=A),e=t[l+20>>2]|0,e&&(t[A+20>>2]=e,t[e+24>>2]=A)}while(!1);A:do if(o>>>0<16)U=o+f|0,t[l+4>>2]=U|3,U=l+U+4|0,t[U>>2]=t[U>>2]|1;else{if(t[l+4>>2]=f|3,t[m+4>>2]=o|1,t[m+o>>2]=o,A=o>>>3,o>>>0<256){r=27964+(A<<1<<2)|0,e=t[6981]|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=m,t[A+12>>2]=m,t[m+8>>2]=A,t[m+12>>2]=r;break}if(A=o>>>8,A?o>>>0>16777215?r=31:(Z=(A+1048320|0)>>>16&8,U=A<>>16&4,U=U<>>16&2,r=14-(q|Z|r)+(U<>>15)|0,r=o>>>(r+7|0)&1|r<<1):r=0,A=28228+(r<<2)|0,t[m+28>>2]=r,e=m+16|0,t[e+4>>2]=0,t[e>>2]=0,e=1<>2]=m,t[m+24>>2]=A,t[m+12>>2]=m,t[m+8>>2]=m;break}A=t[A>>2]|0;e:do if((t[A+4>>2]&-8|0)!=(o|0)){for(n=o<<((r|0)==31?0:25-(r>>>1)|0);r=A+16+(n>>>31<<2)|0,e=t[r>>2]|0,!!e;)if((t[e+4>>2]&-8|0)==(o|0)){A=e;break e}else n=n<<1,A=e;t[r>>2]=m,t[m+24>>2]=A,t[m+12>>2]=m,t[m+8>>2]=m;break A}while(!1);Z=A+8|0,U=t[Z>>2]|0,t[U+12>>2]=m,t[Z>>2]=m,t[m+8>>2]=U,t[m+12>>2]=A,t[m+24>>2]=0}while(!1);return U=l+8|0,b=BA,U|0}else M=f}else M=f;else M=-1;while(!1);if(r=t[6983]|0,r>>>0>=M>>>0)return A=r-M|0,e=t[6986]|0,A>>>0>15?(U=e+M|0,t[6986]=U,t[6983]=A,t[U+4>>2]=A|1,t[e+r>>2]=A,t[e+4>>2]=M|3):(t[6983]=0,t[6986]=0,t[e+4>>2]=r|3,U=e+r+4|0,t[U>>2]=t[U>>2]|1),U=e+8|0,b=BA,U|0;if(o=t[6984]|0,o>>>0>M>>>0)return q=o-M|0,t[6984]=q,U=t[6987]|0,Z=U+M|0,t[6987]=Z,t[Z+4>>2]=q|1,t[U+4>>2]=M|3,U=U+8|0,b=BA,U|0;if(t[7099]|0?e=t[7101]|0:(t[7101]=4096,t[7100]=4096,t[7102]=-1,t[7103]=-1,t[7104]=0,t[7092]=0,t[7099]=R&-16^1431655768,e=4096),l=M+48|0,a=M+47|0,i=e+a|0,s=0-e|0,f=i&s,f>>>0<=M>>>0||(e=t[7091]|0,e|0&&(m=t[7089]|0,R=m+f|0,R>>>0<=m>>>0|R>>>0>e>>>0)))return U=0,b=BA,U|0;A:do if(t[7092]&4)A=0,G=143;else{r=t[6987]|0;e:do if(r){for(n=28372;R=t[n>>2]|0,!(R>>>0<=r>>>0&&(R+(t[n+4>>2]|0)|0)>>>0>r>>>0);)if(e=t[n+8>>2]|0,e)n=e;else{G=128;break e}if(A=i-o&s,A>>>0<2147483647)if(e=Y0(A|0)|0,(e|0)==((t[n>>2]|0)+(t[n+4>>2]|0)|0)){if((e|0)!=-1){o=A,i=e,G=145;break A}}else n=e,G=136;else A=0}else G=128;while(!1);do if((G|0)==128)if(r=Y0(0)|0,(r|0)!=-1&&(A=r,I=t[7100]|0,L=I+-1|0,A=((L&A|0)==0?0:(L+A&0-I)-A|0)+f|0,I=t[7089]|0,L=A+I|0,A>>>0>M>>>0&A>>>0<2147483647)){if(R=t[7091]|0,R|0&&L>>>0<=I>>>0|L>>>0>R>>>0){A=0;break}if(e=Y0(A|0)|0,(e|0)==(r|0)){o=A,i=r,G=145;break A}else n=e,G=136}else A=0;while(!1);do if((G|0)==136){if(r=0-A|0,!(l>>>0>A>>>0&(A>>>0<2147483647&(n|0)!=-1)))if((n|0)==-1){A=0;break}else{o=A,i=n,G=145;break A}if(e=t[7101]|0,e=a-A+e&0-e,e>>>0>=2147483647){o=A,i=n,G=145;break A}if((Y0(e|0)|0)==-1){Y0(r|0)|0,A=0;break}else{o=e+A|0,i=n,G=145;break A}}while(!1);t[7092]=t[7092]|4,G=143}while(!1);if((G|0)==143&&f>>>0<2147483647&&(q=Y0(f|0)|0,L=Y0(0)|0,Y=L-q|0,nA=Y>>>0>(M+40|0)>>>0,!((q|0)==-1|nA^1|q>>>0>>0&((q|0)!=-1&(L|0)!=-1)^1))&&(o=nA?Y:A,i=q,G=145),(G|0)==145){A=(t[7089]|0)+o|0,t[7089]=A,A>>>0>(t[7090]|0)>>>0&&(t[7090]=A),a=t[6987]|0;A:do if(a){for(A=28372;;){if(e=t[A>>2]|0,r=t[A+4>>2]|0,(i|0)==(e+r|0)){G=154;break}if(n=t[A+8>>2]|0,n)A=n;else break}if((G|0)==154&&(Z=A+4|0,(t[A+12>>2]&8|0)==0)&&i>>>0>a>>>0&e>>>0<=a>>>0){t[Z>>2]=r+o,U=(t[6984]|0)+o|0,q=a+8|0,q=(q&7|0)==0?0:0-q&7,Z=a+q|0,q=U-q|0,t[6987]=Z,t[6984]=q,t[Z+4>>2]=q|1,t[a+U+4>>2]=40,t[6988]=t[7103];break}for(i>>>0<(t[6985]|0)>>>0&&(t[6985]=i),r=i+o|0,A=28372;;){if((t[A>>2]|0)==(r|0)){G=162;break}if(e=t[A+8>>2]|0,e)A=e;else break}if((G|0)==162&&(t[A+12>>2]&8|0)==0){t[A>>2]=i,m=A+4|0,t[m>>2]=(t[m>>2]|0)+o,m=i+8|0,m=i+((m&7|0)==0?0:0-m&7)|0,A=r+8|0,A=r+((A&7|0)==0?0:0-A&7)|0,f=m+M|0,l=A-m-M|0,t[m+4>>2]=M|3;e:do if((a|0)==(A|0))U=(t[6984]|0)+l|0,t[6984]=U,t[6987]=f,t[f+4>>2]=U|1;else{if((t[6986]|0)==(A|0)){U=(t[6983]|0)+l|0,t[6983]=U,t[6986]=f,t[f+4>>2]=U|1,t[f+U>>2]=U;break}if(e=t[A+4>>2]|0,(e&3|0)==1){o=e&-8,n=e>>>3;t:do if(e>>>0<256)if(e=t[A+8>>2]|0,r=t[A+12>>2]|0,(r|0)==(e|0)){t[6981]=t[6981]&~(1<>2]=r,t[r+8>>2]=e;break}else{i=t[A+24>>2]|0,e=t[A+12>>2]|0;do if((e|0)==(A|0)){if(r=A+16|0,n=r+4|0,e=t[n>>2]|0,e)r=n;else if(e=t[r>>2]|0,!e){e=0;break}for(;;)if(s=e+20|0,n=t[s>>2]|0,n)e=n,r=s;else if(s=e+16|0,n=t[s>>2]|0,n)e=n,r=s;else break;t[r>>2]=0}else U=t[A+8>>2]|0,t[U+12>>2]=e,t[e+8>>2]=U;while(!1);if(!i)break;r=t[A+28>>2]|0,n=28228+(r<<2)|0;do if((t[n>>2]|0)!=(A|0)){if(U=i+16|0,t[((t[U>>2]|0)==(A|0)?U:i+20|0)>>2]=e,!e)break t}else{if(t[n>>2]=e,e|0)break;t[6982]=t[6982]&~(1<>2]=i,r=A+16|0,n=t[r>>2]|0,n|0&&(t[e+16>>2]=n,t[n+24>>2]=e),r=t[r+4>>2]|0,!r)break;t[e+20>>2]=r,t[r+24>>2]=e}while(!1);A=A+o|0,s=o+l|0}else s=l;if(A=A+4|0,t[A>>2]=t[A>>2]&-2,t[f+4>>2]=s|1,t[f+s>>2]=s,A=s>>>3,s>>>0<256){r=27964+(A<<1<<2)|0,e=t[6981]|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=f,t[A+12>>2]=f,t[f+8>>2]=A,t[f+12>>2]=r;break}A=s>>>8;do if(!A)n=0;else{if(s>>>0>16777215){n=31;break}Z=(A+1048320|0)>>>16&8,U=A<>>16&4,U=U<>>16&2,n=14-(q|Z|n)+(U<>>15)|0,n=s>>>(n+7|0)&1|n<<1}while(!1);if(A=28228+(n<<2)|0,t[f+28>>2]=n,e=f+16|0,t[e+4>>2]=0,t[e>>2]=0,e=t[6982]|0,r=1<>2]=f,t[f+24>>2]=A,t[f+12>>2]=f,t[f+8>>2]=f;break}A=t[A>>2]|0;t:do if((t[A+4>>2]&-8|0)!=(s|0)){for(n=s<<((n|0)==31?0:25-(n>>>1)|0);r=A+16+(n>>>31<<2)|0,e=t[r>>2]|0,!!e;)if((t[e+4>>2]&-8|0)==(s|0)){A=e;break t}else n=n<<1,A=e;t[r>>2]=f,t[f+24>>2]=A,t[f+12>>2]=f,t[f+8>>2]=f;break e}while(!1);Z=A+8|0,U=t[Z>>2]|0,t[U+12>>2]=f,t[Z>>2]=f,t[f+8>>2]=U,t[f+12>>2]=A,t[f+24>>2]=0}while(!1);return U=m+8|0,b=BA,U|0}for(A=28372;e=t[A>>2]|0,!(e>>>0<=a>>>0&&(U=e+(t[A+4>>2]|0)|0,U>>>0>a>>>0));)A=t[A+8>>2]|0;s=U+-47|0,e=s+8|0,e=s+((e&7|0)==0?0:0-e&7)|0,s=a+16|0,e=e>>>0>>0?a:e,A=e+8|0,r=o+-40|0,q=i+8|0,q=(q&7|0)==0?0:0-q&7,Z=i+q|0,q=r-q|0,t[6987]=Z,t[6984]=q,t[Z+4>>2]=q|1,t[i+r+4>>2]=40,t[6988]=t[7103],r=e+4|0,t[r>>2]=27,t[A>>2]=t[7093],t[A+4>>2]=t[7094],t[A+8>>2]=t[7095],t[A+12>>2]=t[7096],t[7093]=i,t[7094]=o,t[7096]=0,t[7095]=A,A=e+24|0;do Z=A,A=A+4|0,t[A>>2]=7;while((Z+8|0)>>>0>>0);if((e|0)!=(a|0)){if(i=e-a|0,t[r>>2]=t[r>>2]&-2,t[a+4>>2]=i|1,t[e>>2]=i,A=i>>>3,i>>>0<256){r=27964+(A<<1<<2)|0,e=t[6981]|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=a,t[A+12>>2]=a,t[a+8>>2]=A,t[a+12>>2]=r;break}if(A=i>>>8,A?i>>>0>16777215?n=31:(Z=(A+1048320|0)>>>16&8,U=A<>>16&4,U=U<>>16&2,n=14-(q|Z|n)+(U<>>15)|0,n=i>>>(n+7|0)&1|n<<1):n=0,r=28228+(n<<2)|0,t[a+28>>2]=n,t[a+20>>2]=0,t[s>>2]=0,A=t[6982]|0,e=1<>2]=a,t[a+24>>2]=r,t[a+12>>2]=a,t[a+8>>2]=a;break}A=t[r>>2]|0;e:do if((t[A+4>>2]&-8|0)!=(i|0)){for(n=i<<((n|0)==31?0:25-(n>>>1)|0);r=A+16+(n>>>31<<2)|0,e=t[r>>2]|0,!!e;)if((t[e+4>>2]&-8|0)==(i|0)){A=e;break e}else n=n<<1,A=e;t[r>>2]=a,t[a+24>>2]=A,t[a+12>>2]=a,t[a+8>>2]=a;break A}while(!1);Z=A+8|0,U=t[Z>>2]|0,t[U+12>>2]=a,t[Z>>2]=a,t[a+8>>2]=U,t[a+12>>2]=A,t[a+24>>2]=0}}else U=t[6985]|0,(U|0)==0|i>>>0>>0&&(t[6985]=i),t[7093]=i,t[7094]=o,t[7096]=0,t[6990]=t[7099],t[6989]=-1,t[6994]=27964,t[6993]=27964,t[6996]=27972,t[6995]=27972,t[6998]=27980,t[6997]=27980,t[7e3]=27988,t[6999]=27988,t[7002]=27996,t[7001]=27996,t[7004]=28004,t[7003]=28004,t[7006]=28012,t[7005]=28012,t[7008]=28020,t[7007]=28020,t[7010]=28028,t[7009]=28028,t[7012]=28036,t[7011]=28036,t[7014]=28044,t[7013]=28044,t[7016]=28052,t[7015]=28052,t[7018]=28060,t[7017]=28060,t[7020]=28068,t[7019]=28068,t[7022]=28076,t[7021]=28076,t[7024]=28084,t[7023]=28084,t[7026]=28092,t[7025]=28092,t[7028]=28100,t[7027]=28100,t[7030]=28108,t[7029]=28108,t[7032]=28116,t[7031]=28116,t[7034]=28124,t[7033]=28124,t[7036]=28132,t[7035]=28132,t[7038]=28140,t[7037]=28140,t[7040]=28148,t[7039]=28148,t[7042]=28156,t[7041]=28156,t[7044]=28164,t[7043]=28164,t[7046]=28172,t[7045]=28172,t[7048]=28180,t[7047]=28180,t[7050]=28188,t[7049]=28188,t[7052]=28196,t[7051]=28196,t[7054]=28204,t[7053]=28204,t[7056]=28212,t[7055]=28212,U=o+-40|0,q=i+8|0,q=(q&7|0)==0?0:0-q&7,Z=i+q|0,q=U-q|0,t[6987]=Z,t[6984]=q,t[Z+4>>2]=q|1,t[i+U+4>>2]=40,t[6988]=t[7103];while(!1);if(A=t[6984]|0,A>>>0>M>>>0)return q=A-M|0,t[6984]=q,U=t[6987]|0,Z=U+M|0,t[6987]=Z,t[Z+4>>2]=q|1,t[U+4>>2]=M|3,U=U+8|0,b=BA,U|0}return U=oa()|0,t[U>>2]=12,U=0,b=BA,U|0}function qA(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,a=0;if(e){r=e+-8|0,s=t[6985]|0,e=t[e+-4>>2]|0,A=e&-8,a=r+A|0;do if(e&1)l=r,o=r;else{if(n=t[r>>2]|0,!(e&3)||(o=r+(0-n)|0,i=n+A|0,o>>>0>>0))return;if((t[6986]|0)==(o|0)){if(e=a+4|0,A=t[e>>2]|0,(A&3|0)!=3){l=o,A=i;break}t[6983]=i,t[e>>2]=A&-2,t[o+4>>2]=i|1,t[o+i>>2]=i;return}if(r=n>>>3,n>>>0<256)if(e=t[o+8>>2]|0,A=t[o+12>>2]|0,(A|0)==(e|0)){t[6981]=t[6981]&~(1<>2]=A,t[A+8>>2]=e,l=o,A=i;break}s=t[o+24>>2]|0,e=t[o+12>>2]|0;do if((e|0)==(o|0)){if(A=o+16|0,r=A+4|0,e=t[r>>2]|0,e)A=r;else if(e=t[A>>2]|0,!e){e=0;break}for(;;)if(n=e+20|0,r=t[n>>2]|0,r)e=r,A=n;else if(n=e+16|0,r=t[n>>2]|0,r)e=r,A=n;else break;t[A>>2]=0}else l=t[o+8>>2]|0,t[l+12>>2]=e,t[e+8>>2]=l;while(!1);if(s){if(A=t[o+28>>2]|0,r=28228+(A<<2)|0,(t[r>>2]|0)==(o|0)){if(t[r>>2]=e,!e){t[6982]=t[6982]&~(1<>2]|0)==(o|0)?l:s+20|0)>>2]=e,!e){l=o,A=i;break}t[e+24>>2]=s,A=o+16|0,r=t[A>>2]|0,r|0&&(t[e+16>>2]=r,t[r+24>>2]=e),A=t[A+4>>2]|0,A?(t[e+20>>2]=A,t[A+24>>2]=e,l=o,A=i):(l=o,A=i)}else l=o,A=i}while(!1);if(!(o>>>0>=a>>>0)&&(e=a+4|0,n=t[e>>2]|0,!!(n&1))){if(n&2)t[e>>2]=n&-2,t[l+4>>2]=A|1,t[o+A>>2]=A,s=A;else{if((t[6987]|0)==(a|0)){if(a=(t[6984]|0)+A|0,t[6984]=a,t[6987]=l,t[l+4>>2]=a|1,(l|0)!=(t[6986]|0))return;t[6986]=0,t[6983]=0;return}if((t[6986]|0)==(a|0)){a=(t[6983]|0)+A|0,t[6983]=a,t[6986]=o,t[l+4>>2]=a|1,t[o+a>>2]=a;return}s=(n&-8)+A|0,r=n>>>3;do if(n>>>0<256)if(A=t[a+8>>2]|0,e=t[a+12>>2]|0,(e|0)==(A|0)){t[6981]=t[6981]&~(1<>2]=e,t[e+8>>2]=A;break}else{i=t[a+24>>2]|0,e=t[a+12>>2]|0;do if((e|0)==(a|0)){if(A=a+16|0,r=A+4|0,e=t[r>>2]|0,e)A=r;else if(e=t[A>>2]|0,!e){r=0;break}for(;;)if(n=e+20|0,r=t[n>>2]|0,r)e=r,A=n;else if(n=e+16|0,r=t[n>>2]|0,r)e=r,A=n;else break;t[A>>2]=0,r=e}else r=t[a+8>>2]|0,t[r+12>>2]=e,t[e+8>>2]=r,r=e;while(!1);if(i|0){if(e=t[a+28>>2]|0,A=28228+(e<<2)|0,(t[A>>2]|0)==(a|0)){if(t[A>>2]=r,!r){t[6982]=t[6982]&~(1<>2]|0)==(a|0)?n:i+20|0)>>2]=r,!r)break;t[r+24>>2]=i,e=a+16|0,A=t[e>>2]|0,A|0&&(t[r+16>>2]=A,t[A+24>>2]=r),e=t[e+4>>2]|0,e|0&&(t[r+20>>2]=e,t[e+24>>2]=r)}}while(!1);if(t[l+4>>2]=s|1,t[o+s>>2]=s,(l|0)==(t[6986]|0)){t[6983]=s;return}}if(e=s>>>3,s>>>0<256){r=27964+(e<<1<<2)|0,A=t[6981]|0,e=1<>2]|0):(t[6981]=A|e,e=r,A=r+8|0),t[A>>2]=l,t[e+12>>2]=l,t[l+8>>2]=e,t[l+12>>2]=r;return}e=s>>>8,e?s>>>0>16777215?n=31:(o=(e+1048320|0)>>>16&8,a=e<>>16&4,a=a<>>16&2,n=14-(i|o|n)+(a<>>15)|0,n=s>>>(n+7|0)&1|n<<1):n=0,e=28228+(n<<2)|0,t[l+28>>2]=n,t[l+20>>2]=0,t[l+16>>2]=0,A=t[6982]|0,r=1<>2]=l,t[l+24>>2]=e,t[l+12>>2]=l,t[l+8>>2]=l;else{e=t[e>>2]|0;e:do if((t[e+4>>2]&-8|0)!=(s|0)){for(n=s<<((n|0)==31?0:25-(n>>>1)|0);r=e+16+(n>>>31<<2)|0,A=t[r>>2]|0,!!A;)if((t[A+4>>2]&-8|0)==(s|0)){e=A;break e}else n=n<<1,e=A;t[r>>2]=l,t[l+24>>2]=e,t[l+12>>2]=l,t[l+8>>2]=l;break A}while(!1);o=e+8|0,a=t[o>>2]|0,t[a+12>>2]=l,t[o>>2]=l,t[l+8>>2]=a,t[l+12>>2]=e,t[l+24>>2]=0}while(!1);if(a=(t[6989]|0)+-1|0,t[6989]=a,!(a|0)){for(e=28380;e=t[e>>2]|0,e;)e=e+8|0;t[6989]=-1}}}}function Qt(e,A){e=e|0,A=A|0;var r=0;return e?(r=Pe(A,e)|0,(A|e)>>>0>65535&&(r=((r>>>0)/(e>>>0)|0|0)==(A|0)?r:-1)):r=0,e=y0(r)|0,!e||!(t[e+-4>>2]&3)||W0(e|0,0,r|0)|0,e|0}function KA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,r=e+r>>>0,YA(A+n+(r>>>0>>0|0)>>>0|0),r|0|0}function ct(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,n=A-n-(r>>>0>e>>>0|0)>>>0,YA(n|0),e-r>>>0|0|0}function di(e){return e=e|0,(e?31-(nt(e^e-1)|0)|0:32)|0}function ls(e,A,r,n,s){e=e|0,A=A|0,r=r|0,n=n|0,s=s|0;var i=0,o=0,l=0,a=0,f=0,m=0,M=0,R=0,I=0,L=0;if(m=e,a=A,f=a,o=r,R=n,l=R,!f)return i=(s|0)!=0,l?i?(t[s>>2]=e|0,t[s+4>>2]=A&0,R=0,s=0,YA(R|0),s|0):(R=0,s=0,YA(R|0),s|0):(i&&(t[s>>2]=(m>>>0)%(o>>>0),t[s+4>>2]=0),R=0,s=(m>>>0)/(o>>>0)>>>0,YA(R|0),s|0);i=(l|0)==0;do if(o){if(!i){if(i=(nt(l|0)|0)-(nt(f|0)|0)|0,i>>>0<=31){M=i+1|0,l=31-i|0,A=i-31>>31,o=M,e=m>>>(M>>>0)&A|f<>>(M>>>0)&A,i=0,l=m<>2]=e|0,t[s+4>>2]=a|A&0,R=0,s=0,YA(R|0),s|0):(R=0,s=0,YA(R|0),s|0)}if(i=o-1|0,i&o|0){l=(nt(o|0)|0)+33-(nt(f|0)|0)|0,L=64-l|0,M=32-l|0,a=M>>31,I=l-32|0,A=I>>31,o=l,e=M-1>>31&f>>>(I>>>0)|(f<>>(l>>>0))&A,A=A&f>>>(l>>>0),i=m<>>(I>>>0))&a|m<>31;break}return s|0&&(t[s>>2]=i&m,t[s+4>>2]=0),(o|0)==1?(I=a|A&0,L=e|0|0,YA(I|0),L|0):(L=di(o|0)|0,I=f>>>(L>>>0)|0,L=f<<32-L|m>>>(L>>>0)|0,YA(I|0),L|0)}else{if(i)return s|0&&(t[s>>2]=(f>>>0)%(o>>>0),t[s+4>>2]=0),I=0,L=(f>>>0)/(o>>>0)>>>0,YA(I|0),L|0;if(!m)return s|0&&(t[s>>2]=0,t[s+4>>2]=(f>>>0)%(l>>>0)),I=0,L=(f>>>0)/(l>>>0)>>>0,YA(I|0),L|0;if(i=l-1|0,!(i&l))return s|0&&(t[s>>2]=e|0,t[s+4>>2]=i&f|A&0),I=0,L=f>>>((di(l|0)|0)>>>0),YA(I|0),L|0;if(i=(nt(l|0)|0)-(nt(f|0)|0)|0,i>>>0<=30){A=i+1|0,l=31-i|0,o=A,e=f<>>(A>>>0),A=f>>>(A>>>0),i=0,l=m<>2]=e|0,t[s+4>>2]=a|A&0,I=0,L=0,YA(I|0),L|0):(I=0,L=0,YA(I|0),L|0)}while(!1);if(!o)f=l,a=0,l=0;else{M=r|0|0,m=R|n&0,f=KA(M|0,m|0,-1,-1)|0,r=S()|0,a=l,l=0;do n=a,a=i>>>31|a<<1,i=l|i<<1,n=e<<1|n>>>31|0,R=e>>>31|A<<1|0,ct(f|0,r|0,n|0,R|0)|0,L=S()|0,I=L>>31|((L|0)<0?-1:0)<<1,l=I&1,e=ct(n|0,R|0,I&M|0,(((L|0)<0?-1:0)>>31|((L|0)<0?-1:0)<<1)&m|0)|0,A=S()|0,o=o-1|0;while((o|0)!=0);f=a,a=0}return o=0,s|0&&(t[s>>2]=e,t[s+4>>2]=A),I=(i|0)>>>31|(f|o)<<1|(o<<1|i>>>31)&0|a,L=(i<<1|0)&-2|l,YA(I|0),L|0}function V0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;return f=A>>31|((A|0)<0?-1:0)<<1,a=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,i=n>>31|((n|0)<0?-1:0)<<1,s=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,l=ct(f^e|0,a^A|0,f|0,a|0)|0,o=S()|0,e=i^f,A=s^a,ct((ls(l,o,ct(i^r|0,s^n|0,i|0,s|0)|0,S()|0,0)|0)^e|0,(S()|0)^A|0,e|0,A|0)|0}function la(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return i=e&65535,s=A&65535,r=Pe(s,i)|0,n=e>>>16,e=(r>>>16)+(Pe(s,n)|0)|0,s=A>>>16,A=Pe(s,i)|0,YA((e>>>16)+(Pe(s,n)|0)+(((e&65535)+A|0)>>>16)|0),e+A<<16|r&65535|0|0}function ft(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;return s=e,i=r,r=la(s,i)|0,e=S()|0,YA((Pe(A,i)|0)+(Pe(n,s)|0)+e|e&0|0),r|0|0|0}function jr(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0,l=0,a=0,f=0;return s=b,b=b+16|0,l=s|0,o=A>>31|((A|0)<0?-1:0)<<1,i=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,f=n>>31|((n|0)<0?-1:0)<<1,a=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,e=ct(o^e|0,i^A|0,o|0,i|0)|0,A=S()|0,ls(e,A,ct(f^r|0,a^n|0,f|0,a|0)|0,S()|0,l)|0,n=ct(t[l>>2]^o|0,t[l+4>>2]^i|0,o|0,i|0)|0,r=S()|0,b=s,YA(r|0),n|0}function Rr(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;return i=b,b=b+16|0,s=i|0,ls(e,A,r,n,s)|0,b=i,YA(t[s+4>>2]|0),t[s>>2]|0|0}function hi(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A>>r|0),e>>>r|(A&(1<>r-32|0)}function wA(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A>>>r|0),e>>>r|(A&(1<>>r-32|0)}function CA(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A<>>32-r|0),e<=0?+He(e+.5):+gt(e-.5)}function Ir(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if((r|0)>=8192)return l0(e|0,A|0,r|0)|0,e|0;if(i=e|0,s=e+r|0,(e&3)==(A&3)){for(;e&3;){if(!r)return i|0;xA[e>>0]=xA[A>>0]|0,e=e+1|0,A=A+1|0,r=r-1|0}for(r=s&-4|0,n=r-64|0;(e|0)<=(n|0);)t[e>>2]=t[A>>2],t[e+4>>2]=t[A+4>>2],t[e+8>>2]=t[A+8>>2],t[e+12>>2]=t[A+12>>2],t[e+16>>2]=t[A+16>>2],t[e+20>>2]=t[A+20>>2],t[e+24>>2]=t[A+24>>2],t[e+28>>2]=t[A+28>>2],t[e+32>>2]=t[A+32>>2],t[e+36>>2]=t[A+36>>2],t[e+40>>2]=t[A+40>>2],t[e+44>>2]=t[A+44>>2],t[e+48>>2]=t[A+48>>2],t[e+52>>2]=t[A+52>>2],t[e+56>>2]=t[A+56>>2],t[e+60>>2]=t[A+60>>2],e=e+64|0,A=A+64|0;for(;(e|0)<(r|0);)t[e>>2]=t[A>>2],e=e+4|0,A=A+4|0}else for(r=s-4|0;(e|0)<(r|0);)xA[e>>0]=xA[A>>0]|0,xA[e+1>>0]=xA[A+1>>0]|0,xA[e+2>>0]=xA[A+2>>0]|0,xA[e+3>>0]=xA[A+3>>0]|0,e=e+4|0,A=A+4|0;for(;(e|0)<(s|0);)xA[e>>0]=xA[A>>0]|0,e=e+1|0,A=A+1|0;return i|0}function W0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;if(i=e+r|0,A=A&255,(r|0)>=67){for(;e&3;)xA[e>>0]=A,e=e+1|0;for(n=i&-4|0,o=A|A<<8|A<<16|A<<24,s=n-64|0;(e|0)<=(s|0);)t[e>>2]=o,t[e+4>>2]=o,t[e+8>>2]=o,t[e+12>>2]=o,t[e+16>>2]=o,t[e+20>>2]=o,t[e+24>>2]=o,t[e+28>>2]=o,t[e+32>>2]=o,t[e+36>>2]=o,t[e+40>>2]=o,t[e+44>>2]=o,t[e+48>>2]=o,t[e+52>>2]=o,t[e+56>>2]=o,t[e+60>>2]=o,e=e+64|0;for(;(e|0)<(n|0);)t[e>>2]=o,e=e+4|0}for(;(e|0)<(i|0);)xA[e>>0]=A,e=e+1|0;return i-r|0}function gi(e){return e=+e,e>=0?+He(e+.5):+gt(e-.5)}function Y0(e){e=e|0;var A=0,r=0,n=0;return n=P0()|0,r=t[De>>2]|0,A=r+e|0,(e|0)>0&(A|0)<(r|0)|(A|0)<0?(m0(A|0)|0,Nt(12),-1):(A|0)>(n|0)&&!(a0(A|0)|0)?(Nt(12),-1):(t[De>>2]=A,r|0)}return{___divdi3:V0,___muldi3:ft,___remdi3:jr,___uremdi3:Rr,_areNeighborCells:Zn,_bitshift64Ashr:hi,_bitshift64Lshr:wA,_bitshift64Shl:CA,_calloc:Qt,_cellAreaKm2:Dl,_cellAreaM2:_l,_cellAreaRads2:ns,_cellToBoundary:_r,_cellToCenterChild:Ks,_cellToChildPos:wl,_cellToChildren:en,_cellToChildrenSize:p0,_cellToLatLng:ar,_cellToLocalIj:Fl,_cellToParent:_t,_cellToVertex:Xt,_cellToVertexes:ta,_cellsToDirectedEdge:yn,_cellsToLinkedMultiPolygon:pt,_childPosToCell:vl,_compactCells:fl,_constructCell:we,_destroyLinkedMultiPolygon:Xs,_directedEdgeToBoundary:or,_directedEdgeToCells:Mr,_edgeLengthKm:jl,_edgeLengthM:Rl,_edgeLengthRads:Tl,_emscripten_replace_memory:E0,_free:qA,_getBaseCellNumber:te,_getDirectedEdgeDestination:xn,_getDirectedEdgeOrigin:Sr,_getHexagonAreaAvgKm2:qs,_getHexagonAreaAvgM2:Sl,_getHexagonEdgeLengthAvgKm:Ml,_getHexagonEdgeLengthAvgM:Bl,_getIcosahedronFaces:$s,_getIndexDigit:be,_getNumCells:bn,_getPentagons:es,_getRes0Cells:Wr,_getResolution:_A,_greatCircleDistanceKm:rn,_greatCircleDistanceM:kl,_greatCircleDistanceRads:bl,_gridDisk:v,_gridDiskDistances:_,_gridDistance:Ql,_gridPathCells:zl,_gridPathCellsSize:Ol,_gridRing:dA,_gridRingUnsafe:jA,_i64Add:KA,_i64Subtract:ct,_isPentagon:Oe,_isResClassIII:ml,_isValidCell:Ue,_isValidDirectedEdge:Xr,_isValidIndex:Bt,_isValidVertex:li,_latLngToCell:Xn,_llvm_ctlz_i64:as,_llvm_maxnum_f64:mi,_llvm_minnum_f64:En,_llvm_round_f64:Sn,_localIjToCell:Pl,_malloc:y0,_maxFaceCount:yl,_maxGridDiskSize:d,_maxPolygonToCellsSize:ce,_maxPolygonToCellsSizeExperimental:Ul,_memcpy:Ir,_memset:W0,_originToDirectedEdges:Br,_pentagonCount:xl,_polygonToCells:kt,_polygonToCellsExperimental:Gl,_readInt64AsDoubleFromPointer:Jl,_res0CellCount:Vr,_round:gi,_sbrk:Y0,_sizeOfCellBoundary:Yl,_sizeOfCoordIJ:ql,_sizeOfGeoLoop:Kl,_sizeOfGeoPolygon:$l,_sizeOfH3Index:Vl,_sizeOfLatLng:Wl,_sizeOfLinkedGeoPolygon:Zl,_uncompactCells:dl,_uncompactCellsSize:hl,_vertexToLatLng:ra,establishStackSpace:S0,stackAlloc:Zt,stackRestore:O0,stackSave:Q0}})(rr,N0,yA);u.___divdi3=gA.___divdi3,u.___muldi3=gA.___muldi3,u.___remdi3=gA.___remdi3,u.___uremdi3=gA.___uremdi3,u._areNeighborCells=gA._areNeighborCells,u._bitshift64Ashr=gA._bitshift64Ashr,u._bitshift64Lshr=gA._bitshift64Lshr,u._bitshift64Shl=gA._bitshift64Shl,u._calloc=gA._calloc,u._cellAreaKm2=gA._cellAreaKm2,u._cellAreaM2=gA._cellAreaM2,u._cellAreaRads2=gA._cellAreaRads2,u._cellToBoundary=gA._cellToBoundary,u._cellToCenterChild=gA._cellToCenterChild,u._cellToChildPos=gA._cellToChildPos,u._cellToChildren=gA._cellToChildren,u._cellToChildrenSize=gA._cellToChildrenSize,u._cellToLatLng=gA._cellToLatLng,u._cellToLocalIj=gA._cellToLocalIj,u._cellToParent=gA._cellToParent,u._cellToVertex=gA._cellToVertex,u._cellToVertexes=gA._cellToVertexes,u._cellsToDirectedEdge=gA._cellsToDirectedEdge,u._cellsToLinkedMultiPolygon=gA._cellsToLinkedMultiPolygon,u._childPosToCell=gA._childPosToCell,u._compactCells=gA._compactCells,u._constructCell=gA._constructCell,u._destroyLinkedMultiPolygon=gA._destroyLinkedMultiPolygon,u._directedEdgeToBoundary=gA._directedEdgeToBoundary,u._directedEdgeToCells=gA._directedEdgeToCells,u._edgeLengthKm=gA._edgeLengthKm,u._edgeLengthM=gA._edgeLengthM,u._edgeLengthRads=gA._edgeLengthRads;var d0=u._emscripten_replace_memory=gA._emscripten_replace_memory;u._free=gA._free,u._getBaseCellNumber=gA._getBaseCellNumber,u._getDirectedEdgeDestination=gA._getDirectedEdgeDestination,u._getDirectedEdgeOrigin=gA._getDirectedEdgeOrigin,u._getHexagonAreaAvgKm2=gA._getHexagonAreaAvgKm2,u._getHexagonAreaAvgM2=gA._getHexagonAreaAvgM2,u._getHexagonEdgeLengthAvgKm=gA._getHexagonEdgeLengthAvgKm,u._getHexagonEdgeLengthAvgM=gA._getHexagonEdgeLengthAvgM,u._getIcosahedronFaces=gA._getIcosahedronFaces,u._getIndexDigit=gA._getIndexDigit,u._getNumCells=gA._getNumCells,u._getPentagons=gA._getPentagons,u._getRes0Cells=gA._getRes0Cells,u._getResolution=gA._getResolution,u._greatCircleDistanceKm=gA._greatCircleDistanceKm,u._greatCircleDistanceM=gA._greatCircleDistanceM,u._greatCircleDistanceRads=gA._greatCircleDistanceRads,u._gridDisk=gA._gridDisk,u._gridDiskDistances=gA._gridDiskDistances,u._gridDistance=gA._gridDistance,u._gridPathCells=gA._gridPathCells,u._gridPathCellsSize=gA._gridPathCellsSize,u._gridRing=gA._gridRing,u._gridRingUnsafe=gA._gridRingUnsafe,u._i64Add=gA._i64Add,u._i64Subtract=gA._i64Subtract,u._isPentagon=gA._isPentagon,u._isResClassIII=gA._isResClassIII,u._isValidCell=gA._isValidCell,u._isValidDirectedEdge=gA._isValidDirectedEdge,u._isValidIndex=gA._isValidIndex,u._isValidVertex=gA._isValidVertex,u._latLngToCell=gA._latLngToCell,u._llvm_ctlz_i64=gA._llvm_ctlz_i64,u._llvm_maxnum_f64=gA._llvm_maxnum_f64,u._llvm_minnum_f64=gA._llvm_minnum_f64,u._llvm_round_f64=gA._llvm_round_f64,u._localIjToCell=gA._localIjToCell,u._malloc=gA._malloc,u._maxFaceCount=gA._maxFaceCount,u._maxGridDiskSize=gA._maxGridDiskSize,u._maxPolygonToCellsSize=gA._maxPolygonToCellsSize,u._maxPolygonToCellsSizeExperimental=gA._maxPolygonToCellsSizeExperimental,u._memcpy=gA._memcpy,u._memset=gA._memset,u._originToDirectedEdges=gA._originToDirectedEdges,u._pentagonCount=gA._pentagonCount,u._polygonToCells=gA._polygonToCells,u._polygonToCellsExperimental=gA._polygonToCellsExperimental,u._readInt64AsDoubleFromPointer=gA._readInt64AsDoubleFromPointer,u._res0CellCount=gA._res0CellCount,u._round=gA._round,u._sbrk=gA._sbrk,u._sizeOfCellBoundary=gA._sizeOfCellBoundary,u._sizeOfCoordIJ=gA._sizeOfCoordIJ,u._sizeOfGeoLoop=gA._sizeOfGeoLoop,u._sizeOfGeoPolygon=gA._sizeOfGeoPolygon,u._sizeOfH3Index=gA._sizeOfH3Index,u._sizeOfLatLng=gA._sizeOfLatLng,u._sizeOfLinkedGeoPolygon=gA._sizeOfLinkedGeoPolygon,u._uncompactCells=gA._uncompactCells,u._uncompactCellsSize=gA._uncompactCellsSize,u._vertexToLatLng=gA._vertexToLatLng,u.establishStackSpace=gA.establishStackSpace;var at=u.stackAlloc=gA.stackAlloc,Fe=u.stackRestore=gA.stackRestore,i0=u.stackSave=gA.stackSave;if(u.asm=gA,u.cwrap=uA,u.setValue=V,u.getValue=W,Qe){Be(Qe)||(Qe=C(Qe));{Xe();var $t=function(rA){rA.byteLength&&(rA=new Uint8Array(rA)),LA.set(rA,z),u.memoryInitializerRequest&&delete u.memoryInitializerRequest.response,vt()},xt=function(){T(Qe,$t,function(){throw"could not load memory initializer "+Qe})},bt=f0(Qe);if(bt)$t(bt.buffer);else if(u.memoryInitializerRequest){var o0=function(){var rA=u.memoryInitializerRequest,pA=rA.response;if(rA.status!==200&&rA.status!==0){var IA=f0(u.memoryInitializerRequestURL);if(IA)pA=IA.buffer;else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+rA.status+", retrying "+Qe),xt();return}}$t(pA)};u.memoryInitializerRequest.response?setTimeout(o0,0):u.memoryInitializerRequest.addEventListener("load",o0)}else xt()}}var wt;qe=function rA(){wt||It(),wt||(qe=rA)};function It(rA){if(Ze>0||(Le(),Ze>0))return;function pA(){wt||(wt=!0,!oA&&(se(),me(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),ue()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),pA()},1)):pA()}u.run=It;function ht(rA){throw u.onAbort&&u.onAbort(rA),rA+="",Q(rA),D(rA),oA=!0,"abort("+rA+"). Build with -s ASSERTIONS=1 for more info."}if(u.abort=ht,u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return It(),c})(typeof jt=="object"?jt:{}),re="number",ee=re,zr=re,oe=re,le=re,dt=re,PA=re,Cf=[["sizeOfH3Index",re],["sizeOfLatLng",re],["sizeOfCellBoundary",re],["sizeOfGeoLoop",re],["sizeOfGeoPolygon",re],["sizeOfLinkedGeoPolygon",re],["sizeOfCoordIJ",re],["readInt64AsDoubleFromPointer",re],["isValidCell",zr,[oe,le]],["isValidIndex",zr,[oe,le]],["latLngToCell",ee,[re,re,dt,PA]],["cellToLatLng",ee,[oe,le,PA]],["cellToBoundary",ee,[oe,le,PA]],["maxGridDiskSize",ee,[re,PA]],["gridDisk",ee,[oe,le,re,PA]],["gridDiskDistances",ee,[oe,le,re,PA,PA]],["gridRing",ee,[oe,le,re,PA]],["gridRingUnsafe",ee,[oe,le,re,PA]],["maxPolygonToCellsSize",ee,[PA,dt,re,PA]],["polygonToCells",ee,[PA,dt,re,PA]],["maxPolygonToCellsSizeExperimental",ee,[PA,dt,re,PA]],["polygonToCellsExperimental",ee,[PA,dt,re,re,re,PA]],["cellsToLinkedMultiPolygon",ee,[PA,re,PA]],["destroyLinkedMultiPolygon",null,[PA]],["compactCells",ee,[PA,PA,re,re]],["uncompactCells",ee,[PA,re,re,PA,re,dt]],["uncompactCellsSize",ee,[PA,re,re,dt,PA]],["isPentagon",zr,[oe,le]],["isResClassIII",zr,[oe,le]],["getBaseCellNumber",re,[oe,le]],["getResolution",re,[oe,le]],["getIndexDigit",re,[oe,le,re]],["constructCell",ee,[re,re,PA,PA]],["maxFaceCount",ee,[oe,le,PA]],["getIcosahedronFaces",ee,[oe,le,PA]],["cellToParent",ee,[oe,le,dt,PA]],["cellToChildren",ee,[oe,le,dt,PA]],["cellToCenterChild",ee,[oe,le,dt,PA]],["cellToChildrenSize",ee,[oe,le,dt,PA]],["cellToChildPos",ee,[oe,le,dt,PA]],["childPosToCell",ee,[re,re,oe,le,dt,PA]],["areNeighborCells",ee,[oe,le,oe,le,PA]],["cellsToDirectedEdge",ee,[oe,le,oe,le,PA]],["getDirectedEdgeOrigin",ee,[oe,le,PA]],["getDirectedEdgeDestination",ee,[oe,le,PA]],["isValidDirectedEdge",zr,[oe,le]],["directedEdgeToCells",ee,[oe,le,PA]],["originToDirectedEdges",ee,[oe,le,PA]],["directedEdgeToBoundary",ee,[oe,le,PA]],["gridDistance",ee,[oe,le,oe,le,PA]],["gridPathCells",ee,[oe,le,oe,le,PA]],["gridPathCellsSize",ee,[oe,le,oe,le,PA]],["cellToLocalIj",ee,[oe,le,oe,le,re,PA]],["localIjToCell",ee,[oe,le,PA,re,PA]],["getHexagonAreaAvgM2",ee,[dt,PA]],["getHexagonAreaAvgKm2",ee,[dt,PA]],["getHexagonEdgeLengthAvgM",ee,[dt,PA]],["getHexagonEdgeLengthAvgKm",ee,[dt,PA]],["greatCircleDistanceM",re,[PA,PA]],["greatCircleDistanceKm",re,[PA,PA]],["greatCircleDistanceRads",re,[PA,PA]],["cellAreaM2",ee,[oe,le,PA]],["cellAreaKm2",ee,[oe,le,PA]],["cellAreaRads2",ee,[oe,le,PA]],["edgeLengthM",ee,[oe,le,PA]],["edgeLengthKm",ee,[oe,le,PA]],["edgeLengthRads",ee,[oe,le,PA]],["getNumCells",ee,[dt,PA]],["getRes0Cells",ee,[PA]],["res0CellCount",re],["getPentagons",ee,[re,PA]],["pentagonCount",re],["cellToVertex",ee,[oe,le,re,PA]],["cellToVertexes",ee,[oe,le,PA]],["vertexToLatLng",ee,[oe,le,PA]],["isValidVertex",zr,[oe,le]]],Ef=0,Sf=1,Mf=2,Bf=3,Df=4,_f=5,Tf=6,jf=7,Rf=8,If=9,Lf=10,Nf=11,Ff=12,Pf=13,Qf=14,Of=15,zf=16,Hf=17,Gf=18,Uf=19,rt={};rt[Ef]="Success";rt[Sf]="The operation failed but a more specific error is not available";rt[Mf]="Argument was outside of acceptable range";rt[Bf]="Latitude or longitude arguments were outside of acceptable range";rt[Df]="Resolution argument was outside of acceptable range";rt[_f]="Cell argument was not valid";rt[Tf]="Directed edge argument was not valid";rt[jf]="Undirected edge argument was not valid";rt[Rf]="Vertex argument was not valid";rt[If]="Pentagon distortion was encountered";rt[Lf]="Duplicate input";rt[Nf]="Cell arguments were not neighbors";rt[Ff]="Cell arguments had incompatible resolutions";rt[Pf]="Memory allocation failed";rt[Qf]="Bounds of provided memory were insufficient";rt[Of]="Mode or flags argument was not valid";rt[zf]="Index argument was not valid";rt[Hf]="Base cell number was outside of acceptable range";rt[Gf]="Child indexing digits invalid";rt[Uf]="Child indexing digits refer to a deleted subsequence";var Vf=1e3,Wf=1001,rl=1002,$n={};$n[Vf]="Unknown unit";$n[Wf]="Array length out of bounds";$n[rl]="Got unexpected null value for H3 index";var Yf="Unknown error";function nl(c,u,p){var y=p&&"value"in p,x=new Error((c[u]||Yf)+" (code: "+u+(y?", value: "+p.value:"")+")");return x.code=u,x}function Kf(c,u){var p=arguments.length===2?{value:u}:{};return nl(rt,c,p)}function $f(c,u){var p=arguments.length===2?{value:u}:{};return nl($n,c,p)}function sl(c){if(c!==0)throw Kf(c)}var v0={};Cf.forEach(function(u){v0[u[0]]=jt.cwrap.apply(jt,u)});var Gr=16,Zf=4,Vn=8,js=v0.sizeOfH3Index(),qf=v0.sizeOfLatLng(),Jf=v0.sizeOfCellBoundary();v0.sizeOfGeoPolygon();v0.sizeOfGeoLoop();v0.sizeOfLinkedGeoPolygon();v0.sizeOfCoordIJ();function Xf(c){if(!c)throw $f(rl);return c}var A2=/[^0-9a-fA-F]/;function e2(c){if(Array.isArray(c)&&c.length===2&&Number.isInteger(c[0])&&Number.isInteger(c[1]))return c;if(typeof c!="string"||A2.test(c))return[0,0];var u=parseInt(c.substring(0,c.length-8),Gr),p=parseInt(c.substring(c.length-8),Gr);return[p,u]}function Vi(c){if(c>=0)return c.toString(Gr);c=c&2147483647;var u=il(8,c.toString(Gr)),p=(parseInt(u[0],Gr)+8).toString(Gr);return u=p+u.substring(1),u}function t2(c,u){return Vi(u)+il(8,Vi(c))}function il(c,u){for(var p=c-u.length,y="",x=0;x.85?.9+(c-.85)/.15*.1:.1+(c-.15)/.7*.8}function al(c,u,p,y){const x=p-u;if(x<.001)return Yi(y[12]);const C=Math.max(0,Math.min(1,(c-u)/x)),T=m2(C),Q=Math.min(23,Math.floor(T*24));return Yi(y[Q])}function g2(c){const u=new Map;for(const C of c){if(typeof C.lat!="number"||typeof C.lon!="number"||isNaN(C.lat)||isNaN(C.lon))continue;const T=i2(C.lat,C.lon,a2),Q=u.get(T),D=C.weight;Q?(Q.count++,Q.qualitySum+=D):u.set(T,{count:1,qualitySum:D})}const p=[];let y=1/0,x=-1/0;for(const[C,T]of u.entries()){const Q=T.qualitySum/T.count;p.push({hexId:C,count:T.count,avgQuality:Q}),y=Math.min(y,Q),x=Math.max(x,Q)}return{cells:p,minQuality:p.length>0?y:0,maxQuality:p.length>0?x:0}}function p2(c,u,p,y){const x=[];for(const C of c){const Q=ol(C.hexId).map(([E,P])=>[P,E]);Q.push(Q[0]);const D=al(C.avgQuality,u,p,y);x.push({type:"Feature",properties:{color:D,quality:C.avgQuality,count:C.count},geometry:{type:"Polygon",coordinates:[Q]}})}return{type:"FeatureCollection",features:x}}async function y2(c,u,p,y,x){const C=[];let T=0;for(;T[V,z]);P.push(P[0]);const O=al(D.avgQuality,u,p,y);C.push({type:"Feature",properties:{color:O,quality:D.avgQuality,count:D.count},geometry:{type:"Polygon",coordinates:[P]}})}TrequestAnimationFrame(D))}return{type:"FeatureCollection",features:C}}function x2(c,u){const[p,y]=j.useState(c);return j.useEffect(()=>{const x=setTimeout(()=>y(c),u);return()=>clearTimeout(x)},[c,u]),p}function w2({coveragePoints:c,visible:u,terrainEnabled:p=!1,brightness:y=u2,basemapMode:x="dark"}){const{current:C}=Ar(),[T,Q]=j.useState(null);j.useEffect(()=>{const $=()=>{var iA;const vA=(iA=C==null?void 0:C.getMap)==null?void 0:iA.call(C);vA&&!T&&Q(vA)};$();const uA=setInterval($,50),sA=setTimeout(()=>clearInterval(uA),5e3);return()=>{clearInterval(uA),clearTimeout(sA)}},[C,T]);const[D,E]=j.useState(null),[P,O]=j.useState(!1),z=j.useRef({aborted:!1}),V=j.useRef(0),W=j.useRef(x),oA=x2(c,c2),J=j.useMemo(()=>h2(x),[x]);j.useEffect(()=>{if(!oA||!Array.isArray(oA)||oA.length===0){queueMicrotask(()=>{E(null),V.current=0});return}const $=W.current!==x;if(oA.length===V.current&&D&&!$)return;V.current=oA.length,W.current=x,z.current.aborted=!0,z.current={aborted:!1};const uA=z.current;O(!0);const{cells:sA,minQuality:vA,maxQuality:iA}=g2(oA);if(sA.length===0){E(null),O(!1);return}if(sA.length{!uA.aborted&&fA&&E(fA)}).finally(()=>{uA.aborted||O(!1)}),()=>{uA.aborted=!0}},[oA,J]),j.useEffect(()=>{if(!T)return;const $=()=>{var uA,sA;try{const vA=T.getLayer(hr),iA=T.getSource(dr);if(u&&D&&D.features.length>0){if(iA?T.getSource(dr).setData(D):T.addSource(dr,{type:"geojson",data:D}),!vA){const fA=T.getLayer("topology-weak-edges-native"),RA=(sA=(uA=T.getStyle())==null?void 0:uA.layers)==null?void 0:sA.find(EA=>EA.type==="symbol"),DA=fA?"topology-weak-edges-native":RA==null?void 0:RA.id;T.addLayer({id:hr,type:"fill",source:dr,paint:{"fill-color":["get","color"],"fill-opacity":y}},DA)}}else vA&&T.removeLayer(hr),iA&&T.removeSource(dr)}catch(vA){console.warn("[WardrivingHexLayerMapLibre] Layer update error:",vA)}};T.isStyleLoaded()?$():T.once("style.load",$)},[T,u,D,p]),j.useEffect(()=>{if(!(!T||!u))try{T.getLayer(hr)&&T.setPaintProperty(hr,"fill-opacity",y)}catch{}},[T,y,u]),j.useEffect(()=>()=>{if(T)try{T.getLayer(hr)&&T.removeLayer(hr),T.getSource(dr)&&T.removeSource(dr)}catch{}},[T]);const eA=(D==null?void 0:D.features.length)??0;return eA>0&&u?g.jsx("div",{"data-testid":"wardriving-hexlayer-maplibre-active","data-point-count":(c==null?void 0:c.length)||0,"data-cell-count":eA,"data-terrain-enabled":p,"data-is-processing":P,style:{display:"none"}}):null}const Ki="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png",$i="terrarium",Zi=256,qi=14,ln={shadowColor:"rgba(10, 10, 10, 0.6)",highlightColor:"rgba(245, 240, 230, 0.4)",accentColor:"rgba(90, 75, 65, 0.3)",illuminationDirection:315,exaggeration:.35},K0="terrain-dem",Hr="hillshade-dem",Fn="terrain-hillshade";function v2({enabled:c,exaggeration:u=4}){const{current:p}=Ar(),[y,x]=j.useState(null),C=j.useRef(null);return j.useEffect(()=>{const T=()=>{var P;const E=(P=p==null?void 0:p.getMap)==null?void 0:P.call(p);E&&!y&&x(E)};T();const Q=setInterval(T,50),D=setTimeout(()=>clearInterval(Q),5e3);return()=>{clearInterval(Q),clearTimeout(D)}},[p,y]),j.useEffect(()=>{if(!y)return;let T=!0;const Q=()=>{var D,E;if(T)try{if(y.getSource(Hr)||y.addSource(Hr,{type:"raster-dem",tiles:[Ki],encoding:$i,tileSize:Zi,maxzoom:qi}),!y.getLayer(Fn)){const P=(E=(D=y.getStyle())==null?void 0:D.layers)==null?void 0:E.find(O=>O.type==="symbol");y.addLayer({id:Fn,type:"hillshade",source:Hr,paint:{"hillshade-shadow-color":ln.shadowColor,"hillshade-highlight-color":ln.highlightColor,"hillshade-accent-color":ln.accentColor,"hillshade-illumination-direction":ln.illuminationDirection,"hillshade-exaggeration":ln.exaggeration}},P==null?void 0:P.id)}y.getSource(K0)||y.addSource(K0,{type:"raster-dem",tiles:[Ki],encoding:$i,tileSize:Zi,maxzoom:qi})}catch(P){console.error("[TerrainLayer] Source/layer setup error:",P)}};return y.isStyleLoaded()?Q():(y.once("style.load",Q),y.once("load",()=>{T&&!y.getSource(Hr)&&Q()})),()=>{T=!1}},[y]),j.useEffect(()=>{if(!y)return;let T=!0,Q=!1;const D=()=>{if(!(!T||!y.getSource(K0)))try{c?(y.setCenterClampedToGround(!1),y.setTerrain({source:K0,exaggeration:u}),y.setMaxPitch(70),!Q&&y.getPitch()<30&&!y.isMoving()&&(Q=!0,C.current!==null&&clearTimeout(C.current),C.current=window.setTimeout(()=>{C.current=null,T&&!y.isMoving()&&y.getPitch()<30&&y.easeTo({pitch:45,duration:1e3})},200))):(y.setTerrain(null),y.setCenterClampedToGround(!0),y.getPitch()>0&&!y.isMoving()&&y.easeTo({pitch:0,duration:800}),y.setMaxPitch(60))}catch(E){console.error("[TerrainLayer] Terrain state error:",E)}};if(y.isStyleLoaded()&&y.getSource(K0))D();else{const E=()=>{y.getSource(K0)&&D()};y.once("idle",E)}return()=>{T=!1,C.current!==null&&(clearTimeout(C.current),C.current=null)}},[y,c,u]),j.useEffect(()=>()=>{var T;try{(T=y==null?void 0:y.getStyle)!=null&&T.call(y)&&y.isStyleLoaded()&&(y.setTerrain(null),y.getLayer(Fn)&&y.removeLayer(Fn),y.getSource(Hr)&&y.removeSource(Hr),y.getSource(K0)&&y.removeSource(K0))}catch{}},[y]),null}const b2=.03,k2=.1,C2=2,E2=3,S2=.02,M2=3;function B2(c,u=M2){if(c.length<3||u<=0)return c;let p=c;for(let y=0;y0&&x.push([x[0][0],x[0][1]]),p=x}return p}function D2(c,u){let p=1/0,y=-1/0,x=1/0,C=-1/0;for(const[T,Q]of c)Ty&&(y=T),QC&&(C=Q);return p-=u,y+=u,x-=u,C+=u,{minX:p,minY:x,maxX:y,maxY:C,width:y-p,height:C-x}}function _2(c,u={}){if(c.length(eA-C.minX)/C.width*P,V=eA=>(eA-C.minY)/C.height*O,W=eA=>eA/P*C.width+C.minX,oA=eA=>eA/O*C.height+C.minY,J=p/C.width*P;try{const $=ac().x(DA=>z(DA[0])).y(DA=>V(DA[1])).size([P,O]).bandwidth(Math.max(5,J)).cellSize(x)(c);if($.length===0)return{coordinates:[],valid:!1};const sA=Math.max(...$.map(DA=>DA.value))*y;let vA=$[0],iA=1/0;for(const DA of $){const EA=Math.abs(DA.value-sA);EA0){const LA=bA[0],NA=bA[bA.length-1];(LA[0]!==NA[0]||LA[1]!==NA[1])&&bA.push([LA[0],LA[1]])}if(bA.length>=4){const LA=B2(bA);EA.push(LA)}}EA.length>0&&fA.push(EA)}const RA=[];for(const DA of fA)for(const EA of DA)RA.push(EA);return{coordinates:fA,valid:fA.length>0}}catch(eA){return console.warn("[KDE Contour] Failed to generate contour:",eA),{coordinates:[],valid:!1}}}function T2(c,u={}){const p=_2(c,u);return!p.valid||p.coordinates.length===0?null:p.coordinates.length===1?{type:"Polygon",coordinates:p.coordinates[0]}:{type:"MultiPolygon",coordinates:p.coordinates}}const j2="mincut-partition",R2="mincut-partition-fill",I2="mincut-partition-stroke",L2=3,N2=.05,F2=.15,P2=.008,Ji=12;function Xi(c,u,p){return(u[0]-c[0])*(p[1]-c[1])-(u[1]-c[1])*(p[0]-c[0])}function Q2(c){if(c.length<3)return c;const u=[...c].sort((x,C)=>x[0]-C[0]||x[1]-C[1]),p=[];for(const x of u){for(;p.length>=2&&Xi(p[p.length-2],p[p.length-1],x)<=0;)p.pop();p.push(x)}const y=[];for(let x=u.length-1;x>=0;x--){const C=u[x];for(;y.length>=2&&Xi(y[y.length-2],y[y.length-1],C)<=0;)y.pop();y.push(C)}return p.pop(),y.pop(),p.concat(y)}function O2(c,u){if(c.length<3)return c;let p=0,y=0;for(const[x,C]of c)p+=x,y+=C;return p/=c.length,y/=c.length,c.map(([x,C])=>{const T=x-p,Q=C-y,D=Math.sqrt(T*T+Q*Q);if(D<1e-4)return[x,C];const E=(D+u)/D;return[p+T*E,y+Q*E]})}function z2(c,u,p,y,x){const C=x*x,T=C*x;return[.5*(2*u[0]+(-c[0]+p[0])*x+(2*c[0]-5*u[0]+4*p[0]-y[0])*C+(-c[0]+3*u[0]-3*p[0]+y[0])*T),.5*(2*u[1]+(-c[1]+p[1])*x+(2*c[1]-5*u[1]+4*p[1]-y[1])*C+(-c[1]+3*u[1]-3*p[1]+y[1])*T)]}function H2(c){if(c.length<3)return c;const u=[],p=c.length;for(let y=0;yc?U2(c,u,x,C):{type:"FeatureCollection",features:[]},[c,u,x,C]),D=p?y:0,E={"fill-color":["get","color"],"fill-opacity":D},P={"line-color":["get","borderColor"],"line-width":T,"line-opacity":D};return g.jsxs(J0,{id:j2,type:"geojson",data:Q,children:[g.jsx(t0,{id:R2,type:"fill",paint:E}),g.jsx(t0,{id:I2,type:"line",paint:P})]})}function W2(c,u=!1,p=!1,y=!1,x=.7,C){const T=vo(C);return y?x>=.75?T.restBright:T.rest:x>=.85?T.rest:(x>=.7,T.restDim)}function Ao(c){return[c[1],c[0]]}function Y2(c,u,p,y=12){const[x,C]=c,[T,Q]=u,D=[];for(let E=0;E<=y;E++){const P=E/y,O=C+(Q-C)*P,z=x+(T-x)*P,V=4*p*P*(1-P);D.push([O,z,V])}return D}function eo(c,u,p,y,x,C,T,Q,D,E,P,O="dark"){const z=Ws(),V=[];let W=1/0,oA=-1/0;const J=[];for(const $ of c){const uA=$.edge.avgConfidence??(u?.7:.5),sA=$.edge.certainCount/Math.max(T,1),vA=uA*.7+sA*.3+(u?.5:0);J.push({polyline:$,brightnessScore:vA}),W=Math.min(W,vA),oA=Math.max(oA,vA)}if(J.length===0)return{type:"FeatureCollection",features:[]};const eA=oA-W||1;J.sort(($,uA)=>$.brightnessScore-uA.brightnessScore);for(const{polyline:$,brightnessScore:uA}of J){const{from:sA,to:vA,edge:iA}=$,fA=p.get(iA.key)??0;if(fA<=0)continue;const RA=Q.has(iA.key),DA=D.has(iA.key),EA=iA.avgConfidence??(u?.7:.5),yA=E===iA.key,bA=P[iA.fromHash],LA=P[iA.toHash],NA=(bA==null?void 0:bA.node_name)||(bA==null?void 0:bA.name)||iA.fromHash.slice(0,8),GA=(LA==null?void 0:LA.node_name)||(LA==null?void 0:LA.name)||iA.toHash.slice(0,8),kA=[sA[0]+(vA[0]-sA[0])*fA,sA[1]+(vA[1]-sA[1])*fA];let cA;if(!u)cA=1.5;else{const ae=C.get(iA.key)??Ms(iA.certainCount),JA=x.get(iA.key)??ae;cA=JA+(ae-JA)*y,yA?cA=Math.max(cA*1.6,4.5):DA&&(cA=cA*1.3)}let lA;yA?lA=z.edges.highlight:lA=W2(!1,iA.isDirectPathEdge??!1,RA,DA,EA,O);let TA;yA?TA=z.edges.highlight:iA.isDirectPathEdge?TA=z.edges.hoverDirect:RA?TA=z.edges.hoverLoop:TA=z.edges.hoverStandard;let MA;if(!u)MA=(.3+EA*.3)*fA;else{const ae=Math.min(fA*1.5,1)*z.edgeOpacity;MA=DA?ae*1.15:ae}yA&&(MA=.95);const WA=(uA-W)/eA;V.push({type:"Feature",properties:{key:iA.key,baseColor:lA,hoverColor:TA,baseWidth:cA,baseOpacity:MA,brightnessScore:WA,isLoopEdge:RA,isBackbone:DA,isDirectPath:iA.isDirectPathEdge??!1,isHubConnection:iA.isHubConnection??!1,isZeroHop:iA.isZeroHop??!1,isValidated:u,certainCount:iA.certainCount,confidence:EA,symmetryRatio:iA.symmetryRatio??1,dominantDirection:iA.dominantDirection??"balanced",fromName:NA,toName:GA,fromHash:iA.fromHash,toHash:iA.toHash},geometry:{type:"LineString",coordinates:[Ao(sA),Ao(kA)]}})}return{type:"FeatureCollection",features:V}}const K2=150,$2=8;function to(c,u){const p=Ws(),y=[];let x=0;for(const C of c){const T=u.get(C.hash);T&&T.blendedScore>x&&(x=T.blendedScore)}for(const C of c){const{from:T,to:Q,hash:D,neighbor:E,lastHopData:P}=C,O=`neighbor-${D}`,z=(P==null?void 0:P.avgRssi)??E.rssi??null,V=(P==null?void 0:P.avgSnr)??E.snr??null,W=(P==null?void 0:P.count)??0,oA=(P==null?void 0:P.confidence)??1,J=u.get(D),eA=(J==null?void 0:J.listenerScore)??0,$=(J==null?void 0:J.loudScore)??0,uA=(J==null?void 0:J.blendedScore)??0,sA=x>0?uA/x:0,vA=C.rxAdvertCount??0,iA=C.txProxyCount??0,fA=vA+iA,RA=fA>0?(iA-vA)/fA:0,DA=Y2(T,Q,K2,$2);y.push({type:"Feature",properties:{key:O,hash:D,name:E.node_name||E.name||D.slice(0,8),prefix:D.slice(2,4).toUpperCase(),color:p.neighborColor,width:2.5,opacity:.85,rssi:z,snr:V,packetCount:W,confidence:oA,hasAvgRssi:(P==null?void 0:P.avgRssi)!==void 0,hasAvgSnr:(P==null?void 0:P.avgSnr)!==void 0,isNeighborEdge:!0,listenerScore:eA,loudScore:$,blendedScore:uA,trafficWeight:sA,linkAsymmetry:RA,rxAdvertCount:vA,txProxyCount:iA},geometry:{type:"LineString",coordinates:DA}})}return{type:"FeatureCollection",features:y}}function Z2({map:c,showTopology:u,validatedPolylines:p,weakPolylines:y,maxCertainCount:x,loopEdgeKeys:C,backboneEdgeKeys:T,highlightedEdgeKey:Q,neighbors:D,validatedSourceId:E,weakSourceId:P,neighborPolylines:O=[],showNeighborLines:z=!0,neighborSourceId:V,neighborLinkScores:W=new Map,basemapMode:oA}){const J=j.useRef(null);j.useEffect(()=>{const se=c&&"current"in c?c.current:c;J.current=se});const eA=j.useRef(new Map),$=j.useRef(1),uA=j.useRef(new Map),sA=j.useRef(new Map),vA=j.useRef(!1),iA=j.useRef(null),fA=j.useRef(u),RA=j.useRef(new Set),DA=j.useRef(""),EA=j.useRef(new Map),yA=j.useRef(""),bA=j.useRef(""),LA=j.useRef(""),NA=j.useRef(p),GA=j.useRef(y),kA=j.useRef(x),cA=j.useRef(C),lA=j.useRef(T),TA=j.useRef(Q),MA=j.useRef(D),WA=j.useRef(O),ae=j.useRef(z),JA=j.useRef(W),$A=j.useRef(oA);j.useEffect(()=>{NA.current=p,GA.current=y,kA.current=x,cA.current=C,lA.current=T,TA.current=Q,MA.current=D,WA.current=O,ae.current=z,JA.current=W,$A.current=oA},[p,y,x,C,T,Q,D,O,z,W,oA]);const UA=j.useCallback((se=!1)=>{var Ce,Se,pe,Ke,Ze,qe,Xe,vt,Qe,Je;const me=J.current;if(!me)return;const ue=me.getSource(E),Ye=me.getSource(P),ke=me.getSource(V);if(ue){const Be=eo(NA.current,!0,eA.current,$.current,uA.current,sA.current,kA.current,cA.current,lA.current,TA.current,MA.current,$A.current),ze=`${Be.features.length}:${((Se=(Ce=Be.features[0])==null?void 0:Ce.properties)==null?void 0:Se.key)??""}:${((Ke=(pe=Be.features[Be.features.length-1])==null?void 0:pe.properties)==null?void 0:Ke.key)??""}:${Array.from(eA.current.values()).reduce((ot,Rt)=>ot+Rt,0).toFixed(2)}`;(se||ze!==yA.current)&&(ue.setData(Be),yA.current=ze)}if(Ye){const Be=eo(GA.current,!1,eA.current,$.current,uA.current,sA.current,kA.current,cA.current,lA.current,TA.current,MA.current,$A.current),ze=`${Be.features.length}:${((qe=(Ze=Be.features[0])==null?void 0:Ze.properties)==null?void 0:qe.key)??""}:${((vt=(Xe=Be.features[Be.features.length-1])==null?void 0:Xe.properties)==null?void 0:vt.key)??""}`;(se||ze!==bA.current)&&(Ye.setData(Be),bA.current=ze)}if(ke&&WA.current.length>0){const Be=to(WA.current,JA.current),ze=`${Be.features.length}:${((Je=(Qe=Be.features[0])==null?void 0:Qe.properties)==null?void 0:Je.hash)??""}`;(se||ze!==LA.current)&&(ke.setData(Be),LA.current=ze)}},[E,P,V]),Ie=j.useCallback(()=>{iA.current&&(cancelAnimationFrame(iA.current),iA.current=null),eA.current=new Map,$.current=1,uA.current=new Map,sA.current=new Map,vA.current=!1,RA.current=new Set,DA.current="",EA.current=new Map},[]);j.useEffect(()=>{const se=fA.current,me=u;if(fA.current=u,!!J.current){if(iA.current&&(cancelAnimationFrame(iA.current),iA.current=null),se&&!me&&!vA.current){vA.current=!0;const Ye=new Map(eA.current);let ke=null;const Ce=Se=>{ke||(ke=Se);const pe=Se-ke,Ke=Math.min(pe/hc,1),Ze=Go(Ke);for(const[qe,Xe]of Ye)eA.current.set(qe,Xe*(1-Ze));UA(!0),Ke<1?iA.current=requestAnimationFrame(Ce):(vA.current=!1,eA.current=new Map,RA.current=new Set,DA.current="",uA.current=new Map,sA.current=new Map,iA.current=null,UA(!0))};iA.current=requestAnimationFrame(Ce)}!se&&me&&(eA.current=new Map,RA.current=new Set,DA.current="")}},[u,UA]),j.useEffect(()=>{const se=J.current;if(!u||vA.current||!se)return;const me=[...p,...y],ue=me.map(pe=>`${pe.edge.key}:${pe.edge.certainCount}`).sort().join(","),Ye=RA.current.size===0,ke=DA.current!==""&&DA.current!==ue;if(!Ye&&!ke){UA();return}const Ce=[],Se=[];for(const{edge:pe}of me)RA.current.has(pe.key)?Se.push(pe.key):Ce.push(pe.key);ke&&Se.length>0&&(uA.current=new Map(EA.current),$.current=0),sA.current=new Map;for(const{edge:pe}of p){const Ke=Ms(pe.certainCount);sA.current.set(pe.key,Ke)}for(const pe of Ce)eA.current.set(pe,0);for(const pe of Se)eA.current.has(pe)||eA.current.set(pe,1);if(Ce.length>0||ke&&Se.length>0){iA.current&&(cancelAnimationFrame(iA.current),iA.current=null);let pe=null;const Ke=Math.min(100,Dn/Math.max(Ce.length,1)/2),Ze=qe=>{pe||(pe=qe);const Xe=qe-pe;for(let Qe=0;Qe0){const Qe=Math.min(Xe/Dn,1);$.current=Es(Qe)}UA(!0);const vt=Dn+(Ce.length-1)*Ke;Xe{const se=J.current;if(!se||!V)return;const me=()=>{const ke=se.getSource(V);if(!ke)return!1;if(O.length>0){const Ce=to(O,W);ke.setData(Ce)}else ke.setData({type:"FeatureCollection",features:[]});return!0};if(me())return;const ue=ke=>{ke.sourceId===V&&me()&&se.off("sourcedata",ue)};se.on("sourcedata",ue);const Ye=()=>{me()&&(se.off("styledata",Ye),se.off("sourcedata",ue))};return se.on("styledata",Ye),()=>{se.off("sourcedata",ue),se.off("styledata",Ye)}},[V,O,W]);const Le=j.useRef(oA);return j.useEffect(()=>{oA!==Le.current&&(Le.current=oA,yA.current="",bA.current="",LA.current="",UA(!0))},[oA,UA]),j.useEffect(()=>()=>{iA.current&&(cancelAnimationFrame(iA.current),iA.current=null)},[]),{isExiting:vA.current,isAnimating:iA.current!==null,resetAnimationState:Ie,weightAnimProgress:$.current,animStartWeights:uA.current,animTargetWeights:sA.current}}function q2({activeFilters:c,neighborHashes:u,hubConnectedNodes:p,directNodeSet:y,localConnectedNodes:x,nodeTypeMap:C,showTopology:T}){const[Q,D]=j.useState(new Map),E=j.useMemo(()=>[...c].sort().join(","),[c]),P=j.useRef(E),O=j.useRef(!1),z=j.useRef(new Map),V=j.useRef(null),W=j.useRef(p),oA=j.useRef(y),J=j.useRef(x),eA=j.useRef(C),$=j.useRef(T);return j.useEffect(()=>{W.current=p,oA.current=y,J.current=x,eA.current=C,$.current=T},[p,y,x,C,T]),j.useEffect(()=>{const sA=P.current,vA=E;if(P.current=E,sA===vA)return;V.current&&(cancelAnimationFrame(V.current),V.current=null);const iA=new Set(sA?sA.split(",").filter(Boolean):[]),fA=c,RA=W.current,DA=oA.current,EA=eA.current;for(const kA of u)z.current.has(kA)||z.current.set(kA,Math.random());const yA=(kA,cA)=>{if(cA.size===0)return!1;const lA=EA.get(kA)??"unknown";return!!(cA.has("repeater")&&lA==="repeater"||cA.has("companion")&&(lA==="companion"||lA==="unknown")||cA.has("room_server")&&lA==="room_server"||cA.has("direct")&&DA.has(kA)||cA.has("hubs")&&RA.has(kA))},bA=[];for(const kA of u){const cA=yA(kA,iA),lA=yA(kA,fA);cA!==lA&&bA.push({hash:kA,startOpacity:cA?1:0,targetOpacity:lA?1:0})}if(bA.length===0)return;O.current=!0,D(kA=>{const cA=new Map(kA);for(const{hash:lA,startOpacity:TA}of bA)cA.set(lA,TA);return cA});const LA=bA;let NA=null;const GA=kA=>{NA||(NA=kA);const cA=kA-NA;let lA=!0;D(()=>{const MA=new Map;for(const{hash:WA,startOpacity:ae,targetOpacity:JA}of LA){const $A=(z.current.get(WA)??0)*Di,UA=Math.max(0,cA-$A),Ie=Math.min(UA/Bi,1),Le=Es(Ie),se=ae+(JA-ae)*Le;MA.set(WA,se),Ie<1&&(lA=!1)}return MA});const TA=Bi+Di;cA{V.current&&(cancelAnimationFrame(V.current),V.current=null),O.current=!1}},[E,c,u]),{nodeOpacities:Q,getNodeOpacity:(sA,vA)=>O.current&&Q.has(sA)?Q.get(sA):vA?1:0}}const xs=240,ro=240;function J2(c,u){if(c{T.current=C},[C]);const Q=j.useRef(0),D=j.useRef(null),E=j.useRef(new Map),P=j.useRef(new Map);j.useEffect(()=>{P.current=X2(c)},[c]);const O=j.useRef(null);return j.useEffect(()=>{const z=()=>{const V=performance.now(),W=E.current;if(W.size===0){D.current=null,x(new Map);return}const oA=new Map,J=[];for(const[eA,{startTime:$,staggerDelay:uA}]of W){const sA=V-$-uA;if(!(sA<0))if(sA>=_n)J.push(eA);else{const vA=J2(sA,_n);vA>0&&oA.set(eA,vA)}}for(const eA of J)W.delete(eA);x(oA),W.size>0&&O.current?D.current=requestAnimationFrame(O.current):D.current=null};O.current=z},[]),j.useEffect(()=>{if(!p)return;const z=T.current;if(z.length===0)return;const V=Q.current,W=z.filter($=>($.timestamp??0)>V);if(V===0){const $=z.reduce((uA,sA)=>Math.max(uA,sA.timestamp??0),0);Q.current=$;return}if(W.length===0)return;const oA=W.reduce(($,uA)=>Math.max($,uA.timestamp??0),0);Q.current=oA;const J=performance.now();let eA=0;for(const $ of W){const uA=_o($,u);if(!uA||uA.original.length===0)continue;const sA=A1(uA.original,P.current,u);if(sA.length===0)continue;const vA=_n*.5;for(let iA=0;iA()=>{D.current!==null&&(cancelAnimationFrame(D.current),D.current=null)},[]),{blinkingNodes:y,blinkColor:dc}}const $0="edge-blink-source",pr="edge-blink-layer",Rs=1e3,Is=1e3,ws=150,t1=175,r1=3e4,n1=e0.teal,s1="#8B7BAD",i1=2.5,o1=1.875,l1=.5,Wn="node-markers-layer";function a1(c){if(!c.getLayer(pr))return;const u=c.getLayer(Wn)?Wn:void 0;try{c.moveLayer(pr,u)}catch{}}function u1(c,u){const p=new Map;for(const y of Object.keys(c)){const x=dn(y);p.has(x)||p.set(x,y)}if(u){const y=dn(u);p.set(y,u)}return p}function c1(c){return c<0||c>=Rs?0:1-c/Rs}function f1(c){if(c<0||c>=Is)return 0;const u=c/Is;return Math.pow(1-u,3)}function Pn(c){return[c[1],c[0]]}function d1({map:c,nodeCoordinates:u,packets:p,localHash:y,neighbors:x,meshTopology:C,enabled:T=!0}){const Q=j.useRef(null),D=c&&"current"in c?c.current:c;j.useEffect(()=>{Q.current=D},[D]);const E=j.useRef(!1),P=j.useRef(null),O=j.useRef([]),z=j.useRef(0),V=j.useRef(!1),[W,oA]=j.useState(!1),J=j.useRef(null),eA=j.useRef([]),$=j.useRef(new Map),uA=j.useRef(u);j.useEffect(()=>{uA.current=u},[u]),j.useEffect(()=>{$.current=u1(x,y)},[x,y]),j.useEffect(()=>{if(!T){J.current&&(clearTimeout(J.current),J.current=null),eA.current=[],P.current!==null&&(cancelAnimationFrame(P.current),P.current=null),O.current=[];const fA=Q.current;if(fA&&E.current){const RA=fA.getSource($0);RA&&RA.setData({type:"FeatureCollection",features:[]})}V.current=!1,z.current=0}},[T]),j.useEffect(()=>{const fA=D;if(!fA)return;let RA=null,DA=!1;const EA=()=>{if(!DA&&!E.current)try{fA.getLayer(pr)&&fA.removeLayer(pr),fA.getSource($0)&&fA.removeSource($0),fA.addSource($0,{type:"geojson",data:{type:"FeatureCollection",features:[]}});const yA=fA.getLayer(Wn)?Wn:void 0;fA.addLayer({id:pr,type:"line",source:$0,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],s1,n1],"line-width":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],o1,i1],"line-opacity":["*",["get","opacityMult"],["interpolate",["linear"],["get","intensity"],0,0,.1,.8,.5,1,1,1]]}},yA),E.current=!0,oA(!0),RA&&(clearInterval(RA),RA=null)}catch{}};return fA.isStyleLoaded()&&EA(),fA.once("style.load",()=>{EA()}),E.current||(RA=setInterval(()=>{if(E.current){RA&&clearInterval(RA);return}EA()},100),setTimeout(()=>{RA&&(clearInterval(RA),RA=null)},5e3)),()=>{DA=!0,RA&&clearInterval(RA),P.current!==null&&(cancelAnimationFrame(P.current),P.current=null);const yA=Q.current;if(yA&&E.current){try{yA.getLayer(pr)&&yA.removeLayer(pr),yA.getSource($0)&&yA.removeSource($0)}catch{}E.current=!1,oA(!1)}}},[D]);const sA=j.useRef(()=>{});j.useEffect(()=>{sA.current=()=>{const fA=Q.current;if(!fA)return;const RA=fA.getSource($0);if(!RA)return;const DA=performance.now(),EA=O.current,yA=[],bA=[];for(const LA of EA){const NA=DA-LA.startTime-LA.delay,GA=LA.isSpeculative?Is:Rs;if(NA0&&yA.push({type:"Feature",properties:{intensity:kA,opacityMult:LA.isSpeculative?l1:1,isSpeculative:LA.isSpeculative??!1},geometry:{type:"LineString",coordinates:[LA.fromCoord,LA.toCoord]}})}}RA.setData({type:"FeatureCollection",features:yA}),O.current=bA,bA.length>0?P.current=requestAnimationFrame(()=>sA.current()):P.current=null}},[]);const vA=j.useCallback(()=>{const fA=Q.current;fA&&a1(fA),P.current===null&&(P.current=requestAnimationFrame(()=>sA.current()))},[]),iA=j.useCallback(()=>{if(!Q.current||!E.current)return;const RA=eA.current;if(eA.current=[],J.current=null,RA.length===0)return;const DA=$.current,EA=uA.current;if(DA.size===0)return;const yA=performance.now();let bA=0,LA=!1;const NA=new Set;for(const GA of RA){const kA=_o(GA,y);if(!kA||kA.original.length<2)continue;const cA=kA.original;let lA=0,TA=null;for(let JA=0;JA0){JA.sort((Le,se)=>se.confidence-Le.confidence);const $A=Math.max(1,Math.ceil(JA.length*.25)),UA=JA.slice(0,$A),Ie=bA+lA*ws;for(const{edgeKey:Le,otherHash:se}of UA){const me=EA.get(TA),ue=EA.get(se);O.current.push({edgeKey:Le,fromCoord:Pn(me),toCoord:Pn(ue),startTime:yA,delay:Ie,isSpeculative:!0}),NA.add(Le),LA=!0}}}lA>0&&(bA+=lA*ws*.5)}LA&&vA()},[y,C,vA]);j.useEffect(()=>{const fA=Q.current;if(!T||!fA||!W||p.length===0)return;const RA=Date.now(),DA=z.current;if(!V.current){V.current=!0;const bA=(RA-r1)/1e3,LA=p.filter(GA=>(GA.timestamp??0)>=bA);let NA=0;for(const GA of p){const kA=GA.timestamp??0;kA>NA&&(NA=kA)}if(z.current=NA,LA.length>0){LA.sort((kA,cA)=>(kA.timestamp??0)-(cA.timestamp??0));const GA=LA.slice(-20);eA.current.push(...GA),iA()}return}const EA=p.filter(bA=>(bA.timestamp??0)>DA);if(EA.length===0)return;let yA=0;for(const bA of EA){const LA=bA.timestamp??0;LA>yA&&(yA=LA)}z.current=yA,eA.current.push(...EA),J.current&&clearTimeout(J.current),J.current=setTimeout(iA,t1)},[T,p,iA,W]),j.useEffect(()=>()=>{J.current&&clearTimeout(J.current)},[])}var Z0={},mr={};/** * @license React * react-dom-server-legacy.browser.production.min.js * @@ -99,13 +99,13 @@ Compares older measurements to newer ones.`,Z=((LA=P.forward)==null?void 0:LA.un * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var no;function h1(){if(no)return mr;no=1;var c=To();function u(d){for(var v="https://reactjs.org/docs/error-decoder.html?invariant="+d,_=1;_