diff --git a/docs/wireframes/howl-bot-widgets.html b/docs/wireframes/howl-bot-widgets.html new file mode 100644 index 00000000..95a00a6d --- /dev/null +++ b/docs/wireframes/howl-bot-widgets.html @@ -0,0 +1,1161 @@ + + +
+ + +First-draft SVG sketches for inline companion chat widgets — pymc_console
+ + + + + ++ HOWL Bot Wireframes v0.1 — First-draft sketches for collaboration. All colors reference pymc_console CSS variables (sys-*, zinc-*). + Open this file in a browser to preview. +
+ + + diff --git a/frontend/dist/VERSION b/frontend/dist/VERSION index 2d41f236..caef596e 100644 --- a/frontend/dist/VERSION +++ b/frontend/dist/VERSION @@ -1 +1 @@ -0.9.312 +0.9.313 diff --git a/frontend/dist/assets/AnalyzerFilterPanel-6rdoNUd9.js b/frontend/dist/assets/AnalyzerFilterPanel-DRXSWRku.js similarity index 98% rename from frontend/dist/assets/AnalyzerFilterPanel-6rdoNUd9.js rename to frontend/dist/assets/AnalyzerFilterPanel-DRXSWRku.js index 5522d445..1994d859 100644 --- a/frontend/dist/assets/AnalyzerFilterPanel-6rdoNUd9.js +++ b/frontend/dist/assets/AnalyzerFilterPanel-DRXSWRku.js @@ -1,4 +1,4 @@ -import{e as U,c_ as J,ao as q,aa as G,cE as Q,cs as V,r as d,j as n,bM as K,B as Y}from"./index-BXuscHlA.js";import{c as Z}from"./node-types-DcVrjPZe.js";import{C as W}from"./circle-question-mark-BRhEuEaL.js";import{F as ee}from"./funnel-H6zOOlsG.js";import{S as te}from"./search-CJVt1qRW.js";/** +import{e as U,c_ as J,ao as q,aa as G,cE as Q,cs as V,r as d,j as n,bM as K,B as Y}from"./index-BBBuaCQs.js";import{c as Z}from"./node-types-DJyFsA81.js";import{C as W}from"./circle-question-mark-CI9cD3nq.js";import{F as ee}from"./funnel-C8NxsG5E.js";import{S as te}from"./search-Dk9GWMDh.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. diff --git a/frontend/dist/assets/AutoConfigureDialog-BYa3iJhA.js b/frontend/dist/assets/AutoConfigureDialog-2NSNWjfu.js similarity index 98% rename from frontend/dist/assets/AutoConfigureDialog-BYa3iJhA.js rename to frontend/dist/assets/AutoConfigureDialog-2NSNWjfu.js index 3b85498c..231746ed 100644 --- a/frontend/dist/assets/AutoConfigureDialog-BYa3iJhA.js +++ b/frontend/dist/assets/AutoConfigureDialog-2NSNWjfu.js @@ -1 +1 @@ -import{r as f,ef as Q,j as e,a7 as X,aa as Z,c3 as M,cs as U,cE as V,ew as G,eB as ee,aC as ae,aK as se,aD as te,a2 as J,bY as ne,B as w,c as g,aE as le}from"./index-BXuscHlA.js";import{C as ie}from"./PageLayout-DMlJphZf.js";import{W as re}from"./wand-sparkles-BtQTQ8OM.js";import{A as oe}from"./arrow-right-BLOvRmAV.js";const ce={0:"1-byte",1:"2-byte",2:"3-byte"};function de(s){return ce[s]??`${s+1}-byte`}function ke({nodeName:s,publicKey:a,pathHashMode:r}){const[c,n]=f.useState(null),[o,m]=f.useState(null);f.useEffect(()=>{let l=!1;return(async()=>{try{const p=await Q();if(l)return;if(p.success&&p.data){const h=p.data;n(Array.isArray(h.configured)?h.configured:[]),m(Array.isArray(h.configured_companions)?h.configured_companions:[])}}catch{}})(),()=>{l=!0}},[]);const y=l=>{var p;return((p=l.settings)==null?void 0:p.node_name)||l.name};return e.jsxs(ie,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(Z,{}),title:"Node Information"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4 sm:gap-6",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-fg-secondary",children:"Repeater Name"}),e.jsx("div",{className:"mt-0.5 sm:mt-1 space-y-2",children:e.jsxs("div",{children:[e.jsx("p",{className:"type-data text-fg-primary truncate font-mono",title:s,children:s}),a&&e.jsx("div",{className:"mt-1 min-w-0",children:e.jsx(M,{copy:!0,truncate:"css",className:"w-full",size:"responsive",children:a})})]})}),r!=null&&e.jsxs("div",{className:"mt-4",children:[e.jsx("span",{className:"type-label text-fg-secondary",children:"Path Hash Size"}),e.jsx("p",{className:"type-data text-fg-primary mt-0.5 font-mono",children:de(r)})]})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-fg-secondary",children:"Room Servers"}),e.jsx("div",{className:"mt-0.5 sm:mt-1 space-y-2",children:c===null?e.jsx("span",{className:"type-data text-fg-muted",children:"—"}):c.length===0?e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(U,{className:"w-3.5 h-3.5 text-sys-indigo flex-shrink-0"}),e.jsx("span",{className:"type-data text-fg-muted",children:"None"})]}):c.map(l=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(U,{className:"w-3.5 h-3.5 text-sys-indigo flex-shrink-0"}),e.jsx("span",{className:"type-data text-fg-primary truncate",title:y(l),children:y(l)})]}),(l.public_key||l.identity_key)&&e.jsx("div",{className:"mt-1 pl-5 min-w-0",children:e.jsx(M,{copy:!0,truncate:"css",className:"w-full",size:"responsive",children:l.public_key||l.identity_key})})]},l.name))})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("span",{className:"type-label text-fg-secondary",children:"Companions"}),e.jsx("div",{className:"mt-0.5 sm:mt-1 space-y-2",children:o===null?e.jsx("span",{className:"type-data text-fg-muted",children:"—"}):o.length===0?e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(V,{className:"w-3.5 h-3.5 text-sys-cyan flex-shrink-0"}),e.jsx("span",{className:"type-data text-fg-muted",children:"None"})]}):o.map(l=>e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(V,{className:"w-3.5 h-3.5 text-sys-cyan flex-shrink-0"}),e.jsx("span",{className:"type-data text-fg-primary truncate",title:y(l),children:y(l)})]}),(l.public_key||l.identity_key)&&e.jsx("div",{className:"mt-1 pl-5 min-w-0",children:e.jsx(M,{copy:!0,truncate:"css",className:"w-full",size:"responsive",children:l.public_key||l.identity_key})})]},l.name))})]})]})]})}const j=168,S={sparse:50,light:200,moderate:500,dense:1e3},me={sparse:{bucketCapacity:3,refillTokens:1,refillIntervalHours:1,minIntervalSeconds:15,violationThreshold:2,basePenaltyMinutes:30,penaltyMultiplier:2,maxPenaltyHours:12,violationDecayHours:2,ewmaAlpha:.15,hysteresisMinutes:8},light:{bucketCapacity:2,refillTokens:1,refillIntervalHours:1,minIntervalSeconds:20,violationThreshold:2,basePenaltyMinutes:60,penaltyMultiplier:3,maxPenaltyHours:24,violationDecayHours:2,ewmaAlpha:.12,hysteresisMinutes:6},moderate:{bucketCapacity:2,refillTokens:1,refillIntervalHours:2,minIntervalSeconds:30,violationThreshold:1,basePenaltyMinutes:120,penaltyMultiplier:4,maxPenaltyHours:48,violationDecayHours:4,ewmaAlpha:.1,hysteresisMinutes:5},dense:{bucketCapacity:1,refillTokens:1,refillIntervalHours:4,minIntervalSeconds:60,violationThreshold:1,basePenaltyMinutes:180,penaltyMultiplier:4,maxPenaltyHours:72,violationDecayHours:6,ewmaAlpha:.08,hysteresisMinutes:3},congested:{bucketCapacity:1,refillTokens:1,refillIntervalHours:8,minIntervalSeconds:120,violationThreshold:1,basePenaltyMinutes:360,penaltyMultiplier:4,maxPenaltyHours:168,violationDecayHours:12,ewmaAlpha:.03,hysteresisMinutes:2}};function pe(s){return sb(k,Q))}function b(k,j){const Q=j==null?NaN:+j;if(isNaN(Q))throw new Error(`invalid value: ${j}`);var z=[],Y=[];return E(k,Q,function(U){y(U,k,Q),xc(U)>0?z.push([U]):Y.push(U)}),Y.forEach(function(U){for(var q=0,sA=z.length,X;q=j,Qr[K<<2].forEach(uA);++U 0&&Y0&&U=0&&Q>=0))throw new Error("invalid size");return a=j,u=Q,x},x.thresholds=function(k){return arguments.length?(d=typeof k=="function"?k:Array.isArray(k)?sn(rl.call(k)):sn(k),x):d},x.smooth=function(k){return arguments.length?(y=k?B:Sc,x):y===B},x}function Ec(a){return isFinite(a)?a:NaN}function yn(a,u){return a==null?!1:+a>=u}function ys(a){return a==null||isNaN(a=+a)?-1/0:a}function Ri(a,u,d,y){const x=y-u,b=d-u,E=isFinite(x)||isFinite(b)?x/b:Math.sign(x)/Math.sign(b);return isNaN(E)?a:a+E-.5}function Mc(a){return a[0]}function Bc(a){return a[1]}function Dc(){return 1}function _c(){var a=Mc,u=Bc,d=Dc,y=960,x=500,b=20,E=2,F=b*3,B=y+F*2>>E,k=x+F*2>>E,j=sn(20);function Q(K){var oA=new Float32Array(B*k),uA=Math.pow(2,-E),kA=-1;for(const LA of K){var lA=(a(LA,++kA,K)+F)*uA,aA=(u(LA,kA,K)+F)*uA,BA=+d(LA,kA,K);if(BA&&lA>=0&&lA=0&&aA lA*kA))(oA).map((lA,aA)=>(lA.value=+uA[aA],Y(lA)))}z.contours=function(K){var oA=Q(K),uA=Ti().size([B,k]),kA=Math.pow(2,2*E),lA=aA=>{aA=+aA;var BA=Y(uA.contour(oA,aA*kA));return BA.value=aA,BA};return Object.defineProperty(lA,"max",{get:()=>Bi(oA)/kA}),lA};function Y(K){return K.coordinates.forEach(U),K}function U(K){K.forEach(q)}function q(K){K.forEach(sA)}function sA(K){K[0]=K[0]*Math.pow(2,E)-F,K[1]=K[1]*Math.pow(2,E)-F}function X(){return F=b*3,B=y+F*2>>E,k=x+F*2>>E,z}return z.x=function(K){return arguments.length?(a=typeof K=="function"?K:sn(+K),z):a},z.y=function(K){return arguments.length?(u=typeof K=="function"?K:sn(+K),z):u},z.weight=function(K){return arguments.length?(d=typeof K=="function"?K:sn(+K),z):d},z.size=function(K){if(!arguments.length)return[y,x];var oA=+K[0],uA=+K[1];if(!(oA>=0&&uA>=0))throw new Error("invalid size");return y=oA,x=uA,X()},z.cellSize=function(K){if(!arguments.length)return 1< =1))throw new Error("invalid cell size");return E=Math.floor(Math.log(K)/Math.LN2),X()},z.thresholds=function(K){return arguments.length?(j=typeof K=="function"?K:Array.isArray(K)?sn(rl.call(K)):sn(K),z):j},z.bandwidth=function(K){if(!arguments.length)return Math.sqrt(b*(b+1));if(!((K=+K)>=0))throw new Error("invalid bandwidth");return b=(Math.sqrt(4*K*K+1)-1)/2,X()},z}function js(){const a=ka();return R.useMemo(()=>Ca.getPackets(),[a])}function T0({label:a,icon:u,status:d,detail:y}){return p.jsxs("div",{className:Or("flex items-center gap-3 py-3 px-4 radius-inset transition-base",d==="active"&&"bg-sys-blue/10",d==="complete"&&"bg-sys-blue/10 ring-2 ring-inset ring-sys-blue",d==="pending"&&"opacity-40"),children:[p.jsx("div",{className:Or("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0 transition-all duration-300",d==="active"&&"bg-sys-blue/20",d==="complete"&&"bg-sys-blue/20",d==="pending"&&"bg-subtle-fill"),children:d==="complete"?p.jsx(Yn,{className:"w-4 h-4 text-sys-blue"}):d==="active"?p.jsx(q0,{className:"w-4 h-4 animate-spin text-sys-blue"}):p.jsx("span",{className:"text-fg-muted",children:u})}),p.jsxs("div",{className:"flex-1 min-w-0",children:[p.jsx("div",{className:Or("text-sm font-medium transition-colors",d==="active"&&"text-sys-blue",d==="complete"&&"text-sys-blue",d==="pending"&&"text-fg-muted"),children:a}),y&&d!=="pending"&&p.jsx("div",{className:"text-xs text-fg-muted mt-0.5 truncate",children:y})]})]})}function Tc({isOpen:a,onClose:u}){const{packetCacheState:d,triggerDeepAnalysis:y}=Sa(),x=Ea(),b=Ma(),E=d.packetCount,[F,B]=R.useState("fetching");R.useEffect(()=>{a&&y()},[a,y]),R.useEffect(()=>{if(a){if(d.isTopologyLoading)B("fetching");else if(x)B("analyzing"),setTimeout(()=>B("building"),500),setTimeout(()=>B("discovering"),1e3);else if(b>0&&!d.isTopologyLoading){B("complete");const U=setTimeout(()=>{u()},1500);return()=>clearTimeout(U)}}},[a,d.isTopologyLoading,x,b,u]);const k=F==="complete",j=d.loadProgress,Q=R.useMemo(()=>{if(j&&j.target>0){const U=(j.loaded/1e3).toFixed(1),q=(j.target/1e3).toFixed(1);return`Loading... ${U}k / ${q}k packets (${j.percent}%)`}return E>0?`${E.toLocaleString()} packets loaded`:"Connecting to database..."},[j,E]),z=U=>{const q=["fetching","analyzing","building","discovering","complete"],sA=q.indexOf(F),X=q.indexOf(U);return X {};return p.jsx(_o,{open:a,onClose:Y,size:"sm",bottomSheet:!1,children:p.jsx(Ba,{isLoading:!k,borderRadius:16,children:p.jsx(To,{className:"p-6 radius-card overflow-hidden",children:k?p.jsxs("div",{className:"flex flex-col items-center py-6",children:[p.jsx(Xt.div,{variants:cu,initial:"hidden",animate:"visible",className:"w-16 h-16 rounded-full flex items-center justify-center mb-4 bg-sys-blue/20",children:p.jsx(Yn,{className:"w-8 h-8 text-sys-blue"})}),p.jsx("h3",{className:"type-micro text-sys-blue",children:"Ready!"}),p.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"})]}):p.jsxs(p.Fragment,{children:[p.jsxs("div",{className:"flex items-center gap-3 mb-5",children:[p.jsx("div",{className:"w-10 h-10 radius-inset flex items-center justify-center bg-sys-blue/15",children:p.jsx(Ds,{className:"w-5 h-5 text-sys-blue"})}),p.jsxs("div",{children:[p.jsx("h3",{className:"type-micro",children:"Deep Analysis"}),p.jsx("p",{className:"text-xs text-fg-muted",children:"Building mesh topology"})]})]}),p.jsxs("div",{className:"space-y-2",children:[p.jsx(T0,{label:"Fetching Packets",icon:p.jsx(Ro,{className:"w-4 h-4"}),status:z("fetching"),detail:Q}),p.jsx(T0,{label:"Analyzing Database",icon:p.jsx(du,{className:"w-4 h-4"}),status:z("analyzing"),detail:"Processing packet paths"}),p.jsx(T0,{label:"Building Topology",icon:p.jsx(Ds,{className:"w-4 h-4"}),status:z("building"),detail:"Computing mesh edges"}),p.jsx(T0,{label:"Discovering Nodes",icon:p.jsx(el,{className:"w-4 h-4"}),status:z("discovering"),detail:"Viterbi HMM ghost detection"})]}),p.jsx("p",{className:"text-xs text-fg-muted text-center mt-5",children:"This may take a few seconds..."})]})})})})}const Rc=R.memo(Tc),nl=16,Is=24,jc=nl,Ic=5,Cn={nodeFill:ar.blue,nodeStroke:"rgba(255,255,255,0.9)",nodeColor:ar.indigo,localColor:ar.amber,hubColor:ar.purple,gatewayColor:ar.indigo,mobileColor:ar.orange,roomServerColor:ar.pink,neighborColor:ar.amber,edges:{rest:kn[700],restBright:kn[600],restDim:kn[800],hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:kn[400],hoverNeighbor:ar.amber,neighborRest:kn[500],neighborHover:ar.amber,highlight:"#FFD700"},edgeOpacity:.82};function Ks(){if(typeof window>"u")return Cn;const a=J0(),u=jo();return{nodeFill:a.nodeFill,nodeStroke:a.nodeStroke,nodeColor:Cn.nodeColor,localColor:a.localColor,hubColor:a.hubColor,gatewayColor:a.gatewayColor,mobileColor:a.mobileColor,roomServerColor:a.roomColor,neighborColor:a.neighborColor,edges:{rest:u.rest,restBright:u.restBright,restDim:u.restDim,hoverDirect:u.hoverDirect,hoverLoop:u.hoverLoop,hoverStandard:u.hoverStandard,hoverNeighbor:u.hoverNeighbor,neighborRest:Cn.edges.neighborRest,neighborHover:Cn.edges.neighborHover,highlight:u.highlight},edgeOpacity:Cn.edgeOpacity}}const R0=2e3,j0=750,Lc="#00FF00",Nc=500,ji=500,Ii=250,Fc=150,sl=200,Pc=En.snappy;function zn({color:a,ring:u}){const d=jc-2;return p.jsx("span",{className:"shrink-0 rounded-full","aria-hidden":"true",style:{width:d,height:d,backgroundColor:u?"transparent":a,border:u?`${Ic-1}px solid ${a}`:void 0,boxSizing:"border-box"}})}function xs({color:a,pattern:u="solid"}){return p.jsx("svg",{className:"shrink-0","aria-hidden":"true",width:18,height:6,viewBox:"0 0 18 6",children:p.jsx("line",{x1:0,y1:3,x2:18,y2:3,stroke:a,strokeWidth:3,strokeLinecap:"round",strokeDasharray:u==="dashed"?"5,3":u==="dotted"?"2,3":void 0})})}function lr({indicator:a,label:u,tooltip:d}){return p.jsxs("div",{className:"flex items-center gap-1.5",children:[a,p.jsx("span",{className:"text-fg-secondary",children:u}),d&&p.jsx(Lo,{content:d,delay:sl,children:p.jsx("span",{className:"cursor-help text-[11px] text-fg-muted opacity-75 hover:opacity-100 transition-opacity",children:"ⓘ"})})]})}function Qc(a){return`legend-section-${a.toLowerCase().replace(/\s+/g,"-")}`}function ws({title:a,tooltip:u,isOpen:d,onToggle:y,showDivider:x,children:b}){const E=Qc(a);return p.jsxs("div",{className:x?"mt-2 pt-2 border-t border-edge-subtle":"",children:[p.jsxs("button",{type:"button",onClick:y,"aria-expanded":d,"aria-controls":E,className:"group w-full flex items-center justify-between py-1 min-h-[44px] sm:min-h-0 font-medium text-fg-secondary hover:text-fg-primary transition-colors",children:[p.jsxs("span",{className:"flex items-center gap-1",children:[a,p.jsx(Lo,{content:u,delay:sl,children:p.jsx("span",{className:"cursor-help text-[11px] text-fg-muted opacity-75 group-hover:opacity-100 transition-opacity",children:"ⓘ"})})]}),p.jsx(Xt.span,{animate:{rotate:d?0:-90},transition:{duration:.15},"aria-hidden":"true",children:p.jsx(Vs,{className:"w-3 h-3 text-fg-muted"})})]}),p.jsx(Sr,{initial:!1,children:d&&p.jsx(Xt.div,{id:E,role:"region","aria-label":a,initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:Pc,className:"overflow-hidden",children:p.jsx("div",{className:"flex flex-col gap-1 pt-1.5",children:b})})})]})}function Li({label:a,value:u,color:d}){return p.jsxs("div",{className:"flex justify-between tabular-nums text-fg-muted",children:[p.jsx("span",{children:a}),p.jsx("span",{className:d?"":"text-fg-secondary",style:d?{color:d}:void 0,children:u})]})}function Ni({icon:a,color:u,title:d,subtitle:y}){return p.jsx("div",{className:"mt-1.5 pt-1.5 border-t border-edge-subtle",children:p.jsxs("div",{className:"flex items-center gap-1.5",children:[p.jsx("span",{className:"shrink-0",style:{color:u},children:a}),p.jsxs("div",{className:"flex flex-col min-w-0",children:[p.jsx("span",{className:"font-medium truncate",style:{color:u},children:d}),p.jsx("span",{className:"text-[10px] leading-tight text-fg-muted",children:y})]})]})})}function Oc(a){return a.some(([,u])=>{var y;const d=(y=u.contact_type)==null?void 0:y.toLowerCase();return d==="room server"||d==="room_server"||d==="room"||d==="server"})}function zc(a){let u=0;for(const d of a.txDelayRecommendations.values())d.networkRole==="backbone"&&u++;return u}function Hc({showTopology:a,validatedPolylineCount:u,filteredNeighborCount:d,hasLocalNode:y,meshTopology:x,zeroHopNeighbors:b,neighborsWithLocation:E,basemapMode:F="dark"}){const B=Da(),k=_a(),j=Ta(),Q=k.filter(uA=>uA.isLikelyReal).length,z=zc(x),Y=b.size>0,[U,q]=R.useState(!0),[sA,X]=R.useState(!0),[K,oA]=R.useState(!0);return p.jsxs("div",{className:"map-control-surface p-2.5 text-xs",children:[p.jsxs(ws,{title:"Nodes",tooltip:"Node type shown by shape + color. Yellow = direct RF neighbor.",isOpen:U,onToggle:()=>q(uA=>!uA),children:[p.jsx(lr,{indicator:p.jsx(zn,{color:B.nodeFill}),label:"Node",tooltip:"Standard mesh node. Repeater, client, or companion device."}),p.jsx(lr,{indicator:p.jsx(zn,{color:B.hubColor}),label:"Hub",tooltip:"Network hub (≥10% of last-hop traffic)."}),Oc(E)&&p.jsx(lr,{indicator:p.jsx(Ra,{className:"w-3 h-3 shrink-0",style:{color:B.roomColor},strokeWidth:2.5}),label:"Room",tooltip:"Room Server identity for client sync."}),p.jsx(lr,{indicator:p.jsx(mu,{className:"w-3 h-3 shrink-0",style:{color:B.localColor},strokeWidth:2.5}),label:"Local",tooltip:"Your repeater running pyMC_Repeater."}),Y&&p.jsx(lr,{indicator:p.jsx(zn,{color:B.neighborColor}),label:"Neighbor",tooltip:"Zero-hop direct RF contact."}),x.gatewayNodes.length>0&&p.jsx(lr,{indicator:p.jsx(zn,{color:B.gatewayColor}),label:"Gateway",tooltip:"Significant forwarder (7-10% traffic)."}),z>0&&p.jsx(lr,{indicator:p.jsx(zn,{color:B.hubColor}),label:"Backbone",tooltip:"Critical relay with high centrality."}),x.mobileNodes.length>0&&p.jsx(lr,{indicator:p.jsx(zn,{color:B.mobileColor,ring:!0}),label:"Mobile",tooltip:"Volatile node that appears/disappears."}),Q>0&&p.jsx(lr,{indicator:p.jsx(el,{className:"w-3 h-3 shrink-0",style:{color:B.ghostColor},strokeWidth:2.5}),label:`Ghost (${Q})`,tooltip:"Unknown repeater from Viterbi analysis."})]}),Y&&p.jsxs(ws,{title:"Link Quality",tooltip:"Neighbor edge colors based on bidirectional balance.",isOpen:sA,onToggle:()=>X(uA=>!uA),showDivider:!0,children:[p.jsx(lr,{indicator:p.jsx(xs,{color:V0.YELLOW,pattern:"solid"}),label:"2-Way",tooltip:"33-67% balanced. Ideal bidirectional link."}),p.jsx(lr,{indicator:p.jsx(xs,{color:V0.GREEN,pattern:"dashed"}),label:"Listener",tooltip:">67% listener. They hear us well."}),p.jsx(lr,{indicator:p.jsx(xs,{color:V0.RED,pattern:"dotted"}),label:"Loud",tooltip:"<33% listener. They route more to us."})]}),a&&u>0&&p.jsxs(ws,{title:"Topology",tooltip:"Links with 5+ validations. Thickness = strength.",isOpen:K,onToggle:()=>oA(uA=>!uA),showDivider:!0,children:[p.jsx(Li,{label:"Nodes",value:d+(y?1:0)}),x.hubNodes.length>0&&p.jsx(Li,{label:"Hubs",value:x.hubNodes.length,color:Cn.hubColor}),x.loops.length>0&&p.jsx(Ni,{icon:p.jsx(Io,{className:"w-3 h-3"}),color:Cn.edges.hoverLoop,title:`${x.loops.length} ${x.loops.length===1?"Loop":"Loops"}`,subtitle:"Redundant paths"}),j.totalPaths>0&&p.jsx(Ni,{icon:p.jsx(Zo,{className:"w-3 h-3"}),color:B.ghostColor,title:`${j.totalPaths.toLocaleString()} Viterbi`,subtitle:"HMM decoded paths"})]})]})}const Fi={repeater:"blue",companion:"cyan",room_server:"pink",hubs:"indigo",direct:"green"},I0={repeater:"Repeaters",companion:"Companions",room_server:"Rooms",hubs:"Hubs",direct:"Direct"},Pi={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"},Gc=["repeater","companion","room_server"],Qi=["hubs","direct"],Hn="!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",L0="!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",Uc=()=>typeof window>"u"?!1:window.innerWidth<640;function Vc({mapRef:a,showNeighborLines:u,onToggleNeighborLines:d,hasNeighborPolylines:y,nodeFilters:x,onToggleFilter:b,onToggleAll:E,filterCounts:F,showCoverage:B,onToggleCoverage:k,showMinCut:j=!1,onToggleMinCut:Q,hasMinCutData:z=!1,show3DTerrain:Y,onToggle3DTerrain:U,basemapMode:q,onToggleBasemap:sA,isFullscreen:X,onToggleFullscreen:K,showLinkQuality:oA=!1,onToggleLinkQuality:uA,hasTraceLinks:kA=!1}){const[lA,aA]=R.useState(()=>!Uc()),BA=()=>{var FA,UA;(UA=(FA=a.current)==null?void 0:FA.getMap())==null||UA.zoomIn()},EA=()=>{var FA,UA;(UA=(FA=a.current)==null?void 0:FA.getMap())==null||UA.zoomOut()},bA=()=>{var UA;const FA=(UA=a.current)==null?void 0:UA.getMap();FA&&FA.easeTo({bearing:0,pitch:0,duration:300})},fA="w-4 h-4",IA=q==="light"?"#525252":"var(--fg-secondary)",LA=x.length>=y0.length;return p.jsx(p.Fragment,{children:p.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:[p.jsxs("div",{className:"map-control-surface flex flex-nowrap items-center gap-0.5 sm:gap-1 p-1 overflow-hidden",children:[y&&p.jsx(Nt,{plain:!0,color:u?"warning":"muted",onClick:d,title:u?"Hide edge lines":"Show edge lines","aria-label":u?"Hide edge lines":"Show edge lines","aria-pressed":u,className:Hn,"data-tint":u?"warning":void 0,children:p.jsx(ja,{className:fA})}),p.jsx(Nt,{plain:!0,color:"muted",onClick:()=>aA(FA=>!FA),title:lA?"Hide node filters":"Show node filters","aria-label":lA?"Collapse node filters":"Expand node filters","aria-expanded":lA,className:Hn,children:p.jsx(yu,{className:fA})}),p.jsx(Sr,{initial:!1,children:lA&&p.jsxs(Xt.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:[p.jsx(ps,{color:LA?"green":"zinc",customColor:LA?void 0:IA,onClick:E,title:"Show all nodes","aria-pressed":LA,"aria-label":"Show all node types",className:"shrink-0",children:"All"}),Gc.map(FA=>{const UA=F[FA];if(UA===0)return null;const vA=!LA&&x.includes(FA);return p.jsx(ps,{color:vA?Fi[FA]:"zinc",customColor:vA?void 0:IA,onClick:()=>b(FA),title:Pi[FA],"aria-pressed":vA,"aria-label":`${I0[FA]} (${UA})`,className:"shrink-0",children:I0[FA]},FA)}),Qi.some(FA=>F[FA]>0)&&p.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"}),Qi.map(FA=>{const UA=F[FA];if(UA===0)return null;const vA=!LA&&x.includes(FA);return p.jsx(ps,{color:vA?Fi[FA]:"zinc",customColor:vA?void 0:IA,onClick:()=>b(FA),title:Pi[FA],"aria-pressed":vA,"aria-label":`${I0[FA]} (${UA})`,className:"shrink-0",children:I0[FA]},FA)})]})}),z&&Q&&p.jsx(Nt,{plain:!0,color:j?"primary":"muted",onClick:Q,title:j?"Hide community partition":"Show community partition","aria-label":j?"Hide community partition":"Show community partition","aria-pressed":j,className:Hn,"data-tint":j?"primary":void 0,children:p.jsx(Ts,{className:fA})}),p.jsx(Nt,{plain:!0,color:q==="light"?"primary":"muted",onClick:sA,title:q==="light"?"Switch to dark map":"Switch to light map","aria-label":q==="light"?"Switch to dark map":"Switch to light map","aria-pressed":q==="light",className:Hn,"data-tint":q==="light"?"primary":void 0,children:q==="light"?p.jsx(Ws,{className:fA}):p.jsx(Ys,{className:fA})}),p.jsx(Nt,{plain:!0,color:Y?"success":"muted",onClick:U,title:Y?"Disable 3D terrain":"Enable 3D terrain","aria-label":Y?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":Y,className:Hn,"data-tint":Y?"success":void 0,children:p.jsx($u,{className:fA})}),p.jsx(Nt,{plain:!0,color:"muted",onClick:K,title:X?"Exit fullscreen":"Fullscreen","aria-label":X?"Exit fullscreen":"Enter fullscreen","aria-pressed":X,className:Hn,children:X?p.jsx(fu,{className:fA}):p.jsx(hu,{className:fA})})]}),p.jsxs("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:[p.jsx(Nt,{plain:!0,color:"muted",onClick:BA,title:"Zoom in","aria-label":"Zoom in",className:L0,children:p.jsx(xu,{className:fA})}),p.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),p.jsx(Nt,{plain:!0,color:"muted",onClick:EA,title:"Zoom out","aria-label":"Zoom out",className:L0,children:p.jsx(No,{className:fA})}),p.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),p.jsx(Nt,{plain:!0,color:"muted",onClick:bA,title:"Reset bearing to north","aria-label":"Reset bearing to north",className:L0,children:p.jsx(wu,{className:fA})})]}),kA&&uA&&p.jsx("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:p.jsx(Nt,{plain:!0,color:oA?"success":"muted",onClick:uA,title:oA?"Hide link quality overlay":"Show link quality overlay","aria-label":oA?"Hide link quality overlay":"Show link quality overlay","aria-pressed":oA,className:L0,"data-tint":oA?"success":void 0,children:p.jsx(tl,{className:fA})})})]})})}const Wc="#4ADE80",Yc="#16A34A",$c="rgba(10, 26, 10, 1)",Kc="rgba(220, 252, 231, 1)",xn="DeepAnalysis",Zc=700,Oi="abcdefghijklmnopqrstuvwxyz0123456789";function qc(){return Oi[Math.floor(Math.random()*Oi.length)]}function Jc({isActive:a,hasAnalyzed:u,isLoading:d,onClick:y,basemapMode:x="dark"}){const b=x==="light",E=b?Yc:Wc,[F,B]=R.useState(!1),[k,j]=R.useState(xn),Q=R.useRef(!1),z=R.useRef(null),[Y]=R.useState(()=>{var X;return typeof window<"u"&&(((X=window.matchMedia)==null?void 0:X.call(window,"(hover: hover)").matches)??!1)}),U=F&&!a&&!d&&Y;R.useEffect(()=>{if(F&&!a&&!d&&!Q.current){Q.current=!0;const X=performance.now(),K=oA=>{const uA=oA-X,kA=Math.min(uA/Zc,1),lA=Math.floor(kA*xn.length);let aA="";for(let BA=0;BA {z.current&&cancelAnimationFrame(z.current)}},[F,a,d]);const q=d?"Analyzing...":k,sA=d?"Analyzing packet history":u?a?"Hide topology edges":"Show topology edges":"Load full packet history and build topology";return p.jsxs("button",{onClick:y,onMouseEnter:()=>Y&&B(!0),onMouseLeave:()=>Y&&B(!1),onPointerEnter:()=>Y&&B(!0),onPointerLeave:()=>Y&&B(!1),disabled:d,className:`map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base ${d?"cursor-wait":""}`,style:{padding:"0.5rem 0.625rem",...a&&{backgroundColor:b?Kc:$c}},title:sA,"aria-label":sA,"aria-pressed":a,children:[d?p.jsx(q0,{className:"w-3.5 h-3.5 shrink-0 animate-spin",style:{color:E}}):p.jsx(Ds,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${a?"":"text-fg-secondary"}`,style:{...a&&{color:E},...U&&{color:E}}}),p.jsx("span",{className:`${a?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:a||U?700:500,letterSpacing:"-0.01em",lineHeight:1,...a&&{color:E},...U&&{color:E}},children:q})]})}const Xc=ar.teal,Af="#0D7377",ef="rgba(10, 36, 32, 1)",tf="rgba(204, 251, 241, 1)",zi="LiveTrace",rf=400,Hi=100;function nf({isActive:a,onClick:u,basemapMode:d="dark"}){const y=d==="light",x=y?Af:Xc,[b,E]=R.useState(!1),[F,B]=R.useState(0),k=R.useRef(!1),j=R.useRef(null),[Q,z]=R.useState(0),Y=R.useRef(!1),[U]=R.useState(()=>{var K;return typeof window<"u"&&(((K=window.matchMedia)==null?void 0:K.call(window,"(hover: hover)").matches)??!1)}),q=b&&!a&&U;R.useEffect(()=>{q&&!Y.current&&(Y.current=!0,z(1),setTimeout(()=>z(2),Hi),setTimeout(()=>z(3),Hi*2)),b||(Y.current=!1,z(0))},[q,b]),R.useEffect(()=>{if(b&&!a&&!k.current){k.current=!0;const K=performance.now(),oA=uA=>{const kA=uA-K,lA=Math.min(kA/rf,1);B(lA),lA<1&&(j.current=requestAnimationFrame(oA))};j.current=requestAnimationFrame(oA)}return b||(j.current&&(cancelAnimationFrame(j.current),j.current=null),k.current=!1,B(0)),()=>{j.current&&cancelAnimationFrame(j.current)}},[b,a]);const sA=K=>{if(a)return x;if(!q)return;const oA=zi.length,uA=F*(oA+2);return K>=uA-2&&K U&&E(!0),onMouseLeave:()=>U&&E(!1),onPointerEnter:()=>U&&E(!0),onPointerLeave:()=>U&&E(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...a&&{backgroundColor:y?tf:ef}},title:a?"Disable live packet tracing (reduces CPU usage)":"Enable live packet tracing","aria-label":X,"aria-pressed":a,children:[p.jsx(vu,{className:`w-3.5 h-3.5 shrink-0 ${a?"":"text-fg-secondary"}`,fill:Q===1?"#FFFFFF":Q===3?x:"none",stroke:Q===1||Q===2?"#FFFFFF":a||q?x:"currentColor",style:{transition:"fill 0.05s, stroke 0.05s"}}),p.jsx("span",{className:`${a?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:a||q?700:500,letterSpacing:"-0.01em",lineHeight:1},children:zi.split("").map((K,oA)=>p.jsx("span",{style:{color:sA(oA)||void 0},children:K},oA))})]})}const Gi=.2,sf="rgba(26, 20, 8, 1)",of="rgba(254, 243, 199, 1)",vs=.01,bs=1,Ui="#fe8019",lf="'Wardrive', serif",Ls=1.45,af=Ls*1.1,uf=80;function cf({isActive:a,onClick:u,brightness:d=.7,onBrightnessChange:y,basemapMode:x="dark"}){const b=x==="light",[E,F]=R.useState(!1),[B,k]=R.useState(!1),[j]=R.useState(()=>{var K;return typeof window<"u"&&(((K=window.matchMedia)==null?void 0:K.call(window,"(hover: hover)").matches)??!1)});R.useEffect(()=>{if(!E||a)return;const K=requestAnimationFrame(()=>k(!0)),oA=setTimeout(()=>k(!1),uf);return()=>{cancelAnimationFrame(K),clearTimeout(oA)}},[E,a]);const Q=Math.max(vs,Math.min(bs,d)),z=K=>{K.stopPropagation();const oA=Math.min(bs,Q+Gi);y==null||y(oA)},Y=K=>{K.stopPropagation();const oA=Math.max(vs,Q-Gi);y==null||y(oA)},U=Q vs+.001,sA=E&&!a&&j,X=a?"Configure wardriving coverage":"Show wardriving coverage";return p.jsxs("button",{onClick:u,onMouseEnter:()=>j&&F(!0),onMouseLeave:()=>j&&F(!1),onPointerEnter:()=>j&&F(!0),onPointerLeave:()=>j&&F(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...a&&{backgroundColor:b?of:sf}},title:X,"aria-label":X,"aria-pressed":a,children:[p.jsx(ec,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${a?"text-sys-amber":"text-fg-secondary"}`,style:sA?{color:Ui}:void 0}),p.jsx("span",{className:`${a?"text-sys-amber":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:a||sA?lf:"ui-monospace, SFMono-Regular, monospace",fontSize:a||sA?"0.75rem":"0.6875rem",fontWeight:500,letterSpacing:"-0.01em",lineHeight:1,transition:"none",transform:a?`scale(${Ls})`:sA?`scale(${B?af:Ls})`:void 0,transformOrigin:"left center",...sA?{color:Ui}:{}},children:"Wardrive"}),a&&y&&p.jsxs("div",{className:"ml-auto flex items-center gap-0.5",children:[p.jsx("button",{onClick:Y,disabled:!q,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 ${q?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:q?void 0:{color:b?"rgba(0, 0, 0, 0.25)":"rgba(251, 191, 36, 0.3)"},title:`Decrease opacity (${Math.round(Q*100)}%)`,"aria-label":`Decrease opacity, currently ${Math.round(Q*100)}%`,children:p.jsx(Ws,{className:"w-3.5 h-3.5"})}),p.jsx("button",{onClick:z,disabled:!U,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 ${U?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:U?void 0:{color:b?"rgba(0, 0, 0, 0.25)":"rgba(251, 191, 36, 0.3)"},title:`Increase opacity (${Math.round(Q*100)}%)`,"aria-label":`Increase opacity, currently ${Math.round(Q*100)}%`,children:p.jsx(Ys,{className:"w-3.5 h-3.5"})})]})]})}const ff="0123456789bcdefghjkmnpqrstuvwxyz";function hf(a){let u=!0,d=-90,y=90,x=-180,b=180;for(const E of a.toLowerCase()){const F=ff.indexOf(E);if(F!==-1)for(let B=4;B>=0;B--){const k=F>>B&1;if(u){const j=(x+b)/2;k?x=j:b=j}else{const j=(d+y)/2;k?d=j:y=j}u=!u}}return{lat:(d+y)/2,lon:(x+b)/2}}function df(a){return Math.exp(-a*Math.LN2/7)}const Ns="pymc-wardriving-url",il="pymc-wardriving-enabled",ol="pymc-wardriving-brightness",Vi=.7;function mf(){return typeof localStorage>"u"?"":localStorage.getItem(Ns)||""}function Wi(a){typeof localStorage>"u"||(a?localStorage.setItem(Ns,a):localStorage.removeItem(Ns))}function pf(){return typeof localStorage>"u"?!1:localStorage.getItem(il)==="true"}function N0(a){typeof localStorage>"u"||localStorage.setItem(il,String(a))}function gf(){if(typeof localStorage>"u")return Vi;const a=localStorage.getItem(ol);if(a){const u=parseFloat(a);if(!isNaN(u)&&u>=.01&&u<=1)return u}return Vi}function yf(a){if(typeof localStorage>"u")return;const u=Math.max(.01,Math.min(1,a));localStorage.setItem(ol,String(u))}const xf=8e3;async function wf(a,u={},d=xf){const y=new AbortController,x=setTimeout(()=>y.abort(),d);try{return await fetch(a,{...u,signal:y.signal})}catch(b){throw b instanceof Error&&b.name==="AbortError"?new Error(`Connection timed out after ${d/1e3}s`):b}finally{clearTimeout(x)}}async function vf(a){const d=`${a.replace(/\/+$/,"").replace(/\/get-nodes$/,"").replace(/\/get-samples$/,"")}/get-samples`,y=await wf(d,{headers:{Accept:"application/json"}});if(!y.ok)throw new Error(`Failed to fetch precise samples: ${y.status}`);return y.json()}function bf(a,u=null){if(a!==null){const y=(Math.max(-12,Math.min(12,a))+12)/24;if(u!==null){const b=(Math.max(-120,Math.min(-50,u))+120)/70;return y*.8+b*.2}return y}return u!==null?(Math.max(-120,Math.min(-50,u))+120)/70:.5}function kf(a){var d;const u=[];for(const y of a.keys){if(!y.observed)continue;const{lat:x,lon:b}=hf(y.hash),E=parseInt(y.time,10),F=isNaN(E)?30:(Date.now()-E)/(1e3*60*60*24),B=df(F),j=bf(y.snr,y.rssi)*(.3+B*.7);u.push({lat:x,lon:b,successRate:y.observed?1:0,weight:j,totalSamples:1,ageDays:F,geohash:y.hash,repeaters:((d=y.path)==null?void 0:d.map(Q=>Q.toLowerCase()))||[]})}return u}const x0=$s((a,u)=>({status:"idle",isVisible:pf(),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:mf(),brightness:gf(),isModalOpen:!1,openModal:()=>a({isModalOpen:!0}),closeModal:()=>a({isModalOpen:!1}),setUrl:d=>a({url:d}),setBrightness:d=>{const y=Math.max(.01,Math.min(1,d));yf(y),a({brightness:y})},toggleVisibility:()=>{const d=!u().isVisible;N0(d),a({isVisible:d})},setVisible:d=>{N0(d),a({isVisible:d})},loadCoverage:async d=>{if(!d.trim())return a({error:"Please enter a URL",status:"error"}),!1;try{new URL(d.trim())}catch{return a({error:"Invalid URL format",status:"error"}),!1}a({error:null,status:"connecting"});try{a({status:"loading"});const y=await vf(d.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");a({status:"processing"});const x=kf(y);if(x.length===0)throw new Error("No valid coverage points found");return a({coveragePoints:x,repeaters:[],stats:{coverageCount:x.length,repeaterCount:0,lastUpdated:new Date},status:"success",isVisible:!0,url:d.trim()}),Wi(d.trim()),N0(!0),!0}catch(y){const x=y instanceof Error?y.message:"Failed to load coverage data";let b=x;return x.includes("timed out")?b="Connection timed out. Server may be unreachable or slow.":x.includes("Failed to fetch")||x.includes("NetworkError")?b="Could not connect to server. Check the URL and try again.":x.includes("CORS")?b="Server does not allow cross-origin requests.":x.includes("404")?b="Coverage endpoint not found. Check the URL.":(x.includes("ERR_NAME_NOT_RESOLVED")||x.includes("DNS"))&&(b="Server not found. Check the URL for typos."),a({error:b,status:"error"}),!1}},clearCoverage:()=>{a({coveragePoints:[],repeaters:[],stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},status:"idle",error:null,isVisible:!1,url:""}),Wi(""),N0(!1)}})),Cf={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"},ll={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)"},al=R.createContext({theme:ll,isLight:!1});function Bn(){return R.useContext(al)}function Sf({status:a,hasData:u}){const{theme:d,isLight:y}=Bn(),x=R.useMemo(()=>a==="connecting"||a==="loading"||a==="processing"?{icon:p.jsx(q0,{className:"w-3.5 h-3.5 animate-spin"}),label:a==="connecting"?"Connecting...":a==="loading"?"Loading...":"Processing...",color:d.warning,bg:d.warningBg}:a==="error"?{icon:p.jsx(Tu,{className:"w-3.5 h-3.5"}),label:"Disconnected",color:d.error,bg:d.errorBg}:u?{icon:p.jsx(Ru,{className:"w-3.5 h-3.5"}),label:"Connected",color:d.success,bg:d.successBg}:{icon:p.jsx(Po,{className:"w-3.5 h-3.5"}),label:"Ready",color:d.textMuted,bg:y?"rgba(0,0,0,0.04)":"rgba(255,255,255,0.04)"},[a,u,d,y]);return p.jsxs(Xt.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,p.jsx("span",{children:x.label})]},x.label)}function Ef({status:a}){const{theme:u}=Bn(),d=R.useMemo(()=>{switch(a){case"connecting":return 25;case"loading":return 60;case"processing":return 90;default:return 0}},[a]);return d===0?null:p.jsx(Xt.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:p.jsx(Xt.div,{className:"h-full rounded-full",style:{backgroundColor:u.primary},initial:{width:0},animate:{width:`${d}%`},transition:{duration:.4,ease:"easeOut"}})})}function Yi({variant:a,title:u,description:d,onDismiss:y}){const{theme:x}=Bn(),b=R.useMemo(()=>{switch(a){case"success":return{icon:p.jsx(Yn,{className:"w-4 h-4"}),color:x.success,bg:x.successBg,border:x.successBorder};case"error":return{icon:p.jsx(ju,{className:"w-4 h-4"}),color:x.error,bg:x.errorBg,border:x.errorBorder};case"info":return{icon:p.jsx(Wu,{className:"w-4 h-4"}),color:x.info,bg:x.infoBg,border:x.infoBorder}}},[a,x]);return p.jsxs(Xt.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:En.snappy,className:"flex items-start gap-3 p-3 rounded-lg border",style:{backgroundColor:b.bg,borderColor:b.border,color:b.color},children:[p.jsx("div",{className:"shrink-0 mt-0.5",children:b.icon}),p.jsxs("div",{className:"flex-1 min-w-0",children:[p.jsx("p",{className:"text-sm font-medium",children:u}),d&&p.jsx("p",{className:"text-xs mt-0.5 opacity-80",children:d})]}),y&&p.jsx("button",{onClick:y,className:"shrink-0 p-1 rounded hover:bg-black/10 transition-colors","aria-label":"Dismiss",children:p.jsx(Mn,{className:"w-3.5 h-3.5"})})]})}function Mf({value:a,onChange:u,onSubmit:d,disabled:y}){const{theme:x,isLight:b}=Bn(),[E,F]=R.useState(!1),B=k=>{k.key==="Enter"&&!k.shiftKey&&!y&&(k.preventDefault(),d())};return p.jsxs("div",{className:"space-y-1.5",children:[p.jsx("label",{className:"block text-sm font-medium",style:{color:x.textSecondary},children:"Coverage Server URL"}),p.jsxs("div",{className:"relative",children:[p.jsx("input",{type:"url",value:a,onChange:k=>u(k.target.value),onKeyDown:B,onFocus:()=>F(!0),onBlur:()=>F(!1),placeholder:"https://coverage.wcmesh.com",disabled:y,className:Or("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:E?x.borderFocus:x.border,color:x.text,boxShadow:E?`0 0 0 3px ${b?"rgba(59, 130, 246, 0.15)":"rgba(139, 92, 246, 0.15)"}`:"none"}}),a&&!y&&p.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:k=>k.currentTarget.style.color=x.text,onMouseLeave:k=>k.currentTarget.style.color=x.textMuted,"aria-label":"Clear URL",children:p.jsx(Mn,{className:"w-4 h-4"})})]}),p.jsx("p",{className:"text-xs",style:{color:x.textMuted},children:"Press Enter to connect, or use the Connect button below"})]})}function Bf({value:a,onChange:u}){const{theme:d,isLight:y}=Bn(),x=Math.round(a*100);return p.jsx(Xt.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:En.gentle,className:"overflow-hidden",children:p.jsx("div",{className:"p-3 rounded-lg border",style:{backgroundColor:d.bgSubtle,borderColor:d.border},children:p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsxs("div",{className:"relative w-4 h-4",children:[p.jsx(Ws,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:d.textMuted,opacity:a<.5?1:0}}),p.jsx(Ys,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:d.primary,opacity:a>=.5?1:0}})]}),p.jsxs("div",{className:"flex-1",children:[p.jsxs("div",{className:"flex items-center justify-between mb-1.5",children:[p.jsx("span",{className:"text-xs font-medium",style:{color:d.textSecondary},children:"Layer Opacity"}),p.jsxs("span",{className:"text-xs font-mono tabular-nums px-1.5 py-0.5 rounded",style:{color:d.text,backgroundColor:y?"rgba(0,0,0,0.06)":"rgba(255,255,255,0.06)"},children:[x,"%"]})]}),p.jsx("input",{type:"range",min:5,max:100,value:x,onChange:b=>u(Number(b.target.value)/100),className:Or("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, ${d.primary} ${x}%, ${d.sliderTrack} ${x}%)`,"--thumb-color":d.sliderThumb}}),p.jsx("style",{children:` + input[type="range"]::-webkit-slider-thumb { + background-color: ${d.sliderThumb}; + } + input[type="range"]::-moz-range-thumb { + background-color: ${d.sliderThumb}; + } + `})]})]})})})}function Df({coverageCount:a,repeaterCount:u,lastUpdated:d}){const{theme:y}=Bn();return p.jsxs("div",{className:"grid grid-cols-3 gap-2 p-3 rounded-lg border",style:{backgroundColor:y.bgSubtle,borderColor:y.border},children:[p.jsxs("div",{className:"text-center",children:[p.jsx(Mi,{value:a,format:{useGrouping:!0,maximumFractionDigits:0},className:"text-lg font-semibold tabular-nums block",style:{color:y.text}}),p.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Points"})]}),p.jsxs("div",{className:"text-center border-x",style:{borderColor:y.border},children:[p.jsx(Mi,{value:u,format:{useGrouping:!0,maximumFractionDigits:0},className:"text-lg font-semibold tabular-nums block",style:{color:y.text}}),p.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Repeaters"})]}),p.jsxs("div",{className:"text-center",children:[p.jsxs("div",{className:"flex items-center justify-center gap-1",children:[p.jsx(Jo,{className:"w-3.5 h-3.5",style:{color:y.textMuted}}),p.jsx("span",{className:"text-lg font-semibold tabular-nums",style:{color:y.text},children:d?d.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"—"})]}),p.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Updated"})]})]})}function $i({icon:a,label:u,onClick:d,disabled:y,variant:x="default",active:b}){const{theme:E,isLight:F}=Bn(),B=R.useMemo(()=>x==="danger"?{text:E.error,hoverBg:F?"rgba(220, 38, 38, 0.08)":"rgba(239, 68, 68, 0.15)"}:{text:b?E.primary:E.textSecondary,hoverBg:E.hoverBg},[x,b,E,F]);return p.jsxs("button",{onClick:d,disabled:y,className:Or("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:B.text},onMouseEnter:k=>!y&&(k.currentTarget.style.backgroundColor=B.hoverBg),onMouseLeave:k=>k.currentTarget.style.backgroundColor="transparent",children:[a,p.jsx("span",{children:u})]})}function _f(){const a=Fo(),u=a==="light",d=u?Cf:ll,{isModalOpen:y,closeModal:x,status:b,isVisible:E,stats:F,error:B,url:k,brightness:j,loadCoverage:Q,clearCoverage:z,toggleVisibility:Y,setUrl:U,setBrightness:q}=x0(),sA=b==="connecting"||b==="loading"||b==="processing",X=F.coverageCount>0,[K,oA]=R.useState(!0),[uA,kA]=R.useState(k);R.useEffect(()=>{kA(k)},[k]),R.useEffect(()=>{b==="error"&&oA(!0)},[b]);const lA=R.useCallback(async()=>{await Q(uA)},[uA,Q]),aA=R.useCallback(()=>{kA(""),z()},[z]),BA=R.useCallback(fA=>{kA(fA),U(fA)},[U]),EA=R.useCallback(()=>{sA||x()},[sA,x]),bA=uA.trim().length>0&&!sA;return p.jsx(al.Provider,{value:{theme:d,isLight:u},children:p.jsxs(_o,{open:y,onClose:EA,size:"md",bottomSheet:!0,basemapMode:a,children:[p.jsxs("div",{className:"flex items-center justify-between p-4 border-b",style:{borderColor:d.border},children:[p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsx("div",{className:"p-2 rounded-lg",style:{backgroundColor:d.bgSubtle,color:d.primary},children:p.jsx(Po,{className:"w-5 h-5"})}),p.jsxs("div",{children:[p.jsx("h2",{className:"type-micro",style:{color:d.text},children:"Wardriving Coverage"}),p.jsx("p",{className:"text-xs",style:{color:d.textMuted},children:"RF coverage heatmap overlay"})]})]}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx(Sf,{status:b,hasData:X}),!sA&&p.jsxs(p.Fragment,{children:[p.jsx("button",{onClick:EA,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:d.primary},children:"Done"}),p.jsx("button",{onClick:EA,className:"hidden sm:flex items-center justify-center p-2 rounded-lg transition-colors",style:{color:d.textMuted},onMouseEnter:fA=>{fA.currentTarget.style.color=d.text,fA.currentTarget.style.backgroundColor=d.hoverBg},onMouseLeave:fA=>{fA.currentTarget.style.color=d.textMuted,fA.currentTarget.style.backgroundColor="transparent"},"aria-label":"Close",children:p.jsx(Mn,{className:"w-5 h-5"})})]})]})]}),p.jsx(Sr,{children:sA&&p.jsx(Ef,{status:b})}),p.jsxs(To,{className:"space-y-4",children:[p.jsx(Mf,{value:uA,onChange:BA,onSubmit:lA,disabled:sA}),p.jsx(Sr,{children:b==="error"&&B&&K&&p.jsx(Yi,{variant:"error",title:"Connection Failed",description:B,onDismiss:()=>oA(!1)})}),p.jsx(Sr,{children:b==="success"&&X&&p.jsx(Yi,{variant:"success",title:"Coverage Data Loaded",description:"Adjust opacity below, then close to view on map"})}),p.jsx(Sr,{children:X&&!sA&&p.jsx(Xt.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:8},transition:En.snappy,children:p.jsx(Df,{coverageCount:F.coverageCount,repeaterCount:F.repeaterCount,lastUpdated:F.lastUpdated})})}),p.jsx(Sr,{children:X&&!sA&&p.jsx(Bf,{value:j,onChange:q})})]}),p.jsxs("div",{className:"flex items-center justify-between p-4 border-t",style:{borderColor:d.border},children:[p.jsx("div",{className:"flex items-center gap-1",children:p.jsx(Sr,{children:X&&p.jsxs(Xt.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},exit:{opacity:0,x:-10},transition:En.snappy,className:"flex items-center gap-1",children:[p.jsx($i,{icon:E?p.jsx(Cu,{className:"w-4 h-4"}):p.jsx(Zo,{className:"w-4 h-4"}),label:E?"Hide":"Show",onClick:Y,disabled:sA,active:E}),p.jsx($i,{icon:p.jsx(_u,{className:"w-4 h-4"}),label:"Clear",onClick:aA,disabled:sA,variant:"danger"})]})})}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx(Nt,{plain:!0,color:"muted",onClick:EA,disabled:sA,children:X?"Done":"Cancel"}),p.jsx(Nt,{color:"warning",onClick:lA,disabled:!bA,children:sA?p.jsxs(p.Fragment,{children:[p.jsx(q0,{"data-slot":"icon",className:"animate-spin"}),b==="connecting"?"Connecting...":b==="loading"?"Loading...":"Processing..."]}):X?p.jsxs(p.Fragment,{children:[p.jsx(Io,{"data-slot":"icon"}),"Refresh"]}):p.jsxs(p.Fragment,{children:[p.jsx(Ro,{"data-slot":"icon"}),"Connect"]})})]})]})]})})}const Tf={bandwidth:.07,threshold:.1,opacity:1,strokeWidth:4.5};function F0({label:a,value:u,min:d,max:y,step:x,unit:b,formatValue:E,onChange:F}){const B=E?E(u):u.toFixed(2);return p.jsxs("div",{className:"flex items-center gap-2 sm:gap-2",children:[p.jsx("span",{className:"text-xs font-medium w-14 sm:w-16 shrink-0 text-fg-secondary",children:a}),p.jsx("input",{type:"range",min:d,max:y,step:x,value:u,onChange:k=>F(parseFloat(k.target.value)),className:`flex-1 h-1.5 rounded-full appearance-none cursor-pointer bg-elevated + [&::-webkit-slider-thumb]:appearance-none + [&::-webkit-slider-thumb]:w-3.5 + [&::-webkit-slider-thumb]:h-3.5 + [&::-webkit-slider-thumb]:rounded-full + [&::-webkit-slider-thumb]:bg-sys-indigo + [&::-webkit-slider-thumb]:cursor-pointer + [&::-webkit-slider-thumb]:transition-transform + [&::-webkit-slider-thumb]:hover:scale-110 + [&::-webkit-slider-thumb]:shadow-md`}),p.jsxs("span",{className:"text-xs font-mono tabular-nums w-12 sm:w-14 text-right shrink-0 text-fg-muted",children:[B,b&&p.jsx("span",{className:"ml-0.5 opacity-70",children:b})]})]})}function P0({icon:a,label:u,value:d,subtext:y}){return p.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 py-0.5 sm:py-1",children:[p.jsx("div",{className:"text-fg-muted",children:a}),p.jsx("div",{className:"flex-1 min-w-0",children:p.jsx("div",{className:"text-[10px] sm:text-xs truncate text-fg-secondary",children:u})}),p.jsxs("div",{className:"text-right",children:[p.jsx("div",{className:"text-xs font-mono tabular-nums text-fg-primary",children:d}),y&&p.jsx("div",{className:"text-[9px] leading-tight opacity-70 text-fg-muted",children:y})]})]})}function Rf({visible:a,onClose:u,settings:d,onSettingsChange:y,partition:x,totalNodes:b,basemapMode:E="dark"}){const F=Su(),B=R.useRef(null),k=R.useMemo(()=>{if(!x)return{numCommunities:0,avgCommunitySize:0,minCommunitySize:0,maxCommunitySize:0,fiedlerValue:0,modularity:0,coveragePercent:0};const z=Array.from(x.communities.values()).map(U=>U.length),Y=z.reduce((U,q)=>U+q,0);return{numCommunities:x.numCommunities,avgCommunitySize:z.length>0?Math.round(Y/z.length):0,minCommunitySize:z.length>0?Math.min(...z):0,maxCommunitySize:z.length>0?Math.max(...z):0,fiedlerValue:x.fiedlerValue,modularity:0,coveragePercent:b>0?Math.round(Y/b*100):0}},[x,b]),j=(z,Y)=>{y({...d,[z]:Y})},Q=(d.bandwidth*111).toFixed(1);return p.jsx("div",{ref:B,className:"absolute inset-0 z-[600] pointer-events-none",children:p.jsx(Sr,{children:a&&p.jsx(Xt.div,{drag:!0,dragControls:F,dragConstraints:B,dragElastic:.1,dragMomentum:!1,initial:{opacity:0,scale:.95,y:10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:10},transition:En.smooth,className:` + absolute pointer-events-auto + /* Mobile: bottom sheet style, full width with margins */ + bottom-2 left-2 right-2 + /* sm+: floating panel in bottom-right */ + sm:bottom-16 sm:left-auto sm:right-3 sm:w-64 + /* md+: slightly wider */ + md:w-72 + `,style:{touchAction:"none"},children:p.jsxs("div",{className:` + map-control-surface rounded-lg overflow-hidden shadow-lg + /* Mobile: limit height, allow scroll */ + max-h-[45vh] sm:max-h-[calc(100vh-180px)] overflow-y-auto + /* iOS momentum scrolling */ + overscroll-contain + `,children:[p.jsxs("div",{className:` + flex items-center justify-between + px-3 py-2 sm:px-2.5 sm:py-1.5 + border-b border-edge-subtle + cursor-grab active:cursor-grabbing + min-h-[44px] sm:min-h-0 + `,onPointerDown:z=>F.start(z),children:[p.jsxs("div",{className:"flex items-center gap-2 sm:gap-1.5",children:[p.jsx(Eu,{className:"w-4 h-4 sm:w-3 sm:h-3 text-fg-muted"}),p.jsx(Ts,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5 text-sys-blue"}),p.jsx("span",{className:"text-sm sm:text-xs font-medium text-fg-primary",children:"Partition"})]}),p.jsx(Nt,{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:p.jsx(Mn,{className:"w-4 h-4 sm:w-3 sm:h-3"})})]}),p.jsx("div",{className:"px-3 py-2 sm:px-2.5 sm:py-1.5 border-b border-edge-subtle",children:p.jsxs("div",{className:"grid grid-cols-2 gap-x-4 sm:gap-x-3 gap-y-1 sm:gap-y-0.5",children:[p.jsx(P0,{icon:p.jsx(Ts,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Communities",value:k.numCommunities}),p.jsx(P0,{icon:p.jsx(ki,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Avg Size",value:k.avgCommunitySize,subtext:`${k.minCommunitySize}–${k.maxCommunitySize}`}),p.jsx(P0,{icon:p.jsx(Xu,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Fiedler λ₂",value:k.fiedlerValue.toFixed(3)}),p.jsx(P0,{icon:p.jsx(ki,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Coverage",value:`${k.coveragePercent}%`,subtext:`of ${b}`})]})}),p.jsx("div",{className:"px-3 py-2 sm:px-2.5 sm:py-1.5",children:p.jsxs("div",{className:"space-y-3 sm:space-y-1.5",children:[p.jsx(F0,{label:"Bandwidth",value:d.bandwidth,min:.01,max:.15,step:.005,formatValue:()=>Q,unit:"km",onChange:z=>j("bandwidth",z)}),p.jsx(F0,{label:"Threshold",value:d.threshold,min:.05,max:.5,step:.01,formatValue:z=>`${Math.round((1-z)*100)}%`,unit:"cov",onChange:z=>j("threshold",z)}),p.jsx(F0,{label:"Opacity",value:d.opacity,min:.1,max:1,step:.05,formatValue:z=>`${Math.round(z*100)}%`,onChange:z=>j("opacity",z)}),p.jsx(F0,{label:"Stroke",value:d.strokeWidth,min:0,max:5,step:.5,unit:"px",formatValue:z=>z.toFixed(1),onChange:z=>j("strokeWidth",z)})]})})]})})})})}const jf={excellent:"text-signal-excellent",good:"text-signal-good",fair:"text-signal-fair",poor:"text-signal-poor",critical:"text-signal-critical"};function w0(a,u){return jf[zo(a,u)]}const If={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))"},Lf={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 Gn({prefix:a,name:u}){const d=R.useRef(null),[y,x]=R.useState(!1),[b,E]=R.useState({top:0,left:0}),F=()=>{if(!u||!d.current)return;const B=d.current.getBoundingClientRect();E({top:B.top-4,left:B.left+B.width/2}),x(!0)};return p.jsxs(p.Fragment,{children:[p.jsx("span",{ref:d,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:If,onMouseEnter:F,onMouseLeave:()=>x(!1),children:a}),u&&y&&Oa.createPortal(p.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:{...Lf,top:b.top,left:b.left},children:u}),document.body)]})}function ul(a){if(a._tracePathHashes)return a._tracePathHashes;if(a.payload&&a.payload.length>=20){const u=parseInt(a.payload.slice(16,18),16),y=(isNaN(u)?1:1<<(u&3))*2,x=a.payload.slice(18),b=[];for(let E=0;E+y<=x.length;E+=y)b.push(x.slice(E,E+y).toUpperCase());return b.length>0?b:null}return null}function cl(a,u){return a.src_hash?[a.src_hash.replace(/^0x/i,"").slice(0,2).toUpperCase(),...u.map(y=>y.toUpperCase())]:u.map(d=>d.toUpperCase())}function Nf(a,u,d,y=15){const x=[],b=u.toUpperCase(),E=d.toUpperCase();for(const F of a){if((F.type??F.payload_type)!==Qa.TRACE)continue;const k=ul(F);if(!k||k.length<1)continue;const j=cl(F,k);if(!(j.length<2)){for(let Q=0;Q =y)break}}return x}function Ff(a){switch(a){case"improving":return p.jsx(Ha,{className:"w-3 h-3 text-sys-green"});case"degrading":return p.jsx(rc,{className:"w-3 h-3 text-sys-red"});case"stable":return p.jsx(No,{className:"w-3 h-3 text-fg-muted"});default:return null}}const Pf={backgroundColor:"var(--map-ui-stripe)"};function W0({label:a,value:u,unit:d,color:y,tooltip:x}){return p.jsxs("div",{className:`flex items-center justify-between gap-2 py-[3px] ${x?"cursor-help":""}`,title:x,children:[p.jsx("span",{className:"type-data-xs text-fg-muted",children:a}),p.jsxs("span",{className:`data-box data-box-compact ${y||""}`,children:[u,d&&p.jsx("span",{className:"text-fg-muted ml-0.5",children:d})]})]})}function Ki({stats:a,direction:u,sf:d,noiseFloor:y}){if(!a)return p.jsxs("div",{className:"min-w-0",children:[p.jsx("div",{className:"flex items-center justify-between mb-1.5",children:p.jsx("p",{className:"type-data-xs text-fg-secondary font-medium",children:u})}),p.jsx("p",{className:"type-data-xs text-fg-muted italic px-1.5",children:"No data"})]});const x=a.max-a.min,b=a.median-a.mean,E=za(d),F=a.mean-E,B=zo(a.mean,d),k=[`Mean SNR: ${a.mean.toFixed(1)} dB (${B}) from ${a.count} measurement${a.count!==1?"s":""}`,`Variability: ±${a.stdDev.toFixed(1)} dB`,"",`Link budget (SF${d}, 3.5 dBi omni):`,` Demod threshold: ${E.toFixed(1)} dB`,` SNR margin: ${F>=0?"+":""}${F.toFixed(1)} dB`];return y!=null&&k.push(` Noise floor: ${y} dBm`),p.jsxs("div",{className:"min-w-0",children:[p.jsxs("div",{className:"flex items-center justify-between mb-1.5",children:[p.jsx("p",{className:"type-data-xs text-fg-secondary font-medium",children:u}),p.jsxs("span",{className:"type-data-xs text-fg-muted tabular-nums",title:`${a.count} measurement${a.count!==1?"s":""}`,children:["n=",a.count]})]}),p.jsx(W0,{label:"Mean",value:a.mean.toFixed(1),unit:"dB",color:w0(a.mean,d),tooltip:k.join(` +`)}),p.jsx(W0,{label:"Median",value:a.median.toFixed(1),unit:"dB",tooltip:`Middle value — less affected by unusual readings than the average.${Math.abs(b)>=.15?` +Differs from mean by ${b>0?"+":""}${b.toFixed(1)} dB`:""}`}),p.jsx(W0,{label:"Range",value:`${a.min.toFixed(1)}–${a.max.toFixed(1)}`,unit:"dB",tooltip:`Best to worst signal observed. Total spread: ${x.toFixed(1)} dB.`})]})}function Qf({pair:a,onClose:u,prefixToName:d}){var kA,lA,aA,BA,EA,bA,fA,IA,LA,FA,UA,vA;const y=Qo(),x=Ia(),b=La(),E=Na(),[F,B]=R.useState(null),k=((lA=(kA=b==null?void 0:b.config)==null?void 0:kA.radio)==null?void 0:lA.spreading_factor)??Fa,j=R.useMemo(()=>{const cA=`${a.nodeA.hash}>${a.nodeB.hash}`,dA=`${a.nodeB.hash}>${a.nodeA.hash}`;return{forward:y.get(cA)??null,reverse:y.get(dA)??null}},[y,a.nodeA.hash,a.nodeB.hash]),Q=R.useMemo(()=>!x||x.length===0?[]:Nf(x,a.nodeA.prefix,a.nodeB.prefix),[x,a.nodeA.prefix,a.nodeB.prefix]),z=a.nodeA.name||(d==null?void 0:d.get(a.nodeA.prefix.toUpperCase()))||null,Y=a.nodeB.name||(d==null?void 0:d.get(a.nodeB.prefix.toUpperCase()))||null,U=((aA=j.forward)==null?void 0:aA.trend)??((BA=j.reverse)==null?void 0:BA.trend)??"insufficient",q=Math.max(((EA=j.forward)==null?void 0:EA.lastSeen)??0,((bA=j.reverse)==null?void 0:bA.lastSeen)??0),sA=(((fA=j.forward)==null?void 0:fA.uniqueTraceCount)??0)+(((IA=j.reverse)==null?void 0:IA.uniqueTraceCount)??0),X=U==="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.`,K=((LA=j.forward)==null?void 0:LA.uniqueTraceCount)??0,oA=((FA=j.reverse)==null?void 0:FA.uniqueTraceCount)??0,uA=["Number of trace packets that traveled through this link.",`${a.nodeA.prefix}→${a.nodeB.prefix}: ${K}`,`${a.nodeB.prefix}→${a.nodeA.prefix}: ${oA}`].join(` +`);return p.jsx("div",{className:` + absolute z-[700] overflow-hidden + /* Mobile: full-width bottom sheet with breathing room */ + bottom-2 left-2 right-2 + /* sm+: right-aligned floating panel */ + sm:bottom-16 sm:left-auto sm:right-4 sm:w-[280px] + `,children:p.jsxs("div",{className:` + map-control-surface flex flex-col + /* Mobile: cap at 45vh so map stays visible */ + max-h-[45vh] + /* sm+: taller allowance */ + sm:max-h-[420px] + `,children:[p.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:[p.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[p.jsx(tl,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5 text-sys-green shrink-0"}),p.jsx(Gn,{prefix:a.nodeA.prefix,name:z}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"↔"}),p.jsx(Gn,{prefix:a.nodeB.prefix,name:Y})]}),p.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[q>0&&p.jsx("span",{className:"type-data-xs text-fg-muted",title:Ci(q),children:Oo(q)}),p.jsx(Nt,{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:p.jsx(Mn,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5"})})]})]}),p.jsxs("div",{className:"px-3 py-2.5 border-b border-edge-subtle",children:[p.jsxs("div",{className:"space-y-1.5 mb-2",children:[p.jsxs("div",{className:"flex items-center justify-between cursor-help",title:`${a.nodeA.prefix}→${a.nodeB.prefix}: mean of ${((UA=a.aToB)==null?void 0:UA.count)??0} measurements`,children:[p.jsxs("span",{className:"flex items-center gap-1",children:[p.jsx(Gn,{prefix:a.nodeA.prefix,name:z}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),p.jsx(Gn,{prefix:a.nodeB.prefix,name:Y})]}),a.aToB?p.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${w0(a.aToB.mean,k)}`,children:[a.aToB.mean.toFixed(1),p.jsx("span",{className:"text-fg-muted font-normal ml-0.5",children:"dB"})]}):p.jsx("span",{className:"type-data-sm text-fg-muted",children:"—"})]}),p.jsxs("div",{className:"flex items-center justify-between cursor-help",title:`${a.nodeB.prefix}→${a.nodeA.prefix}: mean of ${((vA=a.bToA)==null?void 0:vA.count)??0} measurements`,children:[p.jsxs("span",{className:"flex items-center gap-1",children:[p.jsx(Gn,{prefix:a.nodeB.prefix,name:Y}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),p.jsx(Gn,{prefix:a.nodeA.prefix,name:z})]}),a.bToA?p.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${w0(a.bToA.mean,k)}`,children:[a.bToA.mean.toFixed(1),p.jsx("span",{className:"text-fg-muted font-normal ml-0.5",children:"dB"})]}):p.jsx("span",{className:"type-data-sm text-fg-muted",children:"—"})]})]}),p.jsxs("div",{className:"grid grid-cols-2 gap-0 -mx-3 border-t border-edge-subtle",children:[p.jsx("div",{className:"px-3 pt-2 pb-1 border-r border-edge-subtle",children:p.jsx(Ki,{stats:a.aToB,direction:`${a.nodeA.prefix}→${a.nodeB.prefix}`,sf:k,noiseFloor:E})}),p.jsx("div",{className:"px-3 pt-2 pb-1",children:p.jsx(Ki,{stats:a.bToA,direction:`${a.nodeB.prefix}→${a.nodeA.prefix}`,sf:k,noiseFloor:E})})]})]}),p.jsxs("div",{className:"px-3 py-1.5 border-b border-edge-subtle",children:[U!=="insufficient"&&p.jsxs("div",{className:"flex items-center justify-between gap-2 py-[3px] cursor-help",title:X,children:[p.jsx("span",{className:"type-data-xs text-fg-muted",children:"Trend"}),p.jsx("span",{className:"data-box data-box-compact",children:p.jsxs("span",{className:"flex items-center gap-1",children:[Ff(U),p.jsx("span",{className:"text-fg-secondary capitalize",children:U})]})})]}),sA>0&&p.jsx(W0,{label:"Unique traces",value:sA.toString(),tooltip:uA})]}),Q.length>0&&p.jsxs("div",{className:"px-3 py-2 flex-1 min-h-0 flex flex-col",children:[p.jsxs("p",{className:"type-micro text-fg-secondary mb-1 shrink-0",children:["Source packets (",Q.length,")"]}),p.jsx("div",{className:"overflow-y-auto flex-1 min-h-0 overscroll-contain",style:{scrollbarGutter:"stable"},children:Q.map((cA,dA)=>{const jA=ul(cA),_A=jA?cl(cA,jA):null,YA=_A?Math.max(0,_A.length-1):0,ue=_A?_A.map(VA=>(d==null?void 0:d.get(VA))??VA).join(" → "):null,JA=F===dA,KA=cA.id??`${cA.packet_hash}-${cA.timestamp}`;return p.jsxs("div",{className:"rounded-sm",style:dA%2===1?Pf:void 0,children:[p.jsxs("button",{onClick:()=>B(JA?null:dA),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?p.jsx(Vs,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"}):p.jsx(Iu,{className:"w-2.5 h-2.5 text-fg-muted shrink-0 opacity-0 group-hover:opacity-100 transition-opacity"}),p.jsx("span",{className:"text-fg-muted w-[52px] shrink-0",children:Ci(cA.timestamp)}),ue?p.jsx("span",{className:"text-fg-secondary truncate min-w-0",title:_A.join(" → "),children:ue}):p.jsx("span",{className:"text-fg-muted truncate min-w-0 italic",children:"path n/a"}),p.jsxs("span",{className:"text-fg-muted shrink-0",children:[YA,"h"]}),cA.snr!=null&&p.jsx("span",{className:`shrink-0 tabular-nums ${w0(cA.snr,k)}`,children:cA.snr.toFixed(1)})]}),JA&&p.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&&p.jsxs("div",{className:"flex items-center justify-between gap-2",children:[p.jsx("span",{className:"text-fg-muted",children:"RSSI"}),p.jsxs("span",{className:"font-mono tabular-nums text-fg-secondary",children:[cA.rssi," dBm"]})]}),cA.snr!=null&&p.jsxs("div",{className:"flex items-center justify-between gap-2",children:[p.jsx("span",{className:"text-fg-muted",children:"SNR"}),p.jsxs("span",{className:`font-mono tabular-nums ${w0(cA.snr,k)}`,children:[cA.snr.toFixed(1)," dB"]})]}),p.jsxs("div",{className:"flex items-center justify-between gap-2",children:[p.jsx("span",{className:"text-fg-muted",children:"Route"}),p.jsx("span",{className:"font-mono text-fg-secondary",children:Pa(cA.route??cA.route_type)})]}),cA.packet_hash&&p.jsxs("div",{className:"flex items-center justify-between gap-2",children:[p.jsx("span",{className:"text-fg-muted",children:"Hash"}),p.jsxs("button",{onClick:VA=>{VA.stopPropagation(),As(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:[p.jsx("span",{className:"truncate max-w-[120px]",children:cA.packet_hash}),p.jsx(X0,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"})]})]}),cA.src_hash&&p.jsxs("div",{className:"flex items-center justify-between gap-2",children:[p.jsx("span",{className:"text-fg-muted",children:"Source"}),p.jsx("span",{className:"font-mono text-fg-secondary truncate max-w-[140px]",title:cA.src_hash,children:cA.src_hash})]}),_A&&_A.length>0&&p.jsxs("div",{className:"flex items-center justify-between gap-2",children:[p.jsx("span",{className:"text-fg-muted",children:"Path"}),p.jsx("span",{className:"font-mono text-fg-secondary truncate max-w-[140px]",title:_A.join(" → "),children:_A.join(" → ")})]})]})]},KA)})})]})]})})}function Of(a){const u=[];for(const d of a){if(d.is_outgoing)continue;const y=Lu(d.text);y&&u.push({lat:y.lat,lon:y.lon,timestampS:d.timestamp,senderName:d.sender_name??"Unknown",pathHops:d.path_hops,pathSnr:d.path_snr,pathRssi:d.path_rssi,msgSnr:d.msg_snr})}return u.sort((d,y)=>d.timestampS-y.timestampS),u}function zf(a){const u=new Set;for(const d of a)u.add(d.senderName);return[...u].sort((d,y)=>d.localeCompare(y))}function Zi(a,u){return a.filter(d=>d.senderName===u)}function Hf(a,u){if(a.length===0)return null;if(u<=a[0].timestampS)return{lo:0,hi:0,t:0};if(u>=a[a.length-1].timestampS){const E=a.length-1;return{lo:E,hi:E,t:0}}let d=0,y=a.length-1;for(;d >1;a[E].timestampS<=u?d=E:y=E}const x=a[y].timestampS-a[d].timestampS,b=x>0?(u-a[d].timestampS)/x:0;return{lo:d,hi:y,t:b}}function qi(a,u,d,y,x){const b=x*x,E=b*x;return .5*(2*u+(-a+d)*x+(2*a-5*u+4*d-y)*b+(-a+3*u-3*d+y)*E)}function Gf(a,u,d,y){const x=Math.PI/180,b=(y-u)*x,E=Math.sin(b)*Math.cos(d*x),F=Math.cos(a*x)*Math.sin(d*x)-Math.sin(a*x)*Math.cos(d*x)*Math.cos(b);return(Math.atan2(E,F)*180/Math.PI+360)%360}function fl(a,u){if(a.length===0)return null;const d=Hf(a,u);if(!d)return null;const{lo:y,hi:x,t:b}=d;if(y===x)return{lat:a[y].lat,lon:a[y].lon,bearing:null};const E=Math.max(0,y-1),F=y,B=x,k=Math.min(a.length-1,x+1),j=a[E],Q=a[F],z=a[B],Y=a[k];let U,q;E===F&&B===k?(U=Q.lat+(z.lat-Q.lat)*b,q=Q.lon+(z.lon-Q.lon)*b):(U=qi(j.lat,Q.lat,z.lat,Y.lat,b),q=qi(j.lon,Q.lon,z.lon,Y.lon,b));const sA=Gf(Q.lat,Q.lon,z.lat,z.lon);return{lat:U,lon:q,bearing:sA}}function Uf(a,u){if(a.length===0)return null;if(u<=a[0].timestampS)return a[0];if(u>=a[a.length-1].timestampS)return a[a.length-1];let d=0,y=a.length-1;for(;d >1;a[x].timestampS<=u?d=x:y=x}return a[d]}function Vf(a,u){const d=[];for(const x of a){if(x.timestampS>u)break;d.push([x.lon,x.lat])}const y=fl(a,u);if(y&&d.length>0){const x=d[d.length-1];(Math.abs(x[0]-y.lon)>1e-7||Math.abs(x[1]-y.lat)>1e-7)&&d.push([y.lon,y.lat])}return d}function Ji(a){const u=Math.max(0,Math.round(a)),d=Math.floor(u/3600),y=Math.floor(u%3600/60),x=u%60;return d>0?`${d}:${String(y).padStart(2,"0")}:${String(x).padStart(2,"0")}`:`${y}:${String(x).padStart(2,"0")}`}const Wf=[2,5,10,20],ks={isActive:!1,samples:[],senders:[],selectedSender:null,filteredSamples:[],isPlaying:!1,speed:5,currentTimeS:0,timeRange:{start:0,end:0}},Gt=$s((a,u)=>({...ks,loadFromChannel:d=>{const y=Of(d);if(y.length===0){a({...ks});return}const x=zf(y),b=x[0],E=Zi(y,b),F=E.length>0?{start:E[0].timestampS,end:E[E.length-1].timestampS}:{start:0,end:0};a({isActive:!0,samples:y,senders:x,selectedSender:b,filteredSamples:E,isPlaying:!1,currentTimeS:F.start,timeRange:F})},selectSender:d=>{const{samples:y}=u(),x=Zi(y,d),b=x.length>0?{start:x[0].timestampS,end:x[x.length-1].timestampS}:{start:0,end:0};a({selectedSender:d,filteredSamples:x,isPlaying:!1,currentTimeS:b.start,timeRange:b})},togglePlay:()=>{const{isPlaying:d,currentTimeS:y,timeRange:x}=u();d?a({isPlaying:!1}):y>=x.end?a({isPlaying:!0,currentTimeS:x.start}):a({isPlaying:!0})},pause:()=>a({isPlaying:!1}),setSpeed:d=>a({speed:d}),seek:d=>{const{timeRange:y}=u(),x=Math.max(y.start,Math.min(y.end,d));a({currentTimeS:x})},stopReplay:()=>a({...ks}),tick:d=>{const{isPlaying:y,speed:x,currentTimeS:b,timeRange:E}=u();if(!y)return;const F=x*(d/1e3),B=b+F;B>=E.end?a({currentTimeS:E.end,isPlaying:!1}):a({currentTimeS:B})}})),Zs=()=>Gt(a=>a.isActive),qs=()=>Gt(a=>a.isPlaying),hl=()=>Gt(a=>a.currentTimeS),Yf=()=>Gt(a=>a.speed),$f=()=>Gt(a=>a.timeRange),Kf=()=>Gt(a=>a.senders),Zf=()=>Gt(a=>a.selectedSender),qf=()=>Gt(a=>a.filteredSamples);function dl(){const{isActive:a,filteredSamples:u,currentTimeS:d}=Gt.getState();return!a||u.length===0?null:fl(u,d)}function Jf(){const{isActive:a,filteredSamples:u,currentTimeS:d}=Gt.getState();if(!a||u.length===0)return;const y=Uf(u,d);return y==null?void 0:y.pathHops}function Xf({channels:a,messages:u}){const d=R.useMemo(()=>a.find(b=>b.name.toLowerCase().includes("wardrive"))??null,[a]),y=R.useMemo(()=>d?u.get(`ch:${d.index}`)??[]:[],[d,u]);if(!d||y.length===0)return null;const x=()=>{Gt.getState().loadFromChannel(y)};return p.jsxs("button",{onClick:x,className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem"},title:`Replay #wardrive journey (${y.length} msgs)`,"aria-label":"Replay #wardrive journey",children:[p.jsx(Zu,{className:"w-3.5 h-3.5 shrink-0 text-fg-secondary"}),p.jsx("span",{className:"text-fg-secondary",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:500,letterSpacing:"-0.01em",lineHeight:1},children:"Replay"}),p.jsx("span",{className:"ml-auto text-fg-muted tabular-nums",style:{fontSize:"0.625rem"},children:y.length})]})}function A2(){const a=Zs(),u=qs(),d=hl(),y=Yf(),x=$f(),b=Zf(),E=Kf(),{togglePlay:F,setSpeed:B,seek:k,stopReplay:j,selectSender:Q}=Gt.getState(),z=x.end-x.start,Y=d-x.start,U=z>0?Y/z:0,q=R.useCallback(oA=>{const uA=parseFloat(oA.target.value)/100;k(x.start+uA*z)},[k,x.start,z]),[sA,X]=R.useState(!1),K=R.useRef(null);return R.useEffect(()=>{if(!sA)return;const oA=uA=>{var kA;(kA=K.current)!=null&&kA.contains(uA.target)||X(!1)};return document.addEventListener("mousedown",oA),()=>document.removeEventListener("mousedown",oA)},[sA]),a?p.jsx("div",{className:"absolute bottom-3 left-3 right-3 z-[700] sm:bottom-4 sm:left-4 sm:right-4",children:p.jsxs("div",{className:"map-control-surface flex items-center gap-2 px-2.5 py-2 sm:gap-3 sm:px-3",children:[p.jsx("button",{onClick:j,className:"p-1 rounded text-fg-muted hover:text-fg-primary hover:bg-[var(--map-ui-hover,var(--elevated))] transition-colors shrink-0",title:"Stop replay","aria-label":"Stop replay",children:p.jsx(Mn,{className:"w-3.5 h-3.5"})}),p.jsx("button",{onClick:F,className:"p-1.5 rounded-full bg-sys-blue/20 text-sys-blue hover:bg-sys-blue/30 transition-colors shrink-0",title:u?"Pause":"Play","aria-label":u?"Pause replay":"Play replay",children:u?p.jsx(Ga,{className:"w-3.5 h-3.5"}):p.jsx(Ua,{className:"w-3.5 h-3.5"})}),p.jsxs("div",{ref:K,className:"relative shrink-0",children:[E.length>1?p.jsxs("button",{onClick:()=>X(!sA),className:"flex items-center gap-1 text-xs font-medium text-fg-secondary hover:text-fg-primary transition-colors max-w-[100px] sm:max-w-[140px]",title:`Replaying: ${b}`,children:[p.jsx("span",{className:"truncate",children:b}),p.jsx(Vs,{className:Or("w-2.5 h-2.5 shrink-0 transition-transform",sA&&"rotate-180")})]}):p.jsx("span",{className:"text-xs font-medium text-fg-secondary truncate max-w-[100px] sm:max-w-[140px] block",children:b}),sA&&E.length>1&&p.jsx("div",{className:"absolute bottom-full mb-1 left-0 z-50 map-control-surface min-w-[120px] py-1",children:E.map(oA=>p.jsx("button",{onClick:()=>{Q(oA),X(!1)},className:Or("w-full px-3 py-1 text-left text-xs transition-colors",oA===b?"text-sys-blue font-medium":"text-fg-secondary hover:text-fg-primary hover:bg-[var(--map-ui-hover,var(--elevated))]"),children:oA},oA))})]}),p.jsx("div",{className:"flex-1 min-w-0 flex items-center gap-2",children:p.jsx("input",{type:"range",min:0,max:100,step:.1,value:U*100,onChange:q,className:"replay-scrubber w-full h-1 appearance-none bg-edge-subtle rounded-full cursor-pointer","aria-label":"Replay timeline","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(U*100)})}),p.jsxs("span",{className:"text-[10px] sm:text-xs tabular-nums text-fg-muted whitespace-nowrap shrink-0",children:[Ji(Y)," / ",Ji(z)]}),p.jsx("div",{className:"flex items-center gap-0.5 shrink-0",children:Wf.map(oA=>p.jsxs("button",{onClick:()=>B(oA),className:Or("px-1.5 py-0.5 rounded text-[10px] sm:text-xs font-medium transition-colors",oA===y?"bg-sys-blue/20 text-sys-blue shadow-[inset_0_0_0_1px_var(--sys-blue)]":"text-fg-muted hover:text-fg-secondary hover:bg-[var(--map-ui-hover,var(--elevated))]"),title:`${oA}× speed`,"aria-label":`${oA} times speed`,"aria-pressed":oA===y,children:[oA,"×"]},oA))})]})}):null}const ml=[{target:"Sparklines",fn:"sparklines",minStage:2}];Ko(ml);const pl=R.memo(function({nodeHash:u,width:d=60,height:y=20,color:x,showArea:b=!0,showTooltip:E=!1,className:F=""}){$o(ml);const B=Va(u),k=Wa(),Q=!Ho().backgroundLoadComplete||k,z=typeof d=="number"?d:60;return p.jsx(Nu,{data:B,width:z,height:y,color:x,isLoading:Q,className:F})});function e2(a){return a===null?"—":a<1e3?`${Math.round(a)}m`:`${(a/1e3).toFixed(1)}km`}function t2(a){const u=new Date(a*1e3);return`${(u.getMonth()+1).toString().padStart(2,"0")}/${u.getDate().toString().padStart(2,"0")}`}function r2({txDelayRec:a,networkRole:u,roleTitles:d,dataConfidence:y,dataQualityTitles:x}){const[b,E]=R.useState(!1),F=a.floodFactor??a.txDelayFactor,B=a.directFactor??a.directTxDelayFactor,k=async()=>{const j=`set txdelay ${F.toFixed(1)} +set direct.txdelay ${B.toFixed(1)}`;await As(j),E(!0),setTimeout(()=>E(!1),1500)};return p.jsxs("div",{className:"flex flex-col gap-1.5 text-sm",children:[(u||y)&&p.jsxs("div",{className:"flex items-center gap-2",children:[u&&p.jsx(gt,{color:Pu[u],compact:!0,title:d[u],children:u}),y&&p.jsxs(gt,{color:Qu[y],compact:!0,title:x[y],children:[y," data"]})]}),p.jsxs("button",{onClick:k,className:"flex items-center gap-2 py-1.5 px-2 bg-subtle-fill hover:bg-subtle-fill-hover rounded transition-colors group",title:"Click to copy CLI commands",children:[p.jsx(sc,{className:"w-3.5 h-3.5 text-sys-amber shrink-0"}),p.jsx("span",{className:"text-fg-muted",children:"TxDelay"}),p.jsxs("div",{className:"flex gap-2",children:[p.jsxs("div",{className:"flex items-center gap-1",children:[p.jsx("span",{className:"text-fg-muted",children:"F"}),p.jsxs("span",{className:"data-box text-sys-amber",children:["×",F.toFixed(1)]})]}),p.jsxs("div",{className:"flex items-center gap-1",children:[p.jsx("span",{className:"text-fg-muted",children:"D"}),p.jsxs("span",{className:"data-box text-sys-amber",children:["×",B.toFixed(1)]})]})]}),b?p.jsx(Yn,{className:"w-3.5 h-3.5 text-sys-green ml-auto"}):p.jsx(X0,{className:"w-3.5 h-3.5 text-fg-muted opacity-0 group-hover:opacity-100 transition-opacity ml-auto"})]})]})}function n2({hash:a,hashPrefix:u,name:d,isHub:y,isGateway:x,isBackbone:b,isZeroHop:E,isMobile:F,isRoomServer:B,isStale:k,lastSeenTimestamp:j,centrality:Q,affinity:z,meanSnr:Y,meanRssi:U,neighbor:q,onRemove:sA,txDelayRec:X,hideHeader:K=!1}){const[oA,uA]=R.useState(!1),kA=async()=>{await As(a),uA(!0),setTimeout(()=>uA(!1),1500)},lA=E?"Direct":z!=null&&z.typicalHopPosition?`${z.typicalHopPosition}-hop`:null,aA=X&&!X.insufficientData,BA={hub:"Hub: High-connectivity node that bridges many paths",backbone:"Backbone: Critical relay with high traffic",relay:"Relay: Standard forwarding node",edge:"Edge: Peripheral node"},EA={high:"1000+ packets",medium:"500-999 packets",low:"100-499 packets",insufficient:"Insufficient data"};return p.jsxs("div",{children:[!K&&p.jsx("div",{className:"text-[14px] font-semibold text-fg-primary leading-tight truncate mb-1",children:d}),!K&&p.jsxs("div",{className:"flex items-center gap-1 flex-wrap mb-1.5",children:[p.jsx("code",{className:"type-data-xs text-fg-secondary bg-data-box-bg border border-data-box-border px-1 py-0.5 rounded",children:u}),p.jsx("button",{onClick:kA,className:"p-0.5 hover:bg-subtle-fill-hover rounded transition-colors",title:"Copy full hash",children:oA?p.jsx(Yn,{className:"w-3 h-3 text-sys-green"}):p.jsx(X0,{className:"w-3 h-3 text-fg-secondary"})}),p.jsx(Xo,{hash:a,size:"sm"}),lA&&p.jsx(gt,{color:E?$0.direct:$0.multihop,compact:!0,children:lA}),q.is_repeater&&p.jsx(gt,{color:ur.repeater,compact:!0,children:"Rptr"}),y&&p.jsx(gt,{color:ur.hub,compact:!0,title:"Hub: ≥10% of last-hop traffic",children:"Hub"}),x&&!y&&p.jsx(gt,{color:ur.gateway,compact:!0,title:"Gateway: 7-10% of last-hop traffic",children:"Gate"}),b&&p.jsx(gt,{color:ur.backbone,compact:!0,title:"Backbone",children:"Bone"}),F&&p.jsx(gt,{color:ur.mobile,compact:!0,children:"Mobile"}),B&&p.jsx(gt,{color:ur.room,compact:!0,children:"Room"}),k&&j&&p.jsxs(gt,{compact:!0,title:"Neighbor not heard in 7+ days",children:["Idle ",t2(j)]})]}),p.jsx("div",{title:"7-day activity trend (6-hour buckets)",children:p.jsx(pl,{nodeHash:a,width:224,height:28,showArea:!0,showTooltip:!0,className:"w-full"})}),p.jsxs("div",{className:"flex flex-wrap gap-x-3 gap-y-0.5 text-sm text-fg-secondary mt-2",children:[p.jsxs("span",{className:"flex items-center gap-0.5",title:q.last_seen?`Last heard: ${new Date(q.last_seen*1e3).toLocaleString()}`:"Last heard time",children:[p.jsx(Jo,{className:"w-3 h-3 text-fg-muted shrink-0"}),p.jsx("span",{className:"font-mono",children:Oo(q.last_seen)})]}),(z==null?void 0:z.distanceMeters)&&p.jsxs("span",{className:"flex items-center gap-0.5",title:"Line-of-sight distance from local node",children:[p.jsx(Fu,{className:"w-3 h-3 text-fg-muted shrink-0"}),p.jsx("span",{className:"font-mono font-semibold text-fg-primary",children:e2(z.distanceMeters)})]}),q.latitude&&q.longitude&&q.latitude!==0&&q.longitude!==0&&p.jsxs("span",{className:"flex items-center gap-0.5",title:"GPS coordinates (lat, lon)",children:[p.jsx(Ou,{className:"w-3 h-3 text-fg-muted shrink-0"}),p.jsxs("span",{className:"font-mono text-fg-muted",children:[q.latitude.toFixed(2),", ",q.longitude.toFixed(2)]})]})]}),p.jsxs("div",{className:"grid grid-cols-2 gap-x-3 gap-y-1.5 text-sm mt-2",children:[p.jsxs("div",{className:"flex justify-between items-center gap-2",title:"Total packets seen from this node",children:[p.jsx("span",{className:"text-fg-muted",children:"Packets"}),p.jsx("span",{className:"data-box",children:(z==null?void 0:z.frequency)||0})]}),p.jsxs("div",{className:"flex justify-between items-center gap-2",title:"ADVERT beacon packets received",children:[p.jsx("span",{className:"text-fg-muted",children:"Adverts"}),p.jsx("span",{className:"data-box",children:q.advert_count||0})]}),E&&Y!==void 0&&p.jsxs("div",{className:"flex justify-between items-center gap-2",title:"Average Signal-to-Noise Ratio (direct zero-hop)",children:[p.jsx("span",{className:"text-fg-muted",children:"SNR"}),p.jsxs("span",{className:"data-box",children:[Y.toFixed(1)," dB"]})]}),E&&U!==void 0&&p.jsxs("div",{className:"flex justify-between items-center gap-2",title:"Average Received Signal Strength (direct zero-hop)",children:[p.jsx("span",{className:"text-fg-muted",children:"RSSI"}),p.jsxs("span",{className:"data-box",children:[Math.round(U)," dBm"]})]})]}),aA&&p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"border-t border-edge-subtle mt-2.5 mb-2"}),p.jsx(r2,{txDelayRec:X,networkRole:X.networkRole,roleTitles:BA,dataConfidence:X.dataConfidence,dataQualityTitles:EA})]}),sA&&p.jsx("button",{onClick:sA,className:"w-full text-center text-sm mt-2 py-3 sm:py-1.5 rounded text-fg-muted hover:text-sys-red hover:bg-sys-red/10 transition-colors",children:"Remove from Contacts"})]})}function s2(a){const u=new Date(a*1e3);return`${(u.getMonth()+1).toString().padStart(2,"0")}/${u.getDate().toString().padStart(2,"0")}`}function i2({data:a,localNode:u,localColor:d,onClose:y,onRemove:x}){var k,j,Q,z;const[b,E]=R.useState(!1);R.useEffect(()=>{if(!a)return;const Y=U=>{U.key==="Escape"&&y()};return window.addEventListener("keydown",Y),()=>window.removeEventListener("keydown",Y)},[a,y]);const F=async()=>{a!=null&&a.hash&&(await As(a.hash),E(!0),setTimeout(()=>E(!1),1500))},B=a!=null&&a.isZeroHop?"Direct":(k=a==null?void 0:a.affinity)!=null&&k.typicalHopPosition?`${a.affinity.typicalHopPosition}-hop`:null;return p.jsx(Sr,{children:a&&p.jsx(Xt.div,{className:"map-node-panel",initial:{opacity:0,y:16},animate:{opacity:1,y:0},exit:{opacity:0,y:16},transition:En.smooth,children:p.jsxs("div",{className:"map-control-surface flex flex-col max-h-[38dvh] sm:max-h-[50vh]",children:[p.jsx("div",{className:"map-node-panel-drag-handle sm:hidden"}),p.jsxs("div",{className:"flex flex-col gap-1.5 px-3 py-2.5 shrink-0",children:[p.jsxs("div",{className:"flex items-start justify-between gap-2",children:[p.jsxs("div",{className:"flex items-center gap-1.5 min-w-0 flex-1",children:[p.jsx("span",{className:"text-sm font-semibold truncate text-fg-primary",children:a.name||"Unknown"}),a.hash&&p.jsxs(p.Fragment,{children:[p.jsx("code",{className:"type-data-xs text-fg-secondary bg-data-box-bg border border-data-box-border px-1 py-0.5 rounded ml-1",children:a.hashPrefix||a.hash.substring(0,2)}),p.jsx("button",{onClick:F,className:"p-2 -m-1.5 sm:p-0.5 sm:m-0 hover:bg-subtle-fill-hover rounded transition-colors",title:"Copy full hash",children:b?p.jsx(Yn,{className:"w-3 h-3 text-sys-green"}):p.jsx(X0,{className:"w-3 h-3 text-fg-secondary"})}),p.jsx(Xo,{hash:a.hash,size:"sm"})]})]}),p.jsx(Nt,{plain:!0,color:"muted",onClick:y,className:"!p-1 !rounded-md -mr-1 -mt-1 hover:bg-subtle-fill-hover min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center","aria-label":"Close node detail",children:p.jsx(Mn,{className:"w-4 h-4"})})]}),(B||((j=a.neighbor)==null?void 0:j.is_repeater)||a.isHub||a.isGateway&&!a.isHub||a.isBackbone||a.isMobile||a.isRoomServer||a.isStale&&a.lastSeenTimestamp)&&p.jsxs("div",{className:"flex items-center gap-1 flex-wrap",children:[B&&p.jsx(gt,{color:a.isZeroHop?$0.direct:$0.multihop,compact:!0,title:a.isZeroHop?"Direct RF contact (zero-hop)":`${((Q=a.affinity)==null?void 0:Q.typicalHopPosition)??"?"} hops from local node`,children:B}),((z=a.neighbor)==null?void 0:z.is_repeater)&&p.jsx(gt,{color:ur.repeater,compact:!0,title:"Repeater node (forwards packets)",children:"Rptr"}),a.isHub&&p.jsx(gt,{color:ur.hub,compact:!0,title:"Hub: ≥10% of last-hop traffic",children:"Hub"}),a.isGateway&&!a.isHub&&p.jsx(gt,{color:ur.gateway,compact:!0,title:"Gateway: 7-10% of last-hop traffic",children:"Gate"}),a.isBackbone&&p.jsx(gt,{color:ur.backbone,compact:!0,title:"Backbone: critical relay with high traffic",children:"Bone"}),a.isMobile&&p.jsx(gt,{color:ur.mobile,compact:!0,title:"Mobile repeater (path volatility detected)",children:"Mobile"}),a.isRoomServer&&p.jsx(gt,{color:ur.room,compact:!0,title:"Room server node",children:"Room"}),a.isStale&&a.lastSeenTimestamp&&p.jsxs(gt,{compact:!0,title:"Neighbor not heard in 7+ days",children:["Idle ",s2(a.lastSeenTimestamp)]})]})]}),p.jsx("div",{className:"overflow-y-auto flex-1 min-h-0 overscroll-contain px-3 pt-2 pb-3",children:a.isLocal?p.jsxs("div",{className:"text-sm",children:[p.jsx("div",{className:"mb-2",children:p.jsx("span",{style:{color:d},className:"font-medium",children:"This Node (Local)"})}),a.hash&&p.jsx("div",{className:"mb-2",children:p.jsx(pl,{nodeHash:a.hash,width:224,height:28,showArea:!0,showTooltip:!0,className:"w-full"})}),u&&p.jsxs("div",{className:"text-xs text-fg-muted font-mono border-t border-edge-subtle pt-2",children:[u.latitude.toFixed(5),", ",u.longitude.toFixed(5)]})]}):a.neighbor&&a.hash?p.jsx(n2,{hash:a.hash,hashPrefix:a.hashPrefix,name:a.name,isHub:a.isHub,isGateway:a.isGateway,isBackbone:a.isBackbone,isZeroHop:a.isZeroHop,isMobile:a.isMobile,isRoomServer:a.isRoomServer,isStale:a.isStale,lastSeenTimestamp:a.lastSeenTimestamp,centrality:a.centrality,affinity:a.affinity,meanSnr:a.meanSnr,meanRssi:a.meanRssi,neighbor:a.neighbor,txDelayRec:a.txDelayRec,onRemove:x?()=>x(a.hash,a.name):void 0,hideHeader:!0}):null})]})})})}const o2={getItem:a=>{try{return localStorage.getItem(a)}catch{return null}},setItem:(a,u)=>{try{localStorage.setItem(a,u)}catch{}},removeItem:a=>{try{localStorage.removeItem(a)}catch{}}},gl=$s()(pu(a=>({isEnabled:!1,toggle:()=>a(u=>({isEnabled:!u.isEnabled})),setEnabled:u=>a({isEnabled:u})}),{name:"pymc-live-trace",storage:gu(()=>o2)})),l2=()=>gl(a=>a.isEnabled),a2=()=>gl(a=>a.toggle);var Ft=(function(a){a=a||{};var u=typeof a<"u"?a:{},d={},y;for(y in u)u.hasOwnProperty(y)&&(d[y]=u[y]);var x="";function b(nA){return u.locateFile?u.locateFile(nA,x):x+nA}var E;typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),x.indexOf("blob:")!==0?x=x.substr(0,x.lastIndexOf("/")+1):x="",E=function(yA,RA,xA){var t=new XMLHttpRequest;t.open("GET",yA,!0),t.responseType="arraybuffer",t.onload=function(){if(t.status==200||t.status==0&&t.response){RA(t.response);return}var ge=gr(yA);if(ge){RA(ge.buffer);return}xA()},t.onerror=xA,t.send(null)};var F=u.print||console.log.bind(console),B=u.printErr||console.warn.bind(console);for(y in d)d.hasOwnProperty(y)&&(u[y]=d[y]);d=null,u.arguments&&u.arguments;var k=0,j=function(nA){k=nA},Q=function(){return k},z=8;function Y(nA,yA,RA,xA){switch(RA=RA||"i8",RA.charAt(RA.length-1)==="*"&&(RA="i32"),RA){case"i1":IA[nA>>0]=yA;break;case"i8":IA[nA>>0]=yA;break;case"i16":FA[nA>>1]=yA;break;case"i32":UA[nA>>2]=yA;break;case"i64":ct=[yA>>>0,(ze=yA,+ke(ze)>=1?ze>0?(Ke(+pe(ze/4294967296),4294967295)|0)>>>0:~~+Ee((ze-+(~~ze>>>0))/4294967296)>>>0:0)],UA[nA>>2]=ct[0],UA[nA+4>>2]=ct[1];break;case"float":vA[nA>>2]=yA;break;case"double":cA[nA>>3]=yA;break;default:yt("invalid type for setValue: "+RA)}}function U(nA,yA,RA){switch(yA=yA||"i8",yA.charAt(yA.length-1)==="*"&&(yA="i32"),yA){case"i1":return IA[nA>>0];case"i8":return IA[nA>>0];case"i16":return FA[nA>>1];case"i32":return UA[nA>>2];case"i64":return UA[nA>>2];case"float":return vA[nA>>2];case"double":return cA[nA>>3];default:yt("invalid type for getValue: "+yA)}return null}var q=!1;function sA(nA,yA){nA||yt("Assertion failed: "+yA)}function X(nA){var yA=u["_"+nA];return sA(yA,"Cannot call unknown function "+nA+", make sure it is exported"),yA}function K(nA,yA,RA,xA,t){var C={string:function(se){var et=0;if(se!=null&&se!==0){var St=(se.length<<2)+1;et=ft(St),BA(se,et,St)}return et},array:function(se){var et=ft(se.length);return EA(se,et),et}};function ge(se){return yA==="string"?lA(se):yA==="boolean"?!!se:se}var De=X(nA),Le=[],ee=0;if(xA)for(var Ce=0;Ce =xA);)++t;if(t-yA>16&&nA.subarray&&uA)return uA.decode(nA.subarray(yA,t));for(var C="";yA >10,56320|ee&1023)}}return C}function lA(nA,yA){return nA?kA(LA,nA,yA):""}function aA(nA,yA,RA,xA){if(!(xA>0))return 0;for(var t=RA,C=RA+xA-1,ge=0;ge =55296&&De<=57343){var Le=nA.charCodeAt(++ge);De=65536+((De&1023)<<10)|Le&1023}if(De<=127){if(RA>=C)break;yA[RA++]=De}else if(De<=2047){if(RA+1>=C)break;yA[RA++]=192|De>>6,yA[RA++]=128|De&63}else if(De<=65535){if(RA+2>=C)break;yA[RA++]=224|De>>12,yA[RA++]=128|De>>6&63,yA[RA++]=128|De&63}else{if(RA+3>=C)break;yA[RA++]=240|De>>18,yA[RA++]=128|De>>12&63,yA[RA++]=128|De>>6&63,yA[RA++]=128|De&63}}return yA[RA]=0,RA-t}function BA(nA,yA,RA){return aA(nA,LA,yA,RA)}typeof TextDecoder<"u"&&new TextDecoder("utf-16le");function EA(nA,yA){IA.set(nA,yA)}function bA(nA,yA){return nA%yA>0&&(nA+=yA-nA%yA),nA}var fA,IA,LA,FA,UA,vA,cA;function dA(nA){fA=nA,u.HEAP8=IA=new Int8Array(nA),u.HEAP16=FA=new Int16Array(nA),u.HEAP32=UA=new Int32Array(nA),u.HEAPU8=LA=new Uint8Array(nA),u.HEAPU16=new Uint16Array(nA),u.HEAPU32=new Uint32Array(nA),u.HEAPF32=vA=new Float32Array(nA),u.HEAPF64=cA=new Float64Array(nA)}var jA=5271536,_A=28624,YA=u.TOTAL_MEMORY||33554432;u.buffer?fA=u.buffer:fA=new ArrayBuffer(YA),YA=fA.byteLength,dA(fA),UA[_A>>2]=jA;function ue(nA){for(;nA.length>0;){var yA=nA.shift();if(typeof yA=="function"){yA();continue}var RA=yA.func;typeof RA=="number"?yA.arg===void 0?u.dynCall_v(RA):u.dynCall_vi(RA,yA.arg):RA(yA.arg===void 0?null:yA.arg)}}var JA=[],KA=[],VA=[],je=[];function Ie(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)$e(u.preRun.shift());ue(JA)}function oe(){ue(KA)}function me(){ue(VA)}function we(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)be(u.postRun.shift());ue(je)}function $e(nA){JA.unshift(nA)}function be(nA){je.unshift(nA)}var ke=Math.abs,Ee=Math.ceil,pe=Math.floor,Ke=Math.min,Je=0,At=null;function it(nA){Je++,u.monitorRunDependencies&&u.monitorRunDependencies(Je)}function Et(nA){if(Je--,u.monitorRunDependencies&&u.monitorRunDependencies(Je),Je==0&&At){var yA=At;At=null,yA()}}u.preloadedImages={},u.preloadedAudios={};var Qe=null,Xe="data:application/octet-stream;base64,";function Me(nA){return String.prototype.startsWith?nA.startsWith(Xe):nA.indexOf(Xe)===0}var ze,ct;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 Pt=28640;function Dr(nA,yA,RA,xA){yt("Assertion failed: "+lA(nA)+", at: "+[yA?lA(yA):"unknown filename",RA,xA?lA(xA):"unknown function"])}function Ar(){return IA.length}function er(nA,yA,RA){LA.set(LA.subarray(yA,yA+RA),nA)}function Gr(nA){return u.___errno_location&&(UA[u.___errno_location()>>2]=nA),nA}function on(nA){yt("OOM")}function _r(nA){try{var yA=new ArrayBuffer(nA);return yA.byteLength!=nA?void 0:(new Int8Array(yA).set(IA),yr(yA),dA(yA),1)}catch{}}function Ut(nA){var yA=Ar(),RA=16777216,xA=2147483648-RA;if(nA>xA)return!1;for(var t=16777216,C=Math.max(yA,t);C >4,t=(De&15)<<4|Le>>2,C=(Le&3)<<6|ee,RA=RA+String.fromCharCode(xA),Le!==64&&(RA=RA+String.fromCharCode(t)),ee!==64&&(RA=RA+String.fromCharCode(C));while(Ce 13780509?(A=S0(15,A)|0,A|0):(r=((e|0)<0)<<31>>31,s=mt(e|0,r|0,3,0)|0,n=M()|0,r=$A(e|0,r|0,1,0)|0,r=mt(s|0,n|0,r|0,M()|0)|0,r=$A(r|0,M()|0,1,0)|0,e=M()|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,T(e,A,r,n,0)|0}function T(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,c=0,f=0;if(c=S,S=S+16|0,o=c,!(O(e,A,r,n,s)|0))return n=0,S=c,n|0;do if((r|0)>=0){if((r|0)>13780509){if(i=S0(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=mt(r|0,i|0,3,0)|0,l=M()|0,i=$A(r|0,i|0,1,0)|0,i=mt(f|0,l|0,i|0,M()|0)|0,i=$A(i|0,M()|0,1,0)|0,l=M()|0,t[o>>2]=i,t[o+4>>2]=l,o=i;if(An(n|0,0,o<<3|0)|0,s|0){An(s|0,0,o<<2|0)|0,i=AA(e,A,r,n,s,o,l,0)|0;break}i=Ht(o,4)|0,i?(f=AA(e,A,r,n,i,o,l,0)|0,ZA(i),i=f):i=13}else i=2;while(!1);return f=i,S=c,f|0}function O(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0;if(G=S,S=S+16|0,L=G,N=G+8|0,I=L,t[I>>2]=e,t[I+4>>2]=A,(r|0)<0)return N=2,S=G,N|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 N=9,S=G,N|0;t[N>>2]=0;A:do if((r|0)>=1)if(i)for(g=1,f=0,D=0,I=1,i=e;;){if(!(f|D)){if(i=$(i,A,4,N,L)|0,i|0)break A;if(A=L,i=t[A>>2]|0,A=t[A+4>>2]|0,Oe(i,A)|0){i=9;break A}}if(i=$(i,A,t[26800+(D<<2)>>2]|0,N,L)|0,i|0)break A;if(A=L,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(g<<3)|0,t[e>>2]=i,t[e+4>>2]=A,t[s+(g<<2)>>2]=I,e=f+1|0,o=(e|0)==(I|0),l=D+1|0,c=(l|0)==6,Oe(i,A)|0){i=9;break A}if(I=I+(c&o&1)|0,(I|0)>(r|0)){i=0;break}else g=g+1|0,f=o?0:e,D=o?c?0:l:D}else for(g=1,f=0,D=0,I=1,i=e;;){if(!(f|D)){if(i=$(i,A,4,N,L)|0,i|0)break A;if(A=L,i=t[A>>2]|0,A=t[A+4>>2]|0,Oe(i,A)|0){i=9;break A}}if(i=$(i,A,t[26800+(D<<2)>>2]|0,N,L)|0,i|0)break A;if(A=L,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(g<<3)|0,t[e>>2]=i,t[e+4>>2]=A,e=f+1|0,o=(e|0)==(I|0),l=D+1|0,c=(l|0)==6,Oe(i,A)|0){i=9;break A}if(I=I+(c&o&1)|0,(I|0)>(r|0)){i=0;break}else g=g+1|0,f=o?0:e,D=o?c?0:l:D}else i=0;while(!1);return N=i,S=G,N|0}function AA(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 c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0;if(G=S,S=S+16|0,L=G+8|0,N=G,c=Fn(e|0,A|0,i|0,o|0)|0,g=M()|0,D=n+(c<<3)|0,W=D,iA=t[W>>2]|0,W=t[W+4>>2]|0,f=(iA|0)==(e|0)&(W|0)==(A|0),!((iA|0)==0&(W|0)==0|f))do c=$A(c|0,g|0,1,0)|0,c=Nn(c|0,M()|0,i|0,o|0)|0,g=M()|0,D=n+(c<<3)|0,iA=D,W=t[iA>>2]|0,iA=t[iA+4>>2]|0,f=(W|0)==(e|0)&(iA|0)==(A|0);while(!((W|0)==0&(iA|0)==0|f));if(c=s+(c<<2)|0,f&&(t[c>>2]|0)<=(l|0)||(iA=D,t[iA>>2]=e,t[iA+4>>2]=A,t[c>>2]=l,(l|0)>=(r|0)))return iA=0,S=G,iA|0;switch(f=l+1|0,t[L>>2]=0,c=$(e,A,2,L,N)|0,c|0){case 9:{I=9;break}case 0:{c=N,c=AA(t[c>>2]|0,t[c+4>>2]|0,r,n,s,i,o,f)|0,c||(I=9);break}}A:do if((I|0)==9){switch(t[L>>2]=0,c=$(e,A,3,L,N)|0,c|0){case 9:break;case 0:{if(c=N,c=AA(t[c>>2]|0,t[c+4>>2]|0,r,n,s,i,o,f)|0,c|0)break A;break}default:break A}switch(t[L>>2]=0,c=$(e,A,1,L,N)|0,c|0){case 9:break;case 0:{if(c=N,c=AA(t[c>>2]|0,t[c+4>>2]|0,r,n,s,i,o,f)|0,c|0)break A;break}default:break A}switch(t[L>>2]=0,c=$(e,A,5,L,N)|0,c|0){case 9:break;case 0:{if(c=N,c=AA(t[c>>2]|0,t[c+4>>2]|0,r,n,s,i,o,f)|0,c|0)break A;break}default:break A}switch(t[L>>2]=0,c=$(e,A,4,L,N)|0,c|0){case 9:break;case 0:{if(c=N,c=AA(t[c>>2]|0,t[c+4>>2]|0,r,n,s,i,o,f)|0,c|0)break A;break}default:break A}switch(t[L>>2]=0,c=$(e,A,6,L,N)|0,c|0){case 9:break;case 0:{if(c=N,c=AA(t[c>>2]|0,t[c+4>>2]|0,r,n,s,i,o,f)|0,c|0)break A;break}default:break A}return iA=0,S=G,iA|0}while(!1);return iA=c,S=G,iA|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,c=0,f=0,g=0,D=0,I=0,L=0,N=0;if(r>>>0>6)return s=1,s|0;if(D=(t[n>>2]|0)%6|0,t[n>>2]=D,(D|0)>0){i=0;do r=$t(r)|0,i=i+1|0;while((i|0)<(t[n>>2]|0))}if(D=wA(e|0,A|0,45)|0,M()|0,g=D&127,g>>>0>121)return s=5,s|0;c=zt(e,A)|0,i=wA(e|0,A|0,52)|0,M()|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,M()|0,l=l&7,(l|0)==7){A=5;break}if(N=(ir(i)|0)==0,i=i+-1|0,I=CA(7,0,o|0)|0,A=A&~(M()|0),L=CA(t[(N?432:16)+(l*28|0)+(r<<2)>>2]|0,0,o|0)|0,o=M()|0,r=t[(N?640:224)+(l*28|0)+(r<<2)>>2]|0,e=L|e&~I,A=o|A,!r){r=0;break A}if(!i){f=8;break A}}return A|0}while(!1);(f|0)==8&&(N=t[848+(g*28|0)+(r<<2)>>2]|0,L=CA(N|0,0,45)|0,e=L|e,A=M()|0|A&-1040385,r=t[4272+(g*28|0)+(r<<2)>>2]|0,(N&127|0)==127&&(N=CA(t[848+(g*28|0)+20>>2]|0,0,45)|0,A=M()|0|A&-1040385,r=t[4272+(g*28|0)+20>>2]|0,e=mn(N|e,A)|0,A=M()|0,t[n>>2]=(t[n>>2]|0)+1)),l=wA(e|0,A|0,45)|0,M()|0,l=l&127;A:do if(_e(l)|0){e:do if((zt(e,A)|0)==1){if((g|0)!=(l|0))if(Ir(l,t[7696+(g*28|0)>>2]|0)|0){e=ns(e,A)|0,o=1,A=M()|0;break}else OA(27795,26864,533,26872);switch(c|0){case 3:{e=mn(e,A)|0,A=M()|0,t[n>>2]=(t[n>>2]|0)+1,o=0;break e}case 5:{e=ns(e,A)|0,A=M()|0,t[n>>2]=(t[n>>2]|0)+5,o=0;break e}case 0:return N=9,N|0;default:return N=1,N|0}}else o=0;while(!1);if((r|0)>0){i=0;do e=rs(e,A)|0,A=M()|0,i=i+1|0;while((i|0)!=(r|0))}if((g|0)!=(l|0)){if(!(Dt(l)|0)){if((o|0)!=0|(zt(e,A)|0)!=5)break;t[n>>2]=(t[n>>2]|0)+1;break}switch(D&127){case 8:case 118:break A}(zt(e,A)|0)!=3&&(t[n>>2]=(t[n>>2]|0)+1)}}else if((r|0)>0){i=0;do e=mn(e,A)|0,A=M()|0,i=i+1|0;while((i|0)!=(r|0))}while(!1);return t[n>>2]=((t[n>>2]|0)+r|0)%6|0,N=s,t[N>>2]=e,t[N+4>>2]=A,N=0,N|0}function hA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,TA(e,A,r,n)|0?(An(n|0,0,r*48|0)|0,n=XA(e,A,r,n)|0,n|0):(n=0,n|0)}function TA(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0;if(N=S,S=S+16|0,I=N,L=N+8|0,D=I,t[D>>2]=e,t[D+4>>2]=A,(r|0)<0)return L=2,S=N,L|0;if(!r)return L=n,t[L>>2]=e,t[L+4>>2]=A,L=0,S=N,L|0;t[L>>2]=0;A:do if(Oe(e,A)|0)e=9;else{s=0,D=e;do{if(e=$(D,A,4,L,I)|0,e|0)break A;if(A=I,D=t[A>>2]|0,A=t[A+4>>2]|0,s=s+1|0,Oe(D,A)|0){e=9;break A}}while((s|0)<(r|0));g=n,t[g>>2]=D,t[g+4>>2]=A,g=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=I,e=$(t[e>>2]|0,t[e+4>>2]|0,o,L,I)|0,e|0)break A;if((i|0)!=(g|0))if(c=I,l=t[c>>2]|0,c=t[c+4>>2]|0,e=n+(s<<3)|0,t[e>>2]=l,t[e+4>>2]=c,!(Oe(l,c)|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=I,c=t[s>>2]|0,l=0,s=e,i=t[o>>2]|0,o=t[o+4>>2]|0;;){if(e=$(i,o,c,L,I)|0,e|0)break A;if(o=I,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=I,e=(D|0)==(t[e>>2]|0)&&(A|0)==(t[e+4>>2]|0)?0:9}while(!1);return L=e,S=N,L|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,c=0,f=0,g=0,D=0,I=0;if(D=S,S=S+16|0,o=D,!r)return t[n>>2]=e,t[n+4>>2]=A,n=0,S=D,n|0;do if((r|0)>=0){if((r|0)>13780509){if(s=S0(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,g=mt(r|0,s|0,3,0)|0,i=M()|0,s=$A(r|0,s|0,1,0)|0,s=mt(g|0,i|0,s|0,M()|0)|0,s=$A(s|0,M()|0,1,0)|0,i=M()|0,g=o,t[g>>2]=s,t[g+4>>2]=i;if(f=Ht(s,8)|0,!f)s=13;else{if(g=Ht(s,4)|0,!g){ZA(f),s=13;break}if(s=AA(e,A,r,f,g,s,i,0)|0,s|0){ZA(f),ZA(g);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,c=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[g+(l<<2)>>2]|0)==(r|0)&&(I=n+(s<<3)|0,t[I>>2]=i,t[I+4>>2]=e,s=s+1|0),l=$A(l|0,c|0,1,0)|0,c=M()|0;while((c|0)<(o|0)|(c|0)==(o|0)&l>>>0>>0)}ZA(f),ZA(g),s=0}}else s=2;while(!1);return I=s,S=D,I|0}function qA(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,c=0,f=0;for(l=S,S=S+16|0,i=l,o=l+8|0,s=(Oe(e,A)|0)==0,s=s?1:2;;){if(t[o>>2]=0,f=($(e,A,s,o,i)|0)==0,c=i,f&((t[c>>2]|0)==(r|0)?(t[c+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?(S=l,s|0):0}function fe(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,c=0,f=0;if(l=S,S=S+48|0,s=l+16|0,i=l+8|0,o=l,r=l0(r)|0,r|0)return o=r,S=l,o|0;if(f=e,c=t[f+4>>2]|0,r=i,t[r>>2]=t[f>>2],t[r+4>>2]=c,li(i,s),r=Yt(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,c=$A(A|0,r|0,12,0)|0,f=M()|0,r=o,t[r>>2]=c,t[r+4>>2]=f,r=n,t[r>>2]=c,t[r+4>>2]=f,r=0}return f=r,S=l,f|0}function Ne(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0,ce=0,he=0,Se=0,ie=0,GA=0,SA=0,xe=0,We=0,de=0,Ye=0,Lt=0,bi=0;if(We=S,S=S+64|0,ie=We+48|0,GA=We+32|0,SA=We+24|0,MA=We+8|0,HA=We,c=t[e>>2]|0,(c|0)<=0)return xe=0,S=We,xe|0;for(QA=e+4|0,ce=ie+8|0,he=GA+8|0,Se=MA+8|0,l=0,Z=0;;){f=t[QA>>2]|0,J=f+(Z<<4)|0,t[ie>>2]=t[J>>2],t[ie+4>>2]=t[J+4>>2],t[ie+8>>2]=t[J+8>>2],t[ie+12>>2]=t[J+12>>2],(Z|0)==(c+-1|0)?(t[GA>>2]=t[f>>2],t[GA+4>>2]=t[f+4>>2],t[GA+8>>2]=t[f+8>>2],t[GA+12>>2]=t[f+12>>2]):(J=f+(Z+1<<4)|0,t[GA>>2]=t[J>>2],t[GA+4>>2]=t[J+4>>2],t[GA+8>>2]=t[J+8>>2],t[GA+12>>2]=t[J+12>>2]),c=$r(ie,GA,n,SA)|0;A:do if(c)f=0,l=c;else if(c=SA,f=t[c>>2]|0,c=t[c+4>>2]|0,(c|0)>0|(c|0)==0&f>>>0>0){iA=0,J=0;e:for(;;){if(Ye=1/(+(f>>>0)+4294967296*+(c|0)),bi=+C[ie>>3],c=dt(f|0,c|0,iA|0,J|0)|0,Lt=+(c>>>0)+4294967296*+(M()|0),de=+(iA>>>0)+4294967296*+(J|0),C[MA>>3]=Ye*(bi*Lt)+Ye*(+C[GA>>3]*de),C[Se>>3]=Ye*(+C[ce>>3]*Lt)+Ye*(+C[he>>3]*de),c=ss(MA,n,HA)|0,c|0){l=c;break}W=HA,G=t[W>>2]|0,W=t[W+4>>2]|0,I=Fn(G|0,W|0,A|0,r|0)|0,g=M()|0,c=o+(I<<3)|0,D=c,f=t[D>>2]|0,D=t[D+4>>2]|0;t:do if((f|0)==0&(D|0)==0)V=c,xe=16;else for(L=0,N=0;;){if((L|0)>(r|0)|(L|0)==(r|0)&N>>>0>A>>>0){l=1;break e}if((f|0)==(G|0)&(D|0)==(W|0))break t;if(c=$A(I|0,g|0,1,0)|0,I=Nn(c|0,M()|0,A|0,r|0)|0,g=M()|0,N=$A(N|0,L|0,1,0)|0,L=M()|0,c=o+(I<<3)|0,D=c,f=t[D>>2]|0,D=t[D+4>>2]|0,(f|0)==0&(D|0)==0){V=c,xe=16;break}}while(!1);if((xe|0)==16&&(xe=0,!((G|0)==0&(W|0)==0))&&(N=V,t[N>>2]=G,t[N+4>>2]=W,N=i+(t[s>>2]<<3)|0,t[N>>2]=G,t[N+4>>2]=W,N=s,N=$A(t[N>>2]|0,t[N+4>>2]|0,1,0)|0,G=M()|0,W=s,t[W>>2]=N,t[W+4>>2]=G),iA=$A(iA|0,J|0,1,0)|0,J=M()|0,c=SA,f=t[c>>2]|0,c=t[c+4>>2]|0,!((c|0)>(J|0)|(c|0)==(J|0)&f>>>0>iA>>>0)){f=1;break A}}f=0}else f=1;while(!1);if(Z=Z+1|0,!f){xe=21;break}if(c=t[e>>2]|0,(Z|0)>=(c|0)){l=0,xe=21;break}}return(xe|0)==21?(S=We,l|0):0}function Bt(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0,ce=0,he=0,Se=0,ie=0,GA=0,SA=0,xe=0,We=0,de=0,Ye=0,Lt=0;if(Lt=S,S=S+112|0,xe=Lt+80|0,c=Lt+72|0,We=Lt,de=Lt+56|0,s=l0(r)|0,s|0)return Ye=s,S=Lt,Ye|0;if(f=e+8|0,Ye=Cr((t[f>>2]<<5)+32|0)|0,!Ye)return Ye=13,S=Lt,Ye|0;if(fs(e,Ye),s=l0(r)|0,!s){if(GA=e,SA=t[GA+4>>2]|0,s=c,t[s>>2]=t[GA>>2],t[s+4>>2]=SA,li(c,xe),s=Yt(xe,A,We)|0,s)GA=0,SA=0;else{if(s=t[c>>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=We,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=We,t[s>>2]=r,t[s+4>>2]=o,s=o):r=i,GA=$A(r|0,s|0,12,0)|0,SA=M()|0,s=We,t[s>>2]=GA,t[s+4>>2]=SA,s=0}if(!s){if(r=Ht(GA,8)|0,!r)return ZA(Ye),Ye=13,S=Lt,Ye|0;if(l=Ht(GA,8)|0,!l)return ZA(Ye),ZA(r),Ye=13,S=Lt,Ye|0;Se=xe,t[Se>>2]=0,t[Se+4>>2]=0,Se=e,ie=t[Se+4>>2]|0,s=c,t[s>>2]=t[Se>>2],t[s+4>>2]=ie,s=Ne(c,GA,SA,A,xe,r,l)|0;A:do if(s)ZA(r),ZA(l),ZA(Ye);else{e:do if((t[f>>2]|0)>0){for(o=e+12|0,i=0;s=Ne((t[o>>2]|0)+(i<<3)|0,GA,SA,A,xe,r,l)|0,i=i+1|0,!(s|0);)if((i|0)>=(t[f>>2]|0))break e;ZA(r),ZA(l),ZA(Ye);break A}while(!1);(SA|0)>0|(SA|0)==0&GA>>>0>0&&An(l|0,0,GA<<3|0)|0,ie=xe,Se=t[ie+4>>2]|0;e:do if((Se|0)>0|(Se|0)==0&(t[ie>>2]|0)>>>0>0){QA=r,ce=l,he=r,Se=l,ie=r,s=r,V=r,MA=l,HA=l,r=l;t:for(;;){for(W=0,iA=0,J=0,Z=0,i=0,o=0;;){l=We,c=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(c|0));if(A=QA+(W<<3)|0,f=t[A>>2]|0,A=t[A+4>>2]|0,O(f,A,1,We,0)|0){l=We,c=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(c|0));l=Ht(7,4)|0,l|0&&(AA(f,A,1,We,l,7,0,0)|0,ZA(l))}for(G=0;;){N=We+(G<<3)|0,L=t[N>>2]|0,N=t[N+4>>2]|0;r:do if((L|0)==0&(N|0)==0)l=i,c=o;else{if(g=Fn(L|0,N|0,GA|0,SA|0)|0,f=M()|0,l=n+(g<<3)|0,A=l,c=t[A>>2]|0,A=t[A+4>>2]|0,!((c|0)==0&(A|0)==0)){D=0,I=0;do{if((D|0)>(SA|0)|(D|0)==(SA|0)&I>>>0>GA>>>0)break t;if((c|0)==(L|0)&(A|0)==(N|0)){l=i,c=o;break r}l=$A(g|0,f|0,1,0)|0,g=Nn(l|0,M()|0,GA|0,SA|0)|0,f=M()|0,I=$A(I|0,D|0,1,0)|0,D=M()|0,l=n+(g<<3)|0,A=l,c=t[A>>2]|0,A=t[A+4>>2]|0}while(!((c|0)==0&(A|0)==0))}if((L|0)==0&(N|0)==0){l=i,c=o;break}pn(L,N,de)|0,hs(e,Ye,de)|0&&(I=$A(i|0,o|0,1,0)|0,o=M()|0,D=l,t[D>>2]=L,t[D+4>>2]=N,i=ce+(i<<3)|0,t[i>>2]=L,t[i+4>>2]=N,i=I),l=i,c=o}while(!1);if(G=G+1|0,G>>>0>=7)break;i=l,o=c}if(W=$A(W|0,iA|0,1,0)|0,iA=M()|0,J=$A(J|0,Z|0,1,0)|0,Z=M()|0,o=xe,i=t[o>>2]|0,o=t[o+4>>2]|0,(Z|0)<(o|0)|(Z|0)==(o|0)&J>>>0>>0)i=l,o=c;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=$A(i|0,o|0,1,0)|0,o=M()|0,Z=xe,J=t[Z+4>>2]|0;while((o|0)<(J|0)|((o|0)==(J|0)?i>>>0<(t[Z>>2]|0)>>>0:0))}if(Z=xe,t[Z>>2]=l,t[Z+4>>2]=c,(c|0)>0|(c|0)==0&l>>>0>0)G=r,W=HA,iA=ie,J=MA,Z=ce,r=V,HA=s,MA=he,V=G,s=W,ie=Se,Se=iA,he=J,ce=QA,QA=Z;else break e}ZA(he),ZA(Se),ZA(Ye),s=1;break A}else s=l;while(!1);ZA(Ye),ZA(r),ZA(s),s=0}while(!1);return Ye=s,S=Lt,Ye|0}}return ZA(Ye),Ye=s,S=Lt,Ye|0}function rt(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;if(g=S,S=S+176|0,c=g,(A|0)<1)return di(r,0,0),f=0,S=g,f|0;for(l=e,l=wA(t[l>>2]|0,t[l+4>>2]|0,52)|0,M()|0,di(r,(A|0)>6?A:6,l&15),l=0;n=e+(l<<3)|0,n=In(t[n>>2]|0,t[n+4>>2]|0,c)|0,!(n|0);){if(n=t[c>>2]|0,(n|0)>0){o=0;do i=c+8+(o<<4)|0,o=o+1|0,n=c+8+(((o|0)%(n|0)|0)<<4)|0,s=xa(r,n,i)|0,s?gi(r,s)|0:ya(r,i,n)|0,n=t[c>>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?(S=g,n|0):(mi(r),f=n,S=g,f|0)}function vt(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;if(i=S,S=S+32|0,n=i,s=i+16|0,e=rt(e,A,s)|0,e|0)return r=e,S=i,r|0;if(t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,e=pi(s)|0,e|0)do{A=$l(r)|0;do Kl(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],gi(s,e)|0,e=wa(s,n)|0;while((e|0)!=0);e=pi(s)|0}while((e|0)!=0);return mi(s),e=Zl(r)|0,e?(ni(r),o=e,S=i,o|0):(o=0,S=i,o|0)}function _e(e){return e=e|0,e>>>0>121?(e=0,e|0):(e=t[7696+(e*28|0)+16>>2]|0,e|0)}function Dt(e){return e=e|0,(e|0)==4|(e|0)==117|0}function wr(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 nr(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 Yr(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 sr(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 Ir(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 un(e,A){return e=e|0,A=A|0,t[848+(e*28|0)+(A<<2)>>2]|0}function cn(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 $n(){return 122}function Kn(e){e=e|0;var A=0,r=0,n=0;A=0;do CA(A|0,0,45)|0,n=M()|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 Zn(e){e=e|0;var A=0,r=0,n=0;return n=+C[e+16>>3],r=+C[e+24>>3],A=n-r,+(n >3]<+C[e+24>>3]|0}function fn(e){return e=e|0,+(+C[e>>3]-+C[e+8>>3])}function vr(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;return r=+C[A>>3],!(r>=+C[e+8>>3])||!(r<=+C[e>>3])?(A=0,A|0):(n=+C[e+16>>3],r=+C[e+24>>3],s=+C[A+8>>3],A=s>=r,e=s<=n&1,n >3]<+C[A+8>>3]||+C[e+8>>3]>+C[A>>3]?(n=0,n|0):(i=+C[e+16>>3],r=e+24|0,g=+C[r>>3],o=i >3],s=A+24|0,c=+C[s>>3],l=f >3],A)||(g=+Zt(+C[r>>3],e),g>+Zt(+C[n>>3],A))?(l=0,l|0):(l=1,l|0))}function Lr(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,c=0;i=+C[e+16>>3],c=+C[e+24>>3],e=i >3],o=+C[A+24>>3],s=l >2]=e?s|A?1:2:0,t[n>>2]=s?e?1:A?2:1:0}function Nr(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;return+C[e>>3]<+C[A>>3]||+C[e+8>>3]>+C[A+8>>3]?(n=0,n|0):(n=e+16|0,c=+C[n>>3],i=+C[e+24>>3],o=c>3],s=A+24|0,f=+C[s>>3],l=g >3],A)?(g=+Zt(+C[n>>3],e),l=g>=+Zt(+C[r>>3],A),l|0):(l=0,l|0))}function br(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0;s=S,S=S+176|0,n=s,t[n>>2]=4,l=+C[A>>3],C[n+8>>3]=l,i=+C[A+16>>3],C[n+16>>3]=i,C[n+24>>3]=l,l=+C[A+24>>3],C[n+32>>3]=l,o=+C[A+8>>3],C[n+40>>3]=o,C[n+48>>3]=l,C[n+56>>3]=o,C[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));Pn(e|0,n|0,168)|0,S=s}function Yt(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0;N=S,S=S+288|0,g=N+264|0,D=N+96|0,f=N,l=f,c=l+96|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(c|0));return A=os(A,f)|0,A|0?(L=A,S=N,L|0):(c=f,f=t[c>>2]|0,c=t[c+4>>2]|0,pn(f,c,g)|0,In(f,c,D)|0,o=+i0(g,D+8|0),C[g>>3]=+C[e>>3],c=g+8|0,C[c>>3]=+C[e+16>>3],C[D>>3]=+C[e+8>>3],f=D+8|0,C[f>>3]=+C[e+24>>3],s=+i0(g,D),W=+C[c>>3]-+C[f>>3],i=+ee(+W),G=+C[g>>3]-+C[D>>3],n=+ee(+G),!(W==0|G==0)&&(W=+wi(+i,+n),W=+Wt(+(s*s/+B0(+(W/+B0(+i,+n)),3)/(o*(o*2.59807621135)*.8))),C[ge>>3]=W,I=~~W>>>0,L=+ee(W)>=1?W>0?~~+tt(+Le(W/4294967296),4294967295)>>>0:~~+Wt((W-+(~~W>>>0))/4294967296)>>>0:0,(t[ge+4>>2]&2146435072|0)!=2146435072)?(D=(I|0)==0&(L|0)==0,A=r,t[A>>2]=D?1:I,t[A+4>>2]=D?0:L,A=0):A=1,L=A,S=N,L|0)}function $r(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,c=0,f=0,g=0;f=S,S=S+288|0,o=f+264|0,l=f+96|0,c=f,s=c,i=s+96|0;do t[s>>2]=0,s=s+4|0;while((s|0)<(i|0));return r=os(r,c)|0,r|0?(n=r,S=f,n|0):(r=c,s=t[r>>2]|0,r=t[r+4>>2]|0,pn(s,r,o)|0,In(s,r,l)|0,g=+i0(o,l+8|0),g=+Wt(+(+i0(e,A)/(g*2))),C[ge>>3]=g,r=~~g>>>0,s=+ee(g)>=1?g>0?~~+tt(+Le(g/4294967296),4294967295)>>>0:~~+Wt((g-+(~~g>>>0))/4294967296)>>>0:0,(t[ge+4>>2]&2146435072|0)==2146435072?(n=1,S=f,n|0):(c=(r|0)==0&(s|0)==0,t[n>>2]=c?1:r,t[n+4>>2]=c?0:s,n=0,S=f,n|0))}function pr(e,A){e=e|0,A=+A;var r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;i=e+16|0,o=+C[i>>3],r=e+24|0,s=+C[r>>3],n=o-s,n=o >3],l=e+8|0,c=+C[l>>3],g=f-c,n=(n*A-n)*.5,A=(g*A-g)*.5,f=f+A,C[e>>3]=f>1.5707963267948966?1.5707963267948966:f,A=c-A,C[l>>3]=A<-1.5707963267948966?-1.5707963267948966:A,A=o+n,A=A>3.141592653589793?A+-6.283185307179586:A,C[i>>3]=A<-3.141592653589793?A+6.283185307179586:A,A=s-n,A=A>3.141592653589793?A+-6.283185307179586:A,C[r>>3]=A<-3.141592653589793?A+6.283185307179586:A}function hn(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 Kr(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0;D=A+8|0,t[D>>2]=0,c=+C[e>>3],o=+ee(+c),f=+C[e+8>>3],l=+ee(+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(I=1-o,e=(!(l>2]=e,I<=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(c<0)if(e&1){g=(e+1|0)/2|0,g=dt(r|0,((r|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-((+(g>>>0)+4294967296*+(M()|0))*2+1)),t[A>>2]=r;break}else{g=(e|0)/2|0,g=dt(r|0,((r|0)<0)<<31>>31|0,g|0,((g|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-(+(g>>>0)+4294967296*+(M()|0))*2),t[A>>2]=r;break}while(!1);g=A+4|0,f<0&&(r=r-((e<<1|1|0)/2|0)|0,t[A>>2]=r,e=0-e|0,t[g>>2]=e),n=e-r|0,(r|0)<0?(s=0-r|0,t[g>>2]=n,t[D>>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[D>>2]=s,t[g>>2]=0,e=0),i=r-s|0,n=e-s|0,(s|0)<0&&(t[A>>2]=i,t[g>>2]=n,t[D>>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[g>>2]=e-n,t[D>>2]=s-n)}function nt(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 H(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),C[A>>3]=+((t[e>>2]|0)-n|0)-r*.5,C[A+8>>3]=r*.8660254037844386}function tA(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 mA(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 NA(e,A){e=e|0,A=A|0;var r=0,n=0;r=ht(t[e>>2]|0,A)|0,t[e>>2]=r,r=e+4|0,n=ht(t[r>>2]|0,A)|0,t[r>>2]=n,e=e+8|0,A=ht(t[e>>2]|0,A)|0,t[e>>2]=A}function zA(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 te(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0;if(c=e+8|0,o=t[c>>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=Jr(+(A-o|0)*.14285714285714285)|0,t[e>>2]=n,s=Jr(+(r+l|0)*.14285714285714285)|0,t[f>>2]=s,t[c>>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[c>>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[c>>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[c>>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[c>>2]=r-n,f=0,f|0)}function Te(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,c=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(c=s<<1,(n?(2147483647-c|0)<(s|0):(-2147483648-c|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 c=1,c|0}else r=s*3|0,A=i<<1;return n=Jr(+(A+s|0)*.14285714285714285)|0,t[e>>2]=n,s=Jr(+(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?(c=0,c|0):(t[e>>2]=s-n,t[l>>2]=A-n,t[o>>2]=r-n,c=0,c|0)}function He(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=Jr(+((A*3|0)-r|0)*.14285714285714285)|0,t[e>>2]=n,A=Jr(+((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 st(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=Jr(+((A<<1)+r|0)*.14285714285714285)|0,t[e>>2]=n,A=Jr(+((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 bt(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 Ze(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 ot(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 _t(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 Fr(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 $t(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 Kt(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 qn(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 Jn(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 Dn(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 Xn(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 Tt(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 A0(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 e0(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 ts(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,c=0,f=0,g=0,D=0;if(D=S,S=S+64|0,g=D,l=D+56|0,!(!0&(A&2013265920|0)==134217728&(!0&(n&2013265920|0)==134217728)))return s=5,S=D,s|0;if((e|0)==(r|0)&(A|0)==(n|0))return t[s>>2]=0,s=0,S=D,s|0;if(o=wA(e|0,A|0,52)|0,M()|0,o=o&15,f=wA(r|0,n|0,52)|0,M()|0,(o|0)!=(f&15|0))return s=12,S=D,s|0;if(i=o+-1|0,o>>>0>1){It(e,A,i,g)|0,It(r,n,i,l)|0,f=g,c=t[f>>2]|0,f=t[f+4>>2]|0;A:do if((c|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,M()|0,i=i&7,o=wA(r|0,n|0,o|0)|0,M()|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(c,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,S=D,s|0}while(!1)}i=g,o=i+56|0;do t[i>>2]=0,i=i+4|0;while((i|0)<(o|0));return v(e,A,1,g)|0,A=g,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0))&&(A=g+8|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=g+16|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=g+24|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=g+32|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=g+40|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))?(i=g+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,S=D,s|0}function v0(e,A,r,n,s){return e=e|0,A=A|0,r=r|0,n=n|0,s=s|0,r=qA(e,A,r,n)|0,(r|0)==7?(s=11,s|0):(n=CA(r|0,0,56)|0,A=A&-2130706433|(M()|0)|268435456,t[s>>2]=e|n,t[s+4>>2]=A,s=0,s|0)}function _n(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 b0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;return s=S,S=S+16|0,n=s,t[n>>2]=0,!0&(A&2013265920|0)==268435456?(i=wA(e|0,A|0,56)|0,M()|0,n=$(e,A&-2130706433|134217728,i&7,n,r)|0,S=s,n|0):(n=6,S=s,n|0)}function t0(e,A){e=e|0,A=A|0;var r=0;switch(r=wA(e|0,A|0,56)|0,M()|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=Ve(e,r)|0,r|0)}function Tn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;return s=S,S=S+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,M()|0,n=$(e,i,A&7,n,r+8|0)|0,S=s,n|0):(n=6,S=s,n|0)}function Rn(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 dn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;return o=S,S=S+16|0,s=o,i=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(n=wA(e|0,A|0,56)|0,M()|0,n=ma(e,i,n&7)|0,(n|0)==-1?(t[r>>2]=0,i=6,S=o,i|0):(jn(e,i,s)|0&&OA(27795,26932,282,26947),A=wA(e|0,A|0,52)|0,M()|0,A=A&15,Oe(e,i)|0?w(s,A,n,2,r):eA(s,A,n,2,r),i=0,S=o,i|0)):(i=6,S=o,i|0)}function k0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;n=S,S=S+16|0,s=n,C0(e,A,r,s),Kr(s,r+4|0),S=n}function C0(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,c=0;if(l=S,S=S+16|0,c=l,r0(e,r,c),i=+St(+(1-+C[c>>3]*.5)),i<1e-16){t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,t[n+12>>2]=0,S=l;return}if(c=t[r>>2]|0,s=+C[15920+(c*24|0)>>3],s=+s0(s-+s0(+Pl(15600+(c<<4)|0,e))),ir(A)|0?o=+s0(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=+Be(+o)*s,C[n>>3]=i,o=+se(+o)*s,C[n+8>>3]=o,S=l}function r0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(i=S,S=S+32|0,s=i,da(e,s),t[A>>2]=0,C[r>>3]=5,n=+ut(16400,s),n<+C[r>>3]&&(t[A>>2]=0,C[r>>3]=n),n=+ut(16424,s),n<+C[r>>3]&&(t[A>>2]=1,C[r>>3]=n),n=+ut(16448,s),n<+C[r>>3]&&(t[A>>2]=2,C[r>>3]=n),n=+ut(16472,s),n<+C[r>>3]&&(t[A>>2]=3,C[r>>3]=n),n=+ut(16496,s),n<+C[r>>3]&&(t[A>>2]=4,C[r>>3]=n),n=+ut(16520,s),n<+C[r>>3]&&(t[A>>2]=5,C[r>>3]=n),n=+ut(16544,s),n<+C[r>>3]&&(t[A>>2]=6,C[r>>3]=n),n=+ut(16568,s),n<+C[r>>3]&&(t[A>>2]=7,C[r>>3]=n),n=+ut(16592,s),n<+C[r>>3]&&(t[A>>2]=8,C[r>>3]=n),n=+ut(16616,s),n<+C[r>>3]&&(t[A>>2]=9,C[r>>3]=n),n=+ut(16640,s),n<+C[r>>3]&&(t[A>>2]=10,C[r>>3]=n),n=+ut(16664,s),n<+C[r>>3]&&(t[A>>2]=11,C[r>>3]=n),n=+ut(16688,s),n<+C[r>>3]&&(t[A>>2]=12,C[r>>3]=n),n=+ut(16712,s),n<+C[r>>3]&&(t[A>>2]=13,C[r>>3]=n),n=+ut(16736,s),n<+C[r>>3]&&(t[A>>2]=14,C[r>>3]=n),n=+ut(16760,s),n<+C[r>>3]&&(t[A>>2]=15,C[r>>3]=n),n=+ut(16784,s),n<+C[r>>3]&&(t[A>>2]=16,C[r>>3]=n),n=+ut(16808,s),n<+C[r>>3]&&(t[A>>2]=17,C[r>>3]=n),n=+ut(16832,s),n<+C[r>>3]&&(t[A>>2]=18,C[r>>3]=n),n=+ut(16856,s),!(n<+C[r>>3])){S=i;return}t[A>>2]=19,C[r>>3]=n,S=i}function Zr(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=+ha(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=+at(+ +C[e+8>>3],+ +C[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=(ir(r)|0)==0,i=+Vt(+((r?l:l*.37796447300922725)*.381966011250105))):(i=+Vt(+(i*.381966011250105)),ir(r)|0&&(o=+s0(o+.3334731722518321))),Ql(15600+(A<<4)|0,+s0(+C[15920+(A*24|0)>>3]-o),i,s)}function m(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;n=S,S=S+16|0,s=n,H(e+4|0,s),Zr(s,t[e>>2]|0,A,0,r),S=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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0,ce=0,he=0,Se=0,ie=0,GA=0,SA=0,xe=0,We=0,de=0;if(xe=S,S=S+272|0,i=xe+256|0,J=xe+240|0,ie=xe,GA=xe+224|0,SA=xe+208|0,Z=xe+176|0,V=xe+160|0,MA=xe+192|0,HA=xe+144|0,QA=xe+128|0,ce=xe+112|0,he=xe+96|0,Se=xe+80|0,t[i>>2]=A,t[J>>2]=t[e>>2],t[J+4>>2]=t[e+4>>2],t[J+8>>2]=t[e+8>>2],t[J+12>>2]=t[e+12>>2],_(J,i,ie),t[s>>2]=0,J=n+r+((n|0)==5&1)|0,(J|0)<=(r|0)){S=xe;return}c=t[i>>2]|0,f=GA+4|0,g=Z+4|0,D=r+5|0,I=16880+(c<<2)|0,L=16960+(c<<2)|0,N=QA+8|0,G=ce+8|0,W=he+8|0,iA=SA+4|0,l=r;A:for(;;){o=ie+(((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((P(SA,c,0,1)|0)==2);if((l|0)>(r|0)&(ir(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],H(f,V),n=t[Z>>2]|0,i=t[17040+(n*80|0)+(t[GA>>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 _t(g),e=e+1|0;while((e|0)<(o|0))}switch(o=18640+(n*80|0)+(i*20|0)+4|0,t[MA>>2]=t[o>>2],t[MA+4>>2]=t[o+4>>2],t[MA+8>>2]=t[o+8>>2],NA(MA,(t[I>>2]|0)*3|0),tA(g,MA,g),nt(g),H(g,HA),We=+(t[L>>2]|0),C[QA>>3]=We*3,C[N>>3]=0,de=We*-1.5,C[ce>>3]=de,C[G>>3]=We*2.598076211353316,C[he>>3]=de,C[W>>3]=We*-2.598076211353316,t[17040+((t[Z>>2]|0)*80|0)+(t[SA>>2]<<2)>>2]|0){case 1:{e=ce,n=QA;break}case 3:{e=he,n=ce;break}case 2:{e=QA,n=he;break}default:{e=12;break A}}ci(V,HA,n,e,Se),Zr(Se,t[Z>>2]|0,c,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1}if((l|0)<(D|0)&&(H(iA,Z),Zr(Z,t[SA>>2]|0,c,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1),t[GA>>2]=t[SA>>2],t[GA+4>>2]=t[SA+4>>2],t[GA+8>>2]=t[SA+8>>2],t[GA+12>>2]=t[SA+12>>2],l=l+1|0,(l|0)>=(J|0)){e=3;break}}if((e|0)==3){S=xe;return}else(e|0)==12&&OA(26970,27017,572,27027)}function _(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0;c=S,S=S+128|0,n=c+64|0,s=c,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=(ir(t[A>>2]|0)|0)==0,n=l?n:s,s=e+4|0,qn(s),Jn(s),ir(t[A>>2]|0)|0&&(Ze(s),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,tA(s,n,A),nt(A),t[r+16>>2]=t[e>>2],A=r+20|0,tA(s,n+12|0,A),nt(A),t[r+32>>2]=t[e>>2],A=r+36|0,tA(s,n+24|0,A),nt(A),t[r+48>>2]=t[e>>2],A=r+52|0,tA(s,n+36|0,A),nt(A),t[r+64>>2]=t[e>>2],r=r+68|0,tA(s,n+48|0,r),nt(r),S=c}function P(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0;if(N=S,S=S+32|0,I=N+12|0,l=N,L=e+4|0,D=t[16960+(A<<2)>>2]|0,g=(n|0)!=0,D=g?D*3|0:D,s=t[L>>2]|0,f=e+8|0,o=t[f>>2]|0,g){if(i=e+12|0,n=t[i>>2]|0,s=o+s+n|0,(s|0)==(D|0))return L=1,S=N,L|0;c=i}else c=e+12|0,n=t[c>>2]|0,s=o+s+n|0;if((s|0)<=(D|0))return L=0,S=N,L|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?(hn(I,D,0,0),mA(L,I,l),Fr(l),tA(l,I,L),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 _t(L),n=n+1|0;while((n|0)<(t[s>>2]|0))}return e=i+4|0,t[I>>2]=t[e>>2],t[I+4>>2]=t[e+4>>2],t[I+8>>2]=t[e+8>>2],A=t[16880+(A<<2)>>2]|0,NA(I,g?A*3|0:A),tA(L,I,L),nt(L),g?n=((t[f>>2]|0)+(t[L>>2]|0)+(t[c>>2]|0)|0)==(D|0)?1:2:n=2,L=n,S=N,L|0}function rA(e,A){e=e|0,A=A|0;var r=0;do r=P(e,A,0,1)|0;while((r|0)==2);return r|0}function eA(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0,ce=0,he=0,Se=0,ie=0;if(he=S,S=S+240|0,i=he+224|0,MA=he+208|0,HA=he,QA=he+192|0,ce=he+176|0,W=he+160|0,iA=he+144|0,J=he+128|0,Z=he+112|0,V=he+96|0,t[i>>2]=A,t[MA>>2]=t[e>>2],t[MA+4>>2]=t[e+4>>2],t[MA+8>>2]=t[e+8>>2],t[MA+12>>2]=t[e+12>>2],pA(MA,i,HA),t[s>>2]=0,G=n+r+((n|0)==6&1)|0,(G|0)<=(r|0)){S=he;return}c=t[i>>2]|0,f=r+6|0,g=16960+(c<<2)|0,D=iA+8|0,I=J+8|0,L=Z+8|0,N=QA+4|0,o=0,l=r,n=-1;A:for(;;){if(i=(l|0)%6|0,e=HA+(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=P(QA,c,0,1)|0,(l|0)>(r|0)&(ir(A)|0)!=0&&(e|0)!=1&&(t[QA>>2]|0)!=(n|0)){switch(H(HA+(((i+5|0)%6|0)<<4)+4|0,ce),H(HA+(i<<4)+4|0,W),Se=+(t[g>>2]|0),C[iA>>3]=Se*3,C[D>>3]=0,ie=Se*-1.5,C[J>>3]=ie,C[I>>3]=Se*2.598076211353316,C[Z>>3]=ie,C[L>>3]=Se*-2.598076211353316,i=t[MA>>2]|0,t[17040+(i*80|0)+(((n|0)==(i|0)?t[QA>>2]|0:n)<<2)>>2]|0){case 1:{e=J,n=iA;break}case 3:{e=Z,n=J;break}case 2:{e=iA,n=Z;break}default:{e=8;break A}}ci(ce,W,n,e,V),!(fi(ce,V)|0)&&!(fi(W,V)|0)&&(Zr(V,t[MA>>2]|0,c,1,s+8+(t[s>>2]<<4)|0),t[s>>2]=(t[s>>2]|0)+1)}if((l|0)<(f|0)&&(H(N,ce),Zr(ce,t[QA>>2]|0,c,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){S=he;return}else(e|0)==8&&OA(27054,27017,737,27099)}function pA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0;c=S,S=S+160|0,n=c+80|0,s=c,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=(ir(t[A>>2]|0)|0)==0,n=l?n:s,s=e+4|0,qn(s),Jn(s),ir(t[A>>2]|0)|0&&(Ze(s),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,tA(s,n,A),nt(A),t[r+16>>2]=t[e>>2],A=r+20|0,tA(s,n+12|0,A),nt(A),t[r+32>>2]=t[e>>2],A=r+36|0,tA(s,n+24|0,A),nt(A),t[r+48>>2]=t[e>>2],A=r+52|0,tA(s,n+36|0,A),nt(A),t[r+64>>2]=t[e>>2],A=r+68|0,tA(s,n+48|0,A),nt(A),t[r+80>>2]=t[e>>2],r=r+84|0,tA(s,n+60|0,r),nt(r),S=c}function DA(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,52)|0,M()|0,A&15|0}function re(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,45)|0,M()|0,A&127|0}function ve(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,M()|0,t[n>>2]=r&7,n=0,n|0)}function ye(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,c=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=M()|0,l=CA(A|0,0,45)|0,s=s|(M()|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,c=CA(7,0,f|0)|0,s=s&~(M()|0),A=CA(A|0,((A|0)<0)<<31>>31|0,f|0)|0,i=A|i&~c,s=M()|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 Ve(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,M()|0,n=n&15,r=wA(e|0,A|0,45)|0,M()|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,M()|0,o|0)|0,s=M()|0,i=dt(-1227133514,-1171,o|0,s|0)|0,!((o&613566756&i|0)==0&(s&4681&(M()|0)|0)==0)||(o=(n*3|0)+19|0,i=CA(~e|0,~A|0,o|0)|0,o=wA(i|0,M()|0,o|0)|0,!((n|0)==15|(o|0)==0&(M()|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=ms(e|0,A|0)|0,M()|0,((63-o|0)%3|0|0)!=0|0))}function Rt(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,M()|0,n=n&15,r=wA(e|0,A|0,45)|0,M()|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,M()|0,o|0)|0,s=M()|0,i=dt(-1227133514,-1171,o|0,s|0)|0,(o&613566756&i|0)==0&(s&4681&(M()|0)|0)==0)&&(o=(n*3|0)+19|0,i=CA(~e|0,~A|0,o|0)|0,o=wA(i|0,M()|0,o|0)|0,(n|0)==15|(o|0)==0&(M()|0)==0)&&(!(xA[20528+r>>0]|0)||(r=A&8191,(e|0)==0&(r|0)==0)||(o=ms(e|0,r|0)|0,M()|0,(63-o|0)%3|0|0))||t0(e,A)|0?(o=1,o|0):(o=(hi(e,A)|0)!=0&1,o|0)}function jt(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=M()|0,r=CA(r|0,0,45)|0,r=i|(M()|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&~(M()|0),o=CA(n|0,0,o|0)|0,s=s&~l|o,r=r|(M()|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 It(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,M()|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=M()|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=M()|0|e;while((r|0)<(i|0));return t[n>>2]=s,t[n+4>>2]=e,n=0,n|0}function kr(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,M()|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,M()|0;A:do if(!(_e(r&127)|0))r=qr(7,0,s,((s|0)<0)<<31>>31)|0,s=M()|0;else{e:do if(i|0){for(r=1;o=CA(7,0,(15-r|0)*3|0)|0,!!((o&e|0)==0&((M()|0)&A|0)==0);)if(r>>>0>>0)r=r+1|0;else break e;r=qr(7,0,s,((s|0)<0)<<31>>31)|0,s=M()|0;break A}while(!1);r=qr(7,0,s,((s|0)<0)<<31>>31)|0,r=mt(r|0,M()|0,5,0)|0,r=$A(r|0,M()|0,-5,-1)|0,r=Xr(r|0,M()|0,6,0)|0,r=$A(r|0,M()|0,1,0)|0,s=M()|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,M()|0,!(_e(s&127)|0))return s=0,s|0;s=wA(e|0,A|0,52)|0,M()|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,M()|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 n0(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=S,S=S+16|0,i=o,ls(i,e,A,r),A=i,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0)return S=o,0;s=0,r=0;do l=n+(s<<3)|0,t[l>>2]=e,t[l+4>>2]=A,s=$A(s|0,r|0,1,0)|0,r=M()|0,as(i),l=i,e=t[l>>2]|0,A=t[l+4>>2]|0;while(!((e|0)==0&(A|0)==0));return S=o,0}function Js(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,WA(r|0),n|0):(r=CA(-1,-1,((n-r|0)*3|0)+3|0)|0,n=CA(~r|0,~(M()|0)|0,(15-n|0)*3|0)|0,r=~(M()|0)&A,n=~n&e,WA(r|0),n|0)}function Xs(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,M()|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,~(M()|0)|0,(15-r|0)*3|0)|0,A=~(M()|0)&A,e=~s&e),s=CA(r|0,0,52)|0,r=A&-15728641|(M()|0),t[n>>2]=e|s,t[n+4>>2]=r,n=0,n|0):(n=4,n|0)}function El(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0,ce=0,he=0,Se=0,ie=0,GA=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 ie=e+(s<<3)|0,GA=t[ie+4>>2]|0,SA=A+(s<<3)|0,t[SA>>2]=t[ie>>2],t[SA+4>>2]=GA,s=$A(s|0,i|0,1,0)|0,i=M()|0;while((i|0)<(n|0)|(i|0)==(n|0)&s>>>0>>0);return s=0,s|0}if(Se=r<<3,GA=Cr(Se)|0,!GA)return SA=13,SA|0;if(Pn(GA|0,e|0,Se|0)|0,ie=Ht(r,8)|0,!ie)return ZA(GA),SA=13,SA|0;A:for(;;){s=GA,f=t[s>>2]|0,s=t[s+4>>2]|0,ce=wA(f|0,s|0,52)|0,M()|0,ce=ce&15,he=ce+-1|0,QA=(ce|0)!=0,HA=(n|0)>0|(n|0)==0&r>>>0>0;e:do if(QA&HA){if(J=CA(he|0,0,52)|0,Z=M()|0,he>>>0>15){if(!((f|0)==0&(s|0)==0)){SA=16;break A}for(i=0,e=0;;){if(i=$A(i|0,e|0,1,0)|0,e=M()|0,!((e|0)<(n|0)|(e|0)==(n|0)&i>>>0 >>0))break e;if(o=GA+(i<<3)|0,MA=t[o>>2]|0,o=t[o+4>>2]|0,!((MA|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(g=wA(l|0,e|0,52)|0,M()|0,g=g&15,(g|0)<(he|0)){s=12,SA=27;break A}if((g|0)!=(he|0)&&(l=l|J,e=e&-15728641|Z,g>>>0>=ce>>>0)){c=he;do MA=CA(7,0,(14-c|0)*3|0)|0,c=c+1|0,l=MA|l,e=M()|0|e;while(c>>>0 >>0)}if(I=Fn(l|0,e|0,r|0,n|0)|0,L=M()|0,c=ie+(I<<3)|0,g=c,D=t[g>>2]|0,g=t[g+4>>2]|0,!((D|0)==0&(g|0)==0)){W=0,iA=0;do{if((W|0)>(n|0)|(W|0)==(n|0)&iA>>>0>r>>>0){SA=31;break A}if((D|0)==(l|0)&(g&-117440513|0)==(e|0)){N=wA(D|0,g|0,56)|0,M()|0,N=N&7,G=N+1|0,MA=wA(D|0,g|0,45)|0,M()|0;t:do if(!(_e(MA&127)|0))g=7;else{if(D=wA(D|0,g|0,52)|0,M()|0,D=D&15,!D){g=6;break}for(g=1;;){if(MA=CA(7,0,(15-g|0)*3|0)|0,!((MA&l|0)==0&((M()|0)&e|0)==0)){g=7;break t}if(g>>>0 >>0)g=g+1|0;else{g=6;break}}}while(!1);if((N+2|0)>>>0>g>>>0){SA=41;break A}MA=CA(G|0,0,56)|0,e=M()|0|e&-117440513,V=c,t[V>>2]=0,t[V+4>>2]=0,l=MA|l}else I=$A(I|0,L|0,1,0)|0,I=Nn(I|0,M()|0,r|0,n|0)|0,L=M()|0;iA=$A(iA|0,W|0,1,0)|0,W=M()|0,c=ie+(I<<3)|0,g=c,D=t[g>>2]|0,g=t[g+4>>2]|0}while(!((D|0)==0&(g|0)==0))}MA=c,t[MA>>2]=l,t[MA+4>>2]=e}if(i=$A(i|0,o|0,1,0)|0,o=M()|0,!((o|0)<(n|0)|(o|0)==(n|0)&i>>>0 >>0))break e;e=GA+(i<<3)|0,l=t[e>>2]|0,e=t[e+4>>2]|0}}while(!1);if(MA=$A(r|0,n|0,5,0)|0,V=M()|0,V>>>0<0|(V|0)==0&MA>>>0<11){SA=85;break}if(MA=Xr(r|0,n|0,6,0)|0,M()|0,MA=Ht(MA,8)|0,!MA){SA=48;break}do if(HA){for(G=0,e=0,N=0,W=0;;){if(g=ie+(G<<3)|0,o=g,i=t[o>>2]|0,o=t[o+4>>2]|0,(i|0)==0&(o|0)==0)V=N;else{D=wA(i|0,o|0,56)|0,M()|0,D=D&7,l=D+1|0,I=o&-117440513,V=wA(i|0,o|0,45)|0,M()|0;e:do if(_e(V&127)|0){if(L=wA(i|0,o|0,52)|0,M()|0,L=L&15,L|0)for(c=1;;){if(V=CA(7,0,(15-c|0)*3|0)|0,!((i&V|0)==0&(I&(M()|0)|0)==0))break e;if(c>>>0 >>0)c=c+1|0;else break}o=CA(l|0,0,56)|0,i=o|i,o=M()|0|I,l=g,t[l>>2]=i,t[l+4>>2]=o,l=D+2|0}while(!1);(l|0)==7?(V=MA+(e<<3)|0,t[V>>2]=i,t[V+4>>2]=o&-117440513,e=$A(e|0,N|0,1,0)|0,V=M()|0):V=N}if(G=$A(G|0,W|0,1,0)|0,W=M()|0,(W|0)<(n|0)|(W|0)==(n|0)&G>>>0 >>0)N=V;else break}if(HA){if(iA=he>>>0>15,J=CA(he|0,0,52)|0,Z=M()|0,!QA){for(i=0,c=0,l=0,o=0;(f|0)==0&(s|0)==0||(he=A+(i<<3)|0,t[he>>2]=f,t[he+4>>2]=s,i=$A(i|0,c|0,1,0)|0,c=M()|0),l=$A(l|0,o|0,1,0)|0,o=M()|0,!!((o|0)<(n|0)|(o|0)==(n|0)&l>>>0 >>0);)s=GA+(l<<3)|0,f=t[s>>2]|0,s=t[s+4>>2]|0;s=V;break}for(i=0,c=0,o=0,l=0;;){do if(!((f|0)==0&(s|0)==0)){if(L=wA(f|0,s|0,52)|0,M()|0,L=L&15,iA|(L|0)<(he|0)){SA=80;break A}if((L|0)!=(he|0)){if(g=f|J,D=s&-15728641|Z,L>>>0>=ce>>>0){I=he;do QA=CA(7,0,(14-I|0)*3|0)|0,I=I+1|0,g=QA|g,D=M()|0|D;while(I>>>0 >>0)}}else g=f,D=s;N=Fn(g|0,D|0,r|0,n|0)|0,I=0,L=0,W=M()|0;do{if((I|0)>(n|0)|(I|0)==(n|0)&L>>>0>r>>>0){SA=81;break A}if(QA=ie+(N<<3)|0,G=t[QA+4>>2]|0,(G&-117440513|0)==(D|0)&&(t[QA>>2]|0)==(g|0)){SA=65;break}QA=$A(N|0,W|0,1,0)|0,N=Nn(QA|0,M()|0,r|0,n|0)|0,W=M()|0,L=$A(L|0,I|0,1,0)|0,I=M()|0,QA=ie+(N<<3)|0}while(!((t[QA>>2]|0)==(g|0)&&(t[QA+4>>2]|0)==(D|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=$A(i|0,c|0,1,0)|0,c=M()|0}while(!1);if(o=$A(o|0,l|0,1,0)|0,l=M()|0,!((l|0)<(n|0)|(l|0)==(n|0)&o>>>0 >>0))break;s=GA+(o<<3)|0,f=t[s>>2]|0,s=t[s+4>>2]|0}s=V}else i=0,s=V}else i=0,e=0,s=0;while(!1);if(An(ie|0,0,Se|0)|0,Pn(GA|0,MA|0,e<<3|0)|0,ZA(MA),(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 ZA(GA),ZA(ie),SA=10,SA|0;if((SA|0)==48)return ZA(GA),ZA(ie),SA=13,SA|0;(SA|0)==80?OA(27795,27122,711,27132):(SA|0)==81?OA(27795,27122,723,27132):(SA|0)==85&&(Pn(A|0,GA|0,r<<3|0)|0,SA=89)}return(SA|0)==21?(ZA(GA),ZA(ie),SA=5,SA|0):(SA|0)==27?(ZA(GA),ZA(ie),SA=s,SA|0):(SA|0)==89?(ZA(GA),ZA(ie),SA=0,SA|0):0}function Ml(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0;if(G=S,S=S+16|0,N=G,!((r|0)>0|(r|0)==0&A>>>0>0))return N=0,S=G,N|0;if((o|0)>=16)return N=12,S=G,N|0;I=0,L=0,D=0,l=0;A:for(;;){if(f=e+(I<<3)|0,c=t[f>>2]|0,f=t[f+4>>2]|0,g=wA(c|0,f|0,52)|0,M()|0,(g&15|0)>(o|0)){l=12,c=11;break}if(ls(N,c,f,o),g=N,f=t[g>>2]|0,g=t[g+4>>2]|0,(f|0)==0&(g|0)==0)c=D;else{c=D;do{if(!((l|0)<(i|0)|(l|0)==(i|0)&c>>>0 >>0)){c=10;break A}D=n+(c<<3)|0,t[D>>2]=f,t[D+4>>2]=g,c=$A(c|0,l|0,1,0)|0,l=M()|0,as(N),D=N,f=t[D>>2]|0,g=t[D+4>>2]|0}while(!((f|0)==0&(g|0)==0))}if(I=$A(I|0,L|0,1,0)|0,L=M()|0,(L|0)<(r|0)|(L|0)==(r|0)&I>>>0>>0)D=c;else{l=0,c=11;break}}return(c|0)==10?(N=14,S=G,N|0):(c|0)==11?(S=G,l|0):0}function Bl(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,c=0,f=0,g=0,D=0,I=0;I=S,S=S+16|0,D=I;A:do if((r|0)>0|(r|0)==0&A>>>0>0){for(f=0,o=0,i=0,g=0;;){if(c=e+(f<<3)|0,l=t[c>>2]|0,c=t[c+4>>2]|0,!((l|0)==0&(c|0)==0)&&(c=(kr(l,c,n,D)|0)==0,l=D,o=$A(t[l>>2]|0,t[l+4>>2]|0,o|0,i|0)|0,i=M()|0,!c)){i=12;break}if(f=$A(f|0,g|0,1,0)|0,g=M()|0,!((g|0)<(r|0)|(g|0)==(r|0)&f>>>0>>0))break A}return S=I,i|0}else o=0,i=0;while(!1);return t[s>>2]=o,t[s+4>>2]=i,s=0,S=I,s|0}function Dl(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,52)|0,M()|0,A&1|0}function zt(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;if(s=wA(e|0,A|0,52)|0,M()|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,M()|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 rs(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0;if(c=wA(e|0,A|0,52)|0,M()|0,c=c&15,!c)return l=A,c=e,WA(l|0),c|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=CA(7,0,i|0)|0,s=M()|0,o=wA(e|0,A|0,i|0)|0,M()|0,i=CA($t(o&7)|0,0,i|0)|0,o=M()|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,M()|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,M()|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,M()|0,i=CA(7,0,o|0)|0,A=A&~(M()|0),o=CA($t(s&7)|0,0,o|0)|0,e=e&~i|o,A=A|(M()|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 WA(A|0),e|0}function mn(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,M()|0,n=n&15,!n)return r=A,n=e,WA(r|0),n|0;for(r=1;i=(15-r|0)*3|0,o=wA(e|0,A|0,i|0)|0,M()|0,s=CA(7,0,i|0)|0,A=A&~(M()|0),i=CA($t(o&7)|0,0,i|0)|0,e=i|e&~s,A=M()|0|A,r>>>0 >>0;)r=r+1|0;return WA(A|0),e|0}function _l(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0;if(c=wA(e|0,A|0,52)|0,M()|0,c=c&15,!c)return l=A,c=e,WA(l|0),c|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=CA(7,0,i|0)|0,s=M()|0,o=wA(e|0,A|0,i|0)|0,M()|0,i=CA(Kt(o&7)|0,0,i|0)|0,o=M()|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,M()|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,M()|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&~(M()|0),A=wA(e|0,A|0,s|0)|0,M()|0,A=CA(Kt(A&7)|0,0,s|0)|0,e=e&~i|A,A=o|(M()|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 WA(A|0),e|0}function ns(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,M()|0,n=n&15,!n)return r=A,n=e,WA(r|0),n|0;for(r=1;o=(15-r|0)*3|0,i=CA(7,0,o|0)|0,s=A&~(M()|0),A=wA(e|0,A|0,o|0)|0,M()|0,A=CA(Kt(A&7)|0,0,o|0)|0,e=A|e&~i,A=M()|0|s,r>>>0 >>0;)r=r+1|0;return WA(A|0),e|0}function Tl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;if(c=S,S=S+64|0,l=c+40|0,n=c+24|0,s=c+12|0,i=c,CA(A|0,0,52)|0,r=M()|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,WA(o|0),S=c,l|0):(CA(wr(e)|0,0,45)|0,o=M()|0|r,l=-1,WA(o|0),S=c,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?(He(o),t[s>>2]=t[o>>2],t[s+4>>2]=t[o+4>>2],t[s+8>>2]=t[o+8>>2],bt(s)):(st(o),t[s>>2]=t[o>>2],t[s+4>>2]=t[o+4>>2],t[s+8>>2]=t[o+8>>2],Ze(s)),mA(n,s,i),nt(i),g=(15-A|0)*3|0,f=CA(7,0,g|0)|0,r=r&~(M()|0),g=CA(zA(i)|0,0,g|0)|0,e=g|e&~f,r=M()|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=wr(l)|0,A=CA(n|0,0,45)|0,A=A|e,e=M()|0|r&-1040385,i=nr(l)|0,!(_e(n)|0)){if((i|0)<=0)break;for(s=0;;){if(n=wA(A|0,e|0,52)|0,M()|0,n=n&15,n)for(r=1;g=(15-r|0)*3|0,l=wA(A|0,e|0,g|0)|0,M()|0,f=CA(7,0,g|0)|0,e=e&~(M()|0),g=CA($t(l&7)|0,0,g|0)|0,A=A&~f|g,e=e|(M()|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,M()|0,s=s&15;e:do if(s){r=1;t:for(;;){switch(g=wA(A|0,e|0,(15-r|0)*3|0)|0,M()|0,g&7){case 1:break t;case 0:break;default:break e}if(r>>>0 >>0)r=r+1|0;else break e}if(Ir(n,t[l>>2]|0)|0)for(r=1;l=(15-r|0)*3|0,f=CA(7,0,l|0)|0,g=e&~(M()|0),e=wA(A|0,e|0,l|0)|0,M()|0,e=CA(Kt(e&7)|0,0,l|0)|0,A=A&~f|e,e=g|(M()|0),r>>>0>>0;)r=r+1|0;else for(r=1;g=(15-r|0)*3|0,l=wA(A|0,e|0,g|0)|0,M()|0,f=CA(7,0,g|0)|0,e=e&~(M()|0),g=CA($t(l&7)|0,0,g|0)|0,A=A&~f|g,e=e|(M()|0),r>>>0>>0;)r=r+1|0}while(!1);if((i|0)>0){r=0;do A=rs(A,e)|0,e=M()|0,r=r+1|0;while((r|0)!=(i|0))}}else A=0,e=0;while(!1);return f=e,g=A,WA(f|0),S=c,g|0}function ir(e){return e=e|0,(e|0)%2|0|0}function ss(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;return s=S,S=S+16|0,n=s,A>>>0>15?(n=4,S=s,n|0):(t[e+4>>2]&2146435072|0)==2146435072||(t[e+8+4>>2]&2146435072|0)==2146435072?(n=3,S=s,n|0):(k0(e,A,n),A=Tl(n,A)|0,n=M()|0,t[r>>2]=A,t[r+4>>2]=n,(A|0)==0&(n|0)==0&&OA(27795,27122,1050,27145),n=0,S=s,n|0)}function is(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,M()|0,i=i&15,o=wA(e|0,A|0,45)|0,M()|0,n=(i|0)==0,_e(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?bt(s):Ze(s),o=wA(e|0,A|0,(15-r|0)*3|0)|0,M()|0,ot(s,o&7),r>>>0>>0;)r=r+1|0;return n|0}function jn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;if(g=S,S=S+16|0,c=g,f=wA(e|0,A|0,45)|0,M()|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,S=g,f|0;A:do if((_e(f)|0)!=0&&(i=wA(e|0,A|0,52)|0,M()|0,i=i&15,(i|0)!=0)){n=1;e:for(;;){switch(l=wA(e|0,A|0,(15-n|0)*3|0)|0,M()|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&~(M()|0),n=wA(e|0,n|0,A|0)|0,M()|0,n=CA(Kt(n&7)|0,0,A|0)|0,e=e&~o|n,n=l|(M()|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],!(is(e,n,r)|0))return f=0,S=g,f|0;if(o=r+4|0,t[c>>2]=t[o>>2],t[c+4>>2]=t[o+4>>2],t[c+8>>2]=t[o+8>>2],i=wA(e|0,n|0,52)|0,M()|0,l=i&15,i&1?(Ze(o),i=l+1|0):i=l,!(_e(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,M()|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(!(P(r,i,n,0)|0))(i|0)!=(l|0)&&(t[o>>2]=t[c>>2],t[o+4>>2]=t[c+4>>2],t[o+8>>2]=t[c+8>>2]);else{if(_e(f)|0)do;while((P(r,i,0,0)|0)!=0);(i|0)!=(l|0)&&st(o)}return f=0,S=g,f|0}function pn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;return i=S,S=S+16|0,n=i,s=jn(e,A,n)|0,s|0?(S=i,s|0):(s=wA(e|0,A|0,52)|0,M()|0,m(n,s&15,r),s=0,S=i,s|0)}function In(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=S,S=S+16|0,i=o,n=jn(e,A,i)|0,n|0)return i=n,S=o,i|0;n=wA(e|0,A|0,45)|0,M()|0,n=(_e(n&127)|0)==0,s=wA(e|0,A|0,52)|0,M()|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&((M()|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,S=o,l|0}while(!1);return eA(i,s,0,6,r),l=0,S=o,l|0}function Rl(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,M()|0,!(_e(s&127)|0))return s=2,t[r>>2]=s,0;if(s=wA(e|0,A|0,52)|0,M()|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&((M()|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 Ai(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0;D=S,S=S+128|0,f=D+112|0,i=D+96|0,g=D,s=wA(e|0,A|0,52)|0,M()|0,l=s&15,t[f>>2]=l,o=wA(e|0,A|0,45)|0,M()|0,o=o&127;A:do if(_e(o)|0){if(l|0)for(n=1;;){if(c=CA(7,0,(15-n|0)*3|0)|0,!((c&e|0)==0&((M()|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 c=CA(l+1|0,0,52)|0,g=M()|0|A&-15728641,f=CA(7,0,(14-l|0)*3|0)|0,g=Ai((c|e)&~f,g&~(M()|0),r)|0,S=D,g|0}else s=0;while(!1);if(n=jn(e,A,i)|0,!n){s?(_(i,f,g),c=5):(pA(i,f,g),c=6);A:do if(_e(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&((M()|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);An(r|0,-1,e<<2|0)|0;A:do if(s)for(i=0;;){if(o=g+(i<<4)|0,rA(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>=c>>>0){n=0;break}}else for(i=0;;){if(o=g+(i<<4)|0,P(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>=c>>>0){n=0;break}}while(!1)}return g=n,S=D,g|0}function jl(){return 12}function os(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0;if(e>>>0>15)return l=4,l|0;if(CA(e|0,0,52)|0,l=M()|0|134225919,!e){r=0,n=0;do _e(n)|0&&(CA(n|0,0,45)|0,o=l|(M()|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(_e(o)|0){for(CA(o|0,0,45)|0,n=1,s=-1,i=l|(M()|0);c=CA(7,0,(15-n|0)*3|0)|0,s=s&~c,i=i&~(M()|0),(n|0)!=(e|0);)n=n+1|0;c=A+(r<<3)|0,t[c>>2]=s,t[c+4>>2]=i,r=r+1|0}o=o+1|0}while((o|0)!=122);return r=0,r|0}function Il(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0;if(J=S,S=S+16|0,W=J,iA=wA(e|0,A|0,52)|0,M()|0,iA=iA&15,r>>>0>15)return iA=4,S=J,iA|0;if((iA|0)<(r|0))return iA=12,S=J,iA|0;if((iA|0)!=(r|0))if(i=CA(r|0,0,52)|0,i=i|e,l=M()|0|A&-15728641,(iA|0)>(r|0)){c=r;do G=CA(7,0,(14-c|0)*3|0)|0,c=c+1|0,i=G|i,l=M()|0|l;while((c|0)<(iA|0));G=i}else G=i;else G=e,l=A;N=wA(G|0,l|0,45)|0,M()|0;A:do if(_e(N&127)|0){if(c=wA(G|0,l|0,52)|0,M()|0,c=c&15,c|0)for(i=1;;){if(N=CA(7,0,(15-i|0)*3|0)|0,!((N&G|0)==0&((M()|0)&l|0)==0)){f=33;break A}if(i>>>0 >>0)i=i+1|0;else break}if(N=n,t[N>>2]=0,t[N+4>>2]=0,(iA|0)>(r|0)){for(N=A&-15728641,L=iA;;){if(I=L,L=L+-1|0,L>>>0>15|(iA|0)<(L|0)){f=19;break}if((iA|0)!=(L|0))if(i=CA(L|0,0,52)|0,i=i|e,c=M()|0|N,(iA|0)<(I|0))D=i;else{f=L;do D=CA(7,0,(14-f|0)*3|0)|0,f=f+1|0,i=D|i,c=M()|0|c;while((f|0)<(iA|0));D=i}else D=e,c=A;if(g=wA(D|0,c|0,45)|0,M()|0,!(_e(g&127)|0))i=0;else{g=wA(D|0,c|0,52)|0,M()|0,g=g&15;e:do if(!g)i=0;else for(f=1;;){if(i=wA(D|0,c|0,(15-f|0)*3|0)|0,M()|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(c=wA(e|0,A|0,(15-I|0)*3|0)|0,M()|0,c=c&7,(c|0)==7){s=5,f=42;break}if(i=(i|0)!=0,(c|0)==1&i){s=5,f=42;break}if(D=c+(((c|0)!=0&i)<<31>>31)|0,D|0&&(f=iA-I|0,f=qr(7,0,f,((f|0)<0)<<31>>31)|0,g=M()|0,i?(i=mt(f|0,g|0,5,0)|0,i=$A(i|0,M()|0,-5,-1)|0,i=Xr(i|0,M()|0,6,0)|0,i=$A(i|0,M()|0,1,0)|0,c=M()|0):(i=f,c=g),I=D+-1|0,I=mt(f|0,g|0,I|0,((I|0)<0)<<31>>31|0)|0,I=$A(i|0,c|0,I|0,M()|0)|0,D=M()|0,g=n,g=$A(I|0,D|0,t[g>>2]|0,t[g+4>>2]|0)|0,D=M()|0,I=n,t[I>>2]=g,t[I+4>>2]=D),(L|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 S=J,s|0}else s=0,o=0}else f=33;while(!1);A:do if((f|0)==33)if(N=n,t[N>>2]=0,t[N+4>>2]=0,(iA|0)>(r|0)){for(i=iA;;){if(s=wA(e|0,A|0,(15-i|0)*3|0)|0,M()|0,s=s&7,(s|0)==7){s=5;break}if(o=iA-i|0,o=qr(7,0,o,((o|0)<0)<<31>>31)|0,s=mt(o|0,M()|0,s|0,0)|0,o=M()|0,N=n,o=$A(t[N>>2]|0,t[N+4>>2]|0,s|0,o|0)|0,s=M()|0,N=n,t[N>>2]=o,t[N+4>>2]=s,i=i+-1|0,(i|0)<=(r|0))break A}return S=J,s|0}else s=0,o=0;while(!1);return kr(G,l,iA,W)|0&&OA(27795,27122,1327,27173),iA=W,W=t[iA+4>>2]|0,((s|0)>-1|(s|0)==-1&o>>>0>4294967295)&((W|0)>(s|0)|((W|0)==(s|0)?(t[iA>>2]|0)>>>0>o>>>0:0))?(iA=0,S=J,iA|0):(OA(27795,27122,1407,27158),0)}function Ll(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0;if(D=S,S=S+16|0,o=D,s>>>0>15)return i=4,S=D,i|0;if(l=wA(r|0,n|0,52)|0,M()|0,l=l&15,(l|0)>(s|0))return i=12,S=D,i|0;if(kr(r,n,s,o)|0&&OA(27795,27122,1327,27173),g=o,f=t[g+4>>2]|0,!(((A|0)>-1|(A|0)==-1&e>>>0>4294967295)&((f|0)>(A|0)|((f|0)==(A|0)?(t[g>>2]|0)>>>0>e>>>0:0))))return i=2,S=D,i|0;g=s-l|0,s=CA(s|0,0,52)|0,c=M()|0|n&-15728641,f=i,t[f>>2]=s|r,t[f+4>>2]=c,f=wA(r|0,n|0,45)|0,M()|0;A:do if(_e(f&127)|0){if(l|0)for(o=1;;){if(f=CA(7,0,(15-o|0)*3|0)|0,!((f&r|0)==0&((M()|0)&n|0)==0))break A;if(o>>>0 >>0)o=o+1|0;else break}if((g|0)<1)return i=0,S=D,i|0;for(f=l^15,n=-1,c=1,o=1;;){l=g-c|0,l=qr(7,0,l,((l|0)<0)<<31>>31)|0,r=M()|0;do if(o)if(o=mt(l|0,r|0,5,0)|0,o=$A(o|0,M()|0,-5,-1)|0,o=Xr(o|0,M()|0,6,0)|0,s=M()|0,(A|0)>(s|0)|(A|0)==(s|0)&e>>>0>o>>>0){A=$A(e|0,A|0,-1,-1)|0,A=dt(A|0,M()|0,o|0,s|0)|0,o=M()|0,I=i,N=t[I>>2]|0,I=t[I+4>>2]|0,G=(f+n|0)*3|0,L=CA(7,0,G|0)|0,I=I&~(M()|0),n=Xr(A|0,o|0,l|0,r|0)|0,e=M()|0,s=$A(n|0,e|0,2,0)|0,G=CA(s|0,M()|0,G|0)|0,I=M()|0|I,s=i,t[s>>2]=G|N&~L,t[s+4>>2]=I,e=mt(n|0,e|0,l|0,r|0)|0,e=dt(A|0,o|0,e|0,M()|0)|0,o=0,A=M()|0;break}else{G=i,L=t[G>>2]|0,G=t[G+4>>2]|0,N=CA(7,0,(f+n|0)*3|0)|0,G=G&~(M()|0),o=i,t[o>>2]=L&~N,t[o+4>>2]=G,o=1;break}else L=i,s=t[L>>2]|0,L=t[L+4>>2]|0,n=(f+n|0)*3|0,I=CA(7,0,n|0)|0,L=L&~(M()|0),G=Xr(e|0,A|0,l|0,r|0)|0,o=M()|0,n=CA(G|0,o|0,n|0)|0,L=M()|0|L,N=i,t[N>>2]=n|s&~I,t[N+4>>2]=L,o=mt(G|0,o|0,l|0,r|0)|0,e=dt(e|0,A|0,o|0,M()|0)|0,o=0,A=M()|0;while(!1);if((g|0)>(c|0))n=~c,c=c+1|0;else{A=0;break}}return S=D,A|0}while(!1);if((g|0)<1)return G=0,S=D,G|0;for(s=l^15,o=1;;)if(N=g-o|0,N=qr(7,0,N,((N|0)<0)<<31>>31)|0,G=M()|0,c=i,r=t[c>>2]|0,c=t[c+4>>2]|0,l=(s-o|0)*3|0,n=CA(7,0,l|0)|0,c=c&~(M()|0),I=Xr(e|0,A|0,N|0,G|0)|0,L=M()|0,l=CA(I|0,L|0,l|0)|0,c=M()|0|c,f=i,t[f>>2]=l|r&~n,t[f+4>>2]=c,G=mt(I|0,L|0,N|0,G|0)|0,e=dt(e|0,A|0,G|0,M()|0)|0,A=M()|0,(g|0)<=(o|0)){A=0;break}else o=o+1|0;return S=D,A|0}function ls(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,M()|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=Js(A,r,s+1|0,n)|0,o=(M()|0)&-15728641,r=CA(n|0,0,52)|0,r=A|r,o=o|(M()|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 ei(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,M()|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=Js(e,A,s+1|0,r)|0,i=(M()|0)&-15728641,s=CA(r|0,0,52)|0,s=e|s,i=i|(M()|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 as(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,c=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,M()|0,n=n&15,l=CA(1,0,(n^15)*3|0)|0,A=$A(l|0,M()|0,A|0,r|0)|0,r=M()|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(c=e+12|0,i=n;;){if((i|0)==(o|0)){n=5;break}if(f=(i|0)==(t[c>>2]|0),s=(15-i|0)*3|0,n=wA(A|0,r|0,s|0)|0,M()|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=$A(A|0,r|0,f|0,M()|0)|0,r=M()|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[c>>2]=-1;return}else if((n|0)==7){o=CA(1,0,s|0)|0,o=$A(A|0,r|0,o|0,M()|0)|0,l=M()|0,f=e,t[f>>2]=o,t[f+4>>2]=l,t[c>>2]=i+-1;return}else if((n|0)==10)return}}function s0(e){e=+e;var A=0;return A=e<0?e+6.283185307179586:e,+(e>=6.283185307179586?A+-6.283185307179586:A)}function Ln(e,A){return e=e|0,A=A|0,+ee(+(+C[e>>3]-+C[A>>3]))<17453292519943298e-27?(A=+ee(+(+C[e+8>>3]-+C[A+8>>3]))<17453292519943298e-27,A|0):(A=0,A|0)}function Zt(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 Nl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+C[A>>3],n=+C[e>>3],i=+se(+((s-n)*.5)),r=+se(+((+C[A+8>>3]-+C[e+8>>3])*.5)),r=i*i+r*(+Be(+s)*+Be(+n)*r),+(+at(+ +Ce(+r),+ +Ce(+(1-r)))*2)}function i0(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+C[A>>3],n=+C[e>>3],i=+se(+((s-n)*.5)),r=+se(+((+C[A+8>>3]-+C[e+8>>3])*.5)),r=i*i+r*(+Be(+s)*+Be(+n)*r),+(+at(+ +Ce(+r),+ +Ce(+(1-r)))*2*6371.007180918475)}function Fl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=+C[A>>3],n=+C[e>>3],i=+se(+((s-n)*.5)),r=+se(+((+C[A+8>>3]-+C[e+8>>3])*.5)),r=i*i+r*(+Be(+s)*+Be(+n)*r),+(+at(+ +Ce(+r),+ +Ce(+(1-r)))*2*6371.007180918475*1e3)}function Pl(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0;return i=+C[A>>3],n=+Be(+i),s=+C[A+8>>3]-+C[e+8>>3],o=n*+se(+s),r=+C[e>>3],+ +at(+o,+(+se(+i)*+Be(+r)-+Be(+s)*(n*+se(+r))))}function Ql(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=+C[e>>3]+r,C[n>>3]=A,s=n;else{if(s=+ee(+(i+-3.141592653589793))<1e-16,A=+C[e>>3],s){A=A-r,C[n>>3]=A,s=n;break}if(o=+Be(+r),r=+se(+r),A=o*+se(+A)+ +Be(+i)*(r*+Be(+A)),A=A>1?1:A,A=+xt(+(A<-1?-1:A)),C[n>>3]=A,+ee(+(A+-1.5707963267948966))<1e-16){C[n>>3]=1.5707963267948966,C[n+8>>3]=0;return}if(+ee(+(A+1.5707963267948966))<1e-16){C[n>>3]=-1.5707963267948966,C[n+8>>3]=0;return}if(l=1/+Be(+A),i=r*+se(+i)*l,r=+C[e>>3],A=l*((o-+se(+A)*+se(+r))/+Be(+r)),o=i>1?1:i,A=A>1?1:A,A=+C[e+8>>3]+ +at(+(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);C[n+8>>3]=A;return}while(!1);if(+ee(+(A+-1.5707963267948966))<1e-16){C[s>>3]=1.5707963267948966,C[n+8>>3]=0;return}if(+ee(+(A+1.5707963267948966))<1e-16){C[s>>3]=-1.5707963267948966,C[n+8>>3]=0;return}if(A=+C[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);C[n+8>>3]=A}function ti(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(C[A>>3]=+C[20656+(e<<3)>>3],A=0,A|0)}function Ol(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(C[A>>3]=+C[20784+(e<<3)>>3],A=0,A|0)}function zl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(C[A>>3]=+C[20912+(e<<3)>>3],A=0,A|0)}function Hl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(C[A>>3]=+C[21040+(e<<3)>>3],A=0,A|0)}function S0(e,A){e=e|0,A=A|0;var r=0;return e>>>0>15?(A=4,A|0):(r=qr(7,0,e,((e|0)<0)<<31>>31)|0,r=mt(r|0,M()|0,120,0)|0,e=M()|0,t[A>>2]=r|2,t[A+4>>2]=e,A=0,A|0)}function ri(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0;return I=+C[A>>3],g=+C[e>>3],c=+se(+((I-g)*.5)),i=+C[A+8>>3],f=+C[e+8>>3],o=+se(+((i-f)*.5)),l=+Be(+g),D=+Be(+I),o=c*c+o*(D*l*o),o=+at(+ +Ce(+o),+ +Ce(+(1-o)))*2,c=+C[r>>3],I=+se(+((c-I)*.5)),n=+C[r+8>>3],i=+se(+((n-i)*.5)),s=+Be(+c),i=I*I+i*(D*s*i),i=+at(+ +Ce(+i),+ +Ce(+(1-i)))*2,c=+se(+((g-c)*.5)),n=+se(+((f-n)*.5)),n=c*c+n*(l*s*n),n=+at(+ +Ce(+n),+ +Ce(+(1-n)))*2,s=(o+i+n)*.5,+(+Vt(+ +Ce(+(+et(+(s*.5))*+et(+((s-o)*.5))*+et(+((s-i)*.5))*+et(+((s-n)*.5)))))*4)}function us(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=S,S=S+192|0,i=l+168|0,o=l,s=pn(e,A,i)|0,s|0)return r=s,S=l,r|0;if(In(e,A,o)|0&&OA(27795,27190,415,27199),A=t[o>>2]|0,(A|0)>0){if(n=+ri(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+ +ri(o+8+(s<<4)|0,o+8+(((e|0)%(A|0)|0)<<4)|0,i);while((e|0)<(A|0))}}else n=0;return C[r>>3]=n,r=0,S=l,r|0}function Gl(e,A,r){return e=e|0,A=A|0,r=r|0,e=us(e,A,r)|0,e|0||(C[r>>3]=+C[r>>3]*6371.007180918475*6371.007180918475),e|0}function Ul(e,A,r){return e=e|0,A=A|0,r=r|0,e=us(e,A,r)|0,e|0||(C[r>>3]=+C[r>>3]*6371.007180918475*6371.007180918475*1e3*1e3),e|0}function Vl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;if(l=S,S=S+176|0,o=l,e=dn(e,A,o)|0,e|0)return o=e,S=l,o|0;if(C[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,S=l,o|0;A=e+-1|0,e=0,n=+C[o+8>>3],s=+C[o+16>>3],i=0;do e=e+1|0,f=n,n=+C[o+8+(e<<4)>>3],g=+se(+((n-f)*.5)),c=s,s=+C[o+8+(e<<4)+8>>3],c=+se(+((s-c)*.5)),c=g*g+c*(+Be(+n)*+Be(+f)*c),i=i+ +at(+ +Ce(+c),+ +Ce(+(1-c)))*2;while((e|0)<(A|0));return C[r>>3]=i,o=0,S=l,o|0}function Wl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;if(l=S,S=S+176|0,o=l,e=dn(e,A,o)|0,e|0)return o=e,i=+C[r>>3],i=i*6371.007180918475,C[r>>3]=i,S=l,o|0;if(C[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,i=0,i=i*6371.007180918475,C[r>>3]=i,S=l,o|0;A=e+-1|0,e=0,n=+C[o+8>>3],s=+C[o+16>>3],i=0;do e=e+1|0,f=n,n=+C[o+8+(e<<4)>>3],g=+se(+((n-f)*.5)),c=s,s=+C[o+8+(e<<4)+8>>3],c=+se(+((s-c)*.5)),c=g*g+c*(+Be(+f)*+Be(+n)*c),i=i+ +at(+ +Ce(+c),+ +Ce(+(1-c)))*2;while((e|0)!=(A|0));return C[r>>3]=i,o=0,g=i,g=g*6371.007180918475,C[r>>3]=g,S=l,o|0}function Yl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;if(l=S,S=S+176|0,o=l,e=dn(e,A,o)|0,e|0)return o=e,i=+C[r>>3],i=i*6371.007180918475,i=i*1e3,C[r>>3]=i,S=l,o|0;if(C[r>>3]=0,e=t[o>>2]|0,(e|0)<=1)return o=0,i=0,i=i*6371.007180918475,i=i*1e3,C[r>>3]=i,S=l,o|0;A=e+-1|0,e=0,n=+C[o+8>>3],s=+C[o+16>>3],i=0;do e=e+1|0,f=n,n=+C[o+8+(e<<4)>>3],g=+se(+((n-f)*.5)),c=s,s=+C[o+8+(e<<4)+8>>3],c=+se(+((s-c)*.5)),c=g*g+c*(+Be(+f)*+Be(+n)*c),i=i+ +at(+ +Ce(+c),+ +Ce(+(1-c)))*2;while((e|0)!=(A|0));return C[r>>3]=i,o=0,g=i,g=g*6371.007180918475,g=g*1e3,C[r>>3]=g,S=l,o|0}function $l(e){e=e|0;var A=0,r=0,n=0;return A=Ht(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 Kl(e,A){e=e|0,A=A|0;var r=0,n=0;return n=Cr(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 ni(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,ZA(s);while((r|0)!=0);s=A,A=t[A+8>>2]|0,ZA(s)}while((A|0)!=0);if(A=e,e=t[e+8>>2]|0,n||ZA(A),e)n=0;else break}}function Zl(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0,ce=0,he=0,Se=0,ie=0,GA=0,SA=0,xe=0,We=0,de=0;if(s=e+8|0,t[s>>2]|0)return de=1,de|0;if(n=t[e>>2]|0,!n)return de=0,de|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 de=0,de|0;xe=Cr(r<<2)|0,xe||OA(27396,27235,317,27415),SA=Cr(r<<5)|0,SA||OA(27437,27235,321,27415),t[e>>2]=0,HA=e+4|0,t[HA>>2]=0,t[s>>2]=0,r=0,GA=0,MA=0,D=0;A:for(;;){if(g=t[n>>2]|0,g){i=0,o=g;do{if(c=+C[o+8>>3],A=o,o=t[o+16>>2]|0,f=(o|0)==0,s=f?g:o,l=+C[s+8>>3],+ee(+(c-l))>3.141592653589793){de=14;break}i=i+(l-c)*(+C[A>>3]+ +C[s>>3])}while(!f);if((de|0)==14){de=0,i=0,A=g;do V=+C[A+8>>3],ie=A+16|0,Se=t[ie>>2]|0,Se=(Se|0)==0?g:Se,Z=+C[Se+8>>3],i=i+(+C[A>>3]+ +C[Se>>3])*((Z<0?Z+6.283185307179586:Z)-(V<0?V+6.283185307179586:V)),A=t[((A|0)==0?n:ie)>>2]|0;while((A|0)!=0)}i>0?(t[xe+(GA<<2)>>2]=n,GA=GA+1|0,s=MA,A=D):de=19}else de=19;if((de|0)==19){de=0;do if(r){if(A=r+8|0,t[A>>2]|0){de=21;break A}if(r=Ht(1,12)|0,!r){de=23;break A}t[A>>2]=r,s=r+4|0,o=r,A=D}else if(D){s=HA,o=D+8|0,A=n,r=e;break}else if(t[e>>2]|0){de=27;break A}else{s=HA,o=e,A=n,r=e;break}while(!1);if(t[o>>2]=n,t[s>>2]=n,o=SA+(MA<<5)|0,f=t[n>>2]|0,f){for(g=SA+(MA<<5)+8|0,C[g>>3]=17976931348623157e292,D=SA+(MA<<5)+24|0,C[D>>3]=17976931348623157e292,C[o>>3]=-17976931348623157e292,I=SA+(MA<<5)+16|0,C[I>>3]=-17976931348623157e292,iA=17976931348623157e292,J=-17976931348623157e292,s=0,L=f,c=17976931348623157e292,G=17976931348623157e292,W=-17976931348623157e292,l=-17976931348623157e292;i=+C[L>>3],V=+C[L+8>>3],L=t[L+16>>2]|0,N=(L|0)==0,Z=+C[(N?f:L)+8>>3],i >3]=i,c=i),V >3]=V,G=V),i>W?C[o>>3]=i:i=W,V>l&&(C[I>>3]=V,l=V),iA=V>0&V J?V:J,s=s|+ee(+(V-Z))>3.141592653589793,!N;)W=i;s&&(C[I>>3]=J,C[D>>3]=iA)}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=MA+1|0}if(ie=n+8|0,n=t[ie>>2]|0,t[ie>>2]=0,n)MA=s,D=A;else{de=45;break}}if((de|0)==21)OA(27213,27235,35,27247);else if((de|0)==23)OA(27267,27235,37,27247);else if((de|0)==27)OA(27310,27235,61,27333);else if((de|0)==45){A:do if((GA|0)>0){for(ie=(s|0)==0,he=s<<2,Se=(e|0)==0,ce=0,A=0;;){if(QA=t[xe+(ce<<2)>>2]|0,ie)de=73;else{if(MA=Cr(he)|0,!MA){de=50;break}if(HA=Cr(he)|0,!HA){de=52;break}e:do if(Se)r=0;else{for(s=0,r=0,o=e;n=SA+(s<<5)|0,si(t[o>>2]|0,n,t[QA>>2]|0)|0?(t[MA+(r<<2)>>2]=o,t[HA+(r<<2)>>2]=n,N=r+1|0):N=r,o=t[o+8>>2]|0,o;)s=s+1|0,r=N;if((N|0)>0)if(n=t[MA>>2]|0,(N|0)==1)r=n;else for(I=0,L=-1,r=n,D=n;;){for(f=t[D>>2]|0,n=0,o=0;s=t[t[MA+(o<<2)>>2]>>2]|0,(s|0)==(f|0)?g=n:g=n+((si(s,t[HA+(o<<2)>>2]|0,t[f>>2]|0)|0)&1)|0,o=o+1|0,(o|0)!=(N|0);)n=g;if(s=(g|0)>(L|0),r=s?D:r,n=I+1|0,(n|0)==(N|0))break e;I=n,L=s?g:L,D=t[MA+(n<<2)>>2]|0}else r=0}while(!1);if(ZA(MA),ZA(HA),r){if(s=r+4|0,n=t[s>>2]|0,n)r=n+8|0;else if(t[r>>2]|0){de=70;break}t[r>>2]=QA,t[s>>2]=QA}else de=73}if((de|0)==73){if(de=0,A=t[QA>>2]|0,A|0)do HA=A,A=t[A+16>>2]|0,ZA(HA);while((A|0)!=0);ZA(QA),A=1}if(ce=ce+1|0,(ce|0)>=(GA|0)){We=A;break A}}(de|0)==50?OA(27452,27235,249,27471):(de|0)==52?OA(27490,27235,252,27471):(de|0)==70&&OA(27310,27235,61,27333)}else We=0;while(!1);return ZA(xe),ZA(SA),de=We,de|0}return 0}function si(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;if(!(vr(A,r)|0)||(A=Ot(A)|0,n=+C[r>>3],s=+C[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=+C[r>>3],s=+C[r+8>>3],r=r+16|0,g=t[r>>2]|0,g=(g|0)==0?e:g,i=+C[g>>3],l=+C[g+8>>3],o>i?(c=o,o=l):(c=i,i=o,o=s,s=l),n=n==i|n==c?n+2220446049250313e-31:n,!!(nc);)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,c=l+(o-l)*((n-i)/(c-i)),(c<0?c+6.283185307179586:c)>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=+C[r>>3],s=+C[r+8>>3],r=r+16|0,g=t[r>>2]|0,g=(g|0)==0?e:g,i=+C[g>>3],l=+C[g+8>>3],o>i?(c=o,o=l):(c=i,i=o,o=s,s=l),n=n==i|n==c?n+2220446049250313e-31:n,!!(nc);)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)/(c-i))>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}return 0}function Pr(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0;if(J=S,S=S+32|0,iA=J+16|0,W=J,i=wA(e|0,A|0,52)|0,M()|0,i=i&15,L=wA(r|0,n|0,52)|0,M()|0,(i|0)!=(L&15|0))return iA=12,S=J,iA|0;if(f=wA(e|0,A|0,45)|0,M()|0,f=f&127,g=wA(r|0,n|0,45)|0,M()|0,g=g&127,f>>>0>121|g>>>0>121)return iA=5,S=J,iA|0;if(L=(f|0)!=(g|0),L){if(l=cn(f,g)|0,(l|0)==7)return iA=1,S=J,iA|0;c=cn(g,f)|0,(c|0)==7?OA(27514,27538,161,27548):(N=l,o=c)}else N=0,o=0;D=_e(f)|0,I=_e(g)|0,t[iA>>2]=0,t[iA+4>>2]=0,t[iA+8>>2]=0,t[iA+12>>2]=0;do if(N){if(g=t[4272+(f*28|0)+(N<<2)>>2]|0,l=(g|0)>0,I)if(l){f=0,c=r,l=n;do c=_l(c,l)|0,l=M()|0,o=Kt(o)|0,(o|0)==1&&(o=Kt(1)|0),f=f+1|0;while((f|0)!=(g|0));g=o,f=c,c=l}else g=o,f=r,c=n;else if(l){f=0,c=r,l=n;do c=ns(c,l)|0,l=M()|0,o=Kt(o)|0,f=f+1|0;while((f|0)!=(g|0));g=o,f=c,c=l}else g=o,f=r,c=n;if(is(f,c,iA)|0,L||OA(27563,27538,191,27548),l=(D|0)!=0,o=(I|0)!=0,l&o&&OA(27590,27538,192,27548),l){if(o=zt(e,A)|0,(o|0)==7){i=5;break}if(xA[22e3+(o*7|0)+N>>0]|0){i=1;break}c=t[21168+(o*28|0)+(N<<2)>>2]|0,f=c}else if(o){if(o=zt(f,c)|0,(o|0)==7){i=5;break}if(xA[22e3+(o*7|0)+g>>0]|0){i=1;break}f=0,c=t[21168+(g*28|0)+(o<<2)>>2]|0}else f=0,c=0;if((f|c|0)<0)i=5;else{if((c|0)>0){l=iA+4|0,o=0;do Fr(l),o=o+1|0;while((o|0)!=(c|0))}if(t[W>>2]=0,t[W+4>>2]=0,t[W+8>>2]=0,ot(W,N),i|0)for(;ir(i)|0?bt(W):Ze(W),(i|0)>1;)i=i+-1|0;if((f|0)>0){i=0;do Fr(W),i=i+1|0;while((i|0)!=(f|0))}G=iA+4|0,tA(G,W,G),nt(G),G=51}}else if(is(r,n,iA)|0,(D|0)!=0&(I|0)!=0)if((g|0)!=(f|0)&&OA(27621,27538,261,27548),o=zt(e,A)|0,i=zt(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=iA+4|0,i=0;do Fr(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=iA+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),iA=i,S=J,iA|0}function ii(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0;if(G=S,S=S+48|0,f=G+36|0,o=G+24|0,l=G+12|0,c=G,s=wA(e|0,A|0,52)|0,M()|0,s=s&15,I=wA(e|0,A|0,45)|0,M()|0,I=I&127,I>>>0>121)return n=5,S=G,n|0;if(g=_e(I)|0,CA(s|0,0,52)|0,W=M()|0|134225919,i=n,t[i>>2]=-1,t[i+4>>2]=W,!s)return s=zA(r)|0,(s|0)==7||(s=un(I,s)|0,(s|0)==127)?(W=1,S=G,W|0):(L=CA(s|0,0,45)|0,N=M()|0,I=n,N=t[I+4>>2]&-1040385|N,W=n,t[W>>2]=t[I>>2]|L,t[W+4>>2]=N,W=0,S=G,W|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],ir(i)|0){if(s=te(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],bt(l)}else{if(s=Te(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],Ze(l)}if(mA(o,l,c),nt(c),s=n,J=t[s>>2]|0,s=t[s+4>>2]|0,Z=(15-i|0)*3|0,iA=CA(7,0,Z|0)|0,s=s&~(M()|0),Z=CA(zA(c)|0,0,Z|0)|0,s=M()|0|s,W=n,t[W>>2]=Z|J&~iA,t[W+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=zA(f)|0,s=un(I,r)|0,(s|0)==127?c=0:c=_e(s)|0;e:do if(r){if(g){if(s=zt(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=$t(s)|0,r=r+1|0;while((r|0)!=(i|0))}else s=r;if((s|0)==1){s=9;break A}r=un(I,s)|0,(r|0)==127&&OA(27648,27538,411,27678),_e(r)|0?OA(27693,27538,412,27678):(N=r,L=i,D=s)}else N=s,L=0,D=r;if(l=t[4272+(I*28|0)+(D<<2)>>2]|0,(l|0)<=-1&&OA(27724,27538,419,27678),!c){if((L|0)<0){s=5;break A}if(L|0){i=n,s=0,r=t[i>>2]|0,i=t[i+4>>2]|0;do r=mn(r,i)|0,i=M()|0,Z=n,t[Z>>2]=r,t[Z+4>>2]=i,s=s+1|0;while((s|0)<(L|0))}if((l|0)<=0){s=N,r=58;break}for(i=n,s=0,r=t[i>>2]|0,i=t[i+4>>2]|0;;)if(r=mn(r,i)|0,i=M()|0,Z=n,t[Z>>2]=r,t[Z+4>>2]=i,s=s+1|0,(s|0)==(l|0)){s=N,r=58;break e}}if(o=cn(N,I)|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=mn(r,s)|0,s=M()|0,Z=n,t[Z>>2]=r,t[Z+4>>2]=s,i=i+1|0;while((i|0)!=(l|0))}if(s=zt(r,s)|0,(s|0)==7&&OA(27795,27538,440,27678),r=Dt(N)|0,r=t[(r?21792:21584)+(o*28|0)+(s<<2)>>2]|0,(r|0)<0&&OA(27795,27538,454,27678),!r)s=N,r=58;else{o=n,s=0,i=t[o>>2]|0,o=t[o+4>>2]|0;do i=rs(i,o)|0,o=M()|0,Z=n,t[Z>>2]=i,t[Z+4>>2]=o,s=s+1|0;while((s|0)<(r|0));s=N,r=58}}else if((g|0)!=0&(c|0)!=0){if(r=zt(e,A)|0,i=n,i=zt(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=mn(o,l)|0,l=M()|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&&c&&(r=59),(r|0)==59&&(Z=n,(zt(t[Z>>2]|0,t[Z+4>>2]|0)|0)==1)){s=9;break}Z=n,iA=t[Z>>2]|0,Z=t[Z+4>>2]&-1040385,J=CA(s|0,0,45)|0,Z=Z|(M()|0),s=n,t[s>>2]=iA|J,t[s+4>>2]=Z,s=0}else s=1;while(!1);return Z=s,S=G,Z|0}function ql(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=S,S=S+16|0,o=l,s?e=15:(e=Pr(e,A,r,n,o)|0,e||(Xn(o,i),e=0)),S=l,e|0}function Jl(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=S,S=S+16|0,i=o,n?r=15:(r=Tt(r,i)|0,r||(r=ii(e,A,i,s)|0)),S=o,r|0}function Xl(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,c=0;return c=S,S=S+32|0,o=c+12|0,l=c,i=Pr(e,A,e,A,o)|0,i|0?(l=i,S=c,l|0):(e=Pr(e,A,r,n,l)|0,e|0?(l=e,S=c,l|0):(o=Dn(o,l)|0,l=s,t[l>>2]=o,t[l+4>>2]=((o|0)<0)<<31>>31,l=0,S=c,l|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,c=0;return c=S,S=S+32|0,o=c+12|0,l=c,i=Pr(e,A,e,A,o)|0,!i&&(i=Pr(e,A,r,n,l)|0,!i)?(n=Dn(o,l)|0,n=$A(n|0,((n|0)<0)<<31>>31|0,1,0)|0,o=M()|0,l=s,t[l>>2]=n,t[l+4>>2]=o,l=0,S=c,l|0):(l=i,S=c,l|0)}function ea(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0,ce=0;if(QA=S,S=S+48|0,MA=QA+24|0,o=QA+12|0,HA=QA,i=Pr(e,A,e,A,MA)|0,!i&&(i=Pr(e,A,r,n,o)|0,!i)){Z=Dn(MA,o)|0,V=((Z|0)<0)<<31>>31,t[MA>>2]=0,t[MA+4>>2]=0,t[MA+8>>2]=0,t[o>>2]=0,t[o+4>>2]=0,t[o+8>>2]=0,Pr(e,A,e,A,MA)|0&&OA(27795,27538,692,27747),Pr(e,A,r,n,o)|0&&OA(27795,27538,697,27747),A0(MA),A0(o),g=(Z|0)==0?0:1/+(Z|0),r=t[MA>>2]|0,G=g*+((t[o>>2]|0)-r|0),W=MA+4|0,n=t[W>>2]|0,iA=g*+((t[o+4>>2]|0)-n|0),J=MA+8|0,i=t[J>>2]|0,g=g*+((t[o+8>>2]|0)-i|0),t[HA>>2]=r,D=HA+4|0,t[D>>2]=n,I=HA+8|0,t[I>>2]=i;A:do if((Z|0)<0)i=0;else for(L=0,N=0;;){c=+(N>>>0)+4294967296*+(L|0),ce=G*c+ +(r|0),l=iA*c+ +(n|0),c=g*c+ +(i|0),r=~~+D0(+ce),o=~~+D0(+l),i=~~+D0(+c),ce=+ee(+(+(r|0)-ce)),l=+ee(+(+(o|0)-l)),c=+ee(+(+(i|0)-c));do if(ce>l&ce>c)r=0-(o+i)|0,n=o;else if(f=0-r|0,l>c){n=f-i|0;break}else{n=o,i=f-o|0;break}while(!1);if(t[HA>>2]=r,t[D>>2]=n,t[I>>2]=i,e0(HA),i=ii(e,A,HA,s+(N<<3)|0)|0,i|0)break A;if(!((L|0)<(V|0)|(L|0)==(V|0)&N>>>0 >>0)){i=0;break A}r=$A(N|0,L|0,1,0)|0,n=M()|0,L=n,N=r,r=t[MA>>2]|0,n=t[W>>2]|0,i=t[J>>2]|0}while(!1);return HA=i,S=QA,HA|0}return HA=i,S=QA,HA|0}function qr(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,WA(s|0),i|0;i=e,s=A,e=1,A=0;do o=(r&1|0)==0&!0,e=mt((o?1:i)|0,(o?0:s)|0,e|0,A|0)|0,A=M()|0,r=xi(r|0,n|0,1)|0,n=M()|0,i=mt(i|0,s|0,i|0,s|0)|0,s=M()|0;while(!((r|0)==0&(n|0)==0));return WA(A|0),e|0}function cs(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,c=0,f=0,g=0;l=S,S=S+16|0,i=l,o=wA(e|0,A|0,52)|0,M()|0,o=o&15;do if(o){if(s=pn(e,A,i)|0,!s){f=+C[i>>3],c=1/+Be(+f),g=+C[25968+(o<<3)>>3],C[r>>3]=f+g,C[r+8>>3]=f-g,f=+C[i+8>>3],c=g*c,C[r+16>>3]=c+f,C[r+24>>3]=f-c;break}return o=s,S=l,o|0}else{if(s=wA(e|0,A|0,45)|0,M()|0,s=s&127,s>>>0>121)return o=5,S=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 pr(r,n?1.4:1.1),n=26096+(o<<3)|0,(t[n>>2]|0)==(e|0)&&(t[n+4>>2]|0)==(A|0)&&(C[r>>3]=1.5707963267948966),o=26224+(o<<3)|0,(t[o>>2]|0)==(e|0)&&(t[o+4>>2]|0)==(A|0)&&(C[r+8>>3]=-1.5707963267948966),+C[r>>3]!=1.5707963267948966&&+C[r+8>>3]!=-1.5707963267948966?(o=0,S=l,o|0):(C[r+16>>3]=3.141592653589793,C[r+24>>3]=-3.141592653589793,o=0,S=l,o|0)}function ta(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,c=0,f=0,g=0;f=S,S=S+48|0,o=f+32|0,i=f+40|0,l=f,jt(o,0,0,0),c=t[o>>2]|0,o=t[o+4>>2]|0;do if(r>>>0<=15){if(s=l0(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,c=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,xA[n+12>>0]=0,xA[c>>0]=xA[i>>0]|0,xA[c+1>>0]=xA[i+1>>0]|0,xA[c+2>>0]=xA[i+2>>0]|0;break}if(s=Ht((t[A+8>>2]|0)+1|0,32)|0,s){fs(A,s),g=l,t[g>>2]=c,t[g+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,c=l+29|0,xA[c>>0]=xA[i>>0]|0,xA[c+1>>0]=xA[i+1>>0]|0,xA[c+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,c=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,xA[n+12>>0]=0,xA[c>>0]=xA[i>>0]|0,xA[c+1>>0]=xA[i+1>>0]|0,xA[c+2>>0]=xA[i+2>>0]|0;break}}else c=l,t[c>>2]=0,t[c+4>>2]=0,t[l+8>>2]=4,t[l+12>>2]=-1,c=l+16|0,g=l+29|0,t[c>>2]=0,t[c+4>>2]=0,t[c+8>>2]=0,xA[c+12>>0]=0,xA[g>>0]=xA[i>>0]|0,xA[g+1>>0]=xA[i+1>>0]|0,xA[g+2>>0]=xA[i+2>>0]|0;while(!1);E0(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],S=f}function E0(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0;if(V=S,S=S+336|0,L=V+168|0,N=V,n=e,r=t[n>>2]|0,n=t[n+4>>2]|0,(r|0)==0&(n|0)==0){S=V;return}if(A=e+28|0,xA[A>>0]|0?(r=oi(r,n)|0,n=M()|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&&ZA(r),J=e,t[J>>2]=0,t[J+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,S=V;return}J=e+16|0,A=t[J>>2]|0,s=A&15;A:do if((r|0)==0&(n|0)==0)iA=e+24|0;else{G=e+12|0,D=(s|0)==3,g=A&255,c=(s|1|0)==3,I=e+24|0,f=(s+-1|0)>>>0<3,o=(s|2|0)==3,l=N+8|0;e:for(;;){if(i=wA(r|0,n|0,52)|0,M()|0,i=i&15,(i|0)==(t[G>>2]|0)){switch(g&15){case 0:case 2:case 3:{if(s=pn(r,n,L)|0,s|0){W=15;break e}if(hs(t[Z>>2]|0,t[I>>2]|0,L)|0){W=19;break e}break}}if(c&&(s=t[(t[Z>>2]|0)+4>>2]|0,t[L>>2]=t[s>>2],t[L+4>>2]=t[s+4>>2],t[L+8>>2]=t[s+8>>2],t[L+12>>2]=t[s+12>>2],vr(26832,L)|0)){if(ss(t[(t[Z>>2]|0)+4>>2]|0,i,N)|0){W=25;break}if(s=N,(t[s>>2]|0)==(r|0)&&(t[s+4>>2]|0)==(n|0)){W=29;break}}if(f){if(s=In(r,n,L)|0,s|0){W=32;break}if(cs(r,n,N,0)|0){W=36;break}if(o&&ai(t[Z>>2]|0,t[I>>2]|0,L,N)|0){W=42;break}if(c&&ui(t[Z>>2]|0,t[I>>2]|0,L,N)|0){W=42;break}}if(D){if(A=cs(r,n,L,1)|0,s=t[I>>2]|0,A|0){W=45;break}if(Pe(s,L)|0){if(br(N,L),Nr(L,t[I>>2]|0)|0){W=53;break}if(hs(t[Z>>2]|0,t[I>>2]|0,l)|0){W=53;break}if(ui(t[Z>>2]|0,t[I>>2]|0,N,L)|0){W=53;break}}}}do if((i|0)<(t[G>>2]|0)){if(A=cs(r,n,L,1)|0,s=t[I>>2]|0,A|0){W=58;break e}if(!(Pe(s,L)|0)){W=73;break}if(Nr(t[I>>2]|0,L)|0&&(br(N,L),ai(t[Z>>2]|0,t[I>>2]|0,N,L)|0)){W=65;break e}if(r=Xs(r,n,i+1|0,N)|0,r|0){W=67;break e}n=N,r=t[n>>2]|0,n=t[n+4>>2]|0}else W=73;while(!1);if((W|0)==73&&(W=0,r=oi(r,n)|0,n=M()|0),(r|0)==0&(n|0)==0){iA=I;break A}}switch(W|0){case 15:{A=t[I>>2]|0,A|0&&ZA(A),W=e,t[W>>2]=0,t[W+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[J>>2]=0,t[I>>2]=0,t[e+8>>2]=s,W=20;break}case 19:{t[e>>2]=r,t[e+4>>2]=n,W=20;break}case 25:{OA(27795,27761,470,27772);break}case 29:{t[e>>2]=r,t[e+4>>2]=n,S=V;return}case 32:{A=t[I>>2]|0,A|0&&ZA(A),iA=e,t[iA>>2]=0,t[iA+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[J>>2]=0,t[I>>2]=0,t[e+8>>2]=s,S=V;return}case 36:{OA(27795,27761,493,27772);break}case 42:{t[e>>2]=r,t[e+4>>2]=n,S=V;return}case 45:{s|0&&ZA(s),W=e,t[W>>2]=0,t[W+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[J>>2]=0,t[I>>2]=0,t[e+8>>2]=A,W=55;break}case 53:{t[e>>2]=r,t[e+4>>2]=n,W=55;break}case 58:{s|0&&ZA(s),W=e,t[W>>2]=0,t[W+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[J>>2]=0,t[I>>2]=0,t[e+8>>2]=A,W=71;break}case 65:{t[e>>2]=r,t[e+4>>2]=n,W=71;break}case 67:{A=t[I>>2]|0,A|0&&ZA(A),iA=e,t[iA>>2]=0,t[iA+4>>2]=0,t[Z>>2]=0,t[G>>2]=-1,t[J>>2]=0,t[I>>2]=0,t[e+8>>2]=r,S=V;return}}if((W|0)==20){S=V;return}else if((W|0)==55){S=V;return}else if((W|0)==71){S=V;return}}while(!1);A=t[iA>>2]|0,A|0&&ZA(A),W=e,t[W>>2]=0,t[W+4>>2]=0,t[e+8>>2]=0,t[Z>>2]=0,t[e+12>>2]=-1,t[J>>2]=0,t[iA>>2]=0,S=V}function oi(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0;D=S,S=S+16|0,g=D,n=wA(e|0,A|0,52)|0,M()|0,n=n&15,r=wA(e|0,A|0,45)|0,M()|0;do if(n){for(;r=CA(n+4095|0,0,52)|0,s=M()|0|A&-15728641,i=(15-n|0)*3|0,o=CA(7,0,i|0)|0,l=M()|0,r=r|e|o,s=s|l,c=wA(e|0,A|0,i|0)|0,M()|0,c=c&7,n=n+-1|0,!(c>>>0<6);)if(n)A=s,e=r;else{f=4;break}if((f|0)==4){r=wA(r|0,s|0,45)|0,M()|0;break}return g=(c|0)==0&(Oe(r,s)|0)!=0,g=CA((g?2:1)+c|0,0,i|0)|0,f=M()|0|A&~l,g=g|e&~o,WA(f|0),S=D,g|0}while(!1);return r=r&127,r>>>0>120?(f=0,g=0,WA(f|0),S=D,g|0):(jt(g,0,r+1|0,0),f=t[g+4>>2]|0,g=t[g>>2]|0,WA(f|0),S=D,g|0)}function ra(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0;W=S,S=S+160|0,D=W+80|0,l=W+64|0,I=W+112|0,G=W,ta(D,e,A,r),f=D,ls(l,t[f>>2]|0,t[f+4>>2]|0,A),f=l,c=t[f>>2]|0,f=t[f+4>>2]|0,o=t[D+8>>2]|0,L=I+4|0,t[L>>2]=t[D>>2],t[L+4>>2]=t[D+4>>2],t[L+8>>2]=t[D+8>>2],t[L+12>>2]=t[D+12>>2],t[L+16>>2]=t[D+16>>2],t[L+20>>2]=t[D+20>>2],t[L+24>>2]=t[D+24>>2],t[L+28>>2]=t[D+28>>2],L=G,t[L>>2]=c,t[L+4>>2]=f,L=G+8|0,t[L>>2]=o,e=G+12|0,A=I,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(I=G+48|0,t[I>>2]=t[l>>2],t[I+4>>2]=t[l+4>>2],t[I+8>>2]=t[l+8>>2],t[I+12>>2]=t[l+12>>2],(c|0)==0&(f|0)==0)return G=o,S=W,G|0;r=G+16|0,g=G+24|0,D=G+28|0,o=0,l=0,A=c,e=f;do{if(!((o|0)<(s|0)|(o|0)==(s|0)&l>>>0 >>0)){N=4;break}if(f=l,l=$A(l|0,o|0,1,0)|0,o=M()|0,f=i+(f<<3)|0,t[f>>2]=A,t[f+4>>2]=e,as(I),e=I,A=t[e>>2]|0,e=t[e+4>>2]|0,(A|0)==0&(e|0)==0){if(E0(r),A=r,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0){N=10;break}ei(e,A,t[D>>2]|0,I),e=I,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(N|0)==4?(e=G+40|0,A=t[e>>2]|0,A|0&&ZA(A),N=G+16|0,t[N>>2]=0,t[N+4>>2]=0,t[g>>2]=0,t[G+36>>2]=0,t[D>>2]=-1,t[G+32>>2]=0,t[e>>2]=0,ei(0,0,0,I),t[G>>2]=0,t[G+4>>2]=0,t[L>>2]=0,G=14,S=W,G|0):((N|0)==10&&(t[G>>2]=0,t[G+4>>2]=0,t[L>>2]=t[g>>2]),G=t[L>>2]|0,S=W,G|0)}function na(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,c=0,f=0,g=0,D=0,I=0,L=0;if(D=S,S=S+48|0,c=D+32|0,l=D+40|0,f=D,!(t[e>>2]|0))return g=n,t[g>>2]=0,t[g+4>>2]=0,g=0,S=D,g|0;jt(c,0,0,0),o=c,s=t[o>>2]|0,o=t[o+4>>2]|0;do if(A>>>0>15)g=f,t[g>>2]=0,t[g+4>>2]=0,t[f+8>>2]=4,t[f+12>>2]=-1,g=f+16|0,r=f+29|0,t[g>>2]=0,t[g+4>>2]=0,t[g+8>>2]=0,xA[g+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,g=9;else{if(r=l0(r)|0,r|0){c=f,t[c>>2]=0,t[c+4>>2]=0,t[f+8>>2]=r,t[f+12>>2]=-1,c=f+16|0,g=f+29|0,t[c>>2]=0,t[c+4>>2]=0,t[c+8>>2]=0,xA[c+12>>0]=0,xA[g>>0]=xA[l>>0]|0,xA[g+1>>0]=xA[l+1>>0]|0,xA[g+2>>0]=xA[l+2>>0]|0,g=9;break}if(r=Ht((t[e+8>>2]|0)+1|0,32)|0,!r){g=f,t[g>>2]=0,t[g+4>>2]=0,t[f+8>>2]=13,t[f+12>>2]=-1,g=f+16|0,r=f+29|0,t[g>>2]=0,t[g+4>>2]=0,t[g+8>>2]=0,xA[g+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,g=9;break}fs(e,r),L=f,t[L>>2]=s,t[L+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,I=+fn(r),I=I*+Zn(r),i=+ee(+ +C[r>>3]),i=I/+Be(+ +B0(+i,+ +ee(+ +C[r+8>>3])))*6371.007180918475*6371.007180918475,s=f+12|0,r=t[s>>2]|0;A:do if((r|0)>0)do{if(ti(r+-1|0,c)|0,!(i/+C[c>>3]>10))break A;L=t[s>>2]|0,r=L+-1|0,t[s>>2]=r}while((L|0)>1);while(!1);if(E0(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 kr(r,s,A,c)|0,l=c,e=n,l=$A(t[e>>2]|0,t[e+4>>2]|0,t[l>>2]|0,t[l+4>>2]|0)|0,e=M()|0,L=n,t[L>>2]=l,t[L+4>>2]=e,E0(f),L=f,r=t[L>>2]|0,s=t[L+4>>2]|0;while(!((r|0)==0&(s|0)==0));r=t[o>>2]|0}while(!1);return L=r,S=D,L|0}function o0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0;if(!(vr(A,r)|0)||(A=Ot(A)|0,n=+C[r>>3],s=+C[r+8>>3],s=A&s<0?s+6.283185307179586:s,I=t[e>>2]|0,(I|0)<=0))return I=0,I|0;if(D=t[e+4>>2]|0,A){A=0,g=s,r=-1,e=0;A:for(;;){for(f=e;o=+C[D+(f<<4)>>3],s=+C[D+(f<<4)+8>>3],e=(r+2|0)%(I|0)|0,i=+C[D+(e<<4)>>3],l=+C[D+(e<<4)+8>>3],o>i?(c=o,o=l):(c=i,i=o,o=s,s=l),n=n==i|n==c?n+2220446049250313e-31:n,!!(nc);)if(r=f+1|0,(r|0)>=(I|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,g=l==g|o==g?g+-2220446049250313e-31:g,c=l+(o-l)*((n-i)/(c-i)),(c<0?c+6.283185307179586:c)>g&&(A=A^1),e=f+1|0,(e|0)>=(I|0)){r=22;break}else r=f}if((r|0)==22)return A|0}else{A=0,g=s,r=-1,e=0;A:for(;;){for(f=e;o=+C[D+(f<<4)>>3],s=+C[D+(f<<4)+8>>3],e=(r+2|0)%(I|0)|0,i=+C[D+(e<<4)>>3],l=+C[D+(e<<4)+8>>3],o>i?(c=o,o=l):(c=i,i=o,o=s,s=l),n=n==i|n==c?n+2220446049250313e-31:n,!!(nc);)if(r=f+1|0,(r|0)>=(I|0)){r=22;break A}else e=f,f=r,r=e;if(g=o==g|s==g?g+-2220446049250313e-31:g,o+(s-o)*((n-i)/(c-i))>g&&(A=A^1),e=f+1|0,(e|0)>=(I|0)){r=22;break}else r=f}if((r|0)==22)return A|0}return 0}function li(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0;if(N=t[e>>2]|0,!N){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,C[G>>3]=17976931348623157e292,W=A+24|0,C[W>>3]=17976931348623157e292,C[A>>3]=-17976931348623157e292,iA=A+16|0,C[iA>>3]=-17976931348623157e292,!((N|0)<=0)){for(I=t[e+4>>2]|0,f=17976931348623157e292,g=-17976931348623157e292,D=0,e=-1,i=17976931348623157e292,o=17976931348623157e292,c=-17976931348623157e292,n=-17976931348623157e292,L=0;r=+C[I+(L<<4)>>3],l=+C[I+(L<<4)+8>>3],e=e+2|0,s=+C[I+(((e|0)==(N|0)?0:e)<<4)+8>>3],r>3]=r,i=r),l >3]=l,o=l),r>c?C[A>>3]=r:r=c,l>n&&(C[iA>>3]=l,n=l),f=l>0&l g?l:g,D=D|+ee(+(l-s))>3.141592653589793,e=L+1|0,(e|0)!=(N|0);)J=L,c=r,L=e,e=J;D&&(C[iA>>3]=g,C[W>>3]=f)}}function l0(e){return e=e|0,(e>>>0<4?0:15)|0}function fs(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0;if(N=t[e>>2]|0,N){if(G=A+8|0,C[G>>3]=17976931348623157e292,W=A+24|0,C[W>>3]=17976931348623157e292,C[A>>3]=-17976931348623157e292,iA=A+16|0,C[iA>>3]=-17976931348623157e292,(N|0)>0){for(s=t[e+4>>2]|0,I=17976931348623157e292,L=-17976931348623157e292,n=0,r=-1,c=17976931348623157e292,f=17976931348623157e292,D=-17976931348623157e292,o=-17976931348623157e292,J=0;i=+C[s+(J<<4)>>3],g=+C[s+(J<<4)+8>>3],HA=r+2|0,l=+C[s+(((HA|0)==(N|0)?0:HA)<<4)+8>>3],i >3]=i,c=i),g >3]=g,f=g),i>D?C[A>>3]=i:i=D,g>o&&(C[iA>>3]=g,o=g),I=g>0&gL?g:L,n=n|+ee(+(g-l))>3.141592653589793,r=J+1|0,(r|0)!=(N|0);)HA=J,D=i,J=r,r=HA;n&&(C[iA>>3]=L,C[W>>3]=I)}}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(HA=e+8|0,r=t[HA>>2]|0,!((r|0)<=0)){MA=e+12|0,V=0;do if(s=t[MA>>2]|0,n=V,V=V+1|0,W=A+(V<<5)|0,iA=t[s+(n<<3)>>2]|0,iA){if(J=A+(V<<5)+8|0,C[J>>3]=17976931348623157e292,e=A+(V<<5)+24|0,C[e>>3]=17976931348623157e292,C[W>>3]=-17976931348623157e292,Z=A+(V<<5)+16|0,C[Z>>3]=-17976931348623157e292,(iA|0)>0){for(N=t[s+(n<<3)+4>>2]|0,I=17976931348623157e292,L=-17976931348623157e292,s=0,n=-1,G=0,c=17976931348623157e292,f=17976931348623157e292,g=-17976931348623157e292,o=-17976931348623157e292;i=+C[N+(G<<4)>>3],D=+C[N+(G<<4)+8>>3],n=n+2|0,l=+C[N+(((n|0)==(iA|0)?0:n)<<4)+8>>3],i >3]=i,c=i),D >3]=D,f=D),i>g?C[W>>3]=i:i=g,D>o&&(C[Z>>3]=D,o=D),I=D>0&DL?D:L,s=s|+ee(+(D-l))>3.141592653589793,n=G+1|0,(n|0)!=(iA|0);)QA=G,G=n,g=i,n=QA;s&&(C[Z>>3]=L,C[e>>3]=I)}}else t[W>>2]=0,t[W+4>>2]=0,t[W+8>>2]=0,t[W+12>>2]=0,t[W+16>>2]=0,t[W+20>>2]=0,t[W+24>>2]=0,t[W+28>>2]=0,r=t[HA>>2]|0;while((V|0)<(r|0))}}function hs(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(!(o0(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,o0((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 ai(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,c=0,f=0,g=0;if(f=S,S=S+16|0,l=f,o=r+8|0,!(o0(e,A,o)|0))return c=0,S=f,c|0;c=e+8|0;A:do if((t[c>>2]|0)>0){for(i=e+12|0,s=0;;){if(g=s,s=s+1|0,o0((t[i>>2]|0)+(g<<3)|0,A+(s<<5)|0,o)|0){s=0;break}if((s|0)>=(t[c>>2]|0))break A}return S=f,s|0}while(!1);if(M0(e,A,r,n)|0)return g=0,S=f,g|0;t[l>>2]=t[r>>2],t[l+4>>2]=o,s=t[c>>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(o0(l,n,t[s+(o<<3)+4>>2]|0)|0){s=0;break A}if(s=o+1|0,M0((t[e>>2]|0)+(o<<3)|0,A+(s<<5)|0,r,n)|0){s=0;break A}i=t[c>>2]|0}else s=o+1|0;if((s|0)<(i|0))o=s;else{s=1;break}}else s=1;while(!1);return g=s,S=f,g|0}function M0(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0,HA=0,QA=0,ce=0;if(HA=S,S=S+176|0,J=HA+172|0,s=HA+168|0,Z=HA,!(Pe(A,n)|0))return e=0,S=HA,e|0;if(Lr(A,n,J,s),Pn(Z|0,r|0,168)|0,(t[r>>2]|0)>0){A=0;do QA=Z+8+(A<<4)+8|0,iA=+Zt(+C[QA>>3],t[s>>2]|0),C[QA>>3]=iA,A=A+1|0;while((A|0)<(t[r>>2]|0))}G=+C[n>>3],W=+C[n+8>>3],iA=+Zt(+C[n+16>>3],t[s>>2]|0),L=+Zt(+C[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,I=+C[A+(r<<4)>>3],N=+Zt(+C[A+(r<<4)+8>>3],t[J>>2]|0),A=t[n>>2]|0,r=r+1|0,QA=(r|0)%(t[e>>2]|0)|0,i=+C[A+(QA<<4)>>3],o=+Zt(+C[A+(QA<<4)+8>>3],t[J>>2]|0),!(I>=G)|!(i>=G)&&!(I<=W)|!(i<=W)&&!(N<=L)|!(o<=L)&&!(N>=iA)|!(o>=iA)){D=i-I,f=o-N,A=0;do if(ce=A,A=A+1|0,QA=(A|0)==(s|0)?0:A,i=+C[Z+8+(ce<<4)+8>>3],o=+C[Z+8+(QA<<4)+8>>3]-i,l=+C[Z+8+(ce<<4)>>3],c=+C[Z+8+(QA<<4)>>3]-l,g=D*o-f*c,g!=0&&(V=N-i,MA=I-l,c=(V*c-o*MA)/g,!(c<0|c>1))&&(g=(D*V-f*MA)/g,g>=0&g<=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 ce=A,S=HA,ce|0}function ui(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0,o=0;if(M0(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,M0((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 sa(){return 8}function ia(){return 16}function oa(){return 168}function la(){return 8}function aa(){return 16}function ua(){return 12}function ca(){return 8}function fa(e){return e=e|0,+(+((t[e>>2]|0)>>>0)+4294967296*+(t[e+4>>2]|0))}function ha(e){e=e|0;var A=0,r=0;return r=+C[e>>3],A=+C[e+8>>3],+ +Ce(+(r*r+A*A))}function ci(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,c=0,f=0,g=0,D=0,I=0;f=+C[e>>3],c=+C[A>>3]-f,l=+C[e+8>>3],o=+C[A+8>>3]-l,D=+C[r>>3],i=+C[n>>3]-D,I=+C[r+8>>3],g=+C[n+8>>3]-I,i=(i*(l-I)-(f-D)*g)/(c*g-o*i),C[s>>3]=f+c*i,C[s+8>>3]=l+o*i}function fi(e,A){return e=e|0,A=A|0,+ee(+(+C[e>>3]-+C[A>>3]))<11920928955078125e-23?(A=+ee(+(+C[e+8>>3]-+C[A+8>>3]))<11920928955078125e-23,A|0):(A=0,A|0)}function ut(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;return s=+C[e>>3]-+C[A>>3],n=+C[e+8>>3]-+C[A+8>>3],r=+C[e+16>>3]-+C[A+16>>3],+(s*s+n*n+r*r)}function da(e,A){e=e|0,A=A|0;var r=0,n=0,s=0;r=+C[e>>3],n=+Be(+r),r=+se(+r),C[A+16>>3]=r,r=+C[e+8>>3],s=n*+Be(+r),C[A>>3]=s,r=n*+se(+r),C[A+8>>3]=r}function ma(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if(i=S,S=S+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,S=i,s|0;do if(a0(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,S=i,s|0}function a0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0;if(g=S,S=S+32|0,l=g+16|0,c=g,n=jn(e,A,l)|0,n|0)return r=n,S=g,r|0;i=re(e,A)|0,f=zt(e,A)|0,Yr(i,c),n=sr(i,t[l>>2]|0)|0;do if(_e(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[c>>2]|0)&&(c=Dt(i)|0,e=t[l>>2]|0,c|(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,S=g,r|0}function or(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0;if(Z=S,S=S+32|0,J=Z+24|0,W=Z+20|0,N=Z+8|0,L=Z+16|0,I=Z,c=(Oe(e,A)|0)==0,c=c?6:5,g=wA(e|0,A|0,52)|0,M()|0,g=g&15,c>>>0<=r>>>0)return n=2,S=Z,n|0;D=(g|0)==0,!D&&(G=CA(7,0,(g^15)*3|0)|0,(G&e|0)==0&((M()|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)||a0(e,A,J)|0||(i=(t[J>>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,S=Z,n|0;t[W>>2]=0,s=$(e,A,G,W,N)|0;do if(!s){if(l=N,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,!D&&(D=CA(7,0,(g^15)*3|0)|0,(f&D|0)==0&(l&(M()|0)|0)==0))s=r;else{if(l=(r+-1+c|0)%(c|0)|0,s=Oe(e,A)|0,(l|0)<0&&OA(27795,27797,248,27822),c=(s|0)!=0,((c?4:5)|0)<(l|0)&&OA(27795,27797,248,27822),a0(e,A,J)|0&&OA(27795,27797,248,27822),s=(t[J>>2]|0)+l|0,c?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[L>>2]=0,s=$(e,A,l,L,I)|0,s|0)break;f=I,c=t[f>>2]|0,f=t[f+4>>2]|0;do if(f>>>0 >>0|(f|0)==(o|0)&c>>>0>>0){if(Oe(c,f)|0?i=qA(c,f,e,A)|0:i=t[26800+((((t[L>>2]|0)+(t[26768+(l<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,s=Oe(c,f)|0,(i+-1|0)>>>0>5){s=-1,i=c,o=f;break}if(s=(s|0)!=0,(i|0)==1&s){s=-1,i=c,o=f;break}do if(a0(c,f,J)|0)s=-1;else if(s){s=((t[26352+(i<<2)>>2]|0)+5-(t[J>>2]|0)|0)%5|0;break}else{s=((t[26384+(i<<2)>>2]|0)+6-(t[J>>2]|0)|0)%6|0;break}while(!1);i=c,o=f}else s=r;while(!1);l=N,f=t[l>>2]|0,l=t[l+4>>2]|0}if((i|0)==(f|0)&(o|0)==(l|0)){if(c=(Oe(f,l)|0)!=0,c?e=qA(f,l,e,A)|0:e=t[26800+((((t[W>>2]|0)+(t[26768+(G<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,s=Oe(f,l)|0,(e+-1|0)>>>0<=5&&(iA=(s|0)!=0,!((e|0)==1&iA)))do if(a0(f,l,J)|0)s=-1;else if(iA){s=((t[26352+(e<<2)>>2]|0)+5-(t[J>>2]|0)|0)%5|0;break}else{s=((t[26384+(e<<2)>>2]|0)+6-(t[J>>2]|0)|0)%6|0;break}while(!1);else s=-1;s=s+1|0,s=(s|0)==6|c&(s|0)==5?0:s}A=o,e=i;break A}while(!1);return n=s,S=Z,n|0}while(!1);return iA=CA(s|0,0,56)|0,J=M()|0|A&-2130706433|536870912,t[n>>2]=iA|e,t[n+4>>2]=J,n=0,S=Z,n|0}function pa(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=or(e,A,0,r)|0,s=(n|0)==0,i?!s||(n=or(e,A,1,r+8|0)|0,n|0)||(n=or(e,A,2,r+16|0)|0,n|0)||(n=or(e,A,3,r+24|0)|0,n|0)||(n=or(e,A,4,r+32|0)|0,n)?(i=n,i|0):or(e,A,5,r+40|0)|0:!s||(n=or(e,A,1,r+8|0)|0,n|0)||(n=or(e,A,2,r+16|0)|0,n|0)||(n=or(e,A,3,r+24|0)|0,n|0)||(n=or(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 ga(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0,l=0,c=0;return c=S,S=S+192|0,s=c,i=c+168|0,o=wA(e|0,A|0,56)|0,M()|0,o=o&7,l=A&-2130706433|134217728,n=jn(e,l,i)|0,n|0?(l=n,S=c,l|0):(A=wA(e|0,A|0,52)|0,M()|0,A=A&15,Oe(e,l)|0?w(i,A,o,1,s):eA(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,S=c,l|0)}function hi(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;return s=S,S=S+16|0,r=s,!(!0&(A&2013265920|0)==536870912)||(n=A&-2130706433|134217728,!(Ve(e,n)|0))?(n=0,S=s,n|0):(i=wA(e|0,A|0,56)|0,M()|0,i=(or(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,S=s,n|0)}function di(e,A,r){e=e|0,A=A|0,r=r|0;var n=0;(A|0)>0?(n=Ht(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 mi(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+(~~(+ee(+(+Ge(10,+ +(15-(t[i>>2]|0)|0))*(+C[l>>3]+ +C[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]}ZA(l),t[o>>2]=(t[o>>2]|0)+-1}while(!1)}ZA(t[e>>2]|0)}function pi(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 gi(e,A){e=e|0,A=A|0;var r=0,n=0,s=0,i=0;if(r=~~(+ee(+(+Ge(10,+ +(15-(t[e+12>>2]|0)|0))*(+C[A>>3]+ +C[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 ZA(A),i=e+8|0,t[i>>2]=(t[i>>2]|0)+-1,i=0,i|0}function ya(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0,o=0;i=Cr(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=~~(+ee(+(+Ge(10,+ +(15-(t[e+12>>2]|0)|0))*(+C[A>>3]+ +C[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(;!(Ln(n,A)|0&&Ln(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 ZA(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 xa(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0;if(s=~~(+ee(+(+Ge(10,+ +(15-(t[e+12>>2]|0)|0))*(+C[A>>3]+ +C[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(Ln(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(Ln(e,A)|0&&Ln(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 wa(e,A){e=e|0,A=A|0;var r=0;if(r=~~(+ee(+(+Ge(10,+ +(15-(t[e+12>>2]|0)|0))*(+C[A>>3]+ +C[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(Ln(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 va(){return 27920}function Jr(e){return e=+e,~~+vi(+e)|0}function Cr(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,c=0,f=0,g=0,D=0,I=0,L=0,N=0,G=0,W=0,iA=0,J=0,Z=0,V=0,MA=0;MA=S,S=S+16|0,I=MA;do if(e>>>0<245){if(f=e>>>0<11?16:e+11&-8,e=f>>>3,D=t[6981]|0,r=D>>>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]=D&~(1<>2]=e,t[r>>2]=i),V=A<<3,t[n+4>>2]=V|3,V=n+V+4|0,t[V>>2]=t[V>>2]|1,V=s,S=MA,V|0;if(g=t[6983]|0,f>>>0>g>>>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=D&~(1< >2]=A,t[e>>2]=r,e=D),V=n<<3,o=V-f|0,t[i+4>>2]=f|3,s=i+f|0,t[s+4>>2]=o|1,t[i+V>>2]=o,g|0&&(n=t[6986]|0,A=g>>>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,V=l,S=MA,V|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,c=r>>>1&1,c=t[28228+((n|s|o|l|c)+(r>>>c)<<2)>>2]|0,r=c,l=c,c=(t[c+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,c=s?o:c;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)?V: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 c>>>0<16?(V=c+f|0,t[l+4>>2]=V|3,V=l+V+4|0,t[V>>2]=t[V>>2]|1):(t[l+4>>2]=f|3,t[o+4>>2]=c|1,t[o+c>>2]=c,g|0&&(n=t[6986]|0,A=g>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=A|D,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]=c,t[6986]=o),V=l+8|0,S=MA,V|0}else D=f}else D=f}else D=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?c=31:(D=(e+1048320|0)>>>16&8,G=e< >>16&4,G=G< >>16&2,c=14-(l|D|c)+(G< >>15)|0,c=f>>>(c+7|0)&1|c<<1):c=0,r=t[28228+(c<<2)>>2]|0;A:do if(!r)r=0,e=0,G=61;else for(e=0,l=f<<((c|0)==31?0:25-(c>>>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,D=D>>>o,i=D>>>5&8,D=D>>>i,l=D>>>2&4,D=D>>>l,c=D>>>1&2,D=D>>>c,r=D>>>1&1,e=0,r=t[28228+((i|o|l|c|r)+(D>>>r)<<2)>>2]|0}r?G=65:(l=e,o=s)}if((G|0)==65)for(i=r;;)if(D=(t[i+4>>2]&-8)-f|0,r=D>>>0 >>0,s=r?D: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&&(g=l+f|0,g>>>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 V=t[l+8>>2]|0,t[V+12>>2]=A,t[A+8>>2]=V;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)?V: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)V=o+f|0,t[l+4>>2]=V|3,V=l+V+4|0,t[V>>2]=t[V>>2]|1;else{if(t[l+4>>2]=f|3,t[g+4>>2]=o|1,t[g+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]=g,t[A+12>>2]=g,t[g+8>>2]=A,t[g+12>>2]=r;break}if(A=o>>>8,A?o>>>0>16777215?r=31:(Z=(A+1048320|0)>>>16&8,V=A< >>16&4,V=V< >>16&2,r=14-(J|Z|r)+(V< >>15)|0,r=o>>>(r+7|0)&1|r<<1):r=0,A=28228+(r<<2)|0,t[g+28>>2]=r,e=g+16|0,t[e+4>>2]=0,t[e>>2]=0,e=1< >2]=g,t[g+24>>2]=A,t[g+12>>2]=g,t[g+8>>2]=g;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]=g,t[g+24>>2]=A,t[g+12>>2]=g,t[g+8>>2]=g;break A}while(!1);Z=A+8|0,V=t[Z>>2]|0,t[V+12>>2]=g,t[Z>>2]=g,t[g+8>>2]=V,t[g+12>>2]=A,t[g+24>>2]=0}while(!1);return V=l+8|0,S=MA,V|0}else D=f}else D=f;else D=-1;while(!1);if(r=t[6983]|0,r>>>0>=D>>>0)return A=r-D|0,e=t[6986]|0,A>>>0>15?(V=e+D|0,t[6986]=V,t[6983]=A,t[V+4>>2]=A|1,t[e+r>>2]=A,t[e+4>>2]=D|3):(t[6983]=0,t[6986]=0,t[e+4>>2]=r|3,V=e+r+4|0,t[V>>2]=t[V>>2]|1),V=e+8|0,S=MA,V|0;if(o=t[6984]|0,o>>>0>D>>>0)return J=o-D|0,t[6984]=J,V=t[6987]|0,Z=V+D|0,t[6987]=Z,t[Z+4>>2]=J|1,t[V+4>>2]=D|3,V=V+8|0,S=MA,V|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]=I&-16^1431655768,e=4096),l=D+48|0,c=D+47|0,i=e+c|0,s=0-e|0,f=i&s,f>>>0<=D>>>0||(e=t[7091]|0,e|0&&(g=t[7089]|0,I=g+f|0,I>>>0<=g>>>0|I>>>0>e>>>0)))return V=0,S=MA,V|0;A:do if(t[7092]&4)A=0,G=143;else{r=t[6987]|0;e:do if(r){for(n=28372;I=t[n>>2]|0,!(I>>>0<=r>>>0&&(I+(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=en(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=en(0)|0,(r|0)!=-1&&(A=r,L=t[7100]|0,N=L+-1|0,A=((N&A|0)==0?0:(N+A&0-L)-A|0)+f|0,L=t[7089]|0,N=A+L|0,A>>>0>D>>>0&A>>>0<2147483647)){if(I=t[7091]|0,I|0&&N>>>0<=L>>>0|N>>>0>I>>>0){A=0;break}if(e=en(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=c-A+e&0-e,e>>>0>=2147483647){o=A,i=n,G=145;break A}if((en(e|0)|0)==-1){en(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&&(J=en(f|0)|0,N=en(0)|0,W=N-J|0,iA=W>>>0>(D+40|0)>>>0,!((J|0)==-1|iA^1|J>>>0 >>0&((J|0)!=-1&(N|0)!=-1)^1))&&(o=iA?W:A,i=J,G=145),(G|0)==145){A=(t[7089]|0)+o|0,t[7089]=A,A>>>0>(t[7090]|0)>>>0&&(t[7090]=A),c=t[6987]|0;A:do if(c){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>c>>>0&e>>>0<=c>>>0){t[Z>>2]=r+o,V=(t[6984]|0)+o|0,J=c+8|0,J=(J&7|0)==0?0:0-J&7,Z=c+J|0,J=V-J|0,t[6987]=Z,t[6984]=J,t[Z+4>>2]=J|1,t[c+V+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,g=A+4|0,t[g>>2]=(t[g>>2]|0)+o,g=i+8|0,g=i+((g&7|0)==0?0:0-g&7)|0,A=r+8|0,A=r+((A&7|0)==0?0:0-A&7)|0,f=g+D|0,l=A-g-D|0,t[g+4>>2]=D|3;e:do if((c|0)==(A|0))V=(t[6984]|0)+l|0,t[6984]=V,t[6987]=f,t[f+4>>2]=V|1;else{if((t[6986]|0)==(A|0)){V=(t[6983]|0)+l|0,t[6983]=V,t[6986]=f,t[f+4>>2]=V|1,t[f+V>>2]=V;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 V=t[A+8>>2]|0,t[V+12>>2]=e,t[e+8>>2]=V;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(V=i+16|0,t[((t[V>>2]|0)==(A|0)?V: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,V=A< >>16&4,V=V< >>16&2,n=14-(J|Z|n)+(V< >>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,V=t[Z>>2]|0,t[V+12>>2]=f,t[Z>>2]=f,t[f+8>>2]=V,t[f+12>>2]=A,t[f+24>>2]=0}while(!1);return V=g+8|0,S=MA,V|0}for(A=28372;e=t[A>>2]|0,!(e>>>0<=c>>>0&&(V=e+(t[A+4>>2]|0)|0,V>>>0>c>>>0));)A=t[A+8>>2]|0;s=V+-47|0,e=s+8|0,e=s+((e&7|0)==0?0:0-e&7)|0,s=c+16|0,e=e>>>0 >>0?c:e,A=e+8|0,r=o+-40|0,J=i+8|0,J=(J&7|0)==0?0:0-J&7,Z=i+J|0,J=r-J|0,t[6987]=Z,t[6984]=J,t[Z+4>>2]=J|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)!=(c|0)){if(i=e-c|0,t[r>>2]=t[r>>2]&-2,t[c+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]=c,t[A+12>>2]=c,t[c+8>>2]=A,t[c+12>>2]=r;break}if(A=i>>>8,A?i>>>0>16777215?n=31:(Z=(A+1048320|0)>>>16&8,V=A< >>16&4,V=V< >>16&2,n=14-(J|Z|n)+(V< >>15)|0,n=i>>>(n+7|0)&1|n<<1):n=0,r=28228+(n<<2)|0,t[c+28>>2]=n,t[c+20>>2]=0,t[s>>2]=0,A=t[6982]|0,e=1< >2]=c,t[c+24>>2]=r,t[c+12>>2]=c,t[c+8>>2]=c;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]=c,t[c+24>>2]=A,t[c+12>>2]=c,t[c+8>>2]=c;break A}while(!1);Z=A+8|0,V=t[Z>>2]|0,t[V+12>>2]=c,t[Z>>2]=c,t[c+8>>2]=V,t[c+12>>2]=A,t[c+24>>2]=0}}else V=t[6985]|0,(V|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,V=o+-40|0,J=i+8|0,J=(J&7|0)==0?0:0-J&7,Z=i+J|0,J=V-J|0,t[6987]=Z,t[6984]=J,t[Z+4>>2]=J|1,t[i+V+4>>2]=40,t[6988]=t[7103];while(!1);if(A=t[6984]|0,A>>>0>D>>>0)return J=A-D|0,t[6984]=J,V=t[6987]|0,Z=V+D|0,t[6987]=Z,t[Z+4>>2]=J|1,t[V+4>>2]=D|3,V=V+8|0,S=MA,V|0}return V=va()|0,t[V>>2]=12,V=0,S=MA,V|0}function ZA(e){e=e|0;var A=0,r=0,n=0,s=0,i=0,o=0,l=0,c=0;if(e){r=e+-8|0,s=t[6985]|0,e=t[e+-4>>2]|0,A=e&-8,c=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=c+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>=c>>>0)&&(e=c+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)==(c|0)){if(c=(t[6984]|0)+A|0,t[6984]=c,t[6987]=l,t[l+4>>2]=c|1,(l|0)!=(t[6986]|0))return;t[6986]=0,t[6983]=0;return}if((t[6986]|0)==(c|0)){c=(t[6983]|0)+A|0,t[6983]=c,t[6986]=o,t[l+4>>2]=c|1,t[o+c>>2]=c;return}s=(n&-8)+A|0,r=n>>>3;do if(n>>>0<256)if(A=t[c+8>>2]|0,e=t[c+12>>2]|0,(e|0)==(A|0)){t[6981]=t[6981]&~(1< >2]=e,t[e+8>>2]=A;break}else{i=t[c+24>>2]|0,e=t[c+12>>2]|0;do if((e|0)==(c|0)){if(A=c+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[c+8>>2]|0,t[r+12>>2]=e,t[e+8>>2]=r,r=e;while(!1);if(i|0){if(e=t[c+28>>2]|0,A=28228+(e<<2)|0,(t[A>>2]|0)==(c|0)){if(t[A>>2]=r,!r){t[6982]=t[6982]&~(1< >2]|0)==(c|0)?n:i+20|0)>>2]=r,!r)break;t[r+24>>2]=i,e=c+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,c=e< >>16&4,c=c<>>16&2,n=14-(i|o|n)+(c< >>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,c=t[o>>2]|0,t[c+12>>2]=l,t[o>>2]=l,t[l+8>>2]=c,t[l+12>>2]=e,t[l+24>>2]=0}while(!1);if(c=(t[6989]|0)+-1|0,t[6989]=c,!(c|0)){for(e=28380;e=t[e>>2]|0,e;)e=e+8|0;t[6989]=-1}}}}function Ht(e,A){e=e|0,A=A|0;var r=0;return e?(r=ht(A,e)|0,(A|e)>>>0>65535&&(r=((r>>>0)/(e>>>0)|0|0)==(A|0)?r:-1)):r=0,e=Cr(r)|0,!e||!(t[e+-4>>2]&3)||An(e|0,0,r|0)|0,e|0}function $A(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,r=e+r>>>0,WA(A+n+(r>>>0 >>0|0)>>>0|0),r|0|0}function dt(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,WA(n|0),e-r>>>0|0|0}function yi(e){return e=e|0,(e?31-(wt(e^e-1)|0)|0:32)|0}function ds(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,c=0,f=0,g=0,D=0,I=0,L=0,N=0;if(g=e,c=A,f=c,o=r,I=n,l=I,!f)return i=(s|0)!=0,l?i?(t[s>>2]=e|0,t[s+4>>2]=A&0,I=0,s=0,WA(I|0),s|0):(I=0,s=0,WA(I|0),s|0):(i&&(t[s>>2]=(g>>>0)%(o>>>0),t[s+4>>2]=0),I=0,s=(g>>>0)/(o>>>0)>>>0,WA(I|0),s|0);i=(l|0)==0;do if(o){if(!i){if(i=(wt(l|0)|0)-(wt(f|0)|0)|0,i>>>0<=31){D=i+1|0,l=31-i|0,A=i-31>>31,o=D,e=g>>>(D>>>0)&A|f< >>(D>>>0)&A,i=0,l=g< >2]=e|0,t[s+4>>2]=c|A&0,I=0,s=0,WA(I|0),s|0):(I=0,s=0,WA(I|0),s|0)}if(i=o-1|0,i&o|0){l=(wt(o|0)|0)+33-(wt(f|0)|0)|0,N=64-l|0,D=32-l|0,c=D>>31,L=l-32|0,A=L>>31,o=l,e=D-1>>31&f>>>(L>>>0)|(f< >>(l>>>0))&A,A=A&f>>>(l>>>0),i=g< >>(L>>>0))&c|g< >31;break}return s|0&&(t[s>>2]=i&g,t[s+4>>2]=0),(o|0)==1?(L=c|A&0,N=e|0|0,WA(L|0),N|0):(N=yi(o|0)|0,L=f>>>(N>>>0)|0,N=f<<32-N|g>>>(N>>>0)|0,WA(L|0),N|0)}else{if(i)return s|0&&(t[s>>2]=(f>>>0)%(o>>>0),t[s+4>>2]=0),L=0,N=(f>>>0)/(o>>>0)>>>0,WA(L|0),N|0;if(!g)return s|0&&(t[s>>2]=0,t[s+4>>2]=(f>>>0)%(l>>>0)),L=0,N=(f>>>0)/(l>>>0)>>>0,WA(L|0),N|0;if(i=l-1|0,!(i&l))return s|0&&(t[s>>2]=e|0,t[s+4>>2]=i&f|A&0),L=0,N=f>>>((yi(l|0)|0)>>>0),WA(L|0),N|0;if(i=(wt(l|0)|0)-(wt(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=g< >2]=e|0,t[s+4>>2]=c|A&0,L=0,N=0,WA(L|0),N|0):(L=0,N=0,WA(L|0),N|0)}while(!1);if(!o)f=l,c=0,l=0;else{D=r|0|0,g=I|n&0,f=$A(D|0,g|0,-1,-1)|0,r=M()|0,c=l,l=0;do n=c,c=i>>>31|c<<1,i=l|i<<1,n=e<<1|n>>>31|0,I=e>>>31|A<<1|0,dt(f|0,r|0,n|0,I|0)|0,N=M()|0,L=N>>31|((N|0)<0?-1:0)<<1,l=L&1,e=dt(n|0,I|0,L&D|0,(((N|0)<0?-1:0)>>31|((N|0)<0?-1:0)<<1)&g|0)|0,A=M()|0,o=o-1|0;while((o|0)!=0);f=c,c=0}return o=0,s|0&&(t[s>>2]=e,t[s+4>>2]=A),L=(i|0)>>>31|(f|o)<<1|(o<<1|i>>>31)&0|c,N=(i<<1|0)&-2|l,WA(L|0),N|0}function Xr(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,c=0,f=0;return f=A>>31|((A|0)<0?-1:0)<<1,c=((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=dt(f^e|0,c^A|0,f|0,c|0)|0,o=M()|0,e=i^f,A=s^c,dt((ds(l,o,dt(i^r|0,s^n|0,i|0,s|0)|0,M()|0,0)|0)^e|0,(M()|0)^A|0,e|0,A|0)|0}function ba(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=ht(s,i)|0,n=e>>>16,e=(r>>>16)+(ht(s,n)|0)|0,s=A>>>16,A=ht(s,i)|0,WA((e>>>16)+(ht(s,n)|0)+(((e&65535)+A|0)>>>16)|0),e+A<<16|r&65535|0|0}function mt(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=ba(s,i)|0,e=M()|0,WA((ht(A,i)|0)+(ht(n,s)|0)+e|e&0|0),r|0|0|0}function Nn(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,c=0,f=0;return s=S,S=S+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,c=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,e=dt(o^e|0,i^A|0,o|0,i|0)|0,A=M()|0,ds(e,A,dt(f^r|0,c^n|0,f|0,c|0)|0,M()|0,l)|0,n=dt(t[l>>2]^o|0,t[l+4>>2]^i|0,o|0,i|0)|0,r=M()|0,S=s,WA(r|0),n|0}function Fn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var s=0,i=0;return i=S,S=S+16|0,s=i|0,ds(e,A,r,n,s)|0,S=i,WA(t[s+4>>2]|0),t[s>>2]|0|0}function xi(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(WA(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?(WA(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?(WA(A< >>32-r|0),e< =0?+Le(e+.5):+Wt(e-.5)}function Pn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,s=0,i=0;if((r|0)>=8192)return fr(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 An(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 vi(e){return e=+e,e>=0?+Le(e+.5):+Wt(e-.5)}function en(e){e=e|0;var A=0,r=0,n=0;return n=xr()|0,r=t[De>>2]|0,A=r+e|0,(e|0)>0&(A|0)<(r|0)|(A|0)<0?(rr(A|0)|0,Ue(12),-1):(A|0)>(n|0)&&!(hr(A|0)|0)?(Ue(12),-1):(t[De>>2]=A,r|0)}return{___divdi3:Xr,___muldi3:mt,___remdi3:Nn,___uremdi3:Fn,_areNeighborCells:ts,_bitshift64Ashr:xi,_bitshift64Lshr:wA,_bitshift64Shl:CA,_calloc:Ht,_cellAreaKm2:Gl,_cellAreaM2:Ul,_cellAreaRads2:us,_cellToBoundary:In,_cellToCenterChild:Xs,_cellToChildPos:Il,_cellToChildren:n0,_cellToChildrenSize:kr,_cellToLatLng:pn,_cellToLocalIj:ql,_cellToParent:It,_cellToVertex:or,_cellToVertexes:pa,_cellsToDirectedEdge:v0,_cellsToLinkedMultiPolygon:vt,_childPosToCell:Ll,_compactCells:El,_constructCell:ye,_destroyLinkedMultiPolygon:ni,_directedEdgeToBoundary:dn,_directedEdgeToCells:Tn,_edgeLengthKm:Wl,_edgeLengthM:Yl,_edgeLengthRads:Vl,_emscripten_replace_memory:dr,_free:ZA,_getBaseCellNumber:re,_getDirectedEdgeDestination:b0,_getDirectedEdgeOrigin:_n,_getHexagonAreaAvgKm2:ti,_getHexagonAreaAvgM2:Ol,_getHexagonEdgeLengthAvgKm:zl,_getHexagonEdgeLengthAvgM:Hl,_getIcosahedronFaces:Ai,_getIndexDigit:ve,_getNumCells:S0,_getPentagons:os,_getRes0Cells:Kn,_getResolution:DA,_greatCircleDistanceKm:i0,_greatCircleDistanceM:Fl,_greatCircleDistanceRads:Nl,_gridDisk:v,_gridDiskDistances:T,_gridDistance:Xl,_gridPathCells:ea,_gridPathCellsSize:Aa,_gridRing:hA,_gridRingUnsafe:TA,_i64Add:$A,_i64Subtract:dt,_isPentagon:Oe,_isResClassIII:Dl,_isValidCell:Ve,_isValidDirectedEdge:t0,_isValidIndex:Rt,_isValidVertex:hi,_latLngToCell:ss,_llvm_ctlz_i64:ms,_llvm_maxnum_f64:wi,_llvm_minnum_f64:B0,_llvm_round_f64:D0,_localIjToCell:Jl,_malloc:Cr,_maxFaceCount:Rl,_maxGridDiskSize:h,_maxPolygonToCellsSize:fe,_maxPolygonToCellsSizeExperimental:na,_memcpy:Pn,_memset:An,_originToDirectedEdges:Rn,_pentagonCount:jl,_polygonToCells:Bt,_polygonToCellsExperimental:ra,_readInt64AsDoubleFromPointer:fa,_res0CellCount:$n,_round:vi,_sbrk:en,_sizeOfCellBoundary:oa,_sizeOfCoordIJ:ca,_sizeOfGeoLoop:la,_sizeOfGeoPolygon:aa,_sizeOfH3Index:sa,_sizeOfLatLng:ia,_sizeOfLinkedGeoPolygon:ua,_uncompactCells:Ml,_uncompactCellsSize:Bl,_vertexToLatLng:ga,establishStackSpace:jr,stackAlloc:mr,stackRestore:Wr,stackSave:Rr}})(an,Ur,fA);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 yr=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 ft=u.stackAlloc=gA.stackAlloc,Fe=u.stackRestore=gA.stackRestore,cr=u.stackSave=gA.stackSave;if(u.asm=gA,u.cwrap=oA,u.setValue=Y,u.getValue=U,Qe){Me(Qe)||(Qe=b(Qe));{it();var qe=function(nA){nA.byteLength&&(nA=new Uint8Array(nA)),LA.set(nA,z),u.memoryInitializerRequest&&delete u.memoryInitializerRequest.response,Et()},kt=function(){E(Qe,qe,function(){throw"could not load memory initializer "+Qe})},Mt=gr(Qe);if(Mt)qe(Mt.buffer);else if(u.memoryInitializerRequest){var tr=function(){var nA=u.memoryInitializerRequest,yA=nA.response;if(nA.status!==200&&nA.status!==0){var RA=gr(u.memoryInitializerRequestURL);if(RA)yA=RA.buffer;else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+nA.status+", retrying "+Qe),kt();return}}qe(yA)};u.memoryInitializerRequest.response?setTimeout(tr,0):u.memoryInitializerRequest.addEventListener("load",tr)}else kt()}}var Ct;At=function nA(){Ct||Qt(),Ct||(At=nA)};function Qt(nA){if(Je>0||(Ie(),Je>0))return;function yA(){Ct||(Ct=!0,!q&&(oe(),me(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),we()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),yA()},1)):yA()}u.run=Qt;function yt(nA){throw u.onAbort&&u.onAbort(nA),nA+="",F(nA),B(nA),q=!0,"abort("+nA+"). Build with -s ASSERTIONS=1 for more info."}if(u.abort=yt,u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return Qt(),a})(typeof Ft=="object"?Ft:{}),ne="number",Ae=ne,Un=ne,le=ne,ae=ne,pt=ne,PA=ne,u2=[["sizeOfH3Index",ne],["sizeOfLatLng",ne],["sizeOfCellBoundary",ne],["sizeOfGeoLoop",ne],["sizeOfGeoPolygon",ne],["sizeOfLinkedGeoPolygon",ne],["sizeOfCoordIJ",ne],["readInt64AsDoubleFromPointer",ne],["isValidCell",Un,[le,ae]],["isValidIndex",Un,[le,ae]],["latLngToCell",Ae,[ne,ne,pt,PA]],["cellToLatLng",Ae,[le,ae,PA]],["cellToBoundary",Ae,[le,ae,PA]],["maxGridDiskSize",Ae,[ne,PA]],["gridDisk",Ae,[le,ae,ne,PA]],["gridDiskDistances",Ae,[le,ae,ne,PA,PA]],["gridRing",Ae,[le,ae,ne,PA]],["gridRingUnsafe",Ae,[le,ae,ne,PA]],["maxPolygonToCellsSize",Ae,[PA,pt,ne,PA]],["polygonToCells",Ae,[PA,pt,ne,PA]],["maxPolygonToCellsSizeExperimental",Ae,[PA,pt,ne,PA]],["polygonToCellsExperimental",Ae,[PA,pt,ne,ne,ne,PA]],["cellsToLinkedMultiPolygon",Ae,[PA,ne,PA]],["destroyLinkedMultiPolygon",null,[PA]],["compactCells",Ae,[PA,PA,ne,ne]],["uncompactCells",Ae,[PA,ne,ne,PA,ne,pt]],["uncompactCellsSize",Ae,[PA,ne,ne,pt,PA]],["isPentagon",Un,[le,ae]],["isResClassIII",Un,[le,ae]],["getBaseCellNumber",ne,[le,ae]],["getResolution",ne,[le,ae]],["getIndexDigit",ne,[le,ae,ne]],["constructCell",Ae,[ne,ne,PA,PA]],["maxFaceCount",Ae,[le,ae,PA]],["getIcosahedronFaces",Ae,[le,ae,PA]],["cellToParent",Ae,[le,ae,pt,PA]],["cellToChildren",Ae,[le,ae,pt,PA]],["cellToCenterChild",Ae,[le,ae,pt,PA]],["cellToChildrenSize",Ae,[le,ae,pt,PA]],["cellToChildPos",Ae,[le,ae,pt,PA]],["childPosToCell",Ae,[ne,ne,le,ae,pt,PA]],["areNeighborCells",Ae,[le,ae,le,ae,PA]],["cellsToDirectedEdge",Ae,[le,ae,le,ae,PA]],["getDirectedEdgeOrigin",Ae,[le,ae,PA]],["getDirectedEdgeDestination",Ae,[le,ae,PA]],["isValidDirectedEdge",Un,[le,ae]],["directedEdgeToCells",Ae,[le,ae,PA]],["originToDirectedEdges",Ae,[le,ae,PA]],["directedEdgeToBoundary",Ae,[le,ae,PA]],["gridDistance",Ae,[le,ae,le,ae,PA]],["gridPathCells",Ae,[le,ae,le,ae,PA]],["gridPathCellsSize",Ae,[le,ae,le,ae,PA]],["cellToLocalIj",Ae,[le,ae,le,ae,ne,PA]],["localIjToCell",Ae,[le,ae,PA,ne,PA]],["getHexagonAreaAvgM2",Ae,[pt,PA]],["getHexagonAreaAvgKm2",Ae,[pt,PA]],["getHexagonEdgeLengthAvgM",Ae,[pt,PA]],["getHexagonEdgeLengthAvgKm",Ae,[pt,PA]],["greatCircleDistanceM",ne,[PA,PA]],["greatCircleDistanceKm",ne,[PA,PA]],["greatCircleDistanceRads",ne,[PA,PA]],["cellAreaM2",Ae,[le,ae,PA]],["cellAreaKm2",Ae,[le,ae,PA]],["cellAreaRads2",Ae,[le,ae,PA]],["edgeLengthM",Ae,[le,ae,PA]],["edgeLengthKm",Ae,[le,ae,PA]],["edgeLengthRads",Ae,[le,ae,PA]],["getNumCells",Ae,[pt,PA]],["getRes0Cells",Ae,[PA]],["res0CellCount",ne],["getPentagons",Ae,[ne,PA]],["pentagonCount",ne],["cellToVertex",Ae,[le,ae,ne,PA]],["cellToVertexes",Ae,[le,ae,PA]],["vertexToLatLng",Ae,[le,ae,PA]],["isValidVertex",Un,[le,ae]]],c2=0,f2=1,h2=2,d2=3,m2=4,p2=5,g2=6,y2=7,x2=8,w2=9,v2=10,b2=11,k2=12,C2=13,S2=14,E2=15,M2=16,B2=17,D2=18,_2=19,lt={};lt[c2]="Success";lt[f2]="The operation failed but a more specific error is not available";lt[h2]="Argument was outside of acceptable range";lt[d2]="Latitude or longitude arguments were outside of acceptable range";lt[m2]="Resolution argument was outside of acceptable range";lt[p2]="Cell argument was not valid";lt[g2]="Directed edge argument was not valid";lt[y2]="Undirected edge argument was not valid";lt[x2]="Vertex argument was not valid";lt[w2]="Pentagon distortion was encountered";lt[v2]="Duplicate input";lt[b2]="Cell arguments were not neighbors";lt[k2]="Cell arguments had incompatible resolutions";lt[C2]="Memory allocation failed";lt[S2]="Bounds of provided memory were insufficient";lt[E2]="Mode or flags argument was not valid";lt[M2]="Index argument was not valid";lt[B2]="Base cell number was outside of acceptable range";lt[D2]="Child indexing digits invalid";lt[_2]="Child indexing digits refer to a deleted subsequence";var T2=1e3,R2=1001,yl=1002,es={};es[T2]="Unknown unit";es[R2]="Array length out of bounds";es[yl]="Got unexpected null value for H3 index";var j2="Unknown error";function xl(a,u,d){var y=d&&"value"in d,x=new Error((a[u]||j2)+" (code: "+u+(y?", value: "+d.value:"")+")");return x.code=u,x}function I2(a,u){var d=arguments.length===2?{value:u}:{};return xl(lt,a,d)}function L2(a,u){var d=arguments.length===2?{value:u}:{};return xl(es,a,d)}function wl(a){if(a!==0)throw I2(a)}var Br={};u2.forEach(function(u){Br[u[0]]=Ft.cwrap.apply(Ft,u)});var Wn=16,N2=4,K0=8,Fs=Br.sizeOfH3Index(),F2=Br.sizeOfLatLng(),P2=Br.sizeOfCellBoundary();Br.sizeOfGeoPolygon();Br.sizeOfGeoLoop();Br.sizeOfLinkedGeoPolygon();Br.sizeOfCoordIJ();function Q2(a){if(!a)throw L2(yl);return a}var O2=/[^0-9a-fA-F]/;function z2(a){if(Array.isArray(a)&&a.length===2&&Number.isInteger(a[0])&&Number.isInteger(a[1]))return a;if(typeof a!="string"||O2.test(a))return[0,0];var u=parseInt(a.substring(0,a.length-8),Wn),d=parseInt(a.substring(a.length-8),Wn);return[d,u]}function Xi(a){if(a>=0)return a.toString(Wn);a=a&2147483647;var u=vl(8,a.toString(Wn)),d=(parseInt(u[0],Wn)+8).toString(Wn);return u=d+u.substring(1),u}function H2(a,u){return Xi(u)+vl(8,Xi(a))}function vl(a,u){for(var d=a-u.length,y="",x=0;x .85?.9+(a-.85)/.15*.1:.1+(a-.15)/.7*.8}function Cl(a,u,d,y){const x=d-u;if(x<.001)return eo(y[12]);const b=Math.max(0,Math.min(1,(a-u)/x)),E=e1(b),F=Math.min(23,Math.floor(E*24));return eo(y[F])}function t1(a){const u=new Map;for(const b of a){if(typeof b.lat!="number"||typeof b.lon!="number"||isNaN(b.lat)||isNaN(b.lon))continue;const E=W2(b.lat,b.lon,K2),F=u.get(E),B=b.weight;F?(F.count++,F.qualitySum+=B):u.set(E,{count:1,qualitySum:B})}const d=[];let y=1/0,x=-1/0;for(const[b,E]of u.entries()){const F=E.qualitySum/E.count;d.push({hexId:b,count:E.count,avgQuality:F}),y=Math.min(y,F),x=Math.max(x,F)}return{cells:d,minQuality:d.length>0?y:0,maxQuality:d.length>0?x:0}}function r1(a,u,d,y){const x=[];for(const b of a){const F=bl(b.hexId).map(([k,j])=>[j,k]);F.push(F[0]);const B=Cl(b.avgQuality,u,d,y);x.push({type:"Feature",properties:{color:B,quality:b.avgQuality,count:b.count},geometry:{type:"Polygon",coordinates:[F]}})}return{type:"FeatureCollection",features:x}}async function n1(a,u,d,y,x){const b=[];let E=0;for(;E [Y,z]);j.push(j[0]);const Q=Cl(B.avgQuality,u,d,y);b.push({type:"Feature",properties:{color:Q,quality:B.avgQuality,count:B.count},geometry:{type:"Polygon",coordinates:[j]}})}E requestAnimationFrame(B))}return{type:"FeatureCollection",features:b}}function s1(a,u){const[d,y]=R.useState(a);return R.useEffect(()=>{const x=setTimeout(()=>y(a),u);return()=>clearTimeout(x)},[a,u]),d}function i1(a,u){const d=[];for(const y of a){if(y.timestampS>u)break;const x=y.msgSnr??y.pathSnr??0,b=Math.max(0,Math.min(1,(x+20)/40));d.push({lat:y.lat,lon:y.lon,successRate:1,weight:b,totalSamples:1,ageDays:0,geohash:"",repeaters:y.pathHops??[]})}return d}function o1({coveragePoints:a,visible:u,terrainEnabled:d=!1,brightness:y=Z2,basemapMode:x="dark",replaySamples:b,replayTimeS:E}){const F=R.useMemo(()=>b&&b.length>0&&E!=null?i1(b,E):a,[b,E,a]),{current:B}=Hr(),[k,j]=R.useState(null);R.useEffect(()=>{const lA=()=>{var bA;const EA=(bA=B==null?void 0:B.getMap)==null?void 0:bA.call(B);EA&&!k&&j(EA)};lA();const aA=setInterval(lA,50),BA=setTimeout(()=>clearInterval(aA),5e3);return()=>{clearInterval(aA),clearTimeout(BA)}},[B,k]);const[Q,z]=R.useState(null),[Y,U]=R.useState(!1),q=R.useRef({aborted:!1}),sA=R.useRef(0),X=R.useRef(x),oA=s1(F,b?100:q2),uA=R.useMemo(()=>A1(x),[x]);R.useEffect(()=>{if(!oA||!Array.isArray(oA)||oA.length===0){queueMicrotask(()=>{z(null),sA.current=0});return}const lA=X.current!==x;if(oA.length===sA.current&&Q&&!lA)return;sA.current=oA.length,X.current=x,q.current.aborted=!0,q.current={aborted:!1};const aA=q.current;U(!0);const{cells:BA,minQuality:EA,maxQuality:bA}=t1(oA);if(BA.length===0){z(null),U(!1);return}if(BA.length {!aA.aborted&&fA&&z(fA)}).finally(()=>{aA.aborted||U(!1)}),()=>{aA.aborted=!0}},[oA,uA]),R.useEffect(()=>{if(!k)return;const lA=()=>{var aA,BA;try{const EA=k.getLayer(vn),bA=k.getSource(wn);if(u&&Q&&Q.features.length>0){if(bA?k.getSource(wn).setData(Q):k.addSource(wn,{type:"geojson",data:Q}),!EA){const fA=k.getLayer("topology-weak-edges-native"),IA=(BA=(aA=k.getStyle())==null?void 0:aA.layers)==null?void 0:BA.find(FA=>FA.type==="symbol"),LA=fA?"topology-weak-edges-native":IA==null?void 0:IA.id;k.addLayer({id:vn,type:"fill",source:wn,paint:{"fill-color":["get","color"],"fill-opacity":y}},LA)}}else EA&&k.removeLayer(vn),bA&&k.removeSource(wn)}catch(EA){console.warn("[WardrivingHexLayerMapLibre] Layer update error:",EA)}};k.isStyleLoaded()?lA():k.once("style.load",lA)},[k,u,Q,d]),R.useEffect(()=>{if(!(!k||!u))try{k.getLayer(vn)&&k.setPaintProperty(vn,"fill-opacity",y)}catch{}},[k,y,u]),R.useEffect(()=>()=>{if(k)try{k.getLayer(vn)&&k.removeLayer(vn),k.getSource(wn)&&k.removeSource(wn)}catch{}},[k]);const kA=(Q==null?void 0:Q.features.length)??0;return kA>0&&u?p.jsx("div",{"data-testid":"wardriving-hexlayer-maplibre-active","data-point-count":(a==null?void 0:a.length)||0,"data-cell-count":kA,"data-terrain-enabled":d,"data-is-processing":Y,style:{display:"none"}}):null}const u0="replay-marker",Q0="replay-marker-circle",c0="replay-trail",O0="replay-trail-line",f0="replay-trace",Cs="replay-trace-line",h0="replay-marker-icon",to=7,l1=2.5,a1=1.5;function u1(){const a=to*2*2,u=document.createElement("canvas");u.width=a,u.height=a;const d=u.getContext("2d");if(!d)return u;const y=a/2,x=a/2,b=to*2-2;return d.beginPath(),d.arc(y,x,b+2,0,Math.PI*2),d.fillStyle="rgba(59, 130, 246, 0.25)",d.fill(),d.beginPath(),d.arc(y,x,b,0,Math.PI*2),d.fillStyle="#3B82F6",d.fill(),d.lineWidth=2,d.strokeStyle="#1E3A5F",d.stroke(),d.beginPath(),d.arc(y,x,3,0,Math.PI*2),d.fillStyle="#FFFFFF",d.fill(),u}const c1={type:"FeatureCollection",features:[]},d0={type:"FeatureCollection",features:[]};function f1({neighbors:a}){const{current:u}=Hr(),d=Zs(),y=R.useRef(null),x=R.useRef(0),b=R.useRef(!1);return R.useEffect(()=>{const E=u==null?void 0:u.getMap();if(!E||!d)return;const F=()=>{if(!b.current){if(!E.hasImage(h0)){const B=u1(),k=B.getContext("2d");if(k){const j=k.getImageData(0,0,B.width,B.height);E.addImage(h0,j,{pixelRatio:2})}}E.getSource(u0)||E.addSource(u0,{type:"geojson",data:c1}),E.getLayer(Q0)||E.addLayer({id:Q0,type:"symbol",source:u0,layout:{"icon-image":h0,"icon-allow-overlap":!0,"icon-ignore-placement":!0}}),E.getSource(c0)||E.addSource(c0,{type:"geojson",data:d0}),E.getLayer(O0)||E.addLayer({id:O0,type:"line",source:c0,paint:{"line-color":"rgba(59, 130, 246, 0.4)","line-width":l1},layout:{"line-cap":"round","line-join":"round"}},Q0),E.getSource(f0)||E.addSource(f0,{type:"geojson",data:d0}),E.getLayer(Cs)||E.addLayer({id:Cs,type:"line",source:f0,paint:{"line-color":"rgba(251, 191, 36, 0.6)","line-width":a1,"line-dasharray":[4,4]},layout:{"line-cap":"round"}},O0),b.current=!0}};return E.isStyleLoaded()?F():E.once("styledata",F),()=>{if(cancelAnimationFrame(x.current),y.current=null,!E.isStyleLoaded()){b.current=!1;return}for(const B of[Q0,O0,Cs])E.getLayer(B)&&E.removeLayer(B);for(const B of[u0,c0,f0])E.getSource(B)&&E.removeSource(B);E.hasImage(h0)&&E.removeImage(h0),b.current=!1}},[u,d]),R.useEffect(()=>{const E=u==null?void 0:u.getMap();if(!E||!d)return;const F=()=>{if(!b.current){x.current=requestAnimationFrame(F);return}const B=Gt.getState();if(!B.isActive)return;const{filteredSamples:k,currentTimeS:j}=B,Q=dl(),z=E.getSource(u0);z&&Q&&z.setData({type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"Point",coordinates:[Q.lon,Q.lat]},properties:{}}]});const Y=E.getSource(c0);if(Y){const q=Vf(k,j);q.length>=2?Y.setData({type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"LineString",coordinates:q},properties:{}}]}):Y.setData(d0)}const U=E.getSource(f0);if(U&&Q){const q=Jf(),sA=(q==null?void 0:q[0])??null;if(sA!==y.current||sA)if(y.current=sA,sA&&a){const X=h1(sA,a);X?U.setData({type:"FeatureCollection",features:[{type:"Feature",geometry:{type:"LineString",coordinates:[[Q.lon,Q.lat],[X.lon,X.lat]]},properties:{}}]}):U.setData(d0)}else U.setData(d0)}x.current=requestAnimationFrame(F)};return x.current=requestAnimationFrame(F),()=>cancelAnimationFrame(x.current)},[u,d,a]),null}function h1(a,u){const d=a.toLowerCase();for(const[y,x]of Object.entries(u))if((y.startsWith("0x")?y.slice(2):y).toLowerCase().startsWith(d)&&x.latitude&&x.longitude&&x.latitude!==0&&x.longitude!==0)return{lat:x.latitude,lon:x.longitude};return null}const ro="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png",no="terrarium",so=256,io=14,m0={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},tn="terrain-dem",Vn="hillshade-dem",z0="terrain-hillshade";function d1({enabled:a,exaggeration:u=4}){const{current:d}=Hr(),[y,x]=R.useState(null),b=R.useRef(null);return R.useEffect(()=>{const E=()=>{var j;const k=(j=d==null?void 0:d.getMap)==null?void 0:j.call(d);k&&!y&&x(k)};E();const F=setInterval(E,50),B=setTimeout(()=>clearInterval(F),5e3);return()=>{clearInterval(F),clearTimeout(B)}},[d,y]),R.useEffect(()=>{if(!y)return;let E=!0;const F=()=>{var B,k;if(E)try{if(y.getSource(Vn)||y.addSource(Vn,{type:"raster-dem",tiles:[ro],encoding:no,tileSize:so,maxzoom:io}),!y.getLayer(z0)){const j=(k=(B=y.getStyle())==null?void 0:B.layers)==null?void 0:k.find(Q=>Q.type==="symbol");y.addLayer({id:z0,type:"hillshade",source:Vn,paint:{"hillshade-shadow-color":m0.shadowColor,"hillshade-highlight-color":m0.highlightColor,"hillshade-accent-color":m0.accentColor,"hillshade-illumination-direction":m0.illuminationDirection,"hillshade-exaggeration":m0.exaggeration}},j==null?void 0:j.id)}y.getSource(tn)||y.addSource(tn,{type:"raster-dem",tiles:[ro],encoding:no,tileSize:so,maxzoom:io})}catch(j){console.error("[TerrainLayer] Source/layer setup error:",j)}};return y.isStyleLoaded()?F():(y.once("style.load",F),y.once("load",()=>{E&&!y.getSource(Vn)&&F()})),()=>{E=!1}},[y]),R.useEffect(()=>{if(!y)return;let E=!0,F=!1;const B=()=>{if(!(!E||!y.getSource(tn)))try{a?(y.setCenterClampedToGround(!1),y.setTerrain({source:tn,exaggeration:u}),y.setMaxPitch(70),!F&&y.getPitch()<30&&!y.isMoving()&&(F=!0,b.current!==null&&clearTimeout(b.current),b.current=window.setTimeout(()=>{b.current=null,E&&!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(k){console.error("[TerrainLayer] Terrain state error:",k)}};if(y.isStyleLoaded()&&y.getSource(tn))B();else{const k=()=>{y.getSource(tn)&&B()};y.once("idle",k)}return()=>{E=!1,b.current!==null&&(clearTimeout(b.current),b.current=null)}},[y,a,u]),R.useEffect(()=>()=>{var E;try{(E=y==null?void 0:y.getStyle)!=null&&E.call(y)&&y.isStyleLoaded()&&(y.setTerrain(null),y.getLayer(z0)&&y.removeLayer(z0),y.getSource(Vn)&&y.removeSource(Vn),y.getSource(tn)&&y.removeSource(tn))}catch{}},[y]),null}const m1=.03,p1=.1,g1=2,y1=3,x1=.02,w1=3;function v1(a,u=w1){if(a.length<3||u<=0)return a;let d=a;for(let y=0;y0&&x.push([x[0][0],x[0][1]]),d=x}return d}function b1(a,u){let d=1/0,y=-1/0,x=1/0,b=-1/0;for(const[E,F]of a)E y&&(y=E),F b&&(b=F);return d-=u,y+=u,x-=u,b+=u,{minX:d,minY:x,maxX:y,maxY:b,width:y-d,height:b-x}}function k1(a,u={}){if(a.length (X-b.minX)/b.width*j,Y=X=>(X-b.minY)/b.height*Q,U=X=>X/j*b.width+b.minX,q=X=>X/Q*b.height+b.minY,sA=d/b.width*j;try{const K=_c().x(EA=>z(EA[0])).y(EA=>Y(EA[1])).size([j,Q]).bandwidth(Math.max(5,sA)).cellSize(x)(a);if(K.length===0)return{coordinates:[],valid:!1};const uA=Math.max(...K.map(EA=>EA.value))*y;let kA=K[0],lA=1/0;for(const EA of K){const bA=Math.abs(EA.value-uA);bA 0){const LA=IA[0],FA=IA[IA.length-1];(LA[0]!==FA[0]||LA[1]!==FA[1])&&IA.push([LA[0],LA[1]])}if(IA.length>=4){const LA=v1(IA);bA.push(LA)}}bA.length>0&&aA.push(bA)}const BA=[];for(const EA of aA)for(const bA of EA)BA.push(bA);return{coordinates:aA,valid:aA.length>0}}catch(X){return console.warn("[KDE Contour] Failed to generate contour:",X),{coordinates:[],valid:!1}}}function C1(a,u={}){const d=k1(a,u);return!d.valid||d.coordinates.length===0?null:d.coordinates.length===1?{type:"Polygon",coordinates:d.coordinates[0]}:{type:"MultiPolygon",coordinates:d.coordinates}}const S1="mincut-partition",E1="mincut-partition-fill",M1="mincut-partition-stroke",B1=3,D1=.05,_1=.15,T1=.008,oo=12;function lo(a,u,d){return(u[0]-a[0])*(d[1]-a[1])-(u[1]-a[1])*(d[0]-a[0])}function R1(a){if(a.length<3)return a;const u=[...a].sort((x,b)=>x[0]-b[0]||x[1]-b[1]),d=[];for(const x of u){for(;d.length>=2&&lo(d[d.length-2],d[d.length-1],x)<=0;)d.pop();d.push(x)}const y=[];for(let x=u.length-1;x>=0;x--){const b=u[x];for(;y.length>=2&&lo(y[y.length-2],y[y.length-1],b)<=0;)y.pop();y.push(b)}return d.pop(),y.pop(),d.concat(y)}function j1(a,u){if(a.length<3)return a;let d=0,y=0;for(const[x,b]of a)d+=x,y+=b;return d/=a.length,y/=a.length,a.map(([x,b])=>{const E=x-d,F=b-y,B=Math.sqrt(E*E+F*F);if(B<1e-4)return[x,b];const k=(B+u)/B;return[d+E*k,y+F*k]})}function I1(a,u,d,y,x){const b=x*x,E=b*x;return[.5*(2*u[0]+(-a[0]+d[0])*x+(2*a[0]-5*u[0]+4*d[0]-y[0])*b+(-a[0]+3*u[0]-3*d[0]+y[0])*E),.5*(2*u[1]+(-a[1]+d[1])*x+(2*a[1]-5*u[1]+4*d[1]-y[1])*b+(-a[1]+3*u[1]-3*d[1]+y[1])*E)]}function L1(a){if(a.length<3)return a;const u=[],d=a.length;for(let y=0;y a?F1(a,u,x,b):{type:"FeatureCollection",features:[]},[a,u,x,b]),B=d?y:0,k={"fill-color":["get","color"],"fill-opacity":B},j={"line-color":["get","borderColor"],"line-width":E,"line-opacity":B};return p.jsxs(zr,{id:S1,type:"geojson",data:F,children:[p.jsx(Jt,{id:E1,type:"fill",paint:k}),p.jsx(Jt,{id:M1,type:"line",paint:j})]})}function Q1(){const a=qs(),u=R.useRef(0),d=R.useRef(0);R.useEffect(()=>{if(!a){d.current=0;return}const y=Gt.getState().tick,x=b=>{if(d.current>0){const E=Math.min(b-d.current,100);y(E)}d.current=b,u.current=requestAnimationFrame(x)};return u.current=requestAnimationFrame(x),()=>{cancelAnimationFrame(u.current),d.current=0}},[a])}function O1(a,u=!1,d=!1,y=!1,x=.7,b){const E=jo(b);return y?x>=.75?E.restBright:E.rest:x>=.85?E.rest:(x>=.7,E.restDim)}function ao(a){return[a[1],a[0]]}function z1(a,u,d,y=12){const[x,b]=a,[E,F]=u,B=[];for(let k=0;k<=y;k++){const j=k/y,Q=b+(F-b)*j,z=x+(E-x)*j,Y=4*d*j*(1-j);B.push([Q,z,Y])}return B}function uo(a,u,d,y,x,b,E,F,B,k,j,Q="dark"){const z=Ks(),Y=[];let U=1/0,q=-1/0;const sA=[];for(const K of a){const oA=K.edge.avgConfidence??(u?.7:.5),uA=K.edge.certainCount/Math.max(E,1),kA=oA*.7+uA*.3+(u?.5:0);sA.push({polyline:K,brightnessScore:kA}),U=Math.min(U,kA),q=Math.max(q,kA)}if(sA.length===0)return{type:"FeatureCollection",features:[]};const X=q-U||1;sA.sort((K,oA)=>K.brightnessScore-oA.brightnessScore);for(const{polyline:K,brightnessScore:oA}of sA){const{from:uA,to:kA,edge:lA}=K,aA=d.get(lA.key)??0;if(aA<=0)continue;const BA=F.has(lA.key),EA=B.has(lA.key),bA=lA.avgConfidence??(u?.7:.5),fA=k===lA.key,IA=j[lA.fromHash],LA=j[lA.toHash],FA=(IA==null?void 0:IA.node_name)||(IA==null?void 0:IA.name)||lA.fromHash.slice(0,8),UA=(LA==null?void 0:LA.node_name)||(LA==null?void 0:LA.name)||lA.toHash.slice(0,8),vA=[uA[0]+(kA[0]-uA[0])*aA,uA[1]+(kA[1]-uA[1])*aA];let cA;if(!u)cA=1.5;else{const ue=b.get(lA.key)??Rs(lA.certainCount),JA=x.get(lA.key)??ue;cA=JA+(ue-JA)*y,fA?cA=Math.max(cA*1.6,4.5):EA&&(cA=cA*1.3)}let dA;fA?dA=z.edges.highlight:dA=O1(!1,lA.isDirectPathEdge??!1,BA,EA,bA,Q);let jA;fA?jA=z.edges.highlight:lA.isDirectPathEdge?jA=z.edges.hoverDirect:BA?jA=z.edges.hoverLoop:jA=z.edges.hoverStandard;let _A;if(!u)_A=(.3+bA*.3)*aA;else{const ue=Math.min(aA*1.5,1)*z.edgeOpacity;_A=EA?ue*1.15:ue}fA&&(_A=.95);const YA=(oA-U)/X;Y.push({type:"Feature",properties:{key:lA.key,baseColor:dA,hoverColor:jA,baseWidth:cA,baseOpacity:_A,brightnessScore:YA,isLoopEdge:BA,isBackbone:EA,isDirectPath:lA.isDirectPathEdge??!1,isHubConnection:lA.isHubConnection??!1,isZeroHop:lA.isZeroHop??!1,isValidated:u,certainCount:lA.certainCount,confidence:bA,symmetryRatio:lA.symmetryRatio??1,dominantDirection:lA.dominantDirection??"balanced",fromName:FA,toName:UA,fromHash:lA.fromHash,toHash:lA.toHash},geometry:{type:"LineString",coordinates:[ao(uA),ao(vA)]}})}return{type:"FeatureCollection",features:Y}}const H1=150,G1=8;function co(a,u){const d=Ks(),y=[];let x=0;for(const b of a){const E=u.get(b.hash);E&&E.blendedScore>x&&(x=E.blendedScore)}for(const b of a){const{from:E,to:F,hash:B,neighbor:k,lastHopData:j}=b,Q=`neighbor-${B}`,z=(j==null?void 0:j.avgRssi)??k.rssi??null,Y=(j==null?void 0:j.avgSnr)??k.snr??null,U=(j==null?void 0:j.count)??0,q=(j==null?void 0:j.confidence)??1,sA=u.get(B),X=(sA==null?void 0:sA.listenerScore)??0,K=(sA==null?void 0:sA.loudScore)??0,oA=(sA==null?void 0:sA.blendedScore)??0,uA=x>0?oA/x:0,kA=b.rxAdvertCount??0,lA=b.txProxyCount??0,aA=kA+lA,BA=aA>0?(lA-kA)/aA:0,EA=z1(E,F,H1,G1);y.push({type:"Feature",properties:{key:Q,hash:B,name:k.node_name||k.name||B.slice(0,8),prefix:B.slice(2,4).toUpperCase(),color:d.neighborColor,width:2.5,opacity:.85,rssi:z,snr:Y,packetCount:U,confidence:q,hasAvgRssi:(j==null?void 0:j.avgRssi)!==void 0,hasAvgSnr:(j==null?void 0:j.avgSnr)!==void 0,isNeighborEdge:!0,listenerScore:X,loudScore:K,blendedScore:oA,trafficWeight:uA,linkAsymmetry:BA,rxAdvertCount:kA,txProxyCount:lA},geometry:{type:"LineString",coordinates:EA}})}return{type:"FeatureCollection",features:y}}function U1({map:a,showTopology:u,validatedPolylines:d,weakPolylines:y,maxCertainCount:x,loopEdgeKeys:b,backboneEdgeKeys:E,highlightedEdgeKey:F,neighbors:B,validatedSourceId:k,weakSourceId:j,neighborPolylines:Q=[],showNeighborLines:z=!0,neighborSourceId:Y,neighborLinkScores:U=new Map,basemapMode:q}){const sA=R.useRef(null);R.useEffect(()=>{const oe=a&&"current"in a?a.current:a;sA.current=oe});const X=R.useRef(new Map),K=R.useRef(1),oA=R.useRef(new Map),uA=R.useRef(new Map),kA=R.useRef(!1),lA=R.useRef(null),aA=R.useRef(u),BA=R.useRef(new Set),EA=R.useRef(""),bA=R.useRef(new Map),fA=R.useRef(""),IA=R.useRef(""),LA=R.useRef(""),FA=R.useRef(d),UA=R.useRef(y),vA=R.useRef(x),cA=R.useRef(b),dA=R.useRef(E),jA=R.useRef(F),_A=R.useRef(B),YA=R.useRef(Q),ue=R.useRef(z),JA=R.useRef(U),KA=R.useRef(q);R.useEffect(()=>{FA.current=d,UA.current=y,vA.current=x,cA.current=b,dA.current=E,jA.current=F,_A.current=B,YA.current=Q,ue.current=z,JA.current=U,KA.current=q},[d,y,x,b,E,F,B,Q,z,U,q]);const VA=R.useCallback((oe=!1)=>{var ke,Ee,pe,Ke,Je,At,it,Et,Qe,Xe;const me=sA.current;if(!me)return;const we=me.getSource(k),$e=me.getSource(j),be=me.getSource(Y);if(we){const Me=uo(FA.current,!0,X.current,K.current,oA.current,uA.current,vA.current,cA.current,dA.current,jA.current,_A.current,KA.current),ze=`${Me.features.length}:${((Ee=(ke=Me.features[0])==null?void 0:ke.properties)==null?void 0:Ee.key)??""}:${((Ke=(pe=Me.features[Me.features.length-1])==null?void 0:pe.properties)==null?void 0:Ke.key)??""}:${Array.from(X.current.values()).reduce((ct,Pt)=>ct+Pt,0).toFixed(2)}`;(oe||ze!==fA.current)&&(we.setData(Me),fA.current=ze)}if($e){const Me=uo(UA.current,!1,X.current,K.current,oA.current,uA.current,vA.current,cA.current,dA.current,jA.current,_A.current,KA.current),ze=`${Me.features.length}:${((At=(Je=Me.features[0])==null?void 0:Je.properties)==null?void 0:At.key)??""}:${((Et=(it=Me.features[Me.features.length-1])==null?void 0:it.properties)==null?void 0:Et.key)??""}`;(oe||ze!==IA.current)&&($e.setData(Me),IA.current=ze)}if(be&&YA.current.length>0){const Me=co(YA.current,JA.current),ze=`${Me.features.length}:${((Xe=(Qe=Me.features[0])==null?void 0:Qe.properties)==null?void 0:Xe.hash)??""}`;(oe||ze!==LA.current)&&(be.setData(Me),LA.current=ze)}},[k,j,Y]),je=R.useCallback(()=>{lA.current&&(cancelAnimationFrame(lA.current),lA.current=null),X.current=new Map,K.current=1,oA.current=new Map,uA.current=new Map,kA.current=!1,BA.current=new Set,EA.current="",bA.current=new Map},[]);R.useEffect(()=>{const oe=aA.current,me=u;if(aA.current=u,!!sA.current){if(lA.current&&(cancelAnimationFrame(lA.current),lA.current=null),oe&&!me&&!kA.current){kA.current=!0;const $e=new Map(X.current);let be=null;const ke=Ee=>{be||(be=Ee);const pe=Ee-be,Ke=Math.min(pe/Nc,1),Je=Al(Ke);for(const[At,it]of $e)X.current.set(At,it*(1-Je));VA(!0),Ke<1?lA.current=requestAnimationFrame(ke):(kA.current=!1,X.current=new Map,BA.current=new Set,EA.current="",oA.current=new Map,uA.current=new Map,lA.current=null,VA(!0))};lA.current=requestAnimationFrame(ke)}!oe&&me&&(X.current=new Map,BA.current=new Set,EA.current="")}},[u,VA]),R.useEffect(()=>{const oe=sA.current;if(!u||kA.current||!oe)return;const me=[...d,...y],we=me.map(pe=>`${pe.edge.key}:${pe.edge.certainCount}`).sort().join(","),$e=BA.current.size===0,be=EA.current!==""&&EA.current!==we;if(!$e&&!be){VA();return}const ke=[],Ee=[];for(const{edge:pe}of me)BA.current.has(pe.key)?Ee.push(pe.key):ke.push(pe.key);be&&Ee.length>0&&(oA.current=new Map(bA.current),K.current=0),uA.current=new Map;for(const{edge:pe}of d){const Ke=Rs(pe.certainCount);uA.current.set(pe.key,Ke)}for(const pe of ke)X.current.set(pe,0);for(const pe of Ee)X.current.has(pe)||X.current.set(pe,1);if(ke.length>0||be&&Ee.length>0){lA.current&&(cancelAnimationFrame(lA.current),lA.current=null);let pe=null;const Ke=Math.min(100,R0/Math.max(ke.length,1)/2),Je=At=>{pe||(pe=At);const it=At-pe;for(let Qe=0;Qe 0){const Qe=Math.min(it/R0,1);K.current=_s(Qe)}VA(!0);const Et=R0+(ke.length-1)*Ke;it {const oe=sA.current;if(!oe||!Y)return;const me=()=>{const be=oe.getSource(Y);if(!be)return!1;if(Q.length>0){const ke=co(Q,U);be.setData(ke)}else be.setData({type:"FeatureCollection",features:[]});return!0};if(me())return;const we=be=>{be.sourceId===Y&&me()&&oe.off("sourcedata",we)};oe.on("sourcedata",we);const $e=()=>{me()&&(oe.off("styledata",$e),oe.off("sourcedata",we))};return oe.on("styledata",$e),()=>{oe.off("sourcedata",we),oe.off("styledata",$e)}},[Y,Q,U]);const Ie=R.useRef(q);return R.useEffect(()=>{q!==Ie.current&&(Ie.current=q,fA.current="",IA.current="",LA.current="",VA(!0))},[q,VA]),R.useEffect(()=>()=>{lA.current&&(cancelAnimationFrame(lA.current),lA.current=null)},[]),{isExiting:kA.current,isAnimating:lA.current!==null,resetAnimationState:je,weightAnimProgress:K.current,animStartWeights:oA.current,animTargetWeights:uA.current}}function V1({activeFilters:a,neighborHashes:u,hubConnectedNodes:d,directNodeSet:y,localConnectedNodes:x,nodeTypeMap:b,showTopology:E}){const[F,B]=R.useState(new Map),k=R.useMemo(()=>[...a].sort().join(","),[a]),j=R.useRef(k),Q=R.useRef(!1),z=R.useRef(new Map),Y=R.useRef(null),U=R.useRef(d),q=R.useRef(y),sA=R.useRef(x),X=R.useRef(b),K=R.useRef(E);return R.useEffect(()=>{U.current=d,q.current=y,sA.current=x,X.current=b,K.current=E},[d,y,x,b,E]),R.useEffect(()=>{const uA=j.current,kA=k;if(j.current=k,uA===kA)return;Y.current&&(cancelAnimationFrame(Y.current),Y.current=null);const lA=new Set(uA?uA.split(",").filter(Boolean):[]),aA=a,BA=U.current,EA=q.current,bA=X.current;for(const vA of u)z.current.has(vA)||z.current.set(vA,Math.random());const fA=(vA,cA)=>{if(cA.size===0)return!1;const dA=bA.get(vA)??"unknown";return!!(cA.has("repeater")&&dA==="repeater"||cA.has("companion")&&(dA==="companion"||dA==="unknown")||cA.has("room_server")&&dA==="room_server"||cA.has("direct")&&EA.has(vA)||cA.has("hubs")&&BA.has(vA))},IA=[];for(const vA of u){const cA=fA(vA,lA),dA=fA(vA,aA);cA!==dA&&IA.push({hash:vA,startOpacity:cA?1:0,targetOpacity:dA?1:0})}if(IA.length===0)return;Q.current=!0,B(vA=>{const cA=new Map(vA);for(const{hash:dA,startOpacity:jA}of IA)cA.set(dA,jA);return cA});const LA=IA;let FA=null;const UA=vA=>{FA||(FA=vA);const cA=vA-FA;let dA=!0;B(()=>{const _A=new Map;for(const{hash:YA,startOpacity:ue,targetOpacity:JA}of LA){const KA=(z.current.get(YA)??0)*Ii,VA=Math.max(0,cA-KA),je=Math.min(VA/ji,1),Ie=_s(je),oe=ue+(JA-ue)*Ie;_A.set(YA,oe),je<1&&(dA=!1)}return _A});const jA=ji+Ii;cA {Y.current&&(cancelAnimationFrame(Y.current),Y.current=null),Q.current=!1}},[k,a,u]),{nodeOpacities:F,getNodeOpacity:(uA,kA)=>Q.current&&F.has(uA)?F.get(uA):kA?1:0}}const Ss=240,fo=240;function W1(a,u){if(a [u,u]))}function $1(a,u,d){const y=d?Er(d):null,x=[];for(const b of a){if(y&&Uo(b.toUpperCase(),y)){d&&x.push(d);continue}const E=u.get(b.toUpperCase());E&&x.push(E)}return x}function K1({neighbors:a,localHash:u,enabled:d=!0}){const[y,x]=R.useState(new Map),b=js(),E=R.useRef(b);R.useEffect(()=>{E.current=b},[b]);const F=R.useRef(0),B=R.useRef(null),k=R.useRef(new Map),j=R.useRef(new Map);R.useEffect(()=>{j.current=Y1(a)},[a]);const Q=R.useRef(null);return R.useEffect(()=>{const z=()=>{const Y=performance.now(),U=k.current;if(U.size===0){B.current=null,x(new Map);return}const q=new Map,sA=[];for(const[X,{startTime:K,staggerDelay:oA}]of U){const uA=Y-K-oA;if(!(uA<0))if(uA>=j0)sA.push(X);else{const kA=W1(uA,j0);kA>0&&q.set(X,kA)}}for(const X of sA)U.delete(X);x(q),U.size>0&&Q.current?B.current=requestAnimationFrame(Q.current):B.current=null};Q.current=z},[]),R.useEffect(()=>{if(!d)return;const z=E.current;if(z.length===0)return;const Y=F.current,U=z.filter(K=>(K.timestamp??0)>Y);if(Y===0){const K=z.reduce((oA,uA)=>Math.max(oA,uA.timestamp??0),0);F.current=K;return}if(U.length===0)return;const q=U.reduce((K,oA)=>Math.max(K,oA.timestamp??0),0);F.current=q;const sA=performance.now();let X=0;for(const K of U){const oA=Go(K,u);if(!oA||oA.original.length===0)continue;const uA=$1(oA.original,j.current,u);if(uA.length===0)continue;const kA=j0*.5;for(let lA=0;lA ()=>{B.current!==null&&(cancelAnimationFrame(B.current),B.current=null)},[]),{blinkingNodes:y,blinkColor:Lc}}const rn="edge-blink-source",Sn="edge-blink-layer",Ps=1e3,Qs=1e3,Es=150,Z1=175,q1=3e4,J1=ar.teal,X1="#8B7BAD",Ah=2.5,eh=1.875,th=.5,Z0="node-markers-layer";function rh(a){if(!a.getLayer(Sn))return;const u=a.getLayer(Z0)?Z0:void 0;try{a.moveLayer(Sn,u)}catch{}}function nh(a,u){const d=new Map;for(const y of Object.keys(a)){const x=Er(y);d.has(x)||d.set(x,y)}if(u){const y=Er(u);d.set(y,u)}return d}function sh(a){return a<0||a>=Ps?0:1-a/Ps}function ih(a){if(a<0||a>=Qs)return 0;const u=a/Qs;return Math.pow(1-u,3)}function H0(a){return[a[1],a[0]]}function oh({map:a,nodeCoordinates:u,packets:d,localHash:y,neighbors:x,meshTopology:b,enabled:E=!0}){const F=R.useRef(null),B=a&&"current"in a?a.current:a;R.useEffect(()=>{F.current=B},[B]);const k=R.useRef(!1),j=R.useRef(null),Q=R.useRef([]),z=R.useRef(0),Y=R.useRef(!1),[U,q]=R.useState(!1),sA=R.useRef(null),X=R.useRef([]),K=R.useRef(new Map),oA=R.useRef(u);R.useEffect(()=>{oA.current=u},[u]),R.useEffect(()=>{K.current=nh(x,y)},[x,y]),R.useEffect(()=>{if(!E){sA.current&&(clearTimeout(sA.current),sA.current=null),X.current=[],j.current!==null&&(cancelAnimationFrame(j.current),j.current=null),Q.current=[];const aA=F.current;if(aA&&k.current){const BA=aA.getSource(rn);BA&&BA.setData({type:"FeatureCollection",features:[]})}Y.current=!1,z.current=0}},[E]),R.useEffect(()=>{const aA=B;if(!aA)return;let BA=null,EA=!1;const bA=()=>{if(!EA&&!k.current)try{aA.getLayer(Sn)&&aA.removeLayer(Sn),aA.getSource(rn)&&aA.removeSource(rn),aA.addSource(rn,{type:"geojson",data:{type:"FeatureCollection",features:[]}});const fA=aA.getLayer(Z0)?Z0:void 0;aA.addLayer({id:Sn,type:"line",source:rn,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],X1,J1],"line-width":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],eh,Ah],"line-opacity":["*",["get","opacityMult"],["interpolate",["linear"],["get","intensity"],0,0,.1,.8,.5,1,1,1]]}},fA),k.current=!0,q(!0),BA&&(clearInterval(BA),BA=null)}catch{}};return aA.isStyleLoaded()&&bA(),aA.once("style.load",()=>{bA()}),k.current||(BA=setInterval(()=>{if(k.current){BA&&clearInterval(BA);return}bA()},100),setTimeout(()=>{BA&&(clearInterval(BA),BA=null)},5e3)),()=>{EA=!0,BA&&clearInterval(BA),j.current!==null&&(cancelAnimationFrame(j.current),j.current=null);const fA=F.current;if(fA&&k.current){try{fA.getLayer(Sn)&&fA.removeLayer(Sn),fA.getSource(rn)&&fA.removeSource(rn)}catch{}k.current=!1,q(!1)}}},[B]);const uA=R.useRef(()=>{});R.useEffect(()=>{uA.current=()=>{const aA=F.current;if(!aA)return;const BA=aA.getSource(rn);if(!BA)return;const EA=performance.now(),bA=Q.current,fA=[],IA=[];for(const LA of bA){const FA=EA-LA.startTime-LA.delay,UA=LA.isSpeculative?Qs:Ps;if(FA 0&&fA.push({type:"Feature",properties:{intensity:vA,opacityMult:LA.isSpeculative?th:1,isSpeculative:LA.isSpeculative??!1},geometry:{type:"LineString",coordinates:[LA.fromCoord,LA.toCoord]}})}}BA.setData({type:"FeatureCollection",features:fA}),Q.current=IA,IA.length>0?j.current=requestAnimationFrame(()=>uA.current()):j.current=null}},[]);const kA=R.useCallback(()=>{const aA=F.current;aA&&rh(aA),j.current===null&&(j.current=requestAnimationFrame(()=>uA.current()))},[]),lA=R.useCallback(()=>{if(!F.current||!k.current)return;const BA=X.current;if(X.current=[],sA.current=null,BA.length===0)return;const EA=K.current,bA=oA.current;if(EA.size===0)return;const fA=performance.now();let IA=0,LA=!1;const FA=new Set;for(const UA of BA){const vA=Go(UA,y);if(!vA||vA.original.length<2)continue;const cA=vA.original;let dA=0,jA=null;for(let JA=0;JA 0){JA.sort((Ie,oe)=>oe.confidence-Ie.confidence);const KA=Math.max(1,Math.ceil(JA.length*.25)),VA=JA.slice(0,KA),je=IA+dA*Es;for(const{edgeKey:Ie,otherHash:oe}of VA){const me=bA.get(jA),we=bA.get(oe);Q.current.push({edgeKey:Ie,fromCoord:H0(me),toCoord:H0(we),startTime:fA,delay:je,isSpeculative:!0}),FA.add(Ie),LA=!0}}}dA>0&&(IA+=dA*Es*.5)}LA&&kA()},[y,b,kA]);R.useEffect(()=>{const aA=F.current;if(!E||!aA||!U||d.length===0)return;const BA=Date.now(),EA=z.current;if(!Y.current){Y.current=!0;const IA=(BA-q1)/1e3,LA=d.filter(UA=>(UA.timestamp??0)>=IA);let FA=0;for(const UA of d){const vA=UA.timestamp??0;vA>FA&&(FA=vA)}if(z.current=FA,LA.length>0){LA.sort((vA,cA)=>(vA.timestamp??0)-(cA.timestamp??0));const UA=LA.slice(-20);X.current.push(...UA),lA()}return}const bA=d.filter(IA=>(IA.timestamp??0)>EA);if(bA.length===0)return;let fA=0;for(const IA of bA){const LA=IA.timestamp??0;LA>fA&&(fA=LA)}z.current=fA,X.current.push(...bA),sA.current&&clearTimeout(sA.current),sA.current=setTimeout(lA,Z1)},[E,d,lA,U]),R.useEffect(()=>()=>{sA.current&&clearTimeout(sA.current)},[])}var nn={},bn={};/** + * @license React + * react-dom-server-legacy.browser.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ho;function lh(){if(ho)return bn;ho=1;var a=Vo();function u(h){for(var v="https://reactjs.org/docs/error-decoder.html?invariant="+h,T=1;T ]/;function U(h){if(typeof h=="boolean"||typeof h=="number")return""+h;h=""+h;var v=Y.exec(h);if(v){var T="",O,AA=0;for(O=v.index;O "),aA(h,AA,T),typeof T=="string"?(h.push(U(T)),null):T}var bA=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,fA=new Map;function IA(h){var v=fA.get(h);if(v===void 0){if(!bA.test(h))throw Error(u(65,h));v="<"+h,fA.set(h,v)}return v}function LA(h,v,T,O,AA){switch(v){case"select":h.push(IA("select"));var $=null,hA=null;for(fe in T)if(d.call(T,fe)){var TA=T[fe];if(TA!=null)switch(fe){case"children":$=TA;break;case"dangerouslySetInnerHTML":hA=TA;break;case"defaultValue":case"value":break;default:lA(h,O,fe,TA)}}return h.push(">"),aA(h,hA,$),$;case"option":hA=AA.selectedValue,h.push(IA("option"));var XA=TA=null,qA=null,fe=null;for($ in T)if(d.call(T,$)){var Ne=T[$];if(Ne!=null)switch($){case"children":TA=Ne;break;case"selected":qA=Ne;break;case"dangerouslySetInnerHTML":fe=Ne;break;case"value":XA=Ne;default:lA(h,O,$,Ne)}}if(hA!=null)if(T=XA!==null?""+XA:BA(TA),X(hA)){for(O=0;O "),aA(h,fe,TA),TA;case"textarea":h.push(IA("textarea")),fe=hA=$=null;for(TA in T)if(d.call(T,TA)&&(XA=T[TA],XA!=null))switch(TA){case"children":fe=XA;break;case"value":$=XA;break;case"defaultValue":hA=XA;break;case"dangerouslySetInnerHTML":throw Error(u(91));default:lA(h,O,TA,XA)}if($===null&&hA!==null&&($=hA),h.push(">"),fe!=null){if($!=null)throw Error(u(92));if(X(fe)&&1 "),null;case"menuitem":h.push(IA("menuitem"));for(var Bt in T)if(d.call(T,Bt)&&($=T[Bt],$!=null))switch(Bt){case"children":case"dangerouslySetInnerHTML":throw Error(u(400));default:lA(h,O,Bt,$)}return h.push(">"),null;case"title":h.push(IA("title")),$=null;for(Ne in T)if(d.call(T,Ne)&&(hA=T[Ne],hA!=null))switch(Ne){case"children":$=hA;break;case"dangerouslySetInnerHTML":throw Error(u(434));default:lA(h,O,Ne,hA)}return h.push(">"),$;case"listing":case"pre":h.push(IA(v)),hA=$=null;for(XA in T)if(d.call(T,XA)&&(TA=T[XA],TA!=null))switch(XA){case"children":$=TA;break;case"dangerouslySetInnerHTML":hA=TA;break;default:lA(h,O,XA,TA)}if(h.push(">"),hA!=null){if($!=null)throw Error(u(60));if(typeof hA!="object"||!("__html"in hA))throw Error(u(61));T=hA.__html,T!=null&&(typeof T=="string"&&0 "),null;case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return EA(h,T,v,O);case"html":return AA.insertionMode===0&&h.push(""),EA(h,T,v,O);default:if(v.indexOf("-")===-1&&typeof T.is!="string")return EA(h,T,v,O);h.push(IA(v)),hA=$=null;for(qA in T)if(d.call(T,qA)&&(TA=T[qA],TA!=null))switch(qA){case"children":$=TA;break;case"dangerouslySetInnerHTML":hA=TA;break;case"style":kA(h,O,TA);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":break;default:E(qA)&&typeof TA!="function"&&typeof TA!="symbol"&&h.push(" ",qA,'="',U(TA),'"')}return h.push(">"),aA(h,hA,$),$}}function FA(h,v,T){if(h.push('')}function UA(h,v,T,O){switch(T.insertionMode){case 0:case 1:return h.push(' ');case 2:return h.push('