From e05bd72c0211c748410883e0cbf1aaf794879804 Mon Sep 17 00:00:00 2001 From: GitHub Actions Bot Date: Fri, 27 Feb 2026 17:25:17 +0000 Subject: [PATCH] Sync build v0.9.290 Automated sync from private repository. Commit: ae3df54d7bdfbda846d953be413dfbf7366f7db9 --- frontend/dist/VERSION | 2 +- ...57w.js => AnalyzerFilterPanel-BPawhC5X.js} | 2 +- ...CQ0Uhsch.js => AnimatedNumber-BmJRWt4U.js} | 2 +- ...r-DAxIlO26.js => BasemapLayer-D5WYHXmJ.js} | 4 +- ...ble-CZ6SrnkY.js => ChatBubble-0UYYugYB.js} | 2 +- .../assets/CollisionExplorerModal-CjMAUeX8.js | 6 --- .../assets/CollisionExplorerModal-DeHgfjGl.js | 6 +++ .../dist/assets/Configuration-Bg-_dl9k.js | 32 ------------ .../dist/assets/Configuration-DbTSQonP.js | 32 ++++++++++++ ...l-D_7JTlAb.js => ConfirmModal-CNsW1W2q.js} | 2 +- ...tacts-CFnmM0Y1.js => Contacts-CKgzKZ-Z.js} | 6 +-- ...STu.js => ContactsMapMapLibre-CKQy2_cg.js} | 50 +++++++++---------- ...oard-DnqJejEW.js => Dashboard-BN8YnIZD.js} | 2 +- ...ataBox-D9AB1NGO.js => DataBox-W2v3wy8k.js} | 2 +- ...X6n44.js => DeepAnalysisModal-B2m7JxOp.js} | 2 +- .../{Grid-Ug7vbOHZ.js => Grid-CEGkNRmt.js} | 2 +- ...n-B-Jvp-EH.js => KeycapButton-BJvlGsWZ.js} | 2 +- ...DDCHe_-F.js => LightSparkline-CkL4j4OZ.js} | 2 +- .../{Login-CR_cLtSm.js => Login-BAnk0zoo.js} | 2 +- .../{Logs-CVepMZ7A.js => Logs-BebUdPuw.js} | 2 +- ...raph-DTMLLvyM.js => MeshGraph-TagJOEOk.js} | 6 +-- ...c1s.js => NodeInformationCard-p2ujbtr-.js} | 2 +- ...ist-DlLtC0gN.js => PacketList-DNy8yTeL.js} | 6 +-- ...dk-JY.js => PacketObservatory-CcMk90ki.js} | 4 +- ...ackets-CU7fnpH3.js => Packets-CPDPqpOg.js} | 2 +- ...out-gbvZ6tct.js => PageLayout-NQBVrM09.js} | 2 +- .../dist/assets/PathMapMapLibre-ANGN4-cP.js | 6 +++ .../dist/assets/PathMapMapLibre-T4Z0ZoUt.js | 6 --- ...ver-BI4sH90O.js => RoomServer-IEGP0mqy.js} | 2 +- ...sions-DFvbKZ5i.js => Sessions-Dynaz1Ws.js} | 2 +- ...7F9Dvpc.js => SignalIndicator-Dw_bfp50.js} | 2 +- ...ics-UJSa6o1s.js => Statistics-B1hA6UVh.js} | 2 +- ...{System-BD_b8IoT.js => System-CWAaClFq.js} | 2 +- ...minal-CJ2x2btZ.js => Terminal-iUtnCprU.js} | 4 +- ...z-TWVT.js => TimeRangeStepper-BlC9rlkV.js} | 2 +- ...ivity-B7U7wJdR.js => activity-2-g8m4_g.js} | 2 +- ...ntenna-_XOMaVsr.js => antenna-DOuH490Q.js} | 2 +- ...ow-up-DSinL38e.js => arrow-up-DbeeGdHO.js} | 2 +- ...ils-B3hkabuB.js => chat-utils-D1Q4VWjO.js} | 2 +- ...-Clx_OSXY.js => chevron-right-DUgYTR6d.js} | 2 +- ...k-D1pZScos.js => circle-check-BOp4wLxA.js} | 2 +- ...ju.js => circle-question-mark-C7l07_IA.js} | 2 +- ...ehOm2.js => consumer-registry-lDKP4bcU.js} | 2 +- ...abase-BZ4a6Qd1.js => database-BEyHF_p_.js} | 2 +- ...nload-Cxh-dhwT.js => download-IUkhheKK.js} | 2 +- ...{easing-D6lOfiWJ.js => easing-CXN4GmUW.js} | 2 +- ...F5QGkE.js => element-movement-D4o83B2Z.js} | 2 +- ...{funnel-DznwFNVG.js => funnel-BDRRJl0y.js} | 2 +- .../{hash-L59YOER_.js => hash-BkZp0AKy.js} | 2 +- .../{index-BaK1kOPF.js => index-B-prVW1V.js} | 2 +- .../{index-CdwYueSG.js => index-C8IY8K2r.js} | 6 +-- ...ound-D-QO71kp.js => key-round-CQ-pu-yY.js} | 2 +- ...{layers-BiC-Ns73.js => layers-Oxzfug7f.js} | 2 +- ...g-D5cTtUUv.js => link-scoring-CX7bMGSJ.js} | 2 +- ...istbox-B4IRFwwn.js => listbox-BhQdM5DY.js} | 2 +- ...ap-pin-BTzarosW.js => map-pin-DMVHq6j8.js} | 2 +- ...gl-D2koUyR9.js => maplibre-gl-DihO1Cg6.js} | 2 +- ...uPPv.js => monitor-smartphone-DF_mmgOV.js} | 2 +- ...etwork-CWIy2ZSo.js => network-DBkquEPb.js} | 2 +- ...pes-DedpfI8l.js => node-types-3T9Wr7vI.js} | 2 +- ...OKjW7M.js => payload-decoders-BX6pSxwl.js} | 2 +- .../{ping-C5xXtX1r.js => ping-lLlOzF2r.js} | 2 +- .../{plus-BxLpl_sF.js => plus-PWV57wbr.js} | 2 +- ...ves-BiOSQYsZ.js => primitives-Ca8Zb5cD.js} | 2 +- ...-cw-Bcz_yxe3.js => refresh-cw-BqACEANM.js} | 2 +- ...{search-DV-Xcdgb.js => search-zALFwCS4.js} | 2 +- ...s-2-OMoG5snn.js => settings-2-BUdn2-nA.js} | 2 +- ...{shield-C_TDkZ-m.js => shield-DlHwWwz2.js} | 2 +- ...{system-mluDEEwX.js => system-D5HdVkRh.js} | 2 +- ...{target-CAnStHns.js => target-DviLCm8U.js} | 2 +- ...DaComX7z.js => triangle-alert-8k00uu7o.js} | 2 +- ...OYDTQJ4.js => useMapViewStore-ax-BqDpg.js} | 2 +- ...GbI6IX.js => usePipelineStore-CyFB3GIy.js} | 4 +- ...1.js => webgl-device-QoBMYpnS-BzCsS41F.js} | 2 +- .../{wifi-Af5E3WZ9.js => wifi-Cq9uCDyf.js} | 2 +- frontend/dist/file.svg | 1 - frontend/dist/globe.svg | 1 - frontend/dist/index.html | 2 +- frontend/dist/next.svg | 1 - frontend/dist/vercel.svg | 1 - frontend/dist/window.svg | 1 - frontend/package.json | 2 +- 82 files changed, 151 insertions(+), 156 deletions(-) rename frontend/dist/assets/{AnalyzerFilterPanel-BWI2h57w.js => AnalyzerFilterPanel-BPawhC5X.js} (98%) rename frontend/dist/assets/{AnimatedNumber-CQ0Uhsch.js => AnimatedNumber-BmJRWt4U.js} (89%) rename frontend/dist/assets/{BasemapLayer-DAxIlO26.js => BasemapLayer-D5WYHXmJ.js} (99%) rename frontend/dist/assets/{ChatBubble-CZ6SrnkY.js => ChatBubble-0UYYugYB.js} (93%) delete mode 100644 frontend/dist/assets/CollisionExplorerModal-CjMAUeX8.js create mode 100644 frontend/dist/assets/CollisionExplorerModal-DeHgfjGl.js delete mode 100644 frontend/dist/assets/Configuration-Bg-_dl9k.js create mode 100644 frontend/dist/assets/Configuration-DbTSQonP.js rename frontend/dist/assets/{ConfirmModal-D_7JTlAb.js => ConfirmModal-CNsW1W2q.js} (92%) rename frontend/dist/assets/{Contacts-CFnmM0Y1.js => Contacts-CKgzKZ-Z.js} (92%) rename frontend/dist/assets/{ContactsMapMapLibre-vYZ4_STu.js => ContactsMapMapLibre-CKQy2_cg.js} (53%) rename frontend/dist/assets/{Dashboard-DnqJejEW.js => Dashboard-BN8YnIZD.js} (97%) rename frontend/dist/assets/{DataBox-D9AB1NGO.js => DataBox-W2v3wy8k.js} (97%) rename frontend/dist/assets/{DeepAnalysisModal-CtwX6n44.js => DeepAnalysisModal-B2m7JxOp.js} (98%) rename frontend/dist/assets/{Grid-Ug7vbOHZ.js => Grid-CEGkNRmt.js} (95%) rename frontend/dist/assets/{KeycapButton-B-Jvp-EH.js => KeycapButton-BJvlGsWZ.js} (98%) rename frontend/dist/assets/{LightSparkline-DDCHe_-F.js => LightSparkline-CkL4j4OZ.js} (96%) rename frontend/dist/assets/{Login-CR_cLtSm.js => Login-BAnk0zoo.js} (99%) rename frontend/dist/assets/{Logs-CVepMZ7A.js => Logs-BebUdPuw.js} (96%) rename frontend/dist/assets/{MeshGraph-DTMLLvyM.js => MeshGraph-TagJOEOk.js} (99%) rename frontend/dist/assets/{NodeInformationCard-BChhyc1s.js => NodeInformationCard-p2ujbtr-.js} (90%) rename frontend/dist/assets/{PacketList-DlLtC0gN.js => PacketList-DNy8yTeL.js} (98%) rename frontend/dist/assets/{PacketObservatory-CJFdk-JY.js => PacketObservatory-CcMk90ki.js} (99%) rename frontend/dist/assets/{Packets-CU7fnpH3.js => Packets-CPDPqpOg.js} (96%) rename frontend/dist/assets/{PageLayout-gbvZ6tct.js => PageLayout-NQBVrM09.js} (93%) create mode 100644 frontend/dist/assets/PathMapMapLibre-ANGN4-cP.js delete mode 100644 frontend/dist/assets/PathMapMapLibre-T4Z0ZoUt.js rename frontend/dist/assets/{RoomServer-BI4sH90O.js => RoomServer-IEGP0mqy.js} (97%) rename frontend/dist/assets/{Sessions-DFvbKZ5i.js => Sessions-Dynaz1Ws.js} (96%) rename frontend/dist/assets/{SignalIndicator-B7F9Dvpc.js => SignalIndicator-Dw_bfp50.js} (99%) rename frontend/dist/assets/{Statistics-UJSa6o1s.js => Statistics-B1hA6UVh.js} (98%) rename frontend/dist/assets/{System-BD_b8IoT.js => System-CWAaClFq.js} (98%) rename frontend/dist/assets/{Terminal-CJ2x2btZ.js => Terminal-iUtnCprU.js} (99%) rename frontend/dist/assets/{TimeRangeStepper-DCz-TWVT.js => TimeRangeStepper-BlC9rlkV.js} (98%) rename frontend/dist/assets/{activity-B7U7wJdR.js => activity-2-g8m4_g.js} (89%) rename frontend/dist/assets/{antenna-_XOMaVsr.js => antenna-DOuH490Q.js} (90%) rename frontend/dist/assets/{arrow-up-DSinL38e.js => arrow-up-DbeeGdHO.js} (92%) rename frontend/dist/assets/{chat-utils-B3hkabuB.js => chat-utils-D1Q4VWjO.js} (94%) rename frontend/dist/assets/{chevron-right-Clx_OSXY.js => chevron-right-DUgYTR6d.js} (85%) rename frontend/dist/assets/{circle-check-D1pZScos.js => circle-check-BOp4wLxA.js} (87%) rename frontend/dist/assets/{circle-question-mark-Bdu9dBju.js => circle-question-mark-C7l07_IA.js} (89%) rename frontend/dist/assets/{consumer-registry-DhVehOm2.js => consumer-registry-lDKP4bcU.js} (92%) rename frontend/dist/assets/{database-BZ4a6Qd1.js => database-BEyHF_p_.js} (89%) rename frontend/dist/assets/{download-Cxh-dhwT.js => download-IUkhheKK.js} (89%) rename frontend/dist/assets/{easing-D6lOfiWJ.js => easing-CXN4GmUW.js} (90%) rename frontend/dist/assets/{element-movement-C6F5QGkE.js => element-movement-D4o83B2Z.js} (98%) rename frontend/dist/assets/{funnel-DznwFNVG.js => funnel-BDRRJl0y.js} (89%) rename frontend/dist/assets/{hash-L59YOER_.js => hash-BkZp0AKy.js} (90%) rename frontend/dist/assets/{index-BaK1kOPF.js => index-B-prVW1V.js} (99%) rename frontend/dist/assets/{index-CdwYueSG.js => index-C8IY8K2r.js} (99%) rename frontend/dist/assets/{key-round-D-QO71kp.js => key-round-CQ-pu-yY.js} (91%) rename frontend/dist/assets/{layers-BiC-Ns73.js => layers-Oxzfug7f.js} (92%) rename frontend/dist/assets/{link-scoring-D5cTtUUv.js => link-scoring-CX7bMGSJ.js} (94%) rename frontend/dist/assets/{listbox-B4IRFwwn.js => listbox-BhQdM5DY.js} (99%) rename frontend/dist/assets/{map-pin-BTzarosW.js => map-pin-DMVHq6j8.js} (99%) rename frontend/dist/assets/{maplibre-gl-D2koUyR9.js => maplibre-gl-DihO1Cg6.js} (99%) rename frontend/dist/assets/{monitor-smartphone-CBUcuPPv.js => monitor-smartphone-DF_mmgOV.js} (91%) rename frontend/dist/assets/{network-CWIy2ZSo.js => network-DBkquEPb.js} (92%) rename frontend/dist/assets/{node-types-DedpfI8l.js => node-types-3T9Wr7vI.js} (95%) rename frontend/dist/assets/{payload-decoders-C2OKjW7M.js => payload-decoders-BX6pSxwl.js} (99%) rename frontend/dist/assets/{ping-C5xXtX1r.js => ping-lLlOzF2r.js} (94%) rename frontend/dist/assets/{plus-BxLpl_sF.js => plus-PWV57wbr.js} (86%) rename frontend/dist/assets/{primitives-BiOSQYsZ.js => primitives-Ca8Zb5cD.js} (98%) rename frontend/dist/assets/{refresh-cw-Bcz_yxe3.js => refresh-cw-BqACEANM.js} (91%) rename frontend/dist/assets/{search-DV-Xcdgb.js => search-zALFwCS4.js} (87%) rename frontend/dist/assets/{settings-2-OMoG5snn.js => settings-2-BUdn2-nA.js} (89%) rename frontend/dist/assets/{shield-C_TDkZ-m.js => shield-DlHwWwz2.js} (90%) rename frontend/dist/assets/{system-mluDEEwX.js => system-D5HdVkRh.js} (91%) rename frontend/dist/assets/{target-CAnStHns.js => target-DviLCm8U.js} (94%) rename frontend/dist/assets/{triangle-alert-DaComX7z.js => triangle-alert-8k00uu7o.js} (89%) rename frontend/dist/assets/{useMapViewStore-COYDTQJ4.js => useMapViewStore-ax-BqDpg.js} (97%) rename frontend/dist/assets/{usePipelineStore-DPGbI6IX.js => usePipelineStore-CyFB3GIy.js} (98%) rename frontend/dist/assets/{webgl-device-QoBMYpnS-CfTeH7s1.js => webgl-device-QoBMYpnS-BzCsS41F.js} (99%) rename frontend/dist/assets/{wifi-Af5E3WZ9.js => wifi-Cq9uCDyf.js} (90%) delete mode 100644 frontend/dist/file.svg delete mode 100644 frontend/dist/globe.svg delete mode 100644 frontend/dist/next.svg delete mode 100644 frontend/dist/vercel.svg delete mode 100644 frontend/dist/window.svg diff --git a/frontend/dist/VERSION b/frontend/dist/VERSION index 4248f6cc..2f8e85f7 100644 --- a/frontend/dist/VERSION +++ b/frontend/dist/VERSION @@ -1 +1 @@ -0.9.289 +0.9.290 diff --git a/frontend/dist/assets/AnalyzerFilterPanel-BWI2h57w.js b/frontend/dist/assets/AnalyzerFilterPanel-BPawhC5X.js similarity index 98% rename from frontend/dist/assets/AnalyzerFilterPanel-BWI2h57w.js rename to frontend/dist/assets/AnalyzerFilterPanel-BPawhC5X.js index 76739dbf..883f908d 100644 --- a/frontend/dist/assets/AnalyzerFilterPanel-BWI2h57w.js +++ b/frontend/dist/assets/AnalyzerFilterPanel-BPawhC5X.js @@ -1,4 +1,4 @@ -import{d as U,$ as J,r as u,j as n,bc as K,R as q,bL as G,B as Q}from"./index-CdwYueSG.js";import{c as V}from"./node-types-DedpfI8l.js";import{F as Y}from"./funnel-DznwFNVG.js";import{M as Z}from"./monitor-smartphone-CBUcuPPv.js";import{C as W}from"./circle-question-mark-Bdu9dBju.js";import{S as ee}from"./search-DV-Xcdgb.js";/** +import{d as U,$ as J,r as u,j as n,bc as K,R as q,bL as G,B as Q}from"./index-C8IY8K2r.js";import{c as V}from"./node-types-3T9Wr7vI.js";import{F as Y}from"./funnel-BDRRJl0y.js";import{M as Z}from"./monitor-smartphone-DF_mmgOV.js";import{C as W}from"./circle-question-mark-C7l07_IA.js";import{S as ee}from"./search-zALFwCS4.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. diff --git a/frontend/dist/assets/AnimatedNumber-CQ0Uhsch.js b/frontend/dist/assets/AnimatedNumber-BmJRWt4U.js similarity index 89% rename from frontend/dist/assets/AnimatedNumber-CQ0Uhsch.js rename to frontend/dist/assets/AnimatedNumber-BmJRWt4U.js index c8dfc378..a0e1c320 100644 --- a/frontend/dist/assets/AnimatedNumber-CQ0Uhsch.js +++ b/frontend/dist/assets/AnimatedNumber-BmJRWt4U.js @@ -1,4 +1,4 @@ -import{d as f,r as e,ci as l,j as m,cj as A}from"./index-CdwYueSG.js";import{A as h}from"./index-BaK1kOPF.js";/** +import{d as f,r as e,ci as l,j as m,cj as A}from"./index-C8IY8K2r.js";import{A as h}from"./index-B-prVW1V.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. diff --git a/frontend/dist/assets/BasemapLayer-DAxIlO26.js b/frontend/dist/assets/BasemapLayer-D5WYHXmJ.js similarity index 99% rename from frontend/dist/assets/BasemapLayer-DAxIlO26.js rename to frontend/dist/assets/BasemapLayer-D5WYHXmJ.js index e6a1cf8e..427d2d3c 100644 --- a/frontend/dist/assets/BasemapLayer-DAxIlO26.js +++ b/frontend/dist/assets/BasemapLayer-D5WYHXmJ.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CdwYueSG.js","assets/index-DUfCykEc.css"])))=>i.map(i=>d[i]); -import{r as i,bo as $,aD as B,bh as G}from"./index-CdwYueSG.js";const H=i.createContext(null);function K(){var s;const e=(s=i.useContext(H))==null?void 0:s.maps,t=i.useContext(w);return i.useMemo(()=>({...e,current:t==null?void 0:t.map}),[e,t])}function Y(e,t){const n=Array.isArray(e)?e[0]:e?e.x:0,s=Array.isArray(e)?e[1]:e?e.y:0,o=Array.isArray(t)?t[0]:t?t.x:0,r=Array.isArray(t)?t[1]:t?t.y:0;return n===o&&s===r}function v(e,t){if(e===t)return!0;if(!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n{let o=null;"interactive"in s&&(o=Object.assign({},s),delete o.interactive);const r=t[s.ref];if(r){o=o||Object.assign({},s),delete o.ref;for(const a of J)a in r&&(o[a]=r[a])}return o||s});return{...e,layers:n}}const A={version:8,sources:{},layers:[]},U={mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",click:"onClick",dblclick:"onDblClick",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",mouseout:"onMouseOut",contextmenu:"onContextMenu",touchstart:"onTouchStart",touchend:"onTouchEnd",touchmove:"onTouchMove",touchcancel:"onTouchCancel"},F={movestart:"onMoveStart",move:"onMove",moveend:"onMoveEnd",dragstart:"onDragStart",drag:"onDrag",dragend:"onDragEnd",zoomstart:"onZoomStart",zoom:"onZoom",zoomend:"onZoomEnd",rotatestart:"onRotateStart",rotate:"onRotate",rotateend:"onRotateEnd",pitchstart:"onPitchStart",pitch:"onPitch",pitchend:"onPitchEnd"},D={wheel:"onWheel",boxzoomstart:"onBoxZoomStart",boxzoomend:"onBoxZoomEnd",boxzoomcancel:"onBoxZoomCancel",resize:"onResize",load:"onLoad",render:"onRender",idle:"onIdle",remove:"onRemove",data:"onData",styledata:"onStyleData",sourcedata:"onSourceData",error:"onError"},X=["minZoom","maxZoom","minPitch","maxPitch","maxBounds","projection","renderWorldCopies"],Q=["scrollZoom","boxZoom","dragRotate","dragPan","keyboard","doubleClickZoom","touchZoomRotate","touchPitch"];class b{constructor(t,n,s){this._map=null,this._internalUpdate=!1,this._hoveredFeatures=null,this._propsedCameraUpdate=null,this._styleComponents={},this._onEvent=o=>{const r=this.props[D[o.type]];r?r(o):o.type==="error"&&console.error(o.error)},this._onCameraEvent=o=>{if(this._internalUpdate)return;o.viewState=this._propsedCameraUpdate||P(this._map.transform);const r=this.props[F[o.type]];r&&r(o)},this._onCameraUpdate=o=>this._internalUpdate?o:(this._propsedCameraUpdate=P(o),z(o,this.props)),this._onPointerEvent=o=>{(o.type==="mousemove"||o.type==="mouseout")&&this._updateHover(o);const r=this.props[U[o.type]];r&&(this.props.interactiveLayerIds&&o.type!=="mouseover"&&o.type!=="mouseout"&&(o.features=this._hoveredFeatures||this._queryRenderedFeatures(o.point)),r(o),delete o.features)},this._MapClass=t,this.props=n,this._initialize(s)}get map(){return this._map}setProps(t){const n=this.props;this.props=t;const s=this._updateSettings(t,n),o=this._updateSize(t),r=this._updateViewState(t);this._updateStyle(t,n),this._updateStyleComponents(t),this._updateHandlers(t,n),(s||o||r&&!this._map.isMoving())&&this.redraw()}static reuse(t,n){const s=b.savedMaps.pop();if(!s)return null;const o=s.map,r=o.getContainer();for(n.className=r.className;r.childNodes.length>0;)n.appendChild(r.childNodes[0]);o._container=n;const a=o._resizeObserver;a&&(a.disconnect(),a.observe(n)),s.setProps({...t,styleDiffing:!1}),o.resize();const{initialViewState:c}=t;return c&&(c.bounds?o.fitBounds(c.bounds,{...c.fitBoundsOptions,duration:0}):s._updateViewState(c)),o.isStyleLoaded()?o.fire("load"):o.once("style.load",()=>o.fire("load")),o._update(),s}_initialize(t){const{props:n}=this,{mapStyle:s=A}=n,o={...n,...n.initialViewState,container:t,style:O(s)},r=o.initialViewState||o.viewState||o;if(Object.assign(o,{center:[r.longitude||0,r.latitude||0],zoom:r.zoom||0,pitch:r.pitch||0,bearing:r.bearing||0}),n.gl){const c=HTMLCanvasElement.prototype.getContext;HTMLCanvasElement.prototype.getContext=()=>(HTMLCanvasElement.prototype.getContext=c,n.gl)}const a=new this._MapClass(o);r.padding&&a.setPadding(r.padding),n.cursor&&(a.getCanvas().style.cursor=n.cursor),a.transformCameraUpdate=this._onCameraUpdate,a.on("style.load",()=>{var c;this._styleComponents={light:a.getLight(),sky:a.getSky(),projection:(c=a.getProjection)==null?void 0:c.call(a),terrain:a.getTerrain()},this._updateStyleComponents(this.props)}),a.on("sourcedata",()=>{this._updateStyleComponents(this.props)});for(const c in U)a.on(c,this._onPointerEvent);for(const c in F)a.on(c,this._onCameraEvent);for(const c in D)a.on(c,this._onEvent);this._map=a}recycle(){const n=this.map.getContainer().querySelector("[mapboxgl-children]");n==null||n.remove(),b.savedMaps.push(this)}destroy(){this._map.remove()}redraw(){const t=this._map;t.style&&(t._frame&&(t._frame.cancel(),t._frame=null),t._render())}_updateSize(t){const{viewState:n}=t;if(n){const s=this._map;if(n.width!==s.transform.width||n.height!==s.transform.height)return s.resize(),!0}return!1}_updateViewState(t){const n=this._map,s=n.transform;if(!n.isMoving()){const r=z(s,t);if(Object.keys(r).length>0)return this._internalUpdate=!0,n.jumpTo(r),this._internalUpdate=!1,!0}return!1}_updateSettings(t,n){const s=this._map;let o=!1;for(const r of X)if(r in t&&!v(t[r],n[r])){o=!0;const a=s[`set${r[0].toUpperCase()}${r.slice(1)}`];a==null||a.call(s,t[r])}return o}_updateStyle(t,n){if(t.cursor!==n.cursor&&(this._map.getCanvas().style.cursor=t.cursor||""),t.mapStyle!==n.mapStyle){const{mapStyle:s=A,styleDiffing:o=!0}=t,r={diff:o};"localIdeographFontFamily"in t&&(r.localIdeographFontFamily=t.localIdeographFontFamily),this._map.setStyle(O(s),r)}}_updateStyleComponents({light:t,projection:n,sky:s,terrain:o}){var c,u;const r=this._map,a=this._styleComponents;r.style._loaded&&(t&&!v(t,a.light)&&(a.light=t,r.setLight(t)),n&&!v(n,a.projection)&&n!==((c=a.projection)==null?void 0:c.type)&&(a.projection=typeof n=="string"?{type:n}:n,(u=r.setProjection)==null||u.call(r,a.projection)),s&&!v(s,a.sky)&&(a.sky=s,r.setSky(s)),o!==void 0&&!v(o,a.terrain)&&(!o||r.getSource(o.source))&&(a.terrain=o,r.setTerrain(o)))}_updateHandlers(t,n){const s=this._map;for(const o of Q){const r=t[o]??!0,a=n[o]??!0;v(r,a)||(r?s[o].enable(r):s[o].disable())}}_queryRenderedFeatures(t){const n=this._map,{interactiveLayerIds:s=[]}=this.props;try{return n.queryRenderedFeatures(t,{layers:s.filter(n.getLayer.bind(n))})}catch{return[]}}_updateHover(t){var o;const{props:n}=this;if(n.interactiveLayerIds&&(n.onMouseMove||n.onMouseEnter||n.onMouseLeave)){const r=t.type,a=((o=this._hoveredFeatures)==null?void 0:o.length)>0,c=this._queryRenderedFeatures(t.point),u=c.length>0;!u&&a&&(t.type="mouseleave",this._onPointerEvent(t)),this._hoveredFeatures=c,u&&!a&&(t.type="mouseenter",this._onPointerEvent(t)),t.type=r}else this._hoveredFeatures=null}}b.savedMaps=[];const ee=["setMaxBounds","setMinZoom","setMaxZoom","setMinPitch","setMaxPitch","setRenderWorldCopies","setProjection","setStyle","addSource","removeSource","addLayer","removeLayer","setLayerZoomRange","setFilter","setPaintProperty","setLayoutProperty","setLight","setTerrain","setFog","remove"];function te(e){if(!e)return null;const t=e.map,n={getMap:()=>t};for(const s of ne(t))!(s in n)&&!ee.includes(s)&&(n[s]=t[s].bind(t));return n}function ne(e){const t=new Set;let n=e;for(;n;){for(const s of Object.getOwnPropertyNames(n))s[0]!=="_"&&typeof e[s]=="function"&&s!=="fire"&&s!=="setEventedParent"&&t.add(s);n=Object.getPrototypeOf(n)}return Array.from(t)}const oe=typeof document<"u"?i.useLayoutEffect:i.useEffect;function re(e,t){const{RTLTextPlugin:n,maxParallelImageRequests:s,workerCount:o,workerUrl:r}=t;if(n&&e.getRTLTextPluginStatus&&e.getRTLTextPluginStatus()==="unavailable"){const{pluginUrl:a,lazy:c=!0}=typeof n=="string"?{pluginUrl:n}:n;e.setRTLTextPlugin(a,u=>{u&&console.error(u)},c)}s!==void 0&&e.setMaxParallelImageRequests(s),o!==void 0&&e.setWorkerCount(o),r!==void 0&&e.setWorkerUrl(r)}const w=i.createContext(null);function se(e,t){const n=i.useContext(H),[s,o]=i.useState(null),r=i.useRef(),{current:a}=i.useRef({mapLib:null,map:null});i.useEffect(()=>{const l=e.mapLib;let d=!0,f;return Promise.resolve(l||$(()=>import("./maplibre-gl-D2koUyR9.js").then(m=>m.m),__vite__mapDeps([0,1]))).then(m=>{if(!d)return;if(!m)throw new Error("Invalid mapLib");const y="Map"in m?m:m.default;if(!y.Map)throw new Error("Invalid mapLib");re(y,e),e.reuseMaps&&(f=b.reuse(e,r.current)),f||(f=new b(y.Map,e,r.current)),a.map=te(f),a.mapLib=y,o(f),n==null||n.onMapMount(a.map,e.id)}).catch(m=>{const{onError:y}=e;y?y({type:"error",target:null,originalEvent:null,error:m}):console.error(m)}),()=>{d=!1,f&&(n==null||n.onMapUnmount(e.id),e.reuseMaps?f.recycle():f.destroy())}},[]),oe(()=>{s&&s.setProps(e)}),i.useImperativeHandle(t,()=>a.map,[s]);const c=i.useMemo(()=>({position:"relative",width:"100%",height:"100%",...e.style}),[e.style]),u={height:"100%"};return i.createElement("div",{id:e.id,ref:r,style:c},s&&i.createElement(w.Provider,{value:a},i.createElement("div",{"mapboxgl-children":"",style:u},e.children)))}const Me=i.forwardRef(se),ae=/box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;function L(e,t){if(!e||!t)return;const n=e.style;for(const s in t){const o=t[s];Number.isFinite(o)&&!ae.test(s)?n[s]=`${o}px`:n[s]=o}}function Z(e,t){if(e===t)return null;const n=N(e),s=N(t),o=[];for(const r of s)n.has(r)||o.push(r);for(const r of n)s.has(r)||o.push(r);return o.length===0?null:o}function N(e){return new Set(e?e.trim().split(/\s+/):[])}const be=i.memo(i.forwardRef((e,t)=>{const{map:n,mapLib:s}=i.useContext(w),o=i.useRef({props:e}),r=i.useMemo(()=>{let E=!1;i.Children.forEach(e.children,h=>{h&&(E=!0)});const k={...e,element:E?document.createElement("div"):void 0},p=new s.Marker(k);return p.setLngLat([e.longitude,e.latitude]),p.getElement().addEventListener("click",h=>{var g,_;(_=(g=o.current.props).onClick)==null||_.call(g,{type:"click",target:p,originalEvent:h})}),p.on("dragstart",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDragStart)==null||S.call(_,g)}),p.on("drag",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDrag)==null||S.call(_,g)}),p.on("dragend",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDragEnd)==null||S.call(_,g)}),p},[]);i.useEffect(()=>(r.addTo(n.getMap()),()=>{r.remove()}),[]);const{longitude:a,latitude:c,offset:u,style:l,draggable:d=!1,popup:f=null,rotation:m=0,rotationAlignment:y="auto",pitchAlignment:C="auto"}=e;i.useEffect(()=>{L(r.getElement(),l)},[l]),i.useImperativeHandle(t,()=>r,[]);const T=o.current.props;(r.getLngLat().lng!==a||r.getLngLat().lat!==c)&&r.setLngLat([a,c]),u&&!Y(r.getOffset(),u)&&r.setOffset(u),r.isDraggable()!==d&&r.setDraggable(d),r.getRotation()!==m&&r.setRotation(m),r.getRotationAlignment()!==y&&r.setRotationAlignment(y),r.getPitchAlignment()!==C&&r.setPitchAlignment(C),r.getPopup()!==f&&r.setPopup(f);const x=Z(T.className,e.className);if(x)for(const E of x)r.toggleClassName(E);return o.current.props=e,B.createPortal(e.children,r.getElement())})),xe=i.memo(i.forwardRef((e,t)=>{const{map:n,mapLib:s}=i.useContext(w),o=i.useMemo(()=>document.createElement("div"),[]),r=i.useRef({props:e}),a=i.useMemo(()=>{const c={...e},u=new s.Popup(c);return u.setLngLat([e.longitude,e.latitude]),u.once("open",l=>{var d,f;(f=(d=r.current.props).onOpen)==null||f.call(d,l)}),u},[]);if(i.useEffect(()=>{const c=u=>{var l,d;(d=(l=r.current.props).onClose)==null||d.call(l,u)};return a.on("close",c),a.setDOMContent(o).addTo(n.getMap()),()=>{a.off("close",c),a.isOpen()&&a.remove()}},[]),i.useEffect(()=>{L(a.getElement(),e.style)},[e.style]),i.useImperativeHandle(t,()=>a,[]),a.isOpen()){const c=r.current.props;(a.getLngLat().lng!==e.longitude||a.getLngLat().lat!==e.latitude)&&a.setLngLat([e.longitude,e.latitude]),e.offset&&!v(c.offset,e.offset)&&a.setOffset(e.offset),(c.anchor!==e.anchor||c.maxWidth!==e.maxWidth)&&(a.options.anchor=e.anchor,a.setMaxWidth(e.maxWidth));const u=Z(c.className,e.className);if(u)for(const l of u)a.toggleClassName(l);r.current.props=e}return B.createPortal(e.children,o)}));function M(e,t,n,s){const o=i.useContext(w),r=i.useMemo(()=>e(o),[]);return i.useEffect(()=>{const a=t,c=null,u=typeof t=="function"?t:null,{map:l}=o;return l.hasControl(r)||(l.addControl(r,a==null?void 0:a.position),c&&c(o)),()=>{u&&u(o),l.hasControl(r)&&l.removeControl(r)}},[]),r}function ie(e){const t=M(({mapLib:n})=>new n.AttributionControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(ie);function ce(e){const t=M(({mapLib:n})=>new n.FullscreenControl({container:e.containerId&&document.getElementById(e.containerId)}),{position:e.position});return i.useEffect(()=>{L(t._controlContainer,e.style)},[e.style]),null}i.memo(ce);function le(e,t){const n=i.useRef({props:e}),s=M(({mapLib:o})=>{const r=new o.GeolocateControl(e),a=r._setupUI;return r._setupUI=()=>{r._container.hasChildNodes()||a()},r.on("geolocate",c=>{var u,l;(l=(u=n.current.props).onGeolocate)==null||l.call(u,c)}),r.on("error",c=>{var u,l;(l=(u=n.current.props).onError)==null||l.call(u,c)}),r.on("outofmaxbounds",c=>{var u,l;(l=(u=n.current.props).onOutOfMaxBounds)==null||l.call(u,c)}),r.on("trackuserlocationstart",c=>{var u,l;(l=(u=n.current.props).onTrackUserLocationStart)==null||l.call(u,c)}),r.on("trackuserlocationend",c=>{var u,l;(l=(u=n.current.props).onTrackUserLocationEnd)==null||l.call(u,c)}),r},{position:e.position});return n.current.props=e,i.useImperativeHandle(t,()=>s,[]),i.useEffect(()=>{L(s._container,e.style)},[e.style]),null}i.memo(i.forwardRef(le));function ue(e){const t=M(({mapLib:n})=>new n.NavigationControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(ue);function fe(e){const t=M(({mapLib:r})=>new r.ScaleControl(e),{position:e.position}),n=i.useRef(e),s=n.current;n.current=e;const{style:o}=e;return e.maxWidth!==void 0&&e.maxWidth!==s.maxWidth&&(t.options.maxWidth=e.maxWidth),e.unit!==void 0&&e.unit!==s.unit&&t.setUnit(e.unit),i.useEffect(()=>{L(t._container,o)},[o]),null}const ke=i.memo(fe);function de(e){const t=M(({mapLib:n})=>new n.TerrainControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(de);function me(e){const t=M(({mapLib:n})=>new n.LogoControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(me);function R(e,t){if(!e)throw new Error(t)}let ye=0;function ge(e,t,n){if(e.style&&e.style._loaded){const s={...n};return delete s.id,delete s.children,e.addSource(t,s),e.getSource(t)}return null}function he(e,t,n){var a,c,u;R(t.id===n.id,"source id changed"),R(t.type===n.type,"source type changed");let s="",o=0;for(const l in t)l!=="children"&&l!=="id"&&!v(n[l],t[l])&&(s=l,o++);if(!o)return;const r=t.type;if(r==="geojson")e.setData(t.data);else if(r==="image")e.updateImage({url:t.url,coordinates:t.coordinates});else switch(s){case"coordinates":(a=e.setCoordinates)==null||a.call(e,t.coordinates);break;case"url":(c=e.setUrl)==null||c.call(e,t.url);break;case"tiles":(u=e.setTiles)==null||u.call(e,t.tiles);break;default:console.warn(`Unable to update prop: ${s}`)}}function Re(e){const t=i.useContext(w).map.getMap(),n=i.useRef(e),[,s]=i.useState(0),o=i.useMemo(()=>e.id||`jsx-source-${ye++}`,[]);i.useEffect(()=>{if(t){const a=()=>setTimeout(()=>s(c=>c+1),0);return t.on("styledata",a),a(),()=>{var c;if(t.off("styledata",a),t.style&&t.style._loaded&&t.getSource(o)){const u=(c=t.getStyle())==null?void 0:c.layers;if(u)for(const l of u)l.source===o&&t.removeLayer(l.id);t.removeSource(o)}}}},[t]);let r=t&&t.style&&t.getSource(o);return r?he(r,e,n.current):r=ge(t,o,e),n.current=e,r&&i.Children.map(e.children,a=>a&&i.cloneElement(a,{source:o}))||null}function pe(e,t,n,s){if(R(n.id===s.id,"layer id changed"),R(n.type===s.type,"layer type changed"),n.type==="custom"||s.type==="custom")return;const{layout:o={},paint:r={},filter:a,minzoom:c,maxzoom:u,beforeId:l}=n;if(l!==s.beforeId&&e.moveLayer(t,l),o!==s.layout){const d=s.layout||{};for(const f in o)v(o[f],d[f])||e.setLayoutProperty(t,f,o[f]);for(const f in d)o.hasOwnProperty(f)||e.setLayoutProperty(t,f,void 0)}if(r!==s.paint){const d=s.paint||{};for(const f in r)v(r[f],d[f])||e.setPaintProperty(t,f,r[f]);for(const f in d)r.hasOwnProperty(f)||e.setPaintProperty(t,f,void 0)}v(a,s.filter)||e.setFilter(t,a),(c!==s.minzoom||u!==s.maxzoom)&&e.setLayerZoomRange(t,c,u)}function ve(e,t,n){if(e.style&&e.style._loaded&&(!("source"in n)||e.getSource(n.source))){const s={...n,id:t};delete s.beforeId,e.addLayer(s,n.beforeId)}}let _e=0;function Ie(e){const t=i.useContext(w).map.getMap(),n=i.useRef(e),[,s]=i.useState(0),o=i.useMemo(()=>e.id||`jsx-layer-${_e++}`,[]);if(i.useEffect(()=>{if(t){const a=()=>s(c=>c+1);return t.on("styledata",a),a(),()=>{t.off("styledata",a),t.style&&t.style._loaded&&t.getLayer(o)&&t.removeLayer(o)}}},[t]),t&&t.style&&t.getLayer(o))try{pe(t,o,e,n.current)}catch(a){console.warn(a)}else ve(t,o,e);return n.current=e,null}const V="pymc-basemap-mode",j="dark";function Le(){if(typeof window>"u")return j;try{const e=localStorage.getItem(V);if(e==="light"||e==="dark")return e}catch{}return j}function W(e){if(!(typeof window>"u"))try{localStorage.setItem(V,e)}catch{}}const q=G(e=>({mode:Le(),toggle:()=>e(t=>{const n=t.mode==="light"?"dark":"light";return W(n),{mode:n}}),setMode:t=>{W(t),e({mode:t})}})),Te=()=>q(e=>e.mode),Pe=()=>q(e=>e.toggle),Ce={light:"https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",dark:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json"},Se={light:"basemap-light-",dark:"basemap-dark-"},I={};async function Ee(e){if(I[e])return I[e];const n=await(await fetch(Ce[e])).json();return I[e]=n,n}function ze({mode:e}){const{current:t}=K(),[n,s]=i.useState(null),o=i.useRef({light:!1,dark:!1}),r=i.useRef({light:[],dark:[]});i.useEffect(()=>{const l=()=>{var y;const m=(y=t==null?void 0:t.getMap)==null?void 0:y.call(t);m&&!n&&s(m)};l();const d=setInterval(l,50),f=setTimeout(()=>clearInterval(d),5e3);return()=>{clearInterval(d),clearTimeout(f)}},[t,n]);const a=i.useCallback(async(l,d,f)=>{var E,k;if(o.current[d])return;const m=Se[d],y=await Ee(d),C=[];for(const[p,h]of Object.entries(y.sources||{})){const g=m+p;l.getSource(g)||l.addSource(g,h)}const x=(k=(((E=l.getStyle())==null?void 0:E.layers)||[]).find(p=>!p.id.startsWith("basemap-light-")&&!p.id.startsWith("basemap-dark-")))==null?void 0:k.id;for(const p of y.layers||[]){const h=m+p.id;if(C.push(h),l.getLayer(h))continue;const g={...p,id:h};"source"in g&&typeof g.source=="string"&&(g.source=m+g.source),g.layout||(g.layout={}),g.layout.visibility=f?"visible":"none";try{l.addLayer(g,x)}catch(_){console.warn(`[BasemapLayer] Failed to add layer ${h}:`,_)}}r.current[d]=C,o.current[d]=!0},[]),c=i.useCallback((l,d,f)=>{const m=r.current[d],y=f?"visible":"none";for(const C of m)if(l.getLayer(C))try{l.setLayoutProperty(C,"visibility",y)}catch{}},[]),u=i.useCallback(l=>{var m;const f=(((m=l.getStyle())==null?void 0:m.layers)||[]).filter(y=>!y.id.startsWith("basemap-light-")&&!y.id.startsWith("basemap-dark-"));for(const y of f)try{l.moveLayer(y.id)}catch{}},[]);return i.useEffect(()=>{if(!n)return;const l=d=>{n.hasImage(d.id)||n.addImage(d.id,{width:1,height:1,data:new Uint8Array([0,0,0,0])})};return n.on("styleimagemissing",l),()=>{n.off("styleimagemissing",l)}},[n]),i.useEffect(()=>{if(!n)return;let l=!1;const d=async()=>{if(!l)try{await Promise.all([a(n,"light",e==="light"),a(n,"dark",e==="dark")]),l||u(n)}catch(m){console.error("[BasemapLayer] Setup error:",m)}};n.isStyleLoaded()?d():(n.once("style.load",d),n.once("load",()=>{!l&&!o.current.light&&d()}));const f=()=>{l||setTimeout(()=>{!l&&o.current.light&&o.current.dark&&u(n)},100)};return n.on("styledata",f),()=>{l=!0,n.off("styledata",f)}},[n,a,u,e]),i.useEffect(()=>{n&&(!o.current.light||!o.current.dark||(c(n,"light",e==="light"),c(n,"dark",e==="dark")))},[n,e,c]),null}export{ze as B,Ie as L,Me as M,xe as P,Re as S,be as a,K as b,Pe as c,ke as d,Te as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-C8IY8K2r.js","assets/index-DUfCykEc.css"])))=>i.map(i=>d[i]); +import{r as i,bo as $,aD as B,bh as G}from"./index-C8IY8K2r.js";const H=i.createContext(null);function K(){var s;const e=(s=i.useContext(H))==null?void 0:s.maps,t=i.useContext(w);return i.useMemo(()=>({...e,current:t==null?void 0:t.map}),[e,t])}function Y(e,t){const n=Array.isArray(e)?e[0]:e?e.x:0,s=Array.isArray(e)?e[1]:e?e.y:0,o=Array.isArray(t)?t[0]:t?t.x:0,r=Array.isArray(t)?t[1]:t?t.y:0;return n===o&&s===r}function v(e,t){if(e===t)return!0;if(!e||!t)return!1;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n{let o=null;"interactive"in s&&(o=Object.assign({},s),delete o.interactive);const r=t[s.ref];if(r){o=o||Object.assign({},s),delete o.ref;for(const a of J)a in r&&(o[a]=r[a])}return o||s});return{...e,layers:n}}const A={version:8,sources:{},layers:[]},U={mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",click:"onClick",dblclick:"onDblClick",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",mouseout:"onMouseOut",contextmenu:"onContextMenu",touchstart:"onTouchStart",touchend:"onTouchEnd",touchmove:"onTouchMove",touchcancel:"onTouchCancel"},F={movestart:"onMoveStart",move:"onMove",moveend:"onMoveEnd",dragstart:"onDragStart",drag:"onDrag",dragend:"onDragEnd",zoomstart:"onZoomStart",zoom:"onZoom",zoomend:"onZoomEnd",rotatestart:"onRotateStart",rotate:"onRotate",rotateend:"onRotateEnd",pitchstart:"onPitchStart",pitch:"onPitch",pitchend:"onPitchEnd"},D={wheel:"onWheel",boxzoomstart:"onBoxZoomStart",boxzoomend:"onBoxZoomEnd",boxzoomcancel:"onBoxZoomCancel",resize:"onResize",load:"onLoad",render:"onRender",idle:"onIdle",remove:"onRemove",data:"onData",styledata:"onStyleData",sourcedata:"onSourceData",error:"onError"},X=["minZoom","maxZoom","minPitch","maxPitch","maxBounds","projection","renderWorldCopies"],Q=["scrollZoom","boxZoom","dragRotate","dragPan","keyboard","doubleClickZoom","touchZoomRotate","touchPitch"];class b{constructor(t,n,s){this._map=null,this._internalUpdate=!1,this._hoveredFeatures=null,this._propsedCameraUpdate=null,this._styleComponents={},this._onEvent=o=>{const r=this.props[D[o.type]];r?r(o):o.type==="error"&&console.error(o.error)},this._onCameraEvent=o=>{if(this._internalUpdate)return;o.viewState=this._propsedCameraUpdate||P(this._map.transform);const r=this.props[F[o.type]];r&&r(o)},this._onCameraUpdate=o=>this._internalUpdate?o:(this._propsedCameraUpdate=P(o),z(o,this.props)),this._onPointerEvent=o=>{(o.type==="mousemove"||o.type==="mouseout")&&this._updateHover(o);const r=this.props[U[o.type]];r&&(this.props.interactiveLayerIds&&o.type!=="mouseover"&&o.type!=="mouseout"&&(o.features=this._hoveredFeatures||this._queryRenderedFeatures(o.point)),r(o),delete o.features)},this._MapClass=t,this.props=n,this._initialize(s)}get map(){return this._map}setProps(t){const n=this.props;this.props=t;const s=this._updateSettings(t,n),o=this._updateSize(t),r=this._updateViewState(t);this._updateStyle(t,n),this._updateStyleComponents(t),this._updateHandlers(t,n),(s||o||r&&!this._map.isMoving())&&this.redraw()}static reuse(t,n){const s=b.savedMaps.pop();if(!s)return null;const o=s.map,r=o.getContainer();for(n.className=r.className;r.childNodes.length>0;)n.appendChild(r.childNodes[0]);o._container=n;const a=o._resizeObserver;a&&(a.disconnect(),a.observe(n)),s.setProps({...t,styleDiffing:!1}),o.resize();const{initialViewState:c}=t;return c&&(c.bounds?o.fitBounds(c.bounds,{...c.fitBoundsOptions,duration:0}):s._updateViewState(c)),o.isStyleLoaded()?o.fire("load"):o.once("style.load",()=>o.fire("load")),o._update(),s}_initialize(t){const{props:n}=this,{mapStyle:s=A}=n,o={...n,...n.initialViewState,container:t,style:O(s)},r=o.initialViewState||o.viewState||o;if(Object.assign(o,{center:[r.longitude||0,r.latitude||0],zoom:r.zoom||0,pitch:r.pitch||0,bearing:r.bearing||0}),n.gl){const c=HTMLCanvasElement.prototype.getContext;HTMLCanvasElement.prototype.getContext=()=>(HTMLCanvasElement.prototype.getContext=c,n.gl)}const a=new this._MapClass(o);r.padding&&a.setPadding(r.padding),n.cursor&&(a.getCanvas().style.cursor=n.cursor),a.transformCameraUpdate=this._onCameraUpdate,a.on("style.load",()=>{var c;this._styleComponents={light:a.getLight(),sky:a.getSky(),projection:(c=a.getProjection)==null?void 0:c.call(a),terrain:a.getTerrain()},this._updateStyleComponents(this.props)}),a.on("sourcedata",()=>{this._updateStyleComponents(this.props)});for(const c in U)a.on(c,this._onPointerEvent);for(const c in F)a.on(c,this._onCameraEvent);for(const c in D)a.on(c,this._onEvent);this._map=a}recycle(){const n=this.map.getContainer().querySelector("[mapboxgl-children]");n==null||n.remove(),b.savedMaps.push(this)}destroy(){this._map.remove()}redraw(){const t=this._map;t.style&&(t._frame&&(t._frame.cancel(),t._frame=null),t._render())}_updateSize(t){const{viewState:n}=t;if(n){const s=this._map;if(n.width!==s.transform.width||n.height!==s.transform.height)return s.resize(),!0}return!1}_updateViewState(t){const n=this._map,s=n.transform;if(!n.isMoving()){const r=z(s,t);if(Object.keys(r).length>0)return this._internalUpdate=!0,n.jumpTo(r),this._internalUpdate=!1,!0}return!1}_updateSettings(t,n){const s=this._map;let o=!1;for(const r of X)if(r in t&&!v(t[r],n[r])){o=!0;const a=s[`set${r[0].toUpperCase()}${r.slice(1)}`];a==null||a.call(s,t[r])}return o}_updateStyle(t,n){if(t.cursor!==n.cursor&&(this._map.getCanvas().style.cursor=t.cursor||""),t.mapStyle!==n.mapStyle){const{mapStyle:s=A,styleDiffing:o=!0}=t,r={diff:o};"localIdeographFontFamily"in t&&(r.localIdeographFontFamily=t.localIdeographFontFamily),this._map.setStyle(O(s),r)}}_updateStyleComponents({light:t,projection:n,sky:s,terrain:o}){var c,u;const r=this._map,a=this._styleComponents;r.style._loaded&&(t&&!v(t,a.light)&&(a.light=t,r.setLight(t)),n&&!v(n,a.projection)&&n!==((c=a.projection)==null?void 0:c.type)&&(a.projection=typeof n=="string"?{type:n}:n,(u=r.setProjection)==null||u.call(r,a.projection)),s&&!v(s,a.sky)&&(a.sky=s,r.setSky(s)),o!==void 0&&!v(o,a.terrain)&&(!o||r.getSource(o.source))&&(a.terrain=o,r.setTerrain(o)))}_updateHandlers(t,n){const s=this._map;for(const o of Q){const r=t[o]??!0,a=n[o]??!0;v(r,a)||(r?s[o].enable(r):s[o].disable())}}_queryRenderedFeatures(t){const n=this._map,{interactiveLayerIds:s=[]}=this.props;try{return n.queryRenderedFeatures(t,{layers:s.filter(n.getLayer.bind(n))})}catch{return[]}}_updateHover(t){var o;const{props:n}=this;if(n.interactiveLayerIds&&(n.onMouseMove||n.onMouseEnter||n.onMouseLeave)){const r=t.type,a=((o=this._hoveredFeatures)==null?void 0:o.length)>0,c=this._queryRenderedFeatures(t.point),u=c.length>0;!u&&a&&(t.type="mouseleave",this._onPointerEvent(t)),this._hoveredFeatures=c,u&&!a&&(t.type="mouseenter",this._onPointerEvent(t)),t.type=r}else this._hoveredFeatures=null}}b.savedMaps=[];const ee=["setMaxBounds","setMinZoom","setMaxZoom","setMinPitch","setMaxPitch","setRenderWorldCopies","setProjection","setStyle","addSource","removeSource","addLayer","removeLayer","setLayerZoomRange","setFilter","setPaintProperty","setLayoutProperty","setLight","setTerrain","setFog","remove"];function te(e){if(!e)return null;const t=e.map,n={getMap:()=>t};for(const s of ne(t))!(s in n)&&!ee.includes(s)&&(n[s]=t[s].bind(t));return n}function ne(e){const t=new Set;let n=e;for(;n;){for(const s of Object.getOwnPropertyNames(n))s[0]!=="_"&&typeof e[s]=="function"&&s!=="fire"&&s!=="setEventedParent"&&t.add(s);n=Object.getPrototypeOf(n)}return Array.from(t)}const oe=typeof document<"u"?i.useLayoutEffect:i.useEffect;function re(e,t){const{RTLTextPlugin:n,maxParallelImageRequests:s,workerCount:o,workerUrl:r}=t;if(n&&e.getRTLTextPluginStatus&&e.getRTLTextPluginStatus()==="unavailable"){const{pluginUrl:a,lazy:c=!0}=typeof n=="string"?{pluginUrl:n}:n;e.setRTLTextPlugin(a,u=>{u&&console.error(u)},c)}s!==void 0&&e.setMaxParallelImageRequests(s),o!==void 0&&e.setWorkerCount(o),r!==void 0&&e.setWorkerUrl(r)}const w=i.createContext(null);function se(e,t){const n=i.useContext(H),[s,o]=i.useState(null),r=i.useRef(),{current:a}=i.useRef({mapLib:null,map:null});i.useEffect(()=>{const l=e.mapLib;let d=!0,f;return Promise.resolve(l||$(()=>import("./maplibre-gl-DihO1Cg6.js").then(m=>m.m),__vite__mapDeps([0,1]))).then(m=>{if(!d)return;if(!m)throw new Error("Invalid mapLib");const y="Map"in m?m:m.default;if(!y.Map)throw new Error("Invalid mapLib");re(y,e),e.reuseMaps&&(f=b.reuse(e,r.current)),f||(f=new b(y.Map,e,r.current)),a.map=te(f),a.mapLib=y,o(f),n==null||n.onMapMount(a.map,e.id)}).catch(m=>{const{onError:y}=e;y?y({type:"error",target:null,originalEvent:null,error:m}):console.error(m)}),()=>{d=!1,f&&(n==null||n.onMapUnmount(e.id),e.reuseMaps?f.recycle():f.destroy())}},[]),oe(()=>{s&&s.setProps(e)}),i.useImperativeHandle(t,()=>a.map,[s]);const c=i.useMemo(()=>({position:"relative",width:"100%",height:"100%",...e.style}),[e.style]),u={height:"100%"};return i.createElement("div",{id:e.id,ref:r,style:c},s&&i.createElement(w.Provider,{value:a},i.createElement("div",{"mapboxgl-children":"",style:u},e.children)))}const Me=i.forwardRef(se),ae=/box|flex|grid|column|lineHeight|fontWeight|opacity|order|tabSize|zIndex/;function L(e,t){if(!e||!t)return;const n=e.style;for(const s in t){const o=t[s];Number.isFinite(o)&&!ae.test(s)?n[s]=`${o}px`:n[s]=o}}function Z(e,t){if(e===t)return null;const n=N(e),s=N(t),o=[];for(const r of s)n.has(r)||o.push(r);for(const r of n)s.has(r)||o.push(r);return o.length===0?null:o}function N(e){return new Set(e?e.trim().split(/\s+/):[])}const be=i.memo(i.forwardRef((e,t)=>{const{map:n,mapLib:s}=i.useContext(w),o=i.useRef({props:e}),r=i.useMemo(()=>{let E=!1;i.Children.forEach(e.children,h=>{h&&(E=!0)});const k={...e,element:E?document.createElement("div"):void 0},p=new s.Marker(k);return p.setLngLat([e.longitude,e.latitude]),p.getElement().addEventListener("click",h=>{var g,_;(_=(g=o.current.props).onClick)==null||_.call(g,{type:"click",target:p,originalEvent:h})}),p.on("dragstart",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDragStart)==null||S.call(_,g)}),p.on("drag",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDrag)==null||S.call(_,g)}),p.on("dragend",h=>{var _,S;const g=h;g.lngLat=r.getLngLat(),(S=(_=o.current.props).onDragEnd)==null||S.call(_,g)}),p},[]);i.useEffect(()=>(r.addTo(n.getMap()),()=>{r.remove()}),[]);const{longitude:a,latitude:c,offset:u,style:l,draggable:d=!1,popup:f=null,rotation:m=0,rotationAlignment:y="auto",pitchAlignment:C="auto"}=e;i.useEffect(()=>{L(r.getElement(),l)},[l]),i.useImperativeHandle(t,()=>r,[]);const T=o.current.props;(r.getLngLat().lng!==a||r.getLngLat().lat!==c)&&r.setLngLat([a,c]),u&&!Y(r.getOffset(),u)&&r.setOffset(u),r.isDraggable()!==d&&r.setDraggable(d),r.getRotation()!==m&&r.setRotation(m),r.getRotationAlignment()!==y&&r.setRotationAlignment(y),r.getPitchAlignment()!==C&&r.setPitchAlignment(C),r.getPopup()!==f&&r.setPopup(f);const x=Z(T.className,e.className);if(x)for(const E of x)r.toggleClassName(E);return o.current.props=e,B.createPortal(e.children,r.getElement())})),xe=i.memo(i.forwardRef((e,t)=>{const{map:n,mapLib:s}=i.useContext(w),o=i.useMemo(()=>document.createElement("div"),[]),r=i.useRef({props:e}),a=i.useMemo(()=>{const c={...e},u=new s.Popup(c);return u.setLngLat([e.longitude,e.latitude]),u.once("open",l=>{var d,f;(f=(d=r.current.props).onOpen)==null||f.call(d,l)}),u},[]);if(i.useEffect(()=>{const c=u=>{var l,d;(d=(l=r.current.props).onClose)==null||d.call(l,u)};return a.on("close",c),a.setDOMContent(o).addTo(n.getMap()),()=>{a.off("close",c),a.isOpen()&&a.remove()}},[]),i.useEffect(()=>{L(a.getElement(),e.style)},[e.style]),i.useImperativeHandle(t,()=>a,[]),a.isOpen()){const c=r.current.props;(a.getLngLat().lng!==e.longitude||a.getLngLat().lat!==e.latitude)&&a.setLngLat([e.longitude,e.latitude]),e.offset&&!v(c.offset,e.offset)&&a.setOffset(e.offset),(c.anchor!==e.anchor||c.maxWidth!==e.maxWidth)&&(a.options.anchor=e.anchor,a.setMaxWidth(e.maxWidth));const u=Z(c.className,e.className);if(u)for(const l of u)a.toggleClassName(l);r.current.props=e}return B.createPortal(e.children,o)}));function M(e,t,n,s){const o=i.useContext(w),r=i.useMemo(()=>e(o),[]);return i.useEffect(()=>{const a=t,c=null,u=typeof t=="function"?t:null,{map:l}=o;return l.hasControl(r)||(l.addControl(r,a==null?void 0:a.position),c&&c(o)),()=>{u&&u(o),l.hasControl(r)&&l.removeControl(r)}},[]),r}function ie(e){const t=M(({mapLib:n})=>new n.AttributionControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(ie);function ce(e){const t=M(({mapLib:n})=>new n.FullscreenControl({container:e.containerId&&document.getElementById(e.containerId)}),{position:e.position});return i.useEffect(()=>{L(t._controlContainer,e.style)},[e.style]),null}i.memo(ce);function le(e,t){const n=i.useRef({props:e}),s=M(({mapLib:o})=>{const r=new o.GeolocateControl(e),a=r._setupUI;return r._setupUI=()=>{r._container.hasChildNodes()||a()},r.on("geolocate",c=>{var u,l;(l=(u=n.current.props).onGeolocate)==null||l.call(u,c)}),r.on("error",c=>{var u,l;(l=(u=n.current.props).onError)==null||l.call(u,c)}),r.on("outofmaxbounds",c=>{var u,l;(l=(u=n.current.props).onOutOfMaxBounds)==null||l.call(u,c)}),r.on("trackuserlocationstart",c=>{var u,l;(l=(u=n.current.props).onTrackUserLocationStart)==null||l.call(u,c)}),r.on("trackuserlocationend",c=>{var u,l;(l=(u=n.current.props).onTrackUserLocationEnd)==null||l.call(u,c)}),r},{position:e.position});return n.current.props=e,i.useImperativeHandle(t,()=>s,[]),i.useEffect(()=>{L(s._container,e.style)},[e.style]),null}i.memo(i.forwardRef(le));function ue(e){const t=M(({mapLib:n})=>new n.NavigationControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(ue);function fe(e){const t=M(({mapLib:r})=>new r.ScaleControl(e),{position:e.position}),n=i.useRef(e),s=n.current;n.current=e;const{style:o}=e;return e.maxWidth!==void 0&&e.maxWidth!==s.maxWidth&&(t.options.maxWidth=e.maxWidth),e.unit!==void 0&&e.unit!==s.unit&&t.setUnit(e.unit),i.useEffect(()=>{L(t._container,o)},[o]),null}const ke=i.memo(fe);function de(e){const t=M(({mapLib:n})=>new n.TerrainControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(de);function me(e){const t=M(({mapLib:n})=>new n.LogoControl(e),{position:e.position});return i.useEffect(()=>{L(t._container,e.style)},[e.style]),null}i.memo(me);function R(e,t){if(!e)throw new Error(t)}let ye=0;function ge(e,t,n){if(e.style&&e.style._loaded){const s={...n};return delete s.id,delete s.children,e.addSource(t,s),e.getSource(t)}return null}function he(e,t,n){var a,c,u;R(t.id===n.id,"source id changed"),R(t.type===n.type,"source type changed");let s="",o=0;for(const l in t)l!=="children"&&l!=="id"&&!v(n[l],t[l])&&(s=l,o++);if(!o)return;const r=t.type;if(r==="geojson")e.setData(t.data);else if(r==="image")e.updateImage({url:t.url,coordinates:t.coordinates});else switch(s){case"coordinates":(a=e.setCoordinates)==null||a.call(e,t.coordinates);break;case"url":(c=e.setUrl)==null||c.call(e,t.url);break;case"tiles":(u=e.setTiles)==null||u.call(e,t.tiles);break;default:console.warn(`Unable to update prop: ${s}`)}}function Re(e){const t=i.useContext(w).map.getMap(),n=i.useRef(e),[,s]=i.useState(0),o=i.useMemo(()=>e.id||`jsx-source-${ye++}`,[]);i.useEffect(()=>{if(t){const a=()=>setTimeout(()=>s(c=>c+1),0);return t.on("styledata",a),a(),()=>{var c;if(t.off("styledata",a),t.style&&t.style._loaded&&t.getSource(o)){const u=(c=t.getStyle())==null?void 0:c.layers;if(u)for(const l of u)l.source===o&&t.removeLayer(l.id);t.removeSource(o)}}}},[t]);let r=t&&t.style&&t.getSource(o);return r?he(r,e,n.current):r=ge(t,o,e),n.current=e,r&&i.Children.map(e.children,a=>a&&i.cloneElement(a,{source:o}))||null}function pe(e,t,n,s){if(R(n.id===s.id,"layer id changed"),R(n.type===s.type,"layer type changed"),n.type==="custom"||s.type==="custom")return;const{layout:o={},paint:r={},filter:a,minzoom:c,maxzoom:u,beforeId:l}=n;if(l!==s.beforeId&&e.moveLayer(t,l),o!==s.layout){const d=s.layout||{};for(const f in o)v(o[f],d[f])||e.setLayoutProperty(t,f,o[f]);for(const f in d)o.hasOwnProperty(f)||e.setLayoutProperty(t,f,void 0)}if(r!==s.paint){const d=s.paint||{};for(const f in r)v(r[f],d[f])||e.setPaintProperty(t,f,r[f]);for(const f in d)r.hasOwnProperty(f)||e.setPaintProperty(t,f,void 0)}v(a,s.filter)||e.setFilter(t,a),(c!==s.minzoom||u!==s.maxzoom)&&e.setLayerZoomRange(t,c,u)}function ve(e,t,n){if(e.style&&e.style._loaded&&(!("source"in n)||e.getSource(n.source))){const s={...n,id:t};delete s.beforeId,e.addLayer(s,n.beforeId)}}let _e=0;function Ie(e){const t=i.useContext(w).map.getMap(),n=i.useRef(e),[,s]=i.useState(0),o=i.useMemo(()=>e.id||`jsx-layer-${_e++}`,[]);if(i.useEffect(()=>{if(t){const a=()=>s(c=>c+1);return t.on("styledata",a),a(),()=>{t.off("styledata",a),t.style&&t.style._loaded&&t.getLayer(o)&&t.removeLayer(o)}}},[t]),t&&t.style&&t.getLayer(o))try{pe(t,o,e,n.current)}catch(a){console.warn(a)}else ve(t,o,e);return n.current=e,null}const V="pymc-basemap-mode",j="dark";function Le(){if(typeof window>"u")return j;try{const e=localStorage.getItem(V);if(e==="light"||e==="dark")return e}catch{}return j}function W(e){if(!(typeof window>"u"))try{localStorage.setItem(V,e)}catch{}}const q=G(e=>({mode:Le(),toggle:()=>e(t=>{const n=t.mode==="light"?"dark":"light";return W(n),{mode:n}}),setMode:t=>{W(t),e({mode:t})}})),Te=()=>q(e=>e.mode),Pe=()=>q(e=>e.toggle),Ce={light:"https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",dark:"https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json"},Se={light:"basemap-light-",dark:"basemap-dark-"},I={};async function Ee(e){if(I[e])return I[e];const n=await(await fetch(Ce[e])).json();return I[e]=n,n}function ze({mode:e}){const{current:t}=K(),[n,s]=i.useState(null),o=i.useRef({light:!1,dark:!1}),r=i.useRef({light:[],dark:[]});i.useEffect(()=>{const l=()=>{var y;const m=(y=t==null?void 0:t.getMap)==null?void 0:y.call(t);m&&!n&&s(m)};l();const d=setInterval(l,50),f=setTimeout(()=>clearInterval(d),5e3);return()=>{clearInterval(d),clearTimeout(f)}},[t,n]);const a=i.useCallback(async(l,d,f)=>{var E,k;if(o.current[d])return;const m=Se[d],y=await Ee(d),C=[];for(const[p,h]of Object.entries(y.sources||{})){const g=m+p;l.getSource(g)||l.addSource(g,h)}const x=(k=(((E=l.getStyle())==null?void 0:E.layers)||[]).find(p=>!p.id.startsWith("basemap-light-")&&!p.id.startsWith("basemap-dark-")))==null?void 0:k.id;for(const p of y.layers||[]){const h=m+p.id;if(C.push(h),l.getLayer(h))continue;const g={...p,id:h};"source"in g&&typeof g.source=="string"&&(g.source=m+g.source),g.layout||(g.layout={}),g.layout.visibility=f?"visible":"none";try{l.addLayer(g,x)}catch(_){console.warn(`[BasemapLayer] Failed to add layer ${h}:`,_)}}r.current[d]=C,o.current[d]=!0},[]),c=i.useCallback((l,d,f)=>{const m=r.current[d],y=f?"visible":"none";for(const C of m)if(l.getLayer(C))try{l.setLayoutProperty(C,"visibility",y)}catch{}},[]),u=i.useCallback(l=>{var m;const f=(((m=l.getStyle())==null?void 0:m.layers)||[]).filter(y=>!y.id.startsWith("basemap-light-")&&!y.id.startsWith("basemap-dark-"));for(const y of f)try{l.moveLayer(y.id)}catch{}},[]);return i.useEffect(()=>{if(!n)return;const l=d=>{n.hasImage(d.id)||n.addImage(d.id,{width:1,height:1,data:new Uint8Array([0,0,0,0])})};return n.on("styleimagemissing",l),()=>{n.off("styleimagemissing",l)}},[n]),i.useEffect(()=>{if(!n)return;let l=!1;const d=async()=>{if(!l)try{await Promise.all([a(n,"light",e==="light"),a(n,"dark",e==="dark")]),l||u(n)}catch(m){console.error("[BasemapLayer] Setup error:",m)}};n.isStyleLoaded()?d():(n.once("style.load",d),n.once("load",()=>{!l&&!o.current.light&&d()}));const f=()=>{l||setTimeout(()=>{!l&&o.current.light&&o.current.dark&&u(n)},100)};return n.on("styledata",f),()=>{l=!0,n.off("styledata",f)}},[n,a,u,e]),i.useEffect(()=>{n&&(!o.current.light||!o.current.dark||(c(n,"light",e==="light"),c(n,"dark",e==="dark")))},[n,e,c]),null}export{ze as B,Ie as L,Me as M,xe as P,Re as S,be as a,K as b,Pe as c,ke as d,Te as u}; diff --git a/frontend/dist/assets/ChatBubble-CZ6SrnkY.js b/frontend/dist/assets/ChatBubble-0UYYugYB.js similarity index 93% rename from frontend/dist/assets/ChatBubble-CZ6SrnkY.js rename to frontend/dist/assets/ChatBubble-0UYYugYB.js index 4615c33d..2196f3db 100644 --- a/frontend/dist/assets/ChatBubble-CZ6SrnkY.js +++ b/frontend/dist/assets/ChatBubble-0UYYugYB.js @@ -1,4 +1,4 @@ -import{d as h,r as u,j as e,c as t}from"./index-CdwYueSG.js";import{e as f,g as p,a as g,b as j,f as b}from"./chat-utils-B3hkabuB.js";/** +import{d as h,r as u,j as e,c as t}from"./index-C8IY8K2r.js";import{e as f,g as p,a as g,b as j,f as b}from"./chat-utils-D1Q4VWjO.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. diff --git a/frontend/dist/assets/CollisionExplorerModal-CjMAUeX8.js b/frontend/dist/assets/CollisionExplorerModal-CjMAUeX8.js deleted file mode 100644 index 80a837d1..00000000 --- a/frontend/dist/assets/CollisionExplorerModal-CjMAUeX8.js +++ /dev/null @@ -1,6 +0,0 @@ -import{d as k,r as c,E as L,bB as S,H,j as e,ac as R,ad as T,bp as B,c as N,q as w,w as E,x as _,bL as D}from"./index-CdwYueSG.js";import{u as I,M as P,B as q,S as z,L as W,a as U}from"./BasemapLayer-DAxIlO26.js";import{T as F}from"./triangle-alert-DaComX7z.js";import{M as A}from"./map-pin-BTzarosW.js";import{M as Y}from"./monitor-smartphone-CBUcuPPv.js";/** - * @license lucide-react v0.559.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const $=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],G=k("share-2",$);function J(n){var f;return(f=navigator.clipboard)!=null&&f.writeText?(navigator.clipboard.writeText(n).catch(()=>{}),!0):!1}const Q={version:8,sources:{},layers:[],glyphs:"https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf"};function M({node:n,isHovered:f,onHover:g}){const[y,p]=c.useState(!1),j=c.useCallback(d=>{d.stopPropagation(),J(n.hash),p(!0),setTimeout(()=>p(!1),2e3)},[n.hash]),h=n.contactType.toLowerCase(),m=h.includes("room")||h.includes("server"),o=h==="companion"||h==="client";let r=G,l="text-sys-blue";return m?(r=D,l="text-signal-fair"):o?(r=Y,l="text-fg-muted"):n.isNeighbor&&(l="text-sys-green"),e.jsxs("div",{className:N("flex items-center gap-3 px-3 py-2.5 radius-inner transition-base cursor-pointer",f?"bg-sys-blue/10":"hover:bg-subtle-fill"),onMouseEnter:()=>g(n.hash),onMouseLeave:()=>g(null),children:[e.jsx(r,{className:N("w-4 h-4 flex-shrink-0",l)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"type-label text-fg-primary truncate",children:n.name}),n.isNeighbor&&e.jsx(w,{color:"green",compact:!0,children:"NBR"}),n.isRepeater&&e.jsx(w,{color:"zinc",compact:!0,children:"RPT"}),n.isHub&&e.jsx(w,{color:"indigo",compact:!0,children:"HUB"})]}),e.jsxs("button",{onClick:j,className:N("mt-1 inline-flex items-center gap-1 type-data-xs px-1.5 py-0.5 rounded","border transition-all cursor-pointer",y?"border-sys-green/50 bg-sys-green/10 text-sys-green":"border-edge-subtle bg-subtle/50 text-fg-muted hover:border-edge-strong"),title:`Copy: ${n.hash}`,children:[n.hash.slice(0,12),"…",y?e.jsx(E,{className:"w-2.5 h-2.5"}):e.jsx(_,{className:"w-2.5 h-2.5 opacity-50"})]})]})]})}function C({nodes:n,hoveredHash:f,onHover:g}){const y=I(),p=c.useRef(null),j=B(),[h,m]=c.useState(!1),o=c.useMemo(()=>n.filter(a=>a.latitude!=null&&a.longitude!=null&&(a.latitude!==0||a.longitude!==0)),[n]),r=c.useMemo(()=>{if(o.length===0)return null;let a=1/0,s=-1/0,t=1/0,i=-1/0;for(const x of o)a=Math.min(a,x.longitude),s=Math.max(s,x.longitude),t=Math.min(t,x.latitude),i=Math.max(i,x.latitude);const u=.01;if(i-tr?{longitude:(r[0][0]+r[1][0])/2,latitude:(r[0][1]+r[1][1])/2}:{longitude:0,latitude:0},[r]),d=c.useMemo(()=>{if(o.length<2)return null;const a=[];for(let s=0;s{var s;const a=(s=p.current)==null?void 0:s.getMap();if(!a||!r){m(!0);return}a.fitBounds(r,{padding:{top:50,bottom:50,left:50,right:50},maxZoom:13,duration:0}),setTimeout(()=>m(!0),50)},[r]),b=j&&h;return o.length===0?e.jsx("div",{className:"h-full flex items-center justify-center bg-subtle/30 radius-inner",children:e.jsxs("div",{className:"text-center text-fg-secondary p-4",children:[e.jsx(A,{className:"w-8 h-8 mx-auto mb-2 opacity-40"}),e.jsx("p",{className:"text-sm",children:"No location data available"})]})}):e.jsxs("div",{className:"h-full w-full relative radius-inner overflow-hidden bg-elevated",children:[e.jsx("div",{className:N("absolute inset-0 flex items-center justify-center z-10","transition-opacity duration-200 pointer-events-none",b?"opacity-0":"opacity-100 bg-elevated"),children:e.jsx("div",{className:"w-5 h-5 border-2 border-text-muted/30 border-t-text-muted rounded-full animate-spin"})}),e.jsx("div",{className:N("h-full w-full transition-opacity duration-200",b?"opacity-100":"opacity-0"),children:e.jsxs(P,{ref:p,initialViewState:{longitude:l.longitude,latitude:l.latitude,zoom:10},style:{height:"100%",width:"100%"},mapStyle:Q,attributionControl:!1,onLoad:v,children:[e.jsx(q,{mode:y}),d&&e.jsx(z,{id:"collision-edges",type:"geojson",data:d,children:e.jsx(W,{id:"collision-edges-line",type:"line",paint:{"line-color":"#3B3F4A","line-width":2,"line-opacity":.8},layout:{"line-cap":"round","line-join":"round"}})}),o.map(a=>{const s=a.hash===f,t=a.hash.startsWith("0x")?a.hash.slice(2,4).toUpperCase():a.hash.slice(0,2).toUpperCase();return e.jsx(U,{longitude:a.longitude,latitude:a.latitude,anchor:"center",children:e.jsx("div",{className:"cursor-pointer transition-all duration-150",onMouseEnter:()=>g(a.hash),onMouseLeave:()=>g(null),style:{pointerEvents:"auto"},children:e.jsxs(w,{color:"amber",filled:!0,className:"type-data-xs shadow-lg",children:[t,s&&e.jsx("span",{className:"ml-1 opacity-75 font-sans",children:a.name})]})})},a.hash)})]})})]})}function V({isOpen:n,prefix:f,candidateHashes:g,onClose:y}){const p=L(),j=S(),h=H(),[m,o]=c.useState(null),r=c.useMemo(()=>new Set(h.map(s=>s.hash)),[h]),l=(p==null?void 0:p.neighbors)??{},d=c.useMemo(()=>{const s=t=>{if(l[t])return l[t];if(!t.startsWith("0x")&&l["0x"+t])return l["0x"+t];if(t.startsWith("0x")&&l[t.slice(2)])return l[t.slice(2)]};return g.map(t=>{var u;const i=s(t);return{hash:t,name:(i==null?void 0:i.node_name)||(i==null?void 0:i.name)||`Unknown (${t.slice(0,8)}…)`,contactType:(i==null?void 0:i.contact_type)||"",isRepeater:(i==null?void 0:i.is_repeater)||((u=i==null?void 0:i.contact_type)==null?void 0:u.toLowerCase())==="repeater"||!1,isNeighbor:r.has(t)||r.has("0x"+t)||r.has(t.replace(/^0x/,"")),isHub:j.has(t),latitude:i==null?void 0:i.latitude,longitude:i==null?void 0:i.longitude}}).sort((t,i)=>t.isNeighbor!==i.isNeighbor?t.isNeighbor?-1:1:t.isHub!==i.isHub?t.isHub?-1:1:t.name.localeCompare(i.name))},[g,l,r,j]),v=c.useMemo(()=>d.some(s=>s.latitude!=null&&s.longitude!=null&&(s.latitude!==0||s.longitude!==0)),[d]),b=c.useCallback(s=>{o(s)},[]),a=v?"4xl":"lg";return n?e.jsxs(R,{open:n,onClose:y,size:a,motionPlus:!0,className:v?"sm:h-[500px] sm:max-h-[600px]":"",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-edge-subtle",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 radius-inner bg-signal-fair/10",children:e.jsx(F,{className:"w-5 h-5 text-signal-fair"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"type-micro",children:["Prefix Collision: ",e.jsx("span",{className:"font-mono text-sys-blue",children:f})]}),e.jsxs("p",{className:"text-xs text-fg-secondary",children:[d.length," nodes share this prefix"]})]})]}),e.jsx("button",{onClick:y,className:"sm:hidden min-h-[44px] min-w-[44px] px-3 flex items-center justify-center text-[15px] font-medium text-sys-blue active:text-sys-blue/70 transition-base radius-inner active:bg-subtle-fill",children:"Done"}),e.jsx("button",{onClick:y,className:"hidden sm:flex items-center justify-center p-2 text-fg-muted hover:text-fg-primary transition-base radius-inner hover:bg-subtle","aria-label":"Close",children:e.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),e.jsxs(T,{className:"p-0 overflow-hidden flex-1 flex flex-col min-h-0",children:[e.jsxs("div",{className:"sm:hidden flex-1 overflow-y-auto",children:[v&&e.jsx("div",{className:"h-64 p-2 border-b border-edge-subtle",children:e.jsx(C,{nodes:d,hoveredHash:m,onHover:b})}),e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:b},s.hash))})]}),v?e.jsxs("div",{className:"hidden sm:grid sm:grid-cols-[280px_minmax(400px,1fr)] flex-1 overflow-hidden sm:min-w-[700px]",children:[e.jsx("div",{className:"overflow-y-auto border-r border-edge-subtle",children:e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:b},s.hash))})}),e.jsx("div",{className:"overflow-hidden p-2",children:e.jsx(C,{nodes:d,hoveredHash:m,onHover:b})})]}):e.jsx("div",{className:"hidden sm:block flex-1 overflow-y-auto",children:e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:b},s.hash))})})]})]}):null}const se=c.memo(V);export{se as C,G as S}; diff --git a/frontend/dist/assets/CollisionExplorerModal-DeHgfjGl.js b/frontend/dist/assets/CollisionExplorerModal-DeHgfjGl.js new file mode 100644 index 00000000..5159e994 --- /dev/null +++ b/frontend/dist/assets/CollisionExplorerModal-DeHgfjGl.js @@ -0,0 +1,6 @@ +import{d as k,r as c,E as L,bB as S,H,j as e,ac as R,ad as T,bp as B,c as N,q as w,w as E,x as _,bL as D}from"./index-C8IY8K2r.js";import{u as I,M as P,B as q,S as z,L as W,a as U}from"./BasemapLayer-D5WYHXmJ.js";import{T as F}from"./triangle-alert-8k00uu7o.js";import{M as A}from"./map-pin-DMVHq6j8.js";import{M as Y}from"./monitor-smartphone-DF_mmgOV.js";/** + * @license lucide-react v0.559.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],G=k("share-2",$);function J(n){var f;return(f=navigator.clipboard)!=null&&f.writeText?(navigator.clipboard.writeText(n).catch(()=>{}),!0):!1}const Q={version:8,sources:{},layers:[],glyphs:"https://tiles.basemaps.cartocdn.com/fonts/{fontstack}/{range}.pbf"};function M({node:n,isHovered:f,onHover:g}){const[y,p]=c.useState(!1),j=c.useCallback(d=>{d.stopPropagation(),J(n.hash),p(!0),setTimeout(()=>p(!1),2e3)},[n.hash]),h=n.contactType.toLowerCase(),m=h.includes("room")||h.includes("server"),o=h==="companion"||h==="client";let r=G,l="text-sys-blue";return m?(r=D,l="text-signal-fair"):o?(r=Y,l="text-fg-muted"):n.isNeighbor&&(l="text-sys-green"),e.jsxs("div",{className:N("flex items-center gap-3 px-3 py-2.5 radius-inner transition-base cursor-pointer",f?"bg-sys-blue/10":"hover:bg-subtle-fill"),onMouseEnter:()=>g(n.hash),onMouseLeave:()=>g(null),children:[e.jsx(r,{className:N("w-4 h-4 flex-shrink-0",l)}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"type-label text-fg-primary truncate",children:n.name}),n.isNeighbor&&e.jsx(w,{color:"green",compact:!0,children:"NBR"}),n.isRepeater&&e.jsx(w,{color:"zinc",compact:!0,children:"RPT"}),n.isHub&&e.jsx(w,{color:"indigo",compact:!0,children:"HUB"})]}),e.jsxs("button",{onClick:j,className:N("mt-1 inline-flex items-center gap-1 type-data-xs px-1.5 py-0.5 rounded","border transition-all cursor-pointer",y?"border-sys-green/50 bg-sys-green/10 text-sys-green":"border-edge-subtle bg-subtle/50 text-fg-muted hover:border-edge-strong"),title:`Copy: ${n.hash}`,children:[n.hash.slice(0,12),"…",y?e.jsx(E,{className:"w-2.5 h-2.5"}):e.jsx(_,{className:"w-2.5 h-2.5 opacity-50"})]})]})]})}function C({nodes:n,hoveredHash:f,onHover:g}){const y=I(),p=c.useRef(null),j=B(),[h,m]=c.useState(!1),o=c.useMemo(()=>n.filter(a=>a.latitude!=null&&a.longitude!=null&&(a.latitude!==0||a.longitude!==0)),[n]),r=c.useMemo(()=>{if(o.length===0)return null;let a=1/0,s=-1/0,t=1/0,i=-1/0;for(const x of o)a=Math.min(a,x.longitude),s=Math.max(s,x.longitude),t=Math.min(t,x.latitude),i=Math.max(i,x.latitude);const u=.01;if(i-tr?{longitude:(r[0][0]+r[1][0])/2,latitude:(r[0][1]+r[1][1])/2}:{longitude:0,latitude:0},[r]),d=c.useMemo(()=>{if(o.length<2)return null;const a=[];for(let s=0;s{var s;const a=(s=p.current)==null?void 0:s.getMap();if(!a||!r){m(!0);return}a.fitBounds(r,{padding:{top:50,bottom:50,left:50,right:50},maxZoom:13,duration:0}),setTimeout(()=>m(!0),50)},[r]),b=j&&h;return o.length===0?e.jsx("div",{className:"h-full flex items-center justify-center bg-subtle/30 radius-inner",children:e.jsxs("div",{className:"text-center text-fg-secondary p-4",children:[e.jsx(A,{className:"w-8 h-8 mx-auto mb-2 opacity-40"}),e.jsx("p",{className:"text-sm",children:"No location data available"})]})}):e.jsxs("div",{className:"h-full w-full relative radius-inner overflow-hidden bg-elevated",children:[e.jsx("div",{className:N("absolute inset-0 flex items-center justify-center z-10","transition-opacity duration-200 pointer-events-none",b?"opacity-0":"opacity-100 bg-elevated"),children:e.jsx("div",{className:"w-5 h-5 border-2 border-text-muted/30 border-t-text-muted rounded-full animate-spin"})}),e.jsx("div",{className:N("h-full w-full transition-opacity duration-200",b?"opacity-100":"opacity-0"),children:e.jsxs(P,{ref:p,initialViewState:{longitude:l.longitude,latitude:l.latitude,zoom:10},style:{height:"100%",width:"100%"},mapStyle:Q,attributionControl:!1,onLoad:v,children:[e.jsx(q,{mode:y}),d&&e.jsx(z,{id:"collision-edges",type:"geojson",data:d,children:e.jsx(W,{id:"collision-edges-line",type:"line",paint:{"line-color":"#3B3F4A","line-width":2,"line-opacity":.8},layout:{"line-cap":"round","line-join":"round"}})}),o.map(a=>{const s=a.hash===f,t=a.hash.startsWith("0x")?a.hash.slice(2,4).toUpperCase():a.hash.slice(0,2).toUpperCase();return e.jsx(U,{longitude:a.longitude,latitude:a.latitude,anchor:"center",children:e.jsx("div",{className:"cursor-pointer transition-all duration-150",onMouseEnter:()=>g(a.hash),onMouseLeave:()=>g(null),style:{pointerEvents:"auto"},children:e.jsxs(w,{color:"amber",filled:!0,className:"type-data-xs shadow-lg",children:[t,s&&e.jsx("span",{className:"ml-1 opacity-75 font-sans",children:a.name})]})})},a.hash)})]})})]})}function V({isOpen:n,prefix:f,candidateHashes:g,onClose:y}){const p=L(),j=S(),h=H(),[m,o]=c.useState(null),r=c.useMemo(()=>new Set(h.map(s=>s.hash)),[h]),l=(p==null?void 0:p.neighbors)??{},d=c.useMemo(()=>{const s=t=>{if(l[t])return l[t];if(!t.startsWith("0x")&&l["0x"+t])return l["0x"+t];if(t.startsWith("0x")&&l[t.slice(2)])return l[t.slice(2)]};return g.map(t=>{var u;const i=s(t);return{hash:t,name:(i==null?void 0:i.node_name)||(i==null?void 0:i.name)||`Unknown (${t.slice(0,8)}…)`,contactType:(i==null?void 0:i.contact_type)||"",isRepeater:(i==null?void 0:i.is_repeater)||((u=i==null?void 0:i.contact_type)==null?void 0:u.toLowerCase())==="repeater"||!1,isNeighbor:r.has(t)||r.has("0x"+t)||r.has(t.replace(/^0x/,"")),isHub:j.has(t),latitude:i==null?void 0:i.latitude,longitude:i==null?void 0:i.longitude}}).sort((t,i)=>t.isNeighbor!==i.isNeighbor?t.isNeighbor?-1:1:t.isHub!==i.isHub?t.isHub?-1:1:t.name.localeCompare(i.name))},[g,l,r,j]),v=c.useMemo(()=>d.some(s=>s.latitude!=null&&s.longitude!=null&&(s.latitude!==0||s.longitude!==0)),[d]),b=c.useCallback(s=>{o(s)},[]),a=v?"4xl":"lg";return n?e.jsxs(R,{open:n,onClose:y,size:a,motionPlus:!0,className:v?"sm:h-[500px] sm:max-h-[600px]":"",children:[e.jsxs("div",{className:"flex items-center justify-between px-4 py-3 border-b border-edge-subtle",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 radius-inner bg-signal-fair/10",children:e.jsx(F,{className:"w-5 h-5 text-signal-fair"})}),e.jsxs("div",{children:[e.jsxs("div",{className:"type-micro",children:["Prefix Collision: ",e.jsx("span",{className:"font-mono text-sys-blue",children:f})]}),e.jsxs("p",{className:"text-xs text-fg-secondary",children:[d.length," nodes share this prefix"]})]})]}),e.jsx("button",{onClick:y,className:"sm:hidden min-h-[44px] min-w-[44px] px-3 flex items-center justify-center text-[15px] font-medium text-sys-blue active:text-sys-blue/70 transition-base radius-inner active:bg-subtle-fill",children:"Done"}),e.jsx("button",{onClick:y,className:"hidden sm:flex items-center justify-center p-2 text-fg-muted hover:text-fg-primary transition-base radius-inner hover:bg-subtle","aria-label":"Close",children:e.jsx("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),e.jsxs(T,{className:"p-0 overflow-hidden flex-1 flex flex-col min-h-0",children:[e.jsxs("div",{className:"sm:hidden flex-1 overflow-y-auto",children:[v&&e.jsx("div",{className:"h-64 p-2 border-b border-edge-subtle",children:e.jsx(C,{nodes:d,hoveredHash:m,onHover:b})}),e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:b},s.hash))})]}),v?e.jsxs("div",{className:"hidden sm:grid sm:grid-cols-[280px_minmax(400px,1fr)] flex-1 overflow-hidden sm:min-w-[700px]",children:[e.jsx("div",{className:"overflow-y-auto border-r border-edge-subtle",children:e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:b},s.hash))})}),e.jsx("div",{className:"overflow-hidden p-2",children:e.jsx(C,{nodes:d,hoveredHash:m,onHover:b})})]}):e.jsx("div",{className:"hidden sm:block flex-1 overflow-y-auto",children:e.jsx("div",{className:"p-2",children:d.map(s=>e.jsx(M,{node:s,isHovered:m===s.hash,onHover:b},s.hash))})})]})]}):null}const se=c.memo(V);export{se as C,G as S}; diff --git a/frontend/dist/assets/Configuration-Bg-_dl9k.js b/frontend/dist/assets/Configuration-Bg-_dl9k.js deleted file mode 100644 index 0030c534..00000000 --- a/frontend/dist/assets/Configuration-Bg-_dl9k.js +++ /dev/null @@ -1,32 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/latin-400-BcR6IdUc.css","assets/latin-500-DCnAHIrw.css","assets/latin-600-CnkPk-vb.css","assets/latin-700-UC1i-VSI.css"])))=>i.map(i=>d[i]); -import{d as ue,r as t,j as e,c as l,L as $,w as B,bc as J,ae as Ss,dA as Ee,dB as es,dC as Je,bo as Se,T as ie,M as Zs,S as et,dD as st,F as X,cb as Qe,bN as tt,v as at,dE as Ts,dF as nt,dG as lt,dH as rt,R as it,B as F,dI as $e,I as ot,x as ct}from"./index-CdwYueSG.js";import{g as dt,a as ut,c as mt,r as xt,s as ft,b as ht,u as pt,d as yt}from"./system-mluDEEwX.js";import{T as Ps,C as gt}from"./ConfirmModal-D_7JTlAb.js";import{N as bt}from"./NodeInformationCard-BChhyc1s.js";import{i as jt,g as vt,s as Nt,a as kt,k as wt}from"./keycap-sfx-ByZp-njj.js";import{C as Y,P as Ct,a as St,B as Tt}from"./PageLayout-gbvZ6tct.js";import{R as te,C as Te}from"./Grid-Ug7vbOHZ.js";import{A as _t}from"./antenna-_XOMaVsr.js";import{P as _s}from"./plus-BxLpl_sF.js";import{K as qe}from"./key-round-D-QO71kp.js";import{C as Ft}from"./circle-check-D1pZScos.js";import{T as Ge}from"./triangle-alert-DaComX7z.js";import{R as Et}from"./refresh-cw-Bcz_yxe3.js";import{C as Rt}from"./chevron-right-Clx_OSXY.js";import"./DataBox-D9AB1NGO.js";/** - * @license lucide-react v0.559.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const It=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],Pt=ue("external-link",It);/** - * @license lucide-react v0.559.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Dt=[["circle",{cx:"16",cy:"20",r:"2",key:"1vifvg"}],["path",{d:"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2",key:"3hgo9p"}],["path",{d:"m22 14-4.5 4.5",key:"1ef6z8"}],["path",{d:"m21 15 1 1",key:"1ejcpy"}]],Mt=ue("folder-key",Dt);/** - * @license lucide-react v0.559.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const At=[["rect",{width:"8",height:"5",x:"14",y:"17",rx:"1",key:"19aais"}],["path",{d:"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2.5",key:"1w6v7t"}],["path",{d:"M20 17v-2a2 2 0 1 0-4 0v2",key:"pwaxnr"}]],Fs=ue("folder-lock",At);/** - * @license lucide-react v0.559.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Kt=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],Lt=ue("monitor",Kt);/** - * @license lucide-react v0.559.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const zt=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],Ze=ue("pencil",zt);/** - * @license lucide-react v0.559.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ot=[["path",{d:"M10.17 4.193a2 2 0 0 1 3.666.013",key:"pltmmw"}],["path",{d:"M14 21h2",key:"v4qezv"}],["path",{d:"m15.874 7.743 1 1.732",key:"10m0iw"}],["path",{d:"m18.849 12.952 1 1.732",key:"zadnam"}],["path",{d:"M21.824 18.18a2 2 0 0 1-1.835 2.824",key:"fvwuk4"}],["path",{d:"M4.024 21a2 2 0 0 1-1.839-2.839",key:"1e1kah"}],["path",{d:"m5.136 12.952-1 1.732",key:"1u4ldi"}],["path",{d:"M8 21h2",key:"i9zjee"}],["path",{d:"m8.102 7.743-1 1.732",key:"1zzo4u"}]],Vt=ue("triangle-dashed",Ot),Fe=1500,oe={stacked:"h-[38px]",inline:"h-[32px]"},ce={stacked:"px-3",inline:"px-2.5"},de="rounded-lg";function H({label:a,value:c,editValue:r,onSave:p,type:i="text",suffix:d,placeholder:v,readOnly:u=!1,layout:o="stacked",min:n,max:h,step:k,maxLength:E,description:y,className:w}){const[C,j]=t.useState(!1),[S,I]=t.useState(""),[g,A]=t.useState("idle"),O=t.useRef(null),x=t.useRef(!0),P=t.useRef(null),_=!u&&!!p;t.useEffect(()=>(x.current=!0,()=>{x.current=!1,P.current&&clearTimeout(P.current)}),[]);const L=t.useCallback(()=>{_&&(I(r??c),j(!0),A("idle"),requestAnimationFrame(()=>{var N;return(N=O.current)==null?void 0:N.select()}))},[_,r,c]),T=t.useCallback(()=>{j(!1),I(""),A("idle")},[]),m=t.useCallback(async()=>{if(!p||g==="loading")return;if(S===(r??c)){T();return}P.current&&clearTimeout(P.current),A("loading");try{if(await p(S),!x.current)return;A("success"),j(!1),P.current=setTimeout(()=>{x.current&&A("idle")},Fe)}catch{if(!x.current)return;A("error"),P.current=setTimeout(()=>{x.current&&A("idle")},Fe)}},[p,S,r,c,T,g]),z=t.useCallback(N=>{N.key==="Enter"?(N.preventDefault(),m()):N.key==="Escape"&&(N.preventDefault(),T())},[m,T]);return o==="inline"?e.jsxs("div",{className:l("group flex items-center justify-between gap-3",w),children:[e.jsx("label",{className:"type-label text-fg-muted truncate",children:a}),C?e.jsxs("div",{className:l(oe.inline,de,ce.inline,"flex items-center transition-all","bg-transparent border border-sys-blue/50 ring-1 ring-sys-blue/20","min-w-[100px]"),children:[e.jsx("input",{ref:O,type:i,value:S,onChange:N=>I(N.target.value),onKeyDown:z,placeholder:v,min:n,max:h,step:k,maxLength:E,disabled:g==="loading",className:l("bg-transparent text-fg-primary focus:outline-none type-data flex-1 min-w-0",d?"w-12 text-right":"w-full")}),d&&e.jsx("span",{className:"text-fg-muted type-data ml-1 shrink-0",children:d}),e.jsx("div",{className:"flex items-center gap-0.5 ml-2 shrink-0",children:g==="loading"?e.jsx($,{className:"w-3.5 h-3.5 text-fg-muted animate-spin"}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:m,className:"p-0.5 rounded hover:bg-sys-green/15 text-sys-green transition-colors",title:"Save (Enter)",children:e.jsx(B,{className:"w-3 h-3"})}),e.jsx("button",{onClick:T,className:"p-0.5 rounded hover:bg-sys-red/15 text-fg-muted hover:text-sys-red transition-colors",title:"Cancel (Esc)",children:e.jsx(J,{className:"w-3 h-3"})})]})})]}):e.jsxs("div",{className:l(oe.inline,de,ce.inline,"flex items-center justify-end transition-all min-w-[80px]","bg-input-bg border border-input-border",_&&"cursor-pointer hover:border-edge-strong"),onClick:_?L:void 0,children:[e.jsx("span",{className:"type-data text-fg-primary",children:c}),g==="success"&&e.jsx(B,{className:"w-3 h-3 text-sys-green ml-1.5 shrink-0"}),g==="error"&&e.jsx(J,{className:"w-3 h-3 text-sys-red ml-1.5 shrink-0"}),g==="idle"&&_&&e.jsx(Ze,{className:"w-3 h-3 text-fg-muted ml-1.5 opacity-0 group-hover:opacity-100 transition-opacity shrink-0"})]})]}):e.jsxs("div",{className:l("group",w),children:[e.jsx("label",{className:"type-label text-fg-muted block mb-1",children:a}),C?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:l(oe.stacked,de,ce.stacked,"flex items-center transition-all","bg-transparent border border-sys-blue/50 ring-1 ring-sys-blue/20"),children:[e.jsx("input",{ref:O,type:i,value:S,onChange:N=>I(N.target.value),onKeyDown:z,placeholder:v,min:n,max:h,step:k,maxLength:E,disabled:g==="loading",className:"w-full bg-transparent text-fg-primary focus:outline-none type-data flex-1 min-w-0"}),d&&e.jsx("span",{className:"text-fg-muted type-data ml-1 shrink-0",children:d}),e.jsx("div",{className:"flex items-center gap-0.5 ml-2 shrink-0",children:g==="loading"?e.jsx($,{className:"w-3.5 h-3.5 text-fg-muted animate-spin"}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:m,className:"p-1 rounded hover:bg-sys-green/15 text-sys-green transition-colors",title:"Save (Enter)",children:e.jsx(B,{className:"w-3.5 h-3.5"})}),e.jsx("button",{onClick:T,className:"p-1 rounded hover:bg-sys-red/15 text-fg-muted hover:text-sys-red transition-colors",title:"Cancel (Esc)",children:e.jsx(J,{className:"w-3.5 h-3.5"})})]})})]}),y&&e.jsx("p",{className:"type-data-xs text-fg-muted mt-1 ml-3",children:y})]}):e.jsxs("div",{className:l(oe.stacked,de,ce.stacked,"flex items-center transition-all","bg-input-bg border border-input-border",_&&"cursor-pointer hover:border-edge-strong"),onClick:_?L:void 0,children:[e.jsx("span",{className:"type-data text-fg-primary flex-1 whitespace-nowrap",children:c}),g==="success"&&e.jsx(B,{className:"w-3.5 h-3.5 text-sys-green shrink-0"}),g==="error"&&e.jsx(J,{className:"w-3.5 h-3.5 text-sys-red shrink-0"}),g==="idle"&&_&&e.jsx(Ze,{className:"w-3.5 h-3.5 text-fg-muted opacity-0 group-hover:opacity-100 transition-opacity shrink-0"})]})]})}function Be({label:a,value:c,editValue:r,options:p,onSave:i,readOnly:d=!1,layout:v="stacked",className:u}){const[o,n]=t.useState(!1),[h,k]=t.useState(""),[E,y]=t.useState("idle"),w=t.useRef(null),C=t.useRef(!0),j=t.useRef(null),S=!d&&!!i;t.useEffect(()=>(C.current=!0,()=>{C.current=!1,j.current&&clearTimeout(j.current)}),[]);const I=t.useCallback(()=>{S&&(k(String(r)),n(!0),y("idle"),requestAnimationFrame(()=>{var m;return(m=w.current)==null?void 0:m.focus()}))},[S,r]),g=t.useCallback(()=>{n(!1),k(""),y("idle")},[]),A=t.useCallback(async()=>{if(!(!i||E==="loading")){if(h===String(r)){g();return}j.current&&clearTimeout(j.current),y("loading");try{if(await i(h),!C.current)return;y("success"),n(!1),j.current=setTimeout(()=>{C.current&&y("idle")},Fe)}catch{if(!C.current)return;y("error"),j.current=setTimeout(()=>{C.current&&y("idle")},Fe)}}},[i,h,r,g,E]),O=t.useCallback(m=>{m.key==="Escape"&&(m.preventDefault(),g())},[g]),x=v==="inline",P=x?oe.inline:oe.stacked,_=x?ce.inline:ce.stacked,L=e.jsxs("div",{className:l(P,de,_,"flex items-center transition-all relative","bg-transparent border border-sys-blue/50 ring-1 ring-sys-blue/20",x&&"min-w-[100px]"),children:[e.jsx("select",{ref:w,value:h,onChange:m=>k(m.target.value),onKeyDown:O,disabled:E==="loading",className:l("bg-transparent text-fg-primary focus:outline-none appearance-none cursor-pointer type-data flex-1 min-w-0","pr-6"),children:p.map(m=>e.jsx("option",{value:m.value,children:m.label},String(m.value)))}),e.jsx(Ss,{className:"absolute right-auto w-3.5 h-3.5 text-fg-muted pointer-events-none",style:{right:E==="loading"?"2rem":"3.5rem"}}),e.jsx("div",{className:"flex items-center gap-0.5 ml-1 shrink-0",children:E==="loading"?e.jsx($,{className:l("text-fg-muted animate-spin",x?"w-3 h-3":"w-3.5 h-3.5")}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:A,className:l("rounded hover:bg-sys-green/15 text-sys-green transition-colors",x?"p-0.5":"p-1"),title:"Save",children:e.jsx(B,{className:x?"w-3 h-3":"w-3.5 h-3.5"})}),e.jsx("button",{onClick:g,className:l("rounded hover:bg-sys-red/15 text-fg-muted hover:text-sys-red transition-colors",x?"p-0.5":"p-1"),title:"Cancel (Esc)",children:e.jsx(J,{className:x?"w-3 h-3":"w-3.5 h-3.5"})})]})})]}),T=e.jsxs("div",{className:l(P,de,_,"flex items-center transition-all","bg-input-bg border border-input-border",S&&"cursor-pointer hover:border-edge-strong",x?"justify-end min-w-[80px]":""),onClick:S?I:void 0,children:[e.jsx("span",{className:l("type-data text-fg-primary",!x&&"flex-1"),children:c}),E==="success"&&e.jsx(B,{className:l("text-sys-green shrink-0",x?"w-3 h-3 ml-1.5":"w-3.5 h-3.5")}),E==="error"&&e.jsx(J,{className:l("text-sys-red shrink-0",x?"w-3 h-3 ml-1.5":"w-3.5 h-3.5")}),E==="idle"&&S&&e.jsx(Ss,{className:l("text-fg-muted opacity-0 group-hover:opacity-100 transition-opacity shrink-0",x?"w-3 h-3 ml-1.5":"w-3.5 h-3.5")})]});return x?e.jsxs("div",{className:l("group flex items-center justify-between",u),children:[e.jsx("label",{className:"type-label text-fg-muted shrink-0",children:a}),o?L:T]}):e.jsxs("div",{className:l("group",u),children:[e.jsx("label",{className:"type-label text-fg-muted block mb-1",children:a}),o?L:T]})}async function Ht(){return Ee("/auth/tokens")}async function $t(a){return Ee("/auth/tokens",{method:"POST",body:JSON.stringify({name:a})})}async function qt(a){return Ee(`/auth/tokens/${a}`,{method:"DELETE"})}async function Es(a){return Ee("/api/update_web_config",{method:"POST",body:JSON.stringify(a)})}t.memo(function(){const{theme:c}=es(),{themeId:r}=c,p=Je.find(i=>i.meta.id===r)??Je[0];return e.jsx("div",{className:"h-10 flex items-center justify-center",children:e.jsx("span",{className:"font-medium transition-all duration-300 leading-none text-center text-fg-secondary",style:{fontFamily:"Inter, system-ui, sans-serif",fontSize:"clamp(0.75rem, 0.6rem + 1.5vw, 1.1rem)",letterSpacing:"-0.02em"},children:p.meta.name})})});const Ue=t.memo(function({compact:c=!1}){const{theme:r,setTheme:p}=es(),{themeId:i}=r;return e.jsx("div",{className:l("grid grid-cols-2 gap-2",c?"w-full min-w-0 self-stretch":"w-full"),children:[...Je].reverse().map(d=>{const v=i===d.meta.id,u=d.meta.isDark;return e.jsxs("button",{type:"button",title:d.meta.name,className:l("flex flex-row items-stretch radius-inner transition-all duration-200 ease-out overflow-hidden cursor-pointer",c&&"h-6",v?"ring-2 ring-sys-blue scale-[1.02]":"opacity-70 hover:opacity-100"),onClick:()=>p(d.meta.id),children:[e.jsx("div",{className:l("flex-1 h-full",u?"bg-[#18181b]":"bg-[#EFF0F1]")}),e.jsx("div",{className:"flex flex-col h-full",children:d.display.palette.map((o,n)=>e.jsx("div",{className:"flex flex-1",children:o.map((h,k)=>e.jsx("div",{className:"w-2 h-full",style:{backgroundColor:h}},k))},n))})]},d.meta.id)})})});let Rs=!1,_e=null;async function Gt(){if(!Rs)return _e||(_e=(async()=>{try{await Promise.all([Se(()=>Promise.resolve({}),__vite__mapDeps([0])),Se(()=>Promise.resolve({}),__vite__mapDeps([1])),Se(()=>Promise.resolve({}),__vite__mapDeps([2])),Se(()=>Promise.resolve({}),__vite__mapDeps([3]))]),Rs=!0}catch(a){console.warn("Failed to load theme fonts:",a)}})(),_e)}const We=t.memo(function(){const{theme:c,setTheme:r}=es(),{themeId:p}=c,i=p==="breeze dark",d=t.useCallback(v=>{r(v?"breeze dark":"breeze light")},[r]);return e.jsx(ie,{enabled:i,onChange:d,label:e.jsxs(e.Fragment,{children:["Dark Mode: ",i?e.jsx(Zs,{className:"w-3.5 h-3.5 text-sys-blue inline"}):e.jsx(et,{className:"w-3.5 h-3.5 text-[#e8a517] inline"})]}),tooltip:"Switch between dark and light mode",size:"md"})}),Bt=t.memo(function({layout:c="horizontal"}){return t.useEffect(()=>{Gt()},[]),c==="toggle-only"?e.jsx(We,{}):c==="thumbnails-only"?e.jsx(Ue,{}):c==="vertical"?e.jsxs("div",{className:"flex flex-col items-start gap-3",children:[e.jsx(We,{}),e.jsx(Ue,{})]}):e.jsxs("div",{className:"flex items-stretch gap-4",children:[e.jsx("div",{className:"flex-shrink-0 flex items-start",children:e.jsx(We,{})}),e.jsx(Ue,{compact:!0})]})}),Ut=1e4,Xe=2e3;function Ye(a,c,r){const[p,i]=t.useState("idle"),[d,v]=t.useState(null),u=t.useRef(!0),o=t.useRef(null),n=t.useRef(null),h=t.useRef(!1),k=t.useRef("idle"),E=t.useRef(a),y=t.useRef(c),w=t.useRef(r);k.current=p,E.current=a,y.current=c,w.current=r,t.useEffect(()=>(u.current=!0,()=>{u.current=!1,o.current&&clearTimeout(o.current),n.current&&clearTimeout(n.current)}),[]);const C=t.useCallback(async S=>{if(k.current==="loading")return;const I=E.current;o.current&&clearTimeout(o.current),n.current&&clearTimeout(n.current),h.current=!1,v(S),i("loading"),o.current=setTimeout(()=>{h.current||!u.current||(v(I),i("error"),n.current=setTimeout(()=>{u.current&&(i("idle"),v(null))},Xe))},Ut);try{if(await y.current(S),h.current=!0,o.current&&clearTimeout(o.current),!u.current)return;i("success"),n.current=setTimeout(()=>{var g;u.current&&(i("idle"),v(null),(g=w.current)==null||g.call(w))},Xe)}catch{if(h.current=!0,o.current&&clearTimeout(o.current),!u.current)return;v(I),i("error"),n.current=setTimeout(()=>{u.current&&(i("idle"),v(null))},Xe)}},[]);return{enabled:d!==null?d:a,status:p,toggle:C}}function Wt(){const{latitude:a,longitude:c,enabled:r,setLocation:p,enable:i,disable:d,clear:v}=st(),[u,o]=t.useState(!1),[n,h]=t.useState(""),[k,E]=t.useState(""),[y,w]=t.useState("idle"),[C,j]=t.useState(null),S=t.useRef(null),I=t.useRef(null),g=t.useRef(!0);t.useEffect(()=>(g.current=!0,()=>{g.current=!1,I.current&&clearTimeout(I.current)}),[]);const A=()=>{h((a==null?void 0:a.toFixed(6))??""),E((c==null?void 0:c.toFixed(6))??""),j(null),o(!0)},O=()=>{o(!1),j(null)};t.useEffect(()=>{if(!u)return;const m=z=>{y!=="loading"&&S.current&&!S.current.contains(z.target)&&O()};return document.addEventListener("mouseup",m),()=>document.removeEventListener("mouseup",m)},[u,y]);const x=(m,z)=>{const N=parseFloat(m),G=parseFloat(z);return isNaN(N)||isNaN(G)?"Please enter valid numbers":N<-90||N>90?"Latitude must be between -90 and 90":G<-180||G>180?"Longitude must be between -180 and 180":N===0&&G===0?"Coordinates (0, 0) are invalid":null},P=()=>{if(y==="loading")return;I.current&&clearTimeout(I.current);const m=x(n,k);if(m){j(m);return}w("loading"),j(null);const z=parseFloat(n),N=parseFloat(k);p(z,N),r||i(),w("success"),I.current=setTimeout(()=>{g.current&&(w("idle"),o(!1))},1e3)},_=()=>{r?d():i()},L=()=>{v(),o(!1)},T=a!==null&&c!==null;return e.jsx(Y,{children:e.jsxs("div",{ref:S,children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx(X,{icon:e.jsx(Vt,{}),title:"Stealth"}),e.jsxs("div",{className:"flex items-center gap-1",children:[T&&!u&&e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:_,className:l("relative inline-flex h-6 w-11 items-center rounded-full transition-colors border-2 mr-2",r?"bg-toggle-on border-toggle-on":"bg-toggle-off border-edge-subtle"),title:r?"Disable stealth location":"Enable stealth location",children:e.jsx("span",{className:l("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",r?"translate-x-5":"translate-x-0.5")})}),e.jsx("button",{onClick:L,className:"p-2 rounded-lg transition-colors text-fg-muted hover:text-sys-red hover:bg-sys-red/10",title:"Clear stealth location",children:e.jsx(Ps,{className:"w-4 h-4"})})]}),u?e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:O,disabled:y==="loading",className:l("p-2 rounded-lg transition-colors",y==="loading"?"text-fg-muted cursor-not-allowed":"text-fg-muted hover:text-sys-red hover:bg-sys-red/10"),title:"Cancel",children:e.jsx(J,{className:"w-4 h-4"})}),e.jsx("button",{onClick:P,disabled:y==="loading",className:l("p-2 rounded-lg transition-colors",y==="loading"?"text-sys-blue cursor-wait":y==="success"?"text-sys-green":y==="error"?"text-sys-red":"text-sys-green hover:bg-sys-green/10"),title:"Save",children:y==="loading"?e.jsx($,{className:"w-4 h-4 animate-spin"}):y==="success"?e.jsx(B,{className:"w-4 h-4"}):y==="error"?e.jsx(J,{className:"w-4 h-4"}):e.jsx(B,{className:"w-4 h-4"})})]}):e.jsx("button",{onClick:A,className:"p-2 rounded-lg transition-colors text-fg-muted hover:text-fg-primary hover:bg-subtle",title:T?"Edit stealth location":"Set stealth location",children:e.jsx(Ze,{className:"w-4 h-4"})})]})]}),e.jsx("div",{className:"bg-sys-cyan/5 rounded-xl p-3 mb-4",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Qe,{className:"w-4 h-4 text-sys-cyan flex-shrink-0 mt-0.5"}),e.jsxs("p",{className:"type-body-sm text-fg-muted",children:[e.jsx("span",{className:"text-fg-secondary",children:"Stealth mode"})," allows you to appear on the map and in topology analysis without broadcasting your location. Coordinates are stored locally in your browser only — ",e.jsx("span",{className:"text-sys-cyan",children:"never sent to config.yaml or the mesh"}),"."]})]})}),C&&e.jsx("div",{className:"text-xs mb-3 px-2 py-1.5 rounded-md text-sys-red bg-sys-red/10",children:C}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-1",children:u?"Latitude (°)":"Latitude"}),e.jsx("div",{className:l("h-[38px] rounded-full px-4 flex items-center transition-colors","bg-subtle-fill"),children:u?e.jsx("input",{type:"number",value:n,onChange:m=>h(m.target.value),step:"0.000001",min:"-90",max:"90",placeholder:"e.g. 34.052234",className:"w-full bg-transparent text-fg-primary focus:outline-none type-data placeholder:text-fg-muted/50"}):e.jsx("span",{className:l("type-data",T&&r?"text-fg-primary":"text-fg-muted"),children:T?a.toFixed(6):"Not set"})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-1",children:u?"Longitude (°)":"Longitude"}),e.jsx("div",{className:l("h-[38px] rounded-full px-4 flex items-center transition-colors","bg-subtle-fill"),children:u?e.jsx("input",{type:"number",value:k,onChange:m=>E(m.target.value),step:"0.000001",min:"-180",max:"180",placeholder:"e.g. -118.243685",className:"w-full bg-transparent text-fg-primary focus:outline-none type-data placeholder:text-fg-muted/50"}):e.jsx("span",{className:l("type-data",T&&r?"text-fg-primary":"text-fg-muted"),children:T?c.toFixed(6):"Not set"})})]})]}),T&&!u&&e.jsx("div",{className:"mt-3 pt-3 border-t border-edge-subtle",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:l("w-2 h-2 rounded-full",r?"bg-sys-green":"bg-fg-muted")}),e.jsx("span",{className:"type-body-sm text-fg-muted",children:r?"Stealth location active — you appear on maps with these coordinates":"Stealth location disabled — coordinates saved but not in use"})]})})]})})}const Xt=[{value:7.8,label:"7.8 kHz"},{value:10.4,label:"10.4 kHz"},{value:15.6,label:"15.6 kHz"},{value:20.8,label:"20.8 kHz"},{value:31.25,label:"31.25 kHz"},{value:41.7,label:"41.7 kHz"},{value:62.5,label:"62.5 kHz"},{value:125,label:"125 kHz"},{value:250,label:"250 kHz"},{value:500,label:"500 kHz"}],Yt=[5,6,7,8,9,10,11,12],Jt=[{value:5,label:"4/5"},{value:6,label:"4/6"},{value:7,label:"4/7"},{value:8,label:"4/8"}],Is={RADIO_CONFIG:"radioConfig"};function Qt(a){if(!a)return"Never";const r=Date.now()-a*1e3,p=Math.floor(r/6e4),i=Math.floor(r/36e5),d=Math.floor(r/864e5);return p<1?"Just now":p<60?`${p}m ago`:i<24?`${i}h ago`:d<365?`${d}d ago`:`${Math.floor(d/365)}y ago`}function Ds({node:a,level:c,expandedKeys:r,selectedKeyId:p,globalFloodPolicy:i,onSelect:d,onToggle:v}){const u=r.has(a.id),o=p===a.id,n=a.children&&a.children.length>0,h=i==="allow";return e.jsxs("div",{children:[e.jsxs("div",{className:l("flex items-center gap-2 h-[36px] px-3 rounded-full cursor-pointer transition-colors",o?"bg-sys-blue/15":"hover:bg-subtle-fill",h&&"opacity-50 cursor-not-allowed"),style:{marginLeft:`${c*16}px`},onClick:()=>!h&&d(a.id),children:[n?e.jsx("button",{onClick:k=>{k.stopPropagation(),v(a.id)},className:"p-1 hover:bg-subtle-fill-hover rounded-full transition-colors",children:e.jsx(Rt,{className:l("w-3.5 h-3.5 text-fg-muted transition-transform",u&&"rotate-90")})}):e.jsx("span",{className:"w-5"}),e.jsx(Mt,{className:"w-4 h-4 text-sys-blue flex-shrink-0"}),e.jsx("span",{className:"type-data text-fg-primary flex-1 truncate",children:a.name}),e.jsx("span",{className:"type-data-xs text-fg-muted hidden sm:inline",title:a.last_used?new Date(a.last_used*1e3).toLocaleString():void 0,children:Qt(a.last_used)}),e.jsx("span",{className:l("type-data-xs px-2 py-0.5 rounded-full",a.floodPolicy==="allow"?"bg-sys-green/15 text-sys-green":"bg-sys-red/15 text-sys-red"),children:a.floodPolicy==="allow"?"Allow":"Deny"})]}),n&&u&&e.jsx("div",{children:a.children.map(k=>e.jsx(Ds,{node:k,level:c+1,expandedKeys:r,selectedKeyId:p,globalFloodPolicy:i,onSelect:d,onToggle:v},k.id))})]})}function Zt(){const[a,c]=t.useState(jt),[r,p]=t.useState(vt),[i,d]=t.useState(!1),v=t.useCallback(n=>{c(n),Nt(n)},[]),u=t.useCallback(n=>{const h=parseFloat(n.target.value);p(h),kt(h)},[]),o=t.useCallback(async()=>{i||(d(!0),await wt(),d(!1))},[i]);return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(ie,{enabled:a,onChange:v,label:e.jsxs(e.Fragment,{children:["Sound: ",e.jsx("span",{className:a?"text-sys-green":"text-sys-red",children:a?"On":"Off"})]}),tooltip:"Enable or disable UI sound effects and haptic audio feedback",size:"md"}),e.jsx(F,{color:"primary",outline:!0,onClick:o,disabled:!a||i,className:"w-16 justify-center",children:i?"…":"Test"})]}),e.jsxs("div",{className:l("flex items-center gap-3",!a&&"opacity-40 pointer-events-none"),children:[e.jsx("span",{className:"type-label text-fg-muted w-14 shrink-0",children:"Volume"}),e.jsx("input",{type:"range",min:0,max:1,step:.05,value:r,onChange:u,className:"flex-1 accent-sys-blue h-1.5 cursor-pointer"}),e.jsxs("span",{className:"data-box w-16 justify-center",children:[Math.round(r*100),"%"]})]})]})}function ha(){var js,vs,Ns,ks,ws,Cs;const{stats:a,setMode:c,clearModeMutation:r,setDutyCycleConfig:p,clearDutyCycleMutation:i,fetchStats:d,startMutation:v,clearMutation:u}=tt(),o=(js=a==null?void 0:a.config)==null?void 0:js.radio,n=(vs=a==null?void 0:a.config)==null?void 0:vs.repeater,h=(Ns=a==null?void 0:a.config)==null?void 0:Ns.duty_cycle,k=(a==null?void 0:a.node_name)||((ks=a==null?void 0:a.config)==null?void 0:ks.node_name)||"Unknown Node",E=(n==null?void 0:n.mode)??"forward",y=(h==null?void 0:h.enforcement_enabled)??!1,w=(ws=a==null?void 0:a.config)==null?void 0:ws.delays,C=t.useRef(!0);t.useEffect(()=>(C.current=!0,()=>{C.current=!1}),[]);const j=(Cs=a==null?void 0:a.config)==null?void 0:Cs.web,[S,I]=t.useState([]),[g,A]=t.useState(!1),[O,x]=t.useState(null),[P,_]=t.useState(!1),[L,T]=t.useState(""),[m,z]=t.useState(null),[N,G]=t.useState(!1),[ae,Re]=t.useState(null),[Ie,ss]=t.useState(!1),[ts,as]=t.useState(!1),[ns,ls]=t.useState(!1),[U,Ms]=t.useState([]),[As,rs]=t.useState(!1),[is,D]=t.useState(null),[Q,Ks]=t.useState(()=>localStorage.getItem("pymc:globalFloodPolicy")==="allow"?"allow":"deny"),os=t.useCallback(s=>{Ks(s),localStorage.setItem("pymc:globalFloodPolicy",s)},[]),[cs,ds]=t.useState(!1),[K,Pe]=t.useState(null),[Ls,zs]=t.useState(new Set),[ge,me]=t.useState(!1),[be,ne]=t.useState(!1),[je,le]=t.useState(!1),[M,W]=t.useState(null),[Z,xe]=t.useState(null),[ve,Ne]=t.useState(""),[De,fe]=t.useState("allow"),[q,re]=t.useState(!1),[ke,us]=t.useState(!0),[he,Me]=t.useState(!1),[Os,ms]=t.useState(!0),[pe,ee]=t.useState("idle"),[Vs,Ae]=t.useState(!1),[Ke,Hs]=t.useState(!1),xs=t.useCallback(()=>{const s=w==null?void 0:w.tx_delay_factor;return s&&typeof s=="object"&&"parsedValue"in s?s.parsedValue??1:typeof s=="number"?s:1},[w]),fs=t.useCallback(()=>{const s=w==null?void 0:w.direct_tx_delay_factor;return typeof s=="number"?s:.5},[w]),Le=t.useCallback(()=>{const s=h==null?void 0:h.max_airtime_percent;return typeof s=="number"?s:s&&typeof s=="object"&&"parsedValue"in s?s.parsedValue??6:6},[h]),ze=Ye(E==="forward",async s=>{await c(s?"forward":"monitor")},r),Oe=Ye(y,async s=>{await p({max_airtime_percent:Le(),enforcement_enabled:s})},i),Ve=Ye((j==null?void 0:j.cors_enabled)??!1,async s=>{var b;const f=await Es({web:{cors_enabled:s}});if(!f.success&&!((b=f.data)!=null&&b.persisted))throw new Error("CORS update failed");await d()}),V=t.useCallback(async s=>{v(Is.RADIO_CONFIG);try{const f=await at(s);if(!f.success)throw new Error(f.error||"Failed to save");await d({force:!0}).catch(()=>{})}finally{u(Is.RADIO_CONFIG)}},[v,u,d]);t.useEffect(()=>{(async()=>{ms(!0);try{const f=await mt();f.success&&f.data?Me(f.data.exists):Me(!1);const b=j==null?void 0:j.web_path;us(!b||b==="")}catch{Me(!1)}finally{ms(!1)}})()},[j==null?void 0:j.web_path]);const hs=async s=>{var f;if(pe!=="loading"){ee("loading");try{const b=await Es({web:{web_path:s?null:"/opt/pymc_console/web/html"}});if(!C.current)return;b.success||(f=b.data)!=null&&f.persisted?(us(s),ee("success"),Ae(!0),setTimeout(()=>{C.current&&ee("idle")},2e3)):(ee("error"),setTimeout(()=>{C.current&&ee("idle")},2e3))}catch{if(!C.current)return;ee("error"),setTimeout(()=>{C.current&&ee("idle")},2e3)}}},$s=async()=>{if(!Ke){Hs(!0);try{await xt(),Ae(!1),setTimeout(()=>{window.location.reload()},2e3)}catch{Ae(!1),setTimeout(()=>{window.location.reload()},3e3)}}},we=t.useCallback(async()=>{A(!0),x(null);try{const s=await Ht();I(s.tokens||[])}catch(s){x(s instanceof Error?s.message:"Failed to fetch tokens")}finally{A(!1)}},[]);t.useEffect(()=>{we()},[we]);const ps=async()=>{if(!L.trim()){x("Token name is required");return}ss(!0),x(null);try{const s=await $t(L.trim());z(s.token||null),_(!1),G(!0),T(""),await we()}catch(s){x(s instanceof Error?s.message:"Failed to create token")}finally{ss(!1)}},qs=async()=>{if(ae){as(!0),x(null);try{await qt(ae.id),await we(),Re(null)}catch(s){x(s instanceof Error?s.message:"Failed to revoke token")}finally{as(!1)}}},Gs=()=>{m&&(navigator.clipboard.writeText(m),ls(!0),setTimeout(()=>ls(!1),2e3))},ys=s=>s?new Date(s*1e3).toLocaleString():"Never",gs=t.useCallback(s=>{const f=new Map,b=[];return s.forEach(R=>{const Ce={id:R.id,name:R.name,floodPolicy:R.flood_policy,transport_key:R.transport_key,last_used:R.last_used,parent_id:R.parent_id,children:[]};f.set(R.id,Ce)}),f.forEach(R=>{R.parent_id&&f.has(R.parent_id)?f.get(R.parent_id).children.push(R):b.push(R)}),b},[]),ye=t.useCallback(async()=>{rs(!0),D(null);try{const s=await dt();if(s.success&&s.data){const f=gs(s.data);Ms(f),Pe(b=>{if(b===null)return null;const R=Ce=>{for(const He of Ce)if(He.id===b||He.children&&R(He.children))return!0;return!1};return R(f)?b:null})}else D(s.error||"Failed to load transport keys")}catch(s){D(s instanceof Error?s.message:"Unknown error occurred")}finally{rs(!1)}},[gs]);t.useEffect(()=>{ye(),ut().then(s=>{s.success&&s.data&&os(s.data.global_flood_allow?"allow":"deny")}).catch(()=>{})},[ye]);const se=t.useCallback((s,f)=>{for(const b of s){if(b.id===f)return b;if(b.children){const R=se(b.children,f);if(R)return R}}return null},[]),Bs=t.useCallback(()=>{if(!K)return;const s=se(U,K);return s==null?void 0:s.name},[K,U,se]),Us=t.useCallback(s=>{zs(f=>{const b=new Set(f);return b.has(s)?b.delete(s):b.add(s),b})},[]),Ws=async s=>{ds(!0),D(null);try{const f=await ft(s==="allow");f.success?os(s):D(f.error||"Failed to update global flood policy")}catch(f){D(f instanceof Error?f.message:"Failed to update global flood policy")}finally{ds(!1)}},bs=async()=>{if(!ve.trim()){D("Key name is required");return}re(!0),D(null);try{const s=await ht({name:ve.trim(),flood_policy:De,parent_id:K??void 0});s.success?(await ye(),me(!1),Ne(""),fe("allow")):D(s.error||"Failed to add transport key")}catch(s){D(s instanceof Error?s.message:"Failed to add transport key")}finally{re(!1)}},Xs=async()=>{if(M){re(!0),D(null);try{const s=await pt(M.id,{name:M.name,flood_policy:M.floodPolicy});s.success?(await ye(),ne(!1),W(null)):D(s.error||"Failed to update transport key")}catch(s){D(s instanceof Error?s.message:"Failed to update transport key")}finally{re(!1)}}},Ys=async()=>{if(Z){re(!0),D(null);try{const s=await yt(Z.id);s.success?(await ye(),le(!1),xe(null),Pe(null)):D(s.error||"Failed to delete transport key")}catch(s){D(s instanceof Error?s.message:"Failed to delete transport key")}finally{re(!1)}}},Js=t.useCallback(()=>{if(!K)return;const s=se(U,K);s&&(W({...s}),ne(!0))},[K,U,se]);t.useEffect(()=>{const s=b=>{b.key==="Escape"&&(ge&&(me(!1),Ne(""),fe("allow")),be&&(ne(!1),W(null)),je&&(le(!1),xe(null)),P&&(_(!1),T("")),N&&(G(!1),z(null)))};if(ge||be||je||P||N)return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[ge,be,je,P,N]);const Qs=t.useCallback(()=>{if(!K)return;const s=se(U,K);s&&(xe(s),le(!0))},[K,U,se]);return e.jsxs(Ct,{children:[e.jsx(St,{title:"Configuration",icon:e.jsx(Ts,{})}),e.jsxs(Tt,{children:[e.jsxs(te,{template:"standard",children:[e.jsx(Te,{span:12,md:6,children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(nt,{}),title:"Repeater Settings"}),n?e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx("div",{className:"col-span-2",children:e.jsx(H,{label:"Node Name",value:k,onSave:async s=>V({node_name:s}),placeholder:"Enter node name",maxLength:50})}),e.jsx(H,{label:"Latitude",value:n.latitude!==0?n.latitude.toFixed(6):"Not set",editValue:String(n.latitude),type:"number",suffix:"°",step:1e-6,min:-90,max:90,onSave:async s=>V({latitude:parseFloat(s)})}),e.jsx(H,{label:"Longitude",value:n.longitude!==0?n.longitude.toFixed(6):"Not set",editValue:String(n.longitude),type:"number",suffix:"°",step:1e-6,min:-180,max:180,onSave:async s=>V({longitude:parseFloat(s)})}),e.jsx(H,{label:"Advert Interval",value:n.send_advert_interval_hours>0?`${n.send_advert_interval_hours}h`:"Disabled",editValue:String(n.send_advert_interval_hours),type:"number",suffix:"hours",min:0,max:48,description:"0 = disabled, 3-48 hours",onSave:async s=>V({flood_advert_interval_hours:parseInt(s,10)})}),e.jsx(H,{label:"Score-based TX",value:n.use_score_for_tx?"Enabled":"Disabled",readOnly:!0})]}):e.jsx("p",{className:"text-fg-muted",children:"Loading repeater settings..."})]})}),e.jsx(Te,{span:12,md:6,children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(_t,{}),title:"Radio Configuration"}),o?e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(H,{label:"Frequency",value:lt(o.frequency),editValue:(o.frequency/1e6).toFixed(3),type:"number",suffix:"MHz",step:.001,min:400,max:930,onSave:async s=>V({frequency_mhz:parseFloat(s)})}),e.jsx(H,{label:"TX Power",value:`${o.tx_power} dBm`,editValue:String(o.tx_power),type:"number",suffix:"dBm",min:2,max:30,onSave:async s=>V({tx_power:parseInt(s,10)})}),e.jsx(Be,{label:"Bandwidth",value:rt(o.bandwidth),editValue:o.bandwidth/1e3,options:Xt,onSave:async s=>V({bandwidth_khz:parseFloat(s)})}),e.jsx(Be,{label:"Spreading Factor",value:`SF${o.spreading_factor}`,editValue:o.spreading_factor,options:Yt.map(s=>({value:s,label:`SF${s}`})),onSave:async s=>V({spreading_factor:parseInt(s,10)})}),e.jsx(Be,{label:"Coding Rate",value:`4/${o.coding_rate}`,editValue:o.coding_rate,options:Jt,onSave:async s=>V({coding_rate:parseInt(s,10)})}),e.jsx(H,{label:"Preamble",value:`${o.preamble_length} symbols`,readOnly:!0})]}):e.jsx("p",{className:"text-fg-muted",children:"Loading radio configuration..."})]})})]}),e.jsxs(te,{template:"standard",children:[e.jsx(Te,{span:12,md:6,children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(it,{}),title:"Operating Mode"}),e.jsx("p",{className:"type-label text-fg-muted mb-3",children:"Control how the repeater handles packets"}),e.jsxs("div",{className:"flex flex-col lg:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsx(ie,{enabled:ze.enabled,onChange:ze.toggle,label:"Repeat",tooltip:"Toggles repeater or monitor mode. In monitor mode, the repeater will not repeat packets from the mesh.",status:ze.status,size:"md"}),e.jsx(ie,{enabled:Oe.enabled,onChange:Oe.toggle,label:"Duty Cycle",tooltip:"Limit transmission time to comply with airtime utilization regulations",status:Oe.status,size:"md"}),e.jsx(H,{label:"Max Airtime",layout:"inline",value:`${Le().toFixed(1)}%`,editValue:String(Le()),type:"number",suffix:"%",step:.5,min:.1,max:100,onSave:async s=>{await p({max_airtime_percent:parseFloat(s),enforcement_enabled:y}),i()}})]}),e.jsx("div",{className:"hidden lg:block w-px bg-border-subtle"}),e.jsxs("div",{className:"flex-1 pt-4 lg:pt-0 border-t lg:border-t-0 border-edge-subtle",children:[e.jsx("label",{className:"type-label text-fg-muted block mb-3",children:"TX Delays"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(H,{label:"Flood",layout:"inline",value:`${xs().toFixed(2)}x`,editValue:String(xs()),type:"number",suffix:"x",step:.1,min:0,max:5,onSave:async s=>V({tx_delay_factor:parseFloat(s)})}),e.jsx(H,{label:"Direct",layout:"inline",value:`${fs().toFixed(2)}s`,editValue:String(fs()),type:"number",suffix:"s",step:.1,min:0,max:5,onSave:async s=>V({direct_tx_delay_factor:parseFloat(s)})})]})]})]})]})}),e.jsx(Te,{span:12,md:6,children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(Ts,{}),title:"App Settings"}),e.jsx("p",{className:"type-body-sm text-fg-muted mb-4",children:"Appearance and web server options."}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(ie,{enabled:Ve.enabled,onChange:Ve.toggle,label:"Enable CORS",tooltip:"Allow cross-origin API access",status:Ve.status,size:"md"}),e.jsx("div",{children:e.jsx(Bt,{})}),e.jsx(Zt,{})]})]})})]}),e.jsx(te,{template:"auto",children:e.jsxs(Y,{neomorphic:!0,children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:[e.jsx(X,{icon:e.jsx(Fs,{}),title:"Regions Transport Keys",subtitle:"Manage regional key hierarchy for flood control"}),e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(F,{color:"primary",outline:!0,onClick:()=>me(!0),disabled:Q==="allow",children:[e.jsx(_s,{"data-slot":"icon"}),"Add"]}),e.jsx(F,{color:"primary",outline:!0,onClick:Js,disabled:!K||Q==="allow",children:"Edit"}),e.jsx(F,{color:"danger",outline:!0,onClick:Qs,disabled:!K||Q==="allow",children:"Delete"})]})]}),e.jsx("div",{className:"bg-subtle-fill radius-inner p-4 mb-4",children:e.jsx(ie,{enabled:Q==="deny",onChange:s=>Ws(s?"deny":"allow"),label:e.jsxs(e.Fragment,{children:["Require Transport Keys: ",e.jsx("span",{className:Q==="deny"?"text-sys-green":"text-sys-red",children:Q==="deny"?"On":"Off"})]}),tooltip:"When enabled, only packets with matching transport keys are forwarded. When disabled, all packets flood freely.",status:cs?"loading":"idle",disabled:cs,dangerOff:!0,size:"md",className:"flex-row-reverse justify-between w-full"})}),is&&e.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-sys-red bg-sys-red/10",children:is}),e.jsx("div",{className:"bg-subtle-fill radius-inner p-4 min-h-[120px]",children:As?e.jsxs("div",{className:"flex items-center justify-center py-6",children:[e.jsx($,{className:"w-5 h-5 animate-spin text-sys-blue mr-2"}),e.jsx("span",{className:"type-body-sm text-fg-muted",children:"Loading transport keys..."})]}):U.length===0?e.jsxs("div",{className:"text-center py-6",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-subtle-fill mx-auto mb-3 flex items-center justify-center",children:e.jsx(Fs,{className:"w-6 h-6 text-fg-muted/50"})}),e.jsx("p",{className:"type-body text-fg-muted",children:"No transport keys found"}),e.jsx("p",{className:"type-body-sm text-fg-muted/70 mt-1",children:"Add your first transport key to get started"})]}):e.jsx("div",{className:"space-y-1",children:U.map(s=>e.jsx(Ds,{node:s,level:0,expandedKeys:Ls,selectedKeyId:K,globalFloodPolicy:Q,onSelect:Pe,onToggle:Us},s.id))})})]})}),e.jsx(te,{template:"auto",children:e.jsxs(Y,{neomorphic:!0,children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:[e.jsx(X,{icon:e.jsx(qe,{}),title:"API Tokens",subtitle:"Manage API tokens for machine-to-machine authentication"}),e.jsxs(F,{color:"primary",outline:!0,onClick:()=>_(!0),children:[e.jsx(_s,{"data-slot":"icon"}),"Create Token"]})]}),e.jsx("div",{className:"bg-sys-cyan/5 radius-inner p-4 mb-4",children:e.jsxs("div",{className:"flex gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-sys-cyan/20 flex items-center justify-center flex-shrink-0",children:e.jsx(Qe,{className:"w-4 h-4 text-sys-cyan"})}),e.jsxs("div",{className:"type-body-sm text-fg-muted",children:[e.jsxs("p",{children:[e.jsx("span",{className:"text-fg-secondary",children:"API tokens"})," are used for machine-to-machine authentication. Include the token in the ",e.jsx("code",{className:"type-code bg-sys-cyan/20 px-1.5 py-0.5 rounded-full text-sys-cyan",children:"X-API-Key"})," header when making API requests."]}),e.jsx("p",{className:"mt-1 text-fg-muted/70",children:"Tokens are only shown once at creation. Store them securely."})]})]})}),O&&e.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-sys-red bg-sys-red/10",children:O}),g&&S.length===0?e.jsxs("div",{className:"flex items-center justify-center py-6",children:[e.jsx($,{className:"w-5 h-5 animate-spin text-sys-blue mr-2"}),e.jsx("span",{className:"type-body-sm text-fg-muted",children:"Loading tokens..."})]}):S.length>0?e.jsx("div",{className:"space-y-2",children:S.map(s=>e.jsx("div",{className:"bg-subtle-fill hover:bg-subtle-fill-strong radius-inner p-4 transition-base",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-sys-blue/10 flex items-center justify-center flex-shrink-0",children:e.jsx(qe,{className:"w-5 h-5 text-sys-blue"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h3",{className:"type-body text-fg-primary font-medium truncate",children:s.name}),e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:gap-4 mt-0.5",children:[e.jsxs("span",{className:"type-data-sm text-fg-muted truncate",children:["Created: ",ys(s.created_at)]}),e.jsxs("span",{className:"type-data-sm text-fg-muted truncate",children:["Last used: ",ys(s.last_used)]})]})]})]}),e.jsxs(F,{color:"danger",outline:!0,onClick:()=>Re({id:s.id,name:s.name}),disabled:ts,children:[e.jsx(Ps,{"data-slot":"icon"}),"Revoke"]})]})},s.id))}):e.jsxs("div",{className:"bg-subtle-fill radius-inner p-6 text-center",children:[e.jsx("div",{className:"w-14 h-14 rounded-full bg-subtle-fill mx-auto mb-4 flex items-center justify-center",children:e.jsx(qe,{className:"w-7 h-7 text-fg-muted/50"})}),e.jsx("h3",{className:"type-body text-fg-primary font-medium mb-1",children:"No API Tokens"}),e.jsx("p",{className:"type-body-sm text-fg-muted mb-4",children:"Create a token to enable API access"}),e.jsx(F,{color:"primary",outline:!0,onClick:()=>_(!0),children:"Create Your First Token"})]})]})}),e.jsx(te,{template:"auto",children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(Lt,{}),title:"Web Frontend",subtitle:"Choose which web interface to use",className:"mb-4"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:l("flex items-start gap-3 p-4 bg-subtle-fill radius-card border-2 cursor-pointer transition-base",ke?"border-sys-blue bg-sys-blue/5":"border-transparent hover:border-sys-blue/30",pe==="loading"&&"opacity-50 pointer-events-none"),children:[e.jsx("input",{type:"radio",name:"frontend",checked:ke,onChange:()=>hs(!0),disabled:pe==="loading",className:"mt-1 h-4 w-4 text-sys-blue focus:ring-sys-blue focus:ring-offset-bg-elevated"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"type-body text-fg-primary font-medium",children:"Default Frontend"}),e.jsx("a",{href:"https://github.com/rightup/pyMC_Repeater",target:"_blank",rel:"noopener noreferrer",onClick:s=>s.stopPropagation(),className:"type-data-xs bg-sys-cyan/15 text-sys-cyan px-2.5 py-0.5 rounded-full font-medium hover:bg-sys-cyan/25 transition-colors",children:"@RightUp"})]}),e.jsx("div",{className:"type-body-sm text-fg-muted mt-1",children:"Built-in pyMC Repeater web interface"}),e.jsx("div",{className:"type-data-xs text-fg-muted/60 mt-1",children:"/opt/pymc_repeater/repeater/web/html"})]})]}),e.jsxs("label",{className:l("flex items-start gap-3 p-4 bg-subtle-fill radius-card border-2 cursor-pointer transition-base",ke?"border-transparent hover:border-sys-blue/30":"border-sys-blue bg-sys-blue/5",pe==="loading"&&"opacity-50 pointer-events-none"),children:[e.jsx("input",{type:"radio",name:"frontend",checked:!ke,onChange:()=>hs(!1),disabled:pe==="loading",className:"mt-1 h-4 w-4 text-sys-blue focus:ring-sys-blue focus:ring-offset-bg-elevated"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"type-body text-fg-primary font-medium",children:"PyMC Console"}),e.jsx("span",{className:"type-data-xs bg-sys-indigo/15 text-sys-indigo px-2.5 py-0.5 rounded-full font-medium",children:"@Treehouse ⚡"})]}),e.jsx("div",{className:"type-body-sm text-fg-muted mt-1",children:"Alternative web interface for pyMC Repeater"}),e.jsx("div",{className:"type-data-xs text-fg-muted/60 mt-1",children:"/opt/pymc_console/web/html"})]})]})]}),!Os&&e.jsx("div",{className:l("bg-subtle-fill radius-card p-4",he?"border border-sys-green/20":"border border-sys-cyan/20"),children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:l("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0",he?"bg-sys-green/20":"bg-sys-cyan/20"),children:he?e.jsx(Ft,{className:"w-4 h-4 text-sys-green"}):e.jsx(Qe,{className:"w-4 h-4 text-sys-cyan"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"type-body text-fg-primary font-medium",children:he?"PyMC Console has been detected":"PyMC Console Not Installed"}),he?e.jsxs("p",{className:"type-body-sm text-fg-muted mt-1",children:["PyMC Console is installed at ",e.jsx("code",{className:"type-code bg-sys-green/10 px-1.5 py-0.5 rounded-full text-sys-green",children:"/opt/pymc_console/web/html"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"type-body-sm text-fg-muted mt-1 mb-3",children:["PyMC Console must be installed at ",e.jsx("code",{className:"type-code bg-sys-cyan/10 px-1.5 py-0.5 rounded-full text-sys-cyan",children:"/opt/pymc_console/web/html"})," before selecting this option."]}),e.jsxs(F,{color:"primary",outline:!0,href:"https://github.com/dmduran12/pymc_console-dist",children:[e.jsx(Pt,{"data-slot":"icon"}),"PyMC Console Install Instructions"]})]})]})]})}),Vs&&e.jsx("div",{className:"bg-subtle-fill radius-card p-4 border border-sys-indigo/30",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-sys-indigo/20 flex items-center justify-center flex-shrink-0",children:e.jsx(Ge,{className:"w-4 h-4 text-sys-indigo"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"type-body text-fg-primary font-medium",children:"Service restart required"}),e.jsx("p",{className:"type-body-sm text-fg-muted mt-1",children:"Web frontend changes will take effect after restarting the pymc-repeater service."})]})]}),e.jsx(F,{color:"warning",outline:!0,onClick:$s,disabled:Ke,children:Ke?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Restarting..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Et,{"data-slot":"icon"}),"Restart Now"]})})]})})]})]})}),a&&e.jsx(te,{template:"auto",children:e.jsx(bt,{nodeName:k,repeaterVersion:a.version,coreVersion:a.core_version,localHash:a.local_hash,publicKey:a.public_key})}),a&&((n==null?void 0:n.latitude)===0||!(n!=null&&n.latitude))&&((n==null?void 0:n.longitude)===0||!(n!=null&&n.longitude))&&e.jsx(te,{template:"auto",children:e.jsx(Wt,{})})]}),P&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&_(!1),role:"dialog","aria-modal":"true","aria-labelledby":"create-token-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-md w-full",children:[e.jsx("h3",{id:"create-token-modal-title",className:"type-micro mb-4",children:"Create API Token"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx($e,{label:"Token Name",type:"text",value:L,onChange:s=>T(s.target.value),placeholder:"e.g., Production Server, CI/CD Pipeline",description:"Give your token a descriptive name to identify its purpose",onKeyDown:s=>s.key==="Enter"&&ps(),autoFocus:!0}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx(F,{color:"muted",outline:!0,onClick:()=>{_(!1),T(""),x(null)},disabled:Ie,children:"Cancel"}),e.jsx(F,{color:"primary",onClick:ps,disabled:Ie||!L.trim(),children:Ie?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Creating..."]}):"Create Token"})]})]})]})}),N&&m&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&G(!1),role:"dialog","aria-modal":"true","aria-labelledby":"show-token-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-lg w-full",children:[e.jsx("h3",{id:"show-token-modal-title",className:"type-micro mb-4",children:"Token Created Successfully"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"bg-sys-indigo/10 border border-sys-indigo/30 radius-inner p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ge,{className:"w-4 h-4 text-sys-indigo flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-fg-secondary",children:[e.jsx("strong",{children:"Save this token now!"})," For security reasons, it will not be shown again."]})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-primary block mb-1.5",children:"Your API Token"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ot,{value:m,readOnly:!0,className:"flex-1 font-mono"}),e.jsxs(F,{color:"primary",outline:!0,onClick:Gs,children:[ns?e.jsx(B,{"data-slot":"icon",className:"text-sys-green"}):e.jsx(ct,{"data-slot":"icon"}),ns?"Copied!":"Copy"]})]})]}),e.jsxs("div",{className:"bg-sys-cyan/10 border border-sys-cyan/30 radius-inner p-3",children:[e.jsx("p",{className:"text-sm text-fg-secondary mb-2",children:e.jsx("strong",{children:"Usage Example:"})}),e.jsxs("code",{className:"block bg-sys-cyan/20 px-3 py-2 rounded type-code text-sys-cyan overflow-x-auto",children:['curl -H "X-API-Key: ',m.slice(0,12),'..." ',window.location.origin,"/api/stats"]})]}),e.jsx("div",{className:"flex justify-end mt-6",children:e.jsx(F,{color:"primary",onClick:()=>{G(!1),z(null)},children:"Done"})})]})]})}),e.jsx(gt,{isOpen:!!ae,title:"Revoke API Token",message:`Are you sure you want to revoke the token '${ae==null?void 0:ae.name}'? This action cannot be undone.`,confirmLabel:ts?"Revoking...":"Revoke",cancelLabel:"Cancel",variant:"danger",onConfirm:qs,onCancel:()=>Re(null)}),ge&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&me(!1),role:"dialog","aria-modal":"true","aria-labelledby":"add-key-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-md w-full",children:[e.jsx("h3",{id:"add-key-modal-title",className:"type-micro mb-4",children:"Add Transport Key"}),e.jsxs("div",{className:"space-y-4",children:[K&&e.jsxs("div",{className:"bg-sys-cyan/10 border border-sys-cyan/30 radius-inner p-3 text-sm text-fg-secondary",children:["Adding as child of: ",e.jsx("strong",{className:"text-fg-primary",children:Bs()})]}),e.jsx($e,{label:"Key Name",type:"text",value:ve,onChange:s=>Ne(s.target.value),placeholder:"e.g., Region Name, Group Key",onKeyDown:s=>s.key==="Enter"&&bs(),autoFocus:!0}),e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-2",children:"Flood Policy"}),e.jsxs("div",{className:"toggle-group w-full",children:[e.jsx("button",{onClick:()=>fe("deny"),className:l("toggle-group-item flex-1",De==="deny"&&"active !text-sys-red"),children:"Deny"}),e.jsx("button",{onClick:()=>fe("allow"),className:l("toggle-group-item flex-1",De==="allow"&&"active !text-sys-green"),children:"Allow"})]})]}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx(F,{color:"muted",outline:!0,onClick:()=>{me(!1),Ne(""),fe("allow")},disabled:q,children:"Cancel"}),e.jsx(F,{color:"primary",onClick:bs,disabled:q||!ve.trim(),children:q?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Adding..."]}):"Add Key"})]})]})]})}),be&&M&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&ne(!1),role:"dialog","aria-modal":"true","aria-labelledby":"edit-key-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-md w-full",children:[e.jsx("h3",{id:"edit-key-modal-title",className:"type-micro mb-4",children:"Edit Transport Key"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx($e,{label:"Key Name",type:"text",value:M.name,onChange:s=>W({...M,name:s.target.value}),autoFocus:!0}),e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-2",children:"Flood Policy"}),e.jsxs("div",{className:"toggle-group w-full",children:[e.jsx("button",{onClick:()=>W({...M,floodPolicy:"deny"}),className:l("toggle-group-item flex-1",M.floodPolicy==="deny"&&"active !text-sys-red"),children:"Deny"}),e.jsx("button",{onClick:()=>W({...M,floodPolicy:"allow"}),className:l("toggle-group-item flex-1",M.floodPolicy==="allow"&&"active !text-sys-green"),children:"Allow"})]})]}),M.transport_key&&e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-2",children:"Transport Key"}),e.jsx("code",{className:"block bg-input-bg px-3 py-2 radius-inner border border-input-border type-code text-fg-muted overflow-x-auto",children:M.transport_key})]}),e.jsxs("div",{className:"flex justify-between gap-3 mt-6",children:[e.jsx(F,{color:"danger",outline:!0,onClick:()=>{ne(!1),xe(M),le(!0),W(null)},disabled:q,children:"Delete"}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(F,{color:"muted",outline:!0,onClick:()=>{ne(!1),W(null)},disabled:q,children:"Cancel"}),e.jsx(F,{color:"primary",onClick:Xs,disabled:q||!M.name.trim(),children:q?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Saving..."]}):"Save"})]})]})]})]})}),je&&Z&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&le(!1),role:"dialog","aria-modal":"true","aria-labelledby":"delete-key-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-md w-full",children:[e.jsx("h3",{id:"delete-key-modal-title",className:"type-micro mb-4",children:"Delete Transport Key"}),e.jsxs("p",{className:"text-fg-secondary mb-4",children:["Are you sure you want to delete ",e.jsxs("strong",{className:"text-fg-primary",children:["'",Z.name,"'"]}),"?"]}),Z.children&&Z.children.length>0&&e.jsx("div",{className:"bg-sys-indigo/10 border border-sys-indigo/30 radius-inner p-3 mb-4",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ge,{className:"w-4 h-4 text-sys-indigo flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-fg-secondary",children:["This key has ",Z.children.length," child key(s). Deleting will also remove all children."]})]})}),e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsx(F,{color:"muted",outline:!0,onClick:()=>{le(!1),xe(null)},disabled:q,children:"Cancel"}),e.jsx(F,{color:"danger",onClick:Ys,disabled:q,children:q?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Deleting..."]}):"Delete"})]})]})})]})}export{ha as default}; diff --git a/frontend/dist/assets/Configuration-DbTSQonP.js b/frontend/dist/assets/Configuration-DbTSQonP.js new file mode 100644 index 00000000..925d9dee --- /dev/null +++ b/frontend/dist/assets/Configuration-DbTSQonP.js @@ -0,0 +1,32 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/latin-400-BcR6IdUc.css","assets/latin-500-DCnAHIrw.css","assets/latin-600-CnkPk-vb.css","assets/latin-700-UC1i-VSI.css"])))=>i.map(i=>d[i]); +import{d as ue,r as t,j as e,c as l,L as $,w as B,bc as J,ae as Ss,dA as Ee,dB as es,dC as Je,bo as Se,T as ie,M as Zs,S as et,dD as st,F as X,cb as Qe,bN as tt,v as at,dE as Ts,dF as nt,dG as lt,dH as rt,R as it,B as F,dI as $e,I as ot,x as ct}from"./index-C8IY8K2r.js";import{g as dt,a as ut,c as mt,r as xt,s as ft,b as ht,u as pt,d as yt}from"./system-D5HdVkRh.js";import{T as Ps,C as gt}from"./ConfirmModal-CNsW1W2q.js";import{N as bt}from"./NodeInformationCard-p2ujbtr-.js";import{i as jt,g as vt,s as Nt,a as kt,k as wt}from"./keycap-sfx-ByZp-njj.js";import{C as Y,P as Ct,a as St,B as Tt}from"./PageLayout-NQBVrM09.js";import{R as te,C as Te}from"./Grid-CEGkNRmt.js";import{A as _t}from"./antenna-DOuH490Q.js";import{P as _s}from"./plus-PWV57wbr.js";import{K as qe}from"./key-round-CQ-pu-yY.js";import{C as Ft}from"./circle-check-BOp4wLxA.js";import{T as Ge}from"./triangle-alert-8k00uu7o.js";import{R as Et}from"./refresh-cw-BqACEANM.js";import{C as Rt}from"./chevron-right-DUgYTR6d.js";import"./DataBox-W2v3wy8k.js";/** + * @license lucide-react v0.559.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const It=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],Pt=ue("external-link",It);/** + * @license lucide-react v0.559.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Dt=[["circle",{cx:"16",cy:"20",r:"2",key:"1vifvg"}],["path",{d:"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2",key:"3hgo9p"}],["path",{d:"m22 14-4.5 4.5",key:"1ef6z8"}],["path",{d:"m21 15 1 1",key:"1ejcpy"}]],Mt=ue("folder-key",Dt);/** + * @license lucide-react v0.559.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const At=[["rect",{width:"8",height:"5",x:"14",y:"17",rx:"1",key:"19aais"}],["path",{d:"M10 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v2.5",key:"1w6v7t"}],["path",{d:"M20 17v-2a2 2 0 1 0-4 0v2",key:"pwaxnr"}]],Fs=ue("folder-lock",At);/** + * @license lucide-react v0.559.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Kt=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],Lt=ue("monitor",Kt);/** + * @license lucide-react v0.559.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zt=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],Ze=ue("pencil",zt);/** + * @license lucide-react v0.559.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ot=[["path",{d:"M10.17 4.193a2 2 0 0 1 3.666.013",key:"pltmmw"}],["path",{d:"M14 21h2",key:"v4qezv"}],["path",{d:"m15.874 7.743 1 1.732",key:"10m0iw"}],["path",{d:"m18.849 12.952 1 1.732",key:"zadnam"}],["path",{d:"M21.824 18.18a2 2 0 0 1-1.835 2.824",key:"fvwuk4"}],["path",{d:"M4.024 21a2 2 0 0 1-1.839-2.839",key:"1e1kah"}],["path",{d:"m5.136 12.952-1 1.732",key:"1u4ldi"}],["path",{d:"M8 21h2",key:"i9zjee"}],["path",{d:"m8.102 7.743-1 1.732",key:"1zzo4u"}]],Vt=ue("triangle-dashed",Ot),Fe=1500,oe={stacked:"h-[38px]",inline:"h-[32px]"},ce={stacked:"px-3",inline:"px-2.5"},de="rounded-lg";function H({label:a,value:c,editValue:r,onSave:p,type:i="text",suffix:d,placeholder:v,readOnly:u=!1,layout:o="stacked",min:n,max:h,step:k,maxLength:E,description:y,className:w}){const[C,j]=t.useState(!1),[S,I]=t.useState(""),[g,A]=t.useState("idle"),O=t.useRef(null),x=t.useRef(!0),P=t.useRef(null),_=!u&&!!p;t.useEffect(()=>(x.current=!0,()=>{x.current=!1,P.current&&clearTimeout(P.current)}),[]);const L=t.useCallback(()=>{_&&(I(r??c),j(!0),A("idle"),requestAnimationFrame(()=>{var N;return(N=O.current)==null?void 0:N.select()}))},[_,r,c]),T=t.useCallback(()=>{j(!1),I(""),A("idle")},[]),m=t.useCallback(async()=>{if(!p||g==="loading")return;if(S===(r??c)){T();return}P.current&&clearTimeout(P.current),A("loading");try{if(await p(S),!x.current)return;A("success"),j(!1),P.current=setTimeout(()=>{x.current&&A("idle")},Fe)}catch{if(!x.current)return;A("error"),P.current=setTimeout(()=>{x.current&&A("idle")},Fe)}},[p,S,r,c,T,g]),z=t.useCallback(N=>{N.key==="Enter"?(N.preventDefault(),m()):N.key==="Escape"&&(N.preventDefault(),T())},[m,T]);return o==="inline"?e.jsxs("div",{className:l("group flex items-center justify-between gap-3",w),children:[e.jsx("label",{className:"type-label text-fg-muted truncate",children:a}),C?e.jsxs("div",{className:l(oe.inline,de,ce.inline,"flex items-center transition-all","bg-transparent border border-sys-blue/50 ring-1 ring-sys-blue/20","min-w-[100px]"),children:[e.jsx("input",{ref:O,type:i,value:S,onChange:N=>I(N.target.value),onKeyDown:z,placeholder:v,min:n,max:h,step:k,maxLength:E,disabled:g==="loading",className:l("bg-transparent text-fg-primary focus:outline-none type-data flex-1 min-w-0",d?"w-12 text-right":"w-full")}),d&&e.jsx("span",{className:"text-fg-muted type-data ml-1 shrink-0",children:d}),e.jsx("div",{className:"flex items-center gap-0.5 ml-2 shrink-0",children:g==="loading"?e.jsx($,{className:"w-3.5 h-3.5 text-fg-muted animate-spin"}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:m,className:"p-0.5 rounded hover:bg-sys-green/15 text-sys-green transition-colors",title:"Save (Enter)",children:e.jsx(B,{className:"w-3 h-3"})}),e.jsx("button",{onClick:T,className:"p-0.5 rounded hover:bg-sys-red/15 text-fg-muted hover:text-sys-red transition-colors",title:"Cancel (Esc)",children:e.jsx(J,{className:"w-3 h-3"})})]})})]}):e.jsxs("div",{className:l(oe.inline,de,ce.inline,"flex items-center justify-end transition-all min-w-[80px]","bg-input-bg border border-input-border",_&&"cursor-pointer hover:border-edge-strong"),onClick:_?L:void 0,children:[e.jsx("span",{className:"type-data text-fg-primary",children:c}),g==="success"&&e.jsx(B,{className:"w-3 h-3 text-sys-green ml-1.5 shrink-0"}),g==="error"&&e.jsx(J,{className:"w-3 h-3 text-sys-red ml-1.5 shrink-0"}),g==="idle"&&_&&e.jsx(Ze,{className:"w-3 h-3 text-fg-muted ml-1.5 opacity-0 group-hover:opacity-100 transition-opacity shrink-0"})]})]}):e.jsxs("div",{className:l("group",w),children:[e.jsx("label",{className:"type-label text-fg-muted block mb-1",children:a}),C?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:l(oe.stacked,de,ce.stacked,"flex items-center transition-all","bg-transparent border border-sys-blue/50 ring-1 ring-sys-blue/20"),children:[e.jsx("input",{ref:O,type:i,value:S,onChange:N=>I(N.target.value),onKeyDown:z,placeholder:v,min:n,max:h,step:k,maxLength:E,disabled:g==="loading",className:"w-full bg-transparent text-fg-primary focus:outline-none type-data flex-1 min-w-0"}),d&&e.jsx("span",{className:"text-fg-muted type-data ml-1 shrink-0",children:d}),e.jsx("div",{className:"flex items-center gap-0.5 ml-2 shrink-0",children:g==="loading"?e.jsx($,{className:"w-3.5 h-3.5 text-fg-muted animate-spin"}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:m,className:"p-1 rounded hover:bg-sys-green/15 text-sys-green transition-colors",title:"Save (Enter)",children:e.jsx(B,{className:"w-3.5 h-3.5"})}),e.jsx("button",{onClick:T,className:"p-1 rounded hover:bg-sys-red/15 text-fg-muted hover:text-sys-red transition-colors",title:"Cancel (Esc)",children:e.jsx(J,{className:"w-3.5 h-3.5"})})]})})]}),y&&e.jsx("p",{className:"type-data-xs text-fg-muted mt-1 ml-3",children:y})]}):e.jsxs("div",{className:l(oe.stacked,de,ce.stacked,"flex items-center transition-all","bg-input-bg border border-input-border",_&&"cursor-pointer hover:border-edge-strong"),onClick:_?L:void 0,children:[e.jsx("span",{className:"type-data text-fg-primary flex-1 whitespace-nowrap",children:c}),g==="success"&&e.jsx(B,{className:"w-3.5 h-3.5 text-sys-green shrink-0"}),g==="error"&&e.jsx(J,{className:"w-3.5 h-3.5 text-sys-red shrink-0"}),g==="idle"&&_&&e.jsx(Ze,{className:"w-3.5 h-3.5 text-fg-muted opacity-0 group-hover:opacity-100 transition-opacity shrink-0"})]})]})}function Be({label:a,value:c,editValue:r,options:p,onSave:i,readOnly:d=!1,layout:v="stacked",className:u}){const[o,n]=t.useState(!1),[h,k]=t.useState(""),[E,y]=t.useState("idle"),w=t.useRef(null),C=t.useRef(!0),j=t.useRef(null),S=!d&&!!i;t.useEffect(()=>(C.current=!0,()=>{C.current=!1,j.current&&clearTimeout(j.current)}),[]);const I=t.useCallback(()=>{S&&(k(String(r)),n(!0),y("idle"),requestAnimationFrame(()=>{var m;return(m=w.current)==null?void 0:m.focus()}))},[S,r]),g=t.useCallback(()=>{n(!1),k(""),y("idle")},[]),A=t.useCallback(async()=>{if(!(!i||E==="loading")){if(h===String(r)){g();return}j.current&&clearTimeout(j.current),y("loading");try{if(await i(h),!C.current)return;y("success"),n(!1),j.current=setTimeout(()=>{C.current&&y("idle")},Fe)}catch{if(!C.current)return;y("error"),j.current=setTimeout(()=>{C.current&&y("idle")},Fe)}}},[i,h,r,g,E]),O=t.useCallback(m=>{m.key==="Escape"&&(m.preventDefault(),g())},[g]),x=v==="inline",P=x?oe.inline:oe.stacked,_=x?ce.inline:ce.stacked,L=e.jsxs("div",{className:l(P,de,_,"flex items-center transition-all relative","bg-transparent border border-sys-blue/50 ring-1 ring-sys-blue/20",x&&"min-w-[100px]"),children:[e.jsx("select",{ref:w,value:h,onChange:m=>k(m.target.value),onKeyDown:O,disabled:E==="loading",className:l("bg-transparent text-fg-primary focus:outline-none appearance-none cursor-pointer type-data flex-1 min-w-0","pr-6"),children:p.map(m=>e.jsx("option",{value:m.value,children:m.label},String(m.value)))}),e.jsx(Ss,{className:"absolute right-auto w-3.5 h-3.5 text-fg-muted pointer-events-none",style:{right:E==="loading"?"2rem":"3.5rem"}}),e.jsx("div",{className:"flex items-center gap-0.5 ml-1 shrink-0",children:E==="loading"?e.jsx($,{className:l("text-fg-muted animate-spin",x?"w-3 h-3":"w-3.5 h-3.5")}):e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:A,className:l("rounded hover:bg-sys-green/15 text-sys-green transition-colors",x?"p-0.5":"p-1"),title:"Save",children:e.jsx(B,{className:x?"w-3 h-3":"w-3.5 h-3.5"})}),e.jsx("button",{onClick:g,className:l("rounded hover:bg-sys-red/15 text-fg-muted hover:text-sys-red transition-colors",x?"p-0.5":"p-1"),title:"Cancel (Esc)",children:e.jsx(J,{className:x?"w-3 h-3":"w-3.5 h-3.5"})})]})})]}),T=e.jsxs("div",{className:l(P,de,_,"flex items-center transition-all","bg-input-bg border border-input-border",S&&"cursor-pointer hover:border-edge-strong",x?"justify-end min-w-[80px]":""),onClick:S?I:void 0,children:[e.jsx("span",{className:l("type-data text-fg-primary",!x&&"flex-1"),children:c}),E==="success"&&e.jsx(B,{className:l("text-sys-green shrink-0",x?"w-3 h-3 ml-1.5":"w-3.5 h-3.5")}),E==="error"&&e.jsx(J,{className:l("text-sys-red shrink-0",x?"w-3 h-3 ml-1.5":"w-3.5 h-3.5")}),E==="idle"&&S&&e.jsx(Ss,{className:l("text-fg-muted opacity-0 group-hover:opacity-100 transition-opacity shrink-0",x?"w-3 h-3 ml-1.5":"w-3.5 h-3.5")})]});return x?e.jsxs("div",{className:l("group flex items-center justify-between",u),children:[e.jsx("label",{className:"type-label text-fg-muted shrink-0",children:a}),o?L:T]}):e.jsxs("div",{className:l("group",u),children:[e.jsx("label",{className:"type-label text-fg-muted block mb-1",children:a}),o?L:T]})}async function Ht(){try{return await Ee("/api/auth/tokens")}catch{return{tokens:[]}}}async function $t(a){return Ee("/api/auth/tokens",{method:"POST",body:JSON.stringify({name:a})})}async function qt(a){return Ee(`/api/auth/tokens/${a}`,{method:"DELETE"})}async function Es(a){return Ee("/api/update_web_config",{method:"POST",body:JSON.stringify(a)})}t.memo(function(){const{theme:c}=es(),{themeId:r}=c,p=Je.find(i=>i.meta.id===r)??Je[0];return e.jsx("div",{className:"h-10 flex items-center justify-center",children:e.jsx("span",{className:"font-medium transition-all duration-300 leading-none text-center text-fg-secondary",style:{fontFamily:"Inter, system-ui, sans-serif",fontSize:"clamp(0.75rem, 0.6rem + 1.5vw, 1.1rem)",letterSpacing:"-0.02em"},children:p.meta.name})})});const Ue=t.memo(function({compact:c=!1}){const{theme:r,setTheme:p}=es(),{themeId:i}=r;return e.jsx("div",{className:l("grid grid-cols-2 gap-2",c?"w-full min-w-0 self-stretch":"w-full"),children:[...Je].reverse().map(d=>{const v=i===d.meta.id,u=d.meta.isDark;return e.jsxs("button",{type:"button",title:d.meta.name,className:l("flex flex-row items-stretch radius-inner transition-all duration-200 ease-out overflow-hidden cursor-pointer",c&&"h-6",v?"ring-2 ring-sys-blue scale-[1.02]":"opacity-70 hover:opacity-100"),onClick:()=>p(d.meta.id),children:[e.jsx("div",{className:l("flex-1 h-full",u?"bg-[#18181b]":"bg-[#EFF0F1]")}),e.jsx("div",{className:"flex flex-col h-full",children:d.display.palette.map((o,n)=>e.jsx("div",{className:"flex flex-1",children:o.map((h,k)=>e.jsx("div",{className:"w-2 h-full",style:{backgroundColor:h}},k))},n))})]},d.meta.id)})})});let Rs=!1,_e=null;async function Gt(){if(!Rs)return _e||(_e=(async()=>{try{await Promise.all([Se(()=>Promise.resolve({}),__vite__mapDeps([0])),Se(()=>Promise.resolve({}),__vite__mapDeps([1])),Se(()=>Promise.resolve({}),__vite__mapDeps([2])),Se(()=>Promise.resolve({}),__vite__mapDeps([3]))]),Rs=!0}catch(a){console.warn("Failed to load theme fonts:",a)}})(),_e)}const We=t.memo(function(){const{theme:c,setTheme:r}=es(),{themeId:p}=c,i=p==="breeze dark",d=t.useCallback(v=>{r(v?"breeze dark":"breeze light")},[r]);return e.jsx(ie,{enabled:i,onChange:d,label:e.jsxs(e.Fragment,{children:["Dark Mode: ",i?e.jsx(Zs,{className:"w-3.5 h-3.5 text-sys-blue inline"}):e.jsx(et,{className:"w-3.5 h-3.5 text-[#e8a517] inline"})]}),tooltip:"Switch between dark and light mode",size:"md"})}),Bt=t.memo(function({layout:c="horizontal"}){return t.useEffect(()=>{Gt()},[]),c==="toggle-only"?e.jsx(We,{}):c==="thumbnails-only"?e.jsx(Ue,{}):c==="vertical"?e.jsxs("div",{className:"flex flex-col items-start gap-3",children:[e.jsx(We,{}),e.jsx(Ue,{})]}):e.jsxs("div",{className:"flex items-stretch gap-4",children:[e.jsx("div",{className:"flex-shrink-0 flex items-start",children:e.jsx(We,{})}),e.jsx(Ue,{compact:!0})]})}),Ut=1e4,Xe=2e3;function Ye(a,c,r){const[p,i]=t.useState("idle"),[d,v]=t.useState(null),u=t.useRef(!0),o=t.useRef(null),n=t.useRef(null),h=t.useRef(!1),k=t.useRef("idle"),E=t.useRef(a),y=t.useRef(c),w=t.useRef(r);k.current=p,E.current=a,y.current=c,w.current=r,t.useEffect(()=>(u.current=!0,()=>{u.current=!1,o.current&&clearTimeout(o.current),n.current&&clearTimeout(n.current)}),[]);const C=t.useCallback(async S=>{if(k.current==="loading")return;const I=E.current;o.current&&clearTimeout(o.current),n.current&&clearTimeout(n.current),h.current=!1,v(S),i("loading"),o.current=setTimeout(()=>{h.current||!u.current||(v(I),i("error"),n.current=setTimeout(()=>{u.current&&(i("idle"),v(null))},Xe))},Ut);try{if(await y.current(S),h.current=!0,o.current&&clearTimeout(o.current),!u.current)return;i("success"),n.current=setTimeout(()=>{var g;u.current&&(i("idle"),v(null),(g=w.current)==null||g.call(w))},Xe)}catch{if(h.current=!0,o.current&&clearTimeout(o.current),!u.current)return;v(I),i("error"),n.current=setTimeout(()=>{u.current&&(i("idle"),v(null))},Xe)}},[]);return{enabled:d!==null?d:a,status:p,toggle:C}}function Wt(){const{latitude:a,longitude:c,enabled:r,setLocation:p,enable:i,disable:d,clear:v}=st(),[u,o]=t.useState(!1),[n,h]=t.useState(""),[k,E]=t.useState(""),[y,w]=t.useState("idle"),[C,j]=t.useState(null),S=t.useRef(null),I=t.useRef(null),g=t.useRef(!0);t.useEffect(()=>(g.current=!0,()=>{g.current=!1,I.current&&clearTimeout(I.current)}),[]);const A=()=>{h((a==null?void 0:a.toFixed(6))??""),E((c==null?void 0:c.toFixed(6))??""),j(null),o(!0)},O=()=>{o(!1),j(null)};t.useEffect(()=>{if(!u)return;const m=z=>{y!=="loading"&&S.current&&!S.current.contains(z.target)&&O()};return document.addEventListener("mouseup",m),()=>document.removeEventListener("mouseup",m)},[u,y]);const x=(m,z)=>{const N=parseFloat(m),G=parseFloat(z);return isNaN(N)||isNaN(G)?"Please enter valid numbers":N<-90||N>90?"Latitude must be between -90 and 90":G<-180||G>180?"Longitude must be between -180 and 180":N===0&&G===0?"Coordinates (0, 0) are invalid":null},P=()=>{if(y==="loading")return;I.current&&clearTimeout(I.current);const m=x(n,k);if(m){j(m);return}w("loading"),j(null);const z=parseFloat(n),N=parseFloat(k);p(z,N),r||i(),w("success"),I.current=setTimeout(()=>{g.current&&(w("idle"),o(!1))},1e3)},_=()=>{r?d():i()},L=()=>{v(),o(!1)},T=a!==null&&c!==null;return e.jsx(Y,{children:e.jsxs("div",{ref:S,children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx(X,{icon:e.jsx(Vt,{}),title:"Stealth"}),e.jsxs("div",{className:"flex items-center gap-1",children:[T&&!u&&e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:_,className:l("relative inline-flex h-6 w-11 items-center rounded-full transition-colors border-2 mr-2",r?"bg-toggle-on border-toggle-on":"bg-toggle-off border-edge-subtle"),title:r?"Disable stealth location":"Enable stealth location",children:e.jsx("span",{className:l("inline-block h-4 w-4 transform rounded-full bg-white transition-transform shadow-lg",r?"translate-x-5":"translate-x-0.5")})}),e.jsx("button",{onClick:L,className:"p-2 rounded-lg transition-colors text-fg-muted hover:text-sys-red hover:bg-sys-red/10",title:"Clear stealth location",children:e.jsx(Ps,{className:"w-4 h-4"})})]}),u?e.jsxs(e.Fragment,{children:[e.jsx("button",{onClick:O,disabled:y==="loading",className:l("p-2 rounded-lg transition-colors",y==="loading"?"text-fg-muted cursor-not-allowed":"text-fg-muted hover:text-sys-red hover:bg-sys-red/10"),title:"Cancel",children:e.jsx(J,{className:"w-4 h-4"})}),e.jsx("button",{onClick:P,disabled:y==="loading",className:l("p-2 rounded-lg transition-colors",y==="loading"?"text-sys-blue cursor-wait":y==="success"?"text-sys-green":y==="error"?"text-sys-red":"text-sys-green hover:bg-sys-green/10"),title:"Save",children:y==="loading"?e.jsx($,{className:"w-4 h-4 animate-spin"}):y==="success"?e.jsx(B,{className:"w-4 h-4"}):y==="error"?e.jsx(J,{className:"w-4 h-4"}):e.jsx(B,{className:"w-4 h-4"})})]}):e.jsx("button",{onClick:A,className:"p-2 rounded-lg transition-colors text-fg-muted hover:text-fg-primary hover:bg-subtle",title:T?"Edit stealth location":"Set stealth location",children:e.jsx(Ze,{className:"w-4 h-4"})})]})]}),e.jsx("div",{className:"bg-sys-cyan/5 rounded-xl p-3 mb-4",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Qe,{className:"w-4 h-4 text-sys-cyan flex-shrink-0 mt-0.5"}),e.jsxs("p",{className:"type-body-sm text-fg-muted",children:[e.jsx("span",{className:"text-fg-secondary",children:"Stealth mode"})," allows you to appear on the map and in topology analysis without broadcasting your location. Coordinates are stored locally in your browser only — ",e.jsx("span",{className:"text-sys-cyan",children:"never sent to config.yaml or the mesh"}),"."]})]})}),C&&e.jsx("div",{className:"text-xs mb-3 px-2 py-1.5 rounded-md text-sys-red bg-sys-red/10",children:C}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-1",children:u?"Latitude (°)":"Latitude"}),e.jsx("div",{className:l("h-[38px] rounded-full px-4 flex items-center transition-colors","bg-subtle-fill"),children:u?e.jsx("input",{type:"number",value:n,onChange:m=>h(m.target.value),step:"0.000001",min:"-90",max:"90",placeholder:"e.g. 34.052234",className:"w-full bg-transparent text-fg-primary focus:outline-none type-data placeholder:text-fg-muted/50"}):e.jsx("span",{className:l("type-data",T&&r?"text-fg-primary":"text-fg-muted"),children:T?a.toFixed(6):"Not set"})})]}),e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-1",children:u?"Longitude (°)":"Longitude"}),e.jsx("div",{className:l("h-[38px] rounded-full px-4 flex items-center transition-colors","bg-subtle-fill"),children:u?e.jsx("input",{type:"number",value:k,onChange:m=>E(m.target.value),step:"0.000001",min:"-180",max:"180",placeholder:"e.g. -118.243685",className:"w-full bg-transparent text-fg-primary focus:outline-none type-data placeholder:text-fg-muted/50"}):e.jsx("span",{className:l("type-data",T&&r?"text-fg-primary":"text-fg-muted"),children:T?c.toFixed(6):"Not set"})})]})]}),T&&!u&&e.jsx("div",{className:"mt-3 pt-3 border-t border-edge-subtle",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:l("w-2 h-2 rounded-full",r?"bg-sys-green":"bg-fg-muted")}),e.jsx("span",{className:"type-body-sm text-fg-muted",children:r?"Stealth location active — you appear on maps with these coordinates":"Stealth location disabled — coordinates saved but not in use"})]})})]})})}const Xt=[{value:7.8,label:"7.8 kHz"},{value:10.4,label:"10.4 kHz"},{value:15.6,label:"15.6 kHz"},{value:20.8,label:"20.8 kHz"},{value:31.25,label:"31.25 kHz"},{value:41.7,label:"41.7 kHz"},{value:62.5,label:"62.5 kHz"},{value:125,label:"125 kHz"},{value:250,label:"250 kHz"},{value:500,label:"500 kHz"}],Yt=[5,6,7,8,9,10,11,12],Jt=[{value:5,label:"4/5"},{value:6,label:"4/6"},{value:7,label:"4/7"},{value:8,label:"4/8"}],Is={RADIO_CONFIG:"radioConfig"};function Qt(a){if(!a)return"Never";const r=Date.now()-a*1e3,p=Math.floor(r/6e4),i=Math.floor(r/36e5),d=Math.floor(r/864e5);return p<1?"Just now":p<60?`${p}m ago`:i<24?`${i}h ago`:d<365?`${d}d ago`:`${Math.floor(d/365)}y ago`}function Ds({node:a,level:c,expandedKeys:r,selectedKeyId:p,globalFloodPolicy:i,onSelect:d,onToggle:v}){const u=r.has(a.id),o=p===a.id,n=a.children&&a.children.length>0,h=i==="allow";return e.jsxs("div",{children:[e.jsxs("div",{className:l("flex items-center gap-2 h-[36px] px-3 rounded-full cursor-pointer transition-colors",o?"bg-sys-blue/15":"hover:bg-subtle-fill",h&&"opacity-50 cursor-not-allowed"),style:{marginLeft:`${c*16}px`},onClick:()=>!h&&d(a.id),children:[n?e.jsx("button",{onClick:k=>{k.stopPropagation(),v(a.id)},className:"p-1 hover:bg-subtle-fill-hover rounded-full transition-colors",children:e.jsx(Rt,{className:l("w-3.5 h-3.5 text-fg-muted transition-transform",u&&"rotate-90")})}):e.jsx("span",{className:"w-5"}),e.jsx(Mt,{className:"w-4 h-4 text-sys-blue flex-shrink-0"}),e.jsx("span",{className:"type-data text-fg-primary flex-1 truncate",children:a.name}),e.jsx("span",{className:"type-data-xs text-fg-muted hidden sm:inline",title:a.last_used?new Date(a.last_used*1e3).toLocaleString():void 0,children:Qt(a.last_used)}),e.jsx("span",{className:l("type-data-xs px-2 py-0.5 rounded-full",a.floodPolicy==="allow"?"bg-sys-green/15 text-sys-green":"bg-sys-red/15 text-sys-red"),children:a.floodPolicy==="allow"?"Allow":"Deny"})]}),n&&u&&e.jsx("div",{children:a.children.map(k=>e.jsx(Ds,{node:k,level:c+1,expandedKeys:r,selectedKeyId:p,globalFloodPolicy:i,onSelect:d,onToggle:v},k.id))})]})}function Zt(){const[a,c]=t.useState(jt),[r,p]=t.useState(vt),[i,d]=t.useState(!1),v=t.useCallback(n=>{c(n),Nt(n)},[]),u=t.useCallback(n=>{const h=parseFloat(n.target.value);p(h),kt(h)},[]),o=t.useCallback(async()=>{i||(d(!0),await wt(),d(!1))},[i]);return e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(ie,{enabled:a,onChange:v,label:e.jsxs(e.Fragment,{children:["Sound: ",e.jsx("span",{className:a?"text-sys-green":"text-sys-red",children:a?"On":"Off"})]}),tooltip:"Enable or disable UI sound effects and haptic audio feedback",size:"md"}),e.jsx(F,{color:"primary",outline:!0,onClick:o,disabled:!a||i,className:"w-16 justify-center",children:i?"…":"Test"})]}),e.jsxs("div",{className:l("flex items-center gap-3",!a&&"opacity-40 pointer-events-none"),children:[e.jsx("span",{className:"type-label text-fg-muted w-14 shrink-0",children:"Volume"}),e.jsx("input",{type:"range",min:0,max:1,step:.05,value:r,onChange:u,className:"flex-1 accent-sys-blue h-1.5 cursor-pointer"}),e.jsxs("span",{className:"data-box w-16 justify-center",children:[Math.round(r*100),"%"]})]})]})}function ha(){var js,vs,Ns,ks,ws,Cs;const{stats:a,setMode:c,clearModeMutation:r,setDutyCycleConfig:p,clearDutyCycleMutation:i,fetchStats:d,startMutation:v,clearMutation:u}=tt(),o=(js=a==null?void 0:a.config)==null?void 0:js.radio,n=(vs=a==null?void 0:a.config)==null?void 0:vs.repeater,h=(Ns=a==null?void 0:a.config)==null?void 0:Ns.duty_cycle,k=(a==null?void 0:a.node_name)||((ks=a==null?void 0:a.config)==null?void 0:ks.node_name)||"Unknown Node",E=(n==null?void 0:n.mode)??"forward",y=(h==null?void 0:h.enforcement_enabled)??!1,w=(ws=a==null?void 0:a.config)==null?void 0:ws.delays,C=t.useRef(!0);t.useEffect(()=>(C.current=!0,()=>{C.current=!1}),[]);const j=(Cs=a==null?void 0:a.config)==null?void 0:Cs.web,[S,I]=t.useState([]),[g,A]=t.useState(!1),[O,x]=t.useState(null),[P,_]=t.useState(!1),[L,T]=t.useState(""),[m,z]=t.useState(null),[N,G]=t.useState(!1),[ae,Re]=t.useState(null),[Ie,ss]=t.useState(!1),[ts,as]=t.useState(!1),[ns,ls]=t.useState(!1),[U,Ms]=t.useState([]),[As,rs]=t.useState(!1),[is,D]=t.useState(null),[Q,Ks]=t.useState(()=>localStorage.getItem("pymc:globalFloodPolicy")==="allow"?"allow":"deny"),os=t.useCallback(s=>{Ks(s),localStorage.setItem("pymc:globalFloodPolicy",s)},[]),[cs,ds]=t.useState(!1),[K,Pe]=t.useState(null),[Ls,zs]=t.useState(new Set),[ge,me]=t.useState(!1),[be,ne]=t.useState(!1),[je,le]=t.useState(!1),[M,W]=t.useState(null),[Z,xe]=t.useState(null),[ve,Ne]=t.useState(""),[De,fe]=t.useState("allow"),[q,re]=t.useState(!1),[ke,us]=t.useState(!0),[he,Me]=t.useState(!1),[Os,ms]=t.useState(!0),[pe,ee]=t.useState("idle"),[Vs,Ae]=t.useState(!1),[Ke,Hs]=t.useState(!1),xs=t.useCallback(()=>{const s=w==null?void 0:w.tx_delay_factor;return s&&typeof s=="object"&&"parsedValue"in s?s.parsedValue??1:typeof s=="number"?s:1},[w]),fs=t.useCallback(()=>{const s=w==null?void 0:w.direct_tx_delay_factor;return typeof s=="number"?s:.5},[w]),Le=t.useCallback(()=>{const s=h==null?void 0:h.max_airtime_percent;return typeof s=="number"?s:s&&typeof s=="object"&&"parsedValue"in s?s.parsedValue??6:6},[h]),ze=Ye(E==="forward",async s=>{await c(s?"forward":"monitor")},r),Oe=Ye(y,async s=>{await p({max_airtime_percent:Le(),enforcement_enabled:s})},i),Ve=Ye((j==null?void 0:j.cors_enabled)??!1,async s=>{var b;const f=await Es({web:{cors_enabled:s}});if(!f.success&&!((b=f.data)!=null&&b.persisted))throw new Error("CORS update failed");await d()}),V=t.useCallback(async s=>{v(Is.RADIO_CONFIG);try{const f=await at(s);if(!f.success)throw new Error(f.error||"Failed to save");await d({force:!0}).catch(()=>{})}finally{u(Is.RADIO_CONFIG)}},[v,u,d]);t.useEffect(()=>{(async()=>{ms(!0);try{const f=await mt();f.success&&f.data?Me(f.data.exists):Me(!1);const b=j==null?void 0:j.web_path;us(!b||b==="")}catch{Me(!1)}finally{ms(!1)}})()},[j==null?void 0:j.web_path]);const hs=async s=>{var f;if(pe!=="loading"){ee("loading");try{const b=await Es({web:{web_path:s?null:"/opt/pymc_console/web/html"}});if(!C.current)return;b.success||(f=b.data)!=null&&f.persisted?(us(s),ee("success"),Ae(!0),setTimeout(()=>{C.current&&ee("idle")},2e3)):(ee("error"),setTimeout(()=>{C.current&&ee("idle")},2e3))}catch{if(!C.current)return;ee("error"),setTimeout(()=>{C.current&&ee("idle")},2e3)}}},$s=async()=>{if(!Ke){Hs(!0);try{await xt(),Ae(!1),setTimeout(()=>{window.location.reload()},2e3)}catch{Ae(!1),setTimeout(()=>{window.location.reload()},3e3)}}},we=t.useCallback(async()=>{A(!0),x(null);try{const s=await Ht();I(s.tokens||[])}catch(s){x(s instanceof Error?s.message:"Failed to fetch tokens")}finally{A(!1)}},[]);t.useEffect(()=>{we()},[we]);const ps=async()=>{if(!L.trim()){x("Token name is required");return}ss(!0),x(null);try{const s=await $t(L.trim());z(s.token||null),_(!1),G(!0),T(""),await we()}catch(s){x(s instanceof Error?s.message:"Failed to create token")}finally{ss(!1)}},qs=async()=>{if(ae){as(!0),x(null);try{await qt(ae.id),await we(),Re(null)}catch(s){x(s instanceof Error?s.message:"Failed to revoke token")}finally{as(!1)}}},Gs=()=>{m&&(navigator.clipboard.writeText(m),ls(!0),setTimeout(()=>ls(!1),2e3))},ys=s=>s?new Date(s*1e3).toLocaleString():"Never",gs=t.useCallback(s=>{const f=new Map,b=[];return s.forEach(R=>{const Ce={id:R.id,name:R.name,floodPolicy:R.flood_policy,transport_key:R.transport_key,last_used:R.last_used,parent_id:R.parent_id,children:[]};f.set(R.id,Ce)}),f.forEach(R=>{R.parent_id&&f.has(R.parent_id)?f.get(R.parent_id).children.push(R):b.push(R)}),b},[]),ye=t.useCallback(async()=>{rs(!0),D(null);try{const s=await dt();if(s.success&&s.data){const f=gs(s.data);Ms(f),Pe(b=>{if(b===null)return null;const R=Ce=>{for(const He of Ce)if(He.id===b||He.children&&R(He.children))return!0;return!1};return R(f)?b:null})}else D(s.error||"Failed to load transport keys")}catch(s){D(s instanceof Error?s.message:"Unknown error occurred")}finally{rs(!1)}},[gs]);t.useEffect(()=>{ye(),ut().then(s=>{s.success&&s.data&&os(s.data.global_flood_allow?"allow":"deny")}).catch(()=>{})},[ye]);const se=t.useCallback((s,f)=>{for(const b of s){if(b.id===f)return b;if(b.children){const R=se(b.children,f);if(R)return R}}return null},[]),Bs=t.useCallback(()=>{if(!K)return;const s=se(U,K);return s==null?void 0:s.name},[K,U,se]),Us=t.useCallback(s=>{zs(f=>{const b=new Set(f);return b.has(s)?b.delete(s):b.add(s),b})},[]),Ws=async s=>{ds(!0),D(null);try{const f=await ft(s==="allow");f.success?os(s):D(f.error||"Failed to update global flood policy")}catch(f){D(f instanceof Error?f.message:"Failed to update global flood policy")}finally{ds(!1)}},bs=async()=>{if(!ve.trim()){D("Key name is required");return}re(!0),D(null);try{const s=await ht({name:ve.trim(),flood_policy:De,parent_id:K??void 0});s.success?(await ye(),me(!1),Ne(""),fe("allow")):D(s.error||"Failed to add transport key")}catch(s){D(s instanceof Error?s.message:"Failed to add transport key")}finally{re(!1)}},Xs=async()=>{if(M){re(!0),D(null);try{const s=await pt(M.id,{name:M.name,flood_policy:M.floodPolicy});s.success?(await ye(),ne(!1),W(null)):D(s.error||"Failed to update transport key")}catch(s){D(s instanceof Error?s.message:"Failed to update transport key")}finally{re(!1)}}},Ys=async()=>{if(Z){re(!0),D(null);try{const s=await yt(Z.id);s.success?(await ye(),le(!1),xe(null),Pe(null)):D(s.error||"Failed to delete transport key")}catch(s){D(s instanceof Error?s.message:"Failed to delete transport key")}finally{re(!1)}}},Js=t.useCallback(()=>{if(!K)return;const s=se(U,K);s&&(W({...s}),ne(!0))},[K,U,se]);t.useEffect(()=>{const s=b=>{b.key==="Escape"&&(ge&&(me(!1),Ne(""),fe("allow")),be&&(ne(!1),W(null)),je&&(le(!1),xe(null)),P&&(_(!1),T("")),N&&(G(!1),z(null)))};if(ge||be||je||P||N)return window.addEventListener("keydown",s),()=>window.removeEventListener("keydown",s)},[ge,be,je,P,N]);const Qs=t.useCallback(()=>{if(!K)return;const s=se(U,K);s&&(xe(s),le(!0))},[K,U,se]);return e.jsxs(Ct,{children:[e.jsx(St,{title:"Configuration",icon:e.jsx(Ts,{})}),e.jsxs(Tt,{children:[e.jsxs(te,{template:"standard",children:[e.jsx(Te,{span:12,md:6,children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(nt,{}),title:"Repeater Settings"}),n?e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx("div",{className:"col-span-2",children:e.jsx(H,{label:"Node Name",value:k,onSave:async s=>V({node_name:s}),placeholder:"Enter node name",maxLength:50})}),e.jsx(H,{label:"Latitude",value:n.latitude!==0?n.latitude.toFixed(6):"Not set",editValue:String(n.latitude),type:"number",suffix:"°",step:1e-6,min:-90,max:90,onSave:async s=>V({latitude:parseFloat(s)})}),e.jsx(H,{label:"Longitude",value:n.longitude!==0?n.longitude.toFixed(6):"Not set",editValue:String(n.longitude),type:"number",suffix:"°",step:1e-6,min:-180,max:180,onSave:async s=>V({longitude:parseFloat(s)})}),e.jsx(H,{label:"Advert Interval",value:n.send_advert_interval_hours>0?`${n.send_advert_interval_hours}h`:"Disabled",editValue:String(n.send_advert_interval_hours),type:"number",suffix:"hours",min:0,max:48,description:"0 = disabled, 3-48 hours",onSave:async s=>V({flood_advert_interval_hours:parseInt(s,10)})}),e.jsx(H,{label:"Score-based TX",value:n.use_score_for_tx?"Enabled":"Disabled",readOnly:!0})]}):e.jsx("p",{className:"text-fg-muted",children:"Loading repeater settings..."})]})}),e.jsx(Te,{span:12,md:6,children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(_t,{}),title:"Radio Configuration"}),o?e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(H,{label:"Frequency",value:lt(o.frequency),editValue:(o.frequency/1e6).toFixed(3),type:"number",suffix:"MHz",step:.001,min:400,max:930,onSave:async s=>V({frequency_mhz:parseFloat(s)})}),e.jsx(H,{label:"TX Power",value:`${o.tx_power} dBm`,editValue:String(o.tx_power),type:"number",suffix:"dBm",min:2,max:30,onSave:async s=>V({tx_power:parseInt(s,10)})}),e.jsx(Be,{label:"Bandwidth",value:rt(o.bandwidth),editValue:o.bandwidth/1e3,options:Xt,onSave:async s=>V({bandwidth_khz:parseFloat(s)})}),e.jsx(Be,{label:"Spreading Factor",value:`SF${o.spreading_factor}`,editValue:o.spreading_factor,options:Yt.map(s=>({value:s,label:`SF${s}`})),onSave:async s=>V({spreading_factor:parseInt(s,10)})}),e.jsx(Be,{label:"Coding Rate",value:`4/${o.coding_rate}`,editValue:o.coding_rate,options:Jt,onSave:async s=>V({coding_rate:parseInt(s,10)})}),e.jsx(H,{label:"Preamble",value:`${o.preamble_length} symbols`,readOnly:!0})]}):e.jsx("p",{className:"text-fg-muted",children:"Loading radio configuration..."})]})})]}),e.jsxs(te,{template:"standard",children:[e.jsx(Te,{span:12,md:6,children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(it,{}),title:"Operating Mode"}),e.jsx("p",{className:"type-label text-fg-muted mb-3",children:"Control how the repeater handles packets"}),e.jsxs("div",{className:"flex flex-col lg:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsx(ie,{enabled:ze.enabled,onChange:ze.toggle,label:"Repeat",tooltip:"Toggles repeater or monitor mode. In monitor mode, the repeater will not repeat packets from the mesh.",status:ze.status,size:"md"}),e.jsx(ie,{enabled:Oe.enabled,onChange:Oe.toggle,label:"Duty Cycle",tooltip:"Limit transmission time to comply with airtime utilization regulations",status:Oe.status,size:"md"}),e.jsx(H,{label:"Max Airtime",layout:"inline",value:`${Le().toFixed(1)}%`,editValue:String(Le()),type:"number",suffix:"%",step:.5,min:.1,max:100,onSave:async s=>{await p({max_airtime_percent:parseFloat(s),enforcement_enabled:y}),i()}})]}),e.jsx("div",{className:"hidden lg:block w-px bg-border-subtle"}),e.jsxs("div",{className:"flex-1 pt-4 lg:pt-0 border-t lg:border-t-0 border-edge-subtle",children:[e.jsx("label",{className:"type-label text-fg-muted block mb-3",children:"TX Delays"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(H,{label:"Flood",layout:"inline",value:`${xs().toFixed(2)}x`,editValue:String(xs()),type:"number",suffix:"x",step:.1,min:0,max:5,onSave:async s=>V({tx_delay_factor:parseFloat(s)})}),e.jsx(H,{label:"Direct",layout:"inline",value:`${fs().toFixed(2)}s`,editValue:String(fs()),type:"number",suffix:"s",step:.1,min:0,max:5,onSave:async s=>V({direct_tx_delay_factor:parseFloat(s)})})]})]})]})]})}),e.jsx(Te,{span:12,md:6,children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(Ts,{}),title:"App Settings"}),e.jsx("p",{className:"type-body-sm text-fg-muted mb-4",children:"Appearance and web server options."}),e.jsxs("div",{className:"space-y-4",children:[e.jsx(ie,{enabled:Ve.enabled,onChange:Ve.toggle,label:"Enable CORS",tooltip:"Allow cross-origin API access",status:Ve.status,size:"md"}),e.jsx("div",{children:e.jsx(Bt,{})}),e.jsx(Zt,{})]})]})})]}),e.jsx(te,{template:"auto",children:e.jsxs(Y,{neomorphic:!0,children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:[e.jsx(X,{icon:e.jsx(Fs,{}),title:"Regions Transport Keys",subtitle:"Manage regional key hierarchy for flood control"}),e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(F,{color:"primary",outline:!0,onClick:()=>me(!0),disabled:Q==="allow",children:[e.jsx(_s,{"data-slot":"icon"}),"Add"]}),e.jsx(F,{color:"primary",outline:!0,onClick:Js,disabled:!K||Q==="allow",children:"Edit"}),e.jsx(F,{color:"danger",outline:!0,onClick:Qs,disabled:!K||Q==="allow",children:"Delete"})]})]}),e.jsx("div",{className:"bg-subtle-fill radius-inner p-4 mb-4",children:e.jsx(ie,{enabled:Q==="deny",onChange:s=>Ws(s?"deny":"allow"),label:e.jsxs(e.Fragment,{children:["Require Transport Keys: ",e.jsx("span",{className:Q==="deny"?"text-sys-green":"text-sys-red",children:Q==="deny"?"On":"Off"})]}),tooltip:"When enabled, only packets with matching transport keys are forwarded. When disabled, all packets flood freely.",status:cs?"loading":"idle",disabled:cs,dangerOff:!0,size:"md",className:"flex-row-reverse justify-between w-full"})}),is&&e.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-sys-red bg-sys-red/10",children:is}),e.jsx("div",{className:"bg-subtle-fill radius-inner p-4 min-h-[120px]",children:As?e.jsxs("div",{className:"flex items-center justify-center py-6",children:[e.jsx($,{className:"w-5 h-5 animate-spin text-sys-blue mr-2"}),e.jsx("span",{className:"type-body-sm text-fg-muted",children:"Loading transport keys..."})]}):U.length===0?e.jsxs("div",{className:"text-center py-6",children:[e.jsx("div",{className:"w-12 h-12 rounded-full bg-subtle-fill mx-auto mb-3 flex items-center justify-center",children:e.jsx(Fs,{className:"w-6 h-6 text-fg-muted/50"})}),e.jsx("p",{className:"type-body text-fg-muted",children:"No transport keys found"}),e.jsx("p",{className:"type-body-sm text-fg-muted/70 mt-1",children:"Add your first transport key to get started"})]}):e.jsx("div",{className:"space-y-1",children:U.map(s=>e.jsx(Ds,{node:s,level:0,expandedKeys:Ls,selectedKeyId:K,globalFloodPolicy:Q,onSelect:Pe,onToggle:Us},s.id))})})]})}),e.jsx(te,{template:"auto",children:e.jsxs(Y,{neomorphic:!0,children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4",children:[e.jsx(X,{icon:e.jsx(qe,{}),title:"API Tokens",subtitle:"Manage API tokens for machine-to-machine authentication"}),e.jsxs(F,{color:"primary",outline:!0,onClick:()=>_(!0),children:[e.jsx(_s,{"data-slot":"icon"}),"Create Token"]})]}),e.jsx("div",{className:"bg-sys-blue/5 radius-inner p-4 mb-4",children:e.jsxs("div",{className:"flex gap-3",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-sys-blue/20 flex items-center justify-center flex-shrink-0",children:e.jsx(Qe,{className:"w-4 h-4 text-sys-blue"})}),e.jsxs("div",{className:"type-body-sm text-fg-muted",children:[e.jsxs("p",{children:[e.jsx("span",{className:"text-fg-secondary",children:"API tokens"})," are used for machine-to-machine authentication. Include the token in the ",e.jsx("code",{className:"type-code bg-sys-blue/20 px-1.5 py-0.5 rounded-full text-sys-blue",children:"X-API-Key"})," header when making API requests."]}),e.jsx("p",{className:"mt-1 text-fg-muted/70",children:"Tokens are only shown once at creation. Store them securely."})]})]})}),O&&e.jsx("div",{className:"type-body-sm mb-3 px-3 py-2 rounded-full text-sys-red bg-sys-red/10",children:O}),g&&S.length===0?e.jsxs("div",{className:"flex items-center justify-center py-6",children:[e.jsx($,{className:"w-5 h-5 animate-spin text-sys-blue mr-2"}),e.jsx("span",{className:"type-body-sm text-fg-muted",children:"Loading tokens..."})]}):S.length>0?e.jsx("div",{className:"space-y-2",children:S.map(s=>e.jsx("div",{className:"bg-subtle-fill hover:bg-subtle-fill-strong radius-inner p-4 transition-base",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-sys-blue/10 flex items-center justify-center flex-shrink-0",children:e.jsx(qe,{className:"w-5 h-5 text-sys-blue"})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h3",{className:"type-body text-fg-primary font-medium truncate",children:s.name}),e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:gap-4 mt-0.5",children:[e.jsxs("span",{className:"type-data-sm text-fg-muted truncate",children:["Created: ",ys(s.created_at)]}),e.jsxs("span",{className:"type-data-sm text-fg-muted truncate",children:["Last used: ",ys(s.last_used)]})]})]})]}),e.jsxs(F,{color:"danger",outline:!0,onClick:()=>Re({id:s.id,name:s.name}),disabled:ts,children:[e.jsx(Ps,{"data-slot":"icon"}),"Revoke"]})]})},s.id))}):e.jsxs("div",{className:"bg-subtle-fill radius-inner p-6 text-center",children:[e.jsx("div",{className:"w-14 h-14 rounded-full bg-subtle-fill mx-auto mb-4 flex items-center justify-center",children:e.jsx(qe,{className:"w-7 h-7 text-fg-muted/50"})}),e.jsx("h3",{className:"type-body text-fg-primary font-medium mb-1",children:"No API Tokens"}),e.jsx("p",{className:"type-body-sm text-fg-muted mb-4",children:"Create a token to enable API access"}),e.jsx(F,{color:"primary",outline:!0,onClick:()=>_(!0),children:"Create Your First Token"})]})]})}),e.jsx(te,{template:"auto",children:e.jsxs(Y,{neomorphic:!0,children:[e.jsx(X,{icon:e.jsx(Lt,{}),title:"Web Frontend",subtitle:"Choose which web interface to use",className:"mb-4"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("label",{className:l("flex items-start gap-3 p-4 bg-subtle-fill radius-card border-2 cursor-pointer transition-base",ke?"border-sys-blue bg-sys-blue/5":"border-transparent hover:border-sys-blue/30",pe==="loading"&&"opacity-50 pointer-events-none"),children:[e.jsx("input",{type:"radio",name:"frontend",checked:ke,onChange:()=>hs(!0),disabled:pe==="loading",className:"mt-1 h-4 w-4 text-sys-blue focus:ring-sys-blue focus:ring-offset-bg-elevated"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"type-body text-fg-primary font-medium",children:"Default Frontend"}),e.jsx("a",{href:"https://github.com/rightup/pyMC_Repeater",target:"_blank",rel:"noopener noreferrer",onClick:s=>s.stopPropagation(),className:"type-data-xs bg-sys-cyan/15 text-sys-cyan px-2.5 py-0.5 rounded-full font-medium hover:bg-sys-cyan/25 transition-colors",children:"@RightUp"})]}),e.jsx("div",{className:"type-body-sm text-fg-muted mt-1",children:"Built-in pyMC Repeater web interface"}),e.jsx("div",{className:"type-data-xs text-fg-muted/60 mt-1",children:"/opt/pymc_repeater/repeater/web/html"})]})]}),e.jsxs("label",{className:l("flex items-start gap-3 p-4 bg-subtle-fill radius-card border-2 cursor-pointer transition-base",ke?"border-transparent hover:border-sys-blue/30":"border-sys-blue bg-sys-blue/5",pe==="loading"&&"opacity-50 pointer-events-none"),children:[e.jsx("input",{type:"radio",name:"frontend",checked:!ke,onChange:()=>hs(!1),disabled:pe==="loading",className:"mt-1 h-4 w-4 text-sys-blue focus:ring-sys-blue focus:ring-offset-bg-elevated"}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"type-body text-fg-primary font-medium",children:"PyMC Console"}),e.jsx("span",{className:"type-data-xs bg-sys-indigo/15 text-sys-indigo px-2.5 py-0.5 rounded-full font-medium",children:"@Treehouse ⚡"})]}),e.jsx("div",{className:"type-body-sm text-fg-muted mt-1",children:"Alternative web interface for pyMC Repeater"}),e.jsx("div",{className:"type-data-xs text-fg-muted/60 mt-1",children:"/opt/pymc_console/web/html"})]})]})]}),!Os&&e.jsx("div",{className:l("bg-subtle-fill radius-card p-4",he?"border border-sys-green/20":"border border-sys-cyan/20"),children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:l("w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0",he?"bg-sys-green/20":"bg-sys-cyan/20"),children:he?e.jsx(Ft,{className:"w-4 h-4 text-sys-green"}):e.jsx(Qe,{className:"w-4 h-4 text-sys-cyan"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"type-body text-fg-primary font-medium",children:he?"PyMC Console has been detected":"PyMC Console Not Installed"}),he?e.jsxs("p",{className:"type-body-sm text-fg-muted mt-1",children:["PyMC Console is installed at ",e.jsx("code",{className:"type-code bg-sys-green/10 px-1.5 py-0.5 rounded-full text-sys-green",children:"/opt/pymc_console/web/html"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"type-body-sm text-fg-muted mt-1 mb-3",children:["PyMC Console must be installed at ",e.jsx("code",{className:"type-code bg-sys-cyan/10 px-1.5 py-0.5 rounded-full text-sys-cyan",children:"/opt/pymc_console/web/html"})," before selecting this option."]}),e.jsxs(F,{color:"primary",outline:!0,href:"https://github.com/dmduran12/pymc_console-dist",children:[e.jsx(Pt,{"data-slot":"icon"}),"PyMC Console Install Instructions"]})]})]})]})}),Vs&&e.jsx("div",{className:"bg-subtle-fill radius-card p-4 border border-sys-indigo/30",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"flex items-start gap-3 flex-1",children:[e.jsx("div",{className:"w-8 h-8 rounded-full bg-sys-indigo/20 flex items-center justify-center flex-shrink-0",children:e.jsx(Ge,{className:"w-4 h-4 text-sys-indigo"})}),e.jsxs("div",{className:"flex-1",children:[e.jsx("h4",{className:"type-body text-fg-primary font-medium",children:"Service restart required"}),e.jsx("p",{className:"type-body-sm text-fg-muted mt-1",children:"Web frontend changes will take effect after restarting the pymc-repeater service."})]})]}),e.jsx(F,{color:"warning",outline:!0,onClick:$s,disabled:Ke,children:Ke?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Restarting..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Et,{"data-slot":"icon"}),"Restart Now"]})})]})})]})]})}),a&&e.jsx(te,{template:"auto",children:e.jsx(bt,{nodeName:k,repeaterVersion:a.version,coreVersion:a.core_version,localHash:a.local_hash,publicKey:a.public_key})}),a&&((n==null?void 0:n.latitude)===0||!(n!=null&&n.latitude))&&((n==null?void 0:n.longitude)===0||!(n!=null&&n.longitude))&&e.jsx(te,{template:"auto",children:e.jsx(Wt,{})})]}),P&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&_(!1),role:"dialog","aria-modal":"true","aria-labelledby":"create-token-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-md w-full",children:[e.jsx("h3",{id:"create-token-modal-title",className:"type-micro mb-4",children:"Create API Token"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx($e,{label:"Token Name",type:"text",value:L,onChange:s=>T(s.target.value),placeholder:"e.g., Production Server, CI/CD Pipeline",description:"Give your token a descriptive name to identify its purpose",onKeyDown:s=>s.key==="Enter"&&ps(),autoFocus:!0}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx(F,{color:"muted",outline:!0,onClick:()=>{_(!1),T(""),x(null)},disabled:Ie,children:"Cancel"}),e.jsx(F,{color:"primary",onClick:ps,disabled:Ie||!L.trim(),children:Ie?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Creating..."]}):"Create Token"})]})]})]})}),N&&m&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&G(!1),role:"dialog","aria-modal":"true","aria-labelledby":"show-token-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-lg w-full",children:[e.jsx("h3",{id:"show-token-modal-title",className:"type-micro mb-4",children:"Token Created Successfully"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"bg-sys-indigo/10 border border-sys-indigo/30 radius-inner p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ge,{className:"w-4 h-4 text-sys-indigo flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-fg-secondary",children:[e.jsx("strong",{children:"Save this token now!"})," For security reasons, it will not be shown again."]})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-primary block mb-1.5",children:"Your API Token"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ot,{value:m,readOnly:!0,className:"flex-1 font-mono"}),e.jsxs(F,{color:"primary",outline:!0,onClick:Gs,children:[ns?e.jsx(B,{"data-slot":"icon",className:"text-sys-green"}):e.jsx(ct,{"data-slot":"icon"}),ns?"Copied!":"Copy"]})]})]}),e.jsxs("div",{className:"bg-sys-cyan/10 border border-sys-cyan/30 radius-inner p-3",children:[e.jsx("p",{className:"text-sm text-fg-secondary mb-2",children:e.jsx("strong",{children:"Usage Example:"})}),e.jsxs("code",{className:"block bg-sys-cyan/20 px-3 py-2 rounded type-code text-sys-cyan overflow-x-auto",children:['curl -H "X-API-Key: ',m.slice(0,12),'..." ',window.location.origin,"/api/stats"]})]}),e.jsx("div",{className:"flex justify-end mt-6",children:e.jsx(F,{color:"primary",onClick:()=>{G(!1),z(null)},children:"Done"})})]})]})}),e.jsx(gt,{isOpen:!!ae,title:"Revoke API Token",message:`Are you sure you want to revoke the token '${ae==null?void 0:ae.name}'? This action cannot be undone.`,confirmLabel:ts?"Revoking...":"Revoke",cancelLabel:"Cancel",variant:"danger",onConfirm:qs,onCancel:()=>Re(null)}),ge&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&me(!1),role:"dialog","aria-modal":"true","aria-labelledby":"add-key-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-md w-full",children:[e.jsx("h3",{id:"add-key-modal-title",className:"type-micro mb-4",children:"Add Transport Key"}),e.jsxs("div",{className:"space-y-4",children:[K&&e.jsxs("div",{className:"bg-sys-cyan/10 border border-sys-cyan/30 radius-inner p-3 text-sm text-fg-secondary",children:["Adding as child of: ",e.jsx("strong",{className:"text-fg-primary",children:Bs()})]}),e.jsx($e,{label:"Key Name",type:"text",value:ve,onChange:s=>Ne(s.target.value),placeholder:"e.g., Region Name, Group Key",onKeyDown:s=>s.key==="Enter"&&bs(),autoFocus:!0}),e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-2",children:"Flood Policy"}),e.jsxs("div",{className:"toggle-group w-full",children:[e.jsx("button",{onClick:()=>fe("deny"),className:l("toggle-group-item flex-1",De==="deny"&&"active !text-sys-red"),children:"Deny"}),e.jsx("button",{onClick:()=>fe("allow"),className:l("toggle-group-item flex-1",De==="allow"&&"active !text-sys-green"),children:"Allow"})]})]}),e.jsxs("div",{className:"flex justify-end gap-3 mt-6",children:[e.jsx(F,{color:"muted",outline:!0,onClick:()=>{me(!1),Ne(""),fe("allow")},disabled:q,children:"Cancel"}),e.jsx(F,{color:"primary",onClick:bs,disabled:q||!ve.trim(),children:q?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Adding..."]}):"Add Key"})]})]})]})}),be&&M&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&ne(!1),role:"dialog","aria-modal":"true","aria-labelledby":"edit-key-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-md w-full",children:[e.jsx("h3",{id:"edit-key-modal-title",className:"type-micro mb-4",children:"Edit Transport Key"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx($e,{label:"Key Name",type:"text",value:M.name,onChange:s=>W({...M,name:s.target.value}),autoFocus:!0}),e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-2",children:"Flood Policy"}),e.jsxs("div",{className:"toggle-group w-full",children:[e.jsx("button",{onClick:()=>W({...M,floodPolicy:"deny"}),className:l("toggle-group-item flex-1",M.floodPolicy==="deny"&&"active !text-sys-red"),children:"Deny"}),e.jsx("button",{onClick:()=>W({...M,floodPolicy:"allow"}),className:l("toggle-group-item flex-1",M.floodPolicy==="allow"&&"active !text-sys-green"),children:"Allow"})]})]}),M.transport_key&&e.jsxs("div",{children:[e.jsx("label",{className:"type-label text-fg-muted block mb-2",children:"Transport Key"}),e.jsx("code",{className:"block bg-input-bg px-3 py-2 radius-inner border border-input-border type-code text-fg-muted overflow-x-auto",children:M.transport_key})]}),e.jsxs("div",{className:"flex justify-between gap-3 mt-6",children:[e.jsx(F,{color:"danger",outline:!0,onClick:()=>{ne(!1),xe(M),le(!0),W(null)},disabled:q,children:"Delete"}),e.jsxs("div",{className:"flex gap-3",children:[e.jsx(F,{color:"muted",outline:!0,onClick:()=>{ne(!1),W(null)},disabled:q,children:"Cancel"}),e.jsx(F,{color:"primary",onClick:Xs,disabled:q||!M.name.trim(),children:q?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Saving..."]}):"Save"})]})]})]})]})}),je&&Z&&e.jsx("div",{className:"fixed inset-0 z-[10010] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm",onClick:s=>s.target===s.currentTarget&&le(!1),role:"dialog","aria-modal":"true","aria-labelledby":"delete-key-modal-title",children:e.jsxs("div",{className:"surface-modal radius-card p-6 max-w-md w-full",children:[e.jsx("h3",{id:"delete-key-modal-title",className:"type-micro mb-4",children:"Delete Transport Key"}),e.jsxs("p",{className:"text-fg-secondary mb-4",children:["Are you sure you want to delete ",e.jsxs("strong",{className:"text-fg-primary",children:["'",Z.name,"'"]}),"?"]}),Z.children&&Z.children.length>0&&e.jsx("div",{className:"bg-sys-indigo/10 border border-sys-indigo/30 radius-inner p-3 mb-4",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ge,{className:"w-4 h-4 text-sys-indigo flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-fg-secondary",children:["This key has ",Z.children.length," child key(s). Deleting will also remove all children."]})]})}),e.jsxs("div",{className:"flex justify-end gap-3",children:[e.jsx(F,{color:"muted",outline:!0,onClick:()=>{le(!1),xe(null)},disabled:q,children:"Cancel"}),e.jsx(F,{color:"danger",onClick:Ys,disabled:q,children:q?e.jsxs(e.Fragment,{children:[e.jsx($,{"data-slot":"icon",className:"animate-spin"}),"Deleting..."]}):"Delete"})]})]})})]})}export{ha as default}; diff --git a/frontend/dist/assets/ConfirmModal-D_7JTlAb.js b/frontend/dist/assets/ConfirmModal-CNsW1W2q.js similarity index 92% rename from frontend/dist/assets/ConfirmModal-D_7JTlAb.js rename to frontend/dist/assets/ConfirmModal-CNsW1W2q.js index 991d5a72..60b15aaa 100644 --- a/frontend/dist/assets/ConfirmModal-D_7JTlAb.js +++ b/frontend/dist/assets/ConfirmModal-CNsW1W2q.js @@ -1,4 +1,4 @@ -import{d as l,r as m,j as s,ac as x,dr as h,c as p,ad as f,dK as g,B as o}from"./index-CdwYueSG.js";import{T as j}from"./triangle-alert-DaComX7z.js";/** +import{d as l,r as m,j as s,ac as x,dr as h,c as p,ad as f,dK as g,B as o}from"./index-C8IY8K2r.js";import{T as j}from"./triangle-alert-8k00uu7o.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. diff --git a/frontend/dist/assets/Contacts-CFnmM0Y1.js b/frontend/dist/assets/Contacts-CKgzKZ-Z.js similarity index 92% rename from frontend/dist/assets/Contacts-CFnmM0Y1.js rename to frontend/dist/assets/Contacts-CKgzKZ-Z.js index 623e04e0..5ffdeda5 100644 --- a/frontend/dist/assets/Contacts-CFnmM0Y1.js +++ b/frontend/dist/assets/Contacts-CKgzKZ-Z.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContactsMapMapLibre-vYZ4_STu.js","assets/index-CdwYueSG.js","assets/BasemapLayer-DAxIlO26.js","assets/consumer-registry-DhVehOm2.js","assets/link-scoring-D5cTtUUv.js","assets/ConfirmModal-D_7JTlAb.js","assets/triangle-alert-DaComX7z.js","assets/DeepAnalysisModal-CtwX6n44.js","assets/geo-utils-BP1zBK9h.js","assets/download-Cxh-dhwT.js","assets/database-BZ4a6Qd1.js","assets/useMapViewStore-COYDTQJ4.js","assets/index-BaK1kOPF.js","assets/refresh-cw-Bcz_yxe3.js","assets/target-CAnStHns.js","assets/funnel-DznwFNVG.js","assets/plus-BxLpl_sF.js","assets/easing-D6lOfiWJ.js","assets/wifi-Af5E3WZ9.js","assets/SignalIndicator-B7F9Dvpc.js","assets/chevron-right-Clx_OSXY.js","assets/node-types-DedpfI8l.js","assets/badge-colors-BNUqIXCA.js","assets/LightSparkline-DDCHe_-F.js","assets/map-pin-BTzarosW.js","assets/ping-C5xXtX1r.js","assets/PageLayout-gbvZ6tct.js","assets/listbox-B4IRFwwn.js","assets/element-movement-C6F5QGkE.js","assets/TimeRangeStepper-DCz-TWVT.js","assets/chat-utils-B3hkabuB.js","assets/CollisionExplorerModal-CjMAUeX8.js","assets/monitor-smartphone-CBUcuPPv.js","assets/DataBox-D9AB1NGO.js","assets/circle-question-mark-Bdu9dBju.js","assets/network-CWIy2ZSo.js","assets/activity-B7U7wJdR.js","assets/search-DV-Xcdgb.js","assets/index-DUfCykEc.css","assets/BasemapLayer-B1CfjdFi.css","assets/ContactsMapMapLibre-BwWOEply.css"])))=>i.map(i=>d[i]); -import{d as O,j as e,r as n,bo as Ze,bI as Te,bJ as $e,$ as ae,w as we,a9 as Re,bK as es,bL as he,R as pe,q as k,bM as ss,L as Ee,bN as ts,J as as,bO as ns,bP as rs,bQ as os,H as is,bR as cs,bS as ls,bT as ds,K as ms,aa as xs,N as Ne,bU as us,bV as ps,b8 as te,o as hs,I as fs,bc as gs,c as ve}from"./index-CdwYueSG.js";import{p as js}from"./ping-C5xXtX1r.js";import{c as ke}from"./node-types-DedpfI8l.js";import{P as bs,a as Ns,B as ys}from"./PageLayout-gbvZ6tct.js";import{L as vs,a as ue}from"./listbox-B4IRFwwn.js";import{T as _e}from"./TimeRangeStepper-DCz-TWVT.js";import{u as ws,e as ks,f as Cs,r as Ms}from"./consumer-registry-DhVehOm2.js";import{e as Ss,g as Ps,a as Rs}from"./chat-utils-B3hkabuB.js";import{A as _s,b as Ls,C as Ts}from"./SignalIndicator-B7F9Dvpc.js";import{C as $s,S as Es}from"./CollisionExplorerModal-CjMAUeX8.js";import{E as Fs,T as Os}from"./target-CAnStHns.js";import{D as Hs}from"./DataBox-D9AB1NGO.js";import{C as W}from"./badge-colors-BNUqIXCA.js";import{C as Fe}from"./circle-question-mark-Bdu9dBju.js";import{N as zs}from"./network-CWIy2ZSo.js";import{A as Oe}from"./activity-B7U7wJdR.js";import{T as Ds,C as Is}from"./ConfirmModal-D_7JTlAb.js";import{M as Le}from"./monitor-smartphone-CBUcuPPv.js";import{M as As}from"./map-pin-BTzarosW.js";import{S as Bs}from"./search-DV-Xcdgb.js";/** +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ContactsMapMapLibre-CKQy2_cg.js","assets/index-C8IY8K2r.js","assets/BasemapLayer-D5WYHXmJ.js","assets/consumer-registry-lDKP4bcU.js","assets/link-scoring-CX7bMGSJ.js","assets/ConfirmModal-CNsW1W2q.js","assets/triangle-alert-8k00uu7o.js","assets/DeepAnalysisModal-B2m7JxOp.js","assets/geo-utils-BP1zBK9h.js","assets/download-IUkhheKK.js","assets/database-BEyHF_p_.js","assets/useMapViewStore-ax-BqDpg.js","assets/index-B-prVW1V.js","assets/refresh-cw-BqACEANM.js","assets/target-DviLCm8U.js","assets/funnel-BDRRJl0y.js","assets/plus-PWV57wbr.js","assets/easing-CXN4GmUW.js","assets/wifi-Cq9uCDyf.js","assets/SignalIndicator-Dw_bfp50.js","assets/chevron-right-DUgYTR6d.js","assets/node-types-3T9Wr7vI.js","assets/badge-colors-BNUqIXCA.js","assets/LightSparkline-CkL4j4OZ.js","assets/map-pin-DMVHq6j8.js","assets/ping-lLlOzF2r.js","assets/PageLayout-NQBVrM09.js","assets/listbox-BhQdM5DY.js","assets/element-movement-D4o83B2Z.js","assets/TimeRangeStepper-BlC9rlkV.js","assets/chat-utils-D1Q4VWjO.js","assets/CollisionExplorerModal-DeHgfjGl.js","assets/monitor-smartphone-DF_mmgOV.js","assets/DataBox-W2v3wy8k.js","assets/circle-question-mark-C7l07_IA.js","assets/network-DBkquEPb.js","assets/activity-2-g8m4_g.js","assets/search-zALFwCS4.js","assets/index-DUfCykEc.css","assets/BasemapLayer-B1CfjdFi.css","assets/ContactsMapMapLibre-BwWOEply.css"])))=>i.map(i=>d[i]); +import{d as O,j as e,r as n,bo as Ze,bI as Te,bJ as $e,$ as ae,w as we,a9 as Re,bK as es,bL as he,R as pe,q as k,bM as ss,L as Ee,bN as ts,J as as,bO as ns,bP as rs,bQ as os,H as is,bR as cs,bS as ls,bT as ds,K as ms,aa as xs,N as Ne,bU as us,bV as ps,b8 as te,o as hs,I as fs,bc as gs,c as ve}from"./index-C8IY8K2r.js";import{p as js}from"./ping-lLlOzF2r.js";import{c as ke}from"./node-types-3T9Wr7vI.js";import{P as bs,a as Ns,B as ys}from"./PageLayout-NQBVrM09.js";import{L as vs,a as ue}from"./listbox-BhQdM5DY.js";import{T as _e}from"./TimeRangeStepper-BlC9rlkV.js";import{u as ws,e as ks,f as Cs,r as Ms}from"./consumer-registry-lDKP4bcU.js";import{e as Ss,g as Ps,a as Rs}from"./chat-utils-D1Q4VWjO.js";import{A as _s,b as Ls,C as Ts}from"./SignalIndicator-Dw_bfp50.js";import{C as $s,S as Es}from"./CollisionExplorerModal-DeHgfjGl.js";import{E as Fs,T as Os}from"./target-DviLCm8U.js";import{D as Hs}from"./DataBox-W2v3wy8k.js";import{C as W}from"./badge-colors-BNUqIXCA.js";import{C as Fe}from"./circle-question-mark-C7l07_IA.js";import{N as zs}from"./network-DBkquEPb.js";import{A as Oe}from"./activity-2-g8m4_g.js";import{T as Ds,C as Is}from"./ConfirmModal-CNsW1W2q.js";import{M as Le}from"./monitor-smartphone-DF_mmgOV.js";import{M as As}from"./map-pin-DMVHq6j8.js";import{S as Bs}from"./search-zALFwCS4.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. @@ -44,4 +44,4 @@ import{d as O,j as e,r as n,bo as Ze,bI as Te,bJ as $e,$ as ae,w as we,a9 as Re, * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const nt=[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]],rt=O("trending-down",nt);class ot extends n.Component{constructor(i){super(i),this.state={hasError:!1}}static getDerivedStateFromError(i){return{hasError:!0,error:i}}render(){var i;return this.state.hasError?e.jsx("div",{className:"map-container-16-9 flex items-center justify-center rounded-2xl surface-base",role:"alert","aria-live":"assertive",children:e.jsxs("div",{className:"text-center text-fg-muted p-4",children:[e.jsx("p",{className:"text-lg mb-2",children:"Map failed to load"}),e.jsx("p",{className:"text-sm text-fg-muted",children:((i=this.state.error)==null?void 0:i.message)||"Unknown error"}),e.jsx("p",{className:"text-xs text-fg-muted mt-2",children:"Try refreshing the page or check your browser's WebGL support."})]})}):this.props.children}}const it=n.lazy(()=>Ze(()=>import("./ContactsMapMapLibre-vYZ4_STu.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40])));function ct({neighbors:r,localNode:i,localHash:f,onRemoveNode:x,selectedNodeHash:g,onNodeSelected:N,highlightedEdgeKey:h,highlightedGhost:d}){return e.jsx(ot,{children:e.jsx(n.Suspense,{fallback:e.jsx("div",{className:"map-container-16-9 flex items-center justify-center rounded-2xl surface-base",role:"status","aria-live":"polite","aria-label":"Loading map",children:e.jsxs("div",{className:"text-fg-muted flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 border-2 border-sys-blue border-t-transparent rounded-full animate-spin","aria-hidden":"true"}),e.jsx("span",{children:"Loading map..."})]})}),children:e.jsx(it,{neighbors:r,localNode:i,localHash:f,onRemoveNode:x,selectedNodeHash:g,onNodeSelected:N,highlightedEdgeKey:h,highlightedGhost:d})})})}function lt({hash:r,className:i="",size:f="sm",collisionInfo:x,isViterbiResolved:g}){const N=Te(),h=$e(),[d,z]=n.useState(!1),C=n.useMemo(()=>ae(r),[r]),L=n.useMemo(()=>x!==void 0?x:C?N.find(u=>u.prefix===C)??null:null,[C,N,x]),T=g??(h.totalPaths>0&&h.avgPathConfidence>=.7),H=n.useCallback(u=>{u.preventDefault(),u.stopPropagation(),z(!0)},[]),D=n.useCallback(()=>{z(!1)},[]);if(!L)return null;const y=f==="sm"?"w-3.5 h-3.5":"w-4 h-4",I=T?"text-sys-cyan hover:text-sys-cyan hover:bg-sys-cyan/10 focus:ring-sys-cyan/50":"text-signal-fair hover:text-sys-indigo hover:bg-signal-fair/10 focus:ring-signal-fair/50",Q=T?`Prefix conflict resolved by Viterbi HMM (${(h.avgPathConfidence*100).toFixed(0)}% confidence)`:`Prefix conflict: ${L.candidateCount} nodes share prefix "${C}"`;return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:H,className:`inline-flex items-center justify-center p-0.5 rounded focus:outline-none focus:ring-2 transition-colors cursor-pointer touch-manipulation ${I} ${i}`,title:Q,"aria-label":`View prefix conflict for ${C}${T?" (Viterbi resolved)":""}`,children:T?e.jsxs("span",{className:"relative",children:[e.jsx(Fs,{className:y}),e.jsx(we,{className:"absolute -bottom-0.5 -right-0.5 w-2 h-2 text-sys-green"})]}):e.jsx(Js,{className:y})}),e.jsx($s,{isOpen:d,prefix:L.prefix,candidateHashes:L.candidateHashes,onClose:D})]})}const dt=n.memo(lt),ze=[{target:"Contacts",fn:"name",minStage:1,when:ks},{target:"Contacts",fn:"traceLinks.directed",minStage:2,when:Cs}];Ms(ze);function mt(r){return r<1e3?`${Math.round(r)}m`:`${(r/1e3).toFixed(1)}km`}function xt({hash:r,contact:i,isHub:f,isNeighbor:x,distance:g,centrality:N,sparklineData:h,neighborSignal:d,collisionInfo:z,isViterbiResolved:C,isPinging:L,isPingingThis:T,pingResult:H,pingError:D,gatewayInfo:y,lastForwarderPrefix:I,isMobile:Q,pathStability:u,onRowClick:K,onPing:$,onRemove:fe}){ws(ze);const V=i.latitude&&i.longitude&&i.latitude!==0&&i.longitude!==0,E=i.node_name||i.name||"Unknown",v=x&&d,ne=ke(i),{isRepeater:P,isCompanion:J,isRoomServer:j,isClient:Y,label:X}=ne,re=x?`${X} — Direct RF contact (zero-hop neighbor)`:`${X} — Flood routing (multi-hop via mesh)`,Z=i.first_seen?Re(i.first_seen).replace(/ ago$/i," old"):null;return e.jsxs("div",{className:`contacts-grid-row ${f?"bg-sys-amber/5 border-l-2 border-l-sys-amber":""} ${V?"cursor-pointer hover:bg-subtle-fill":""}`,onClick:()=>K(r),children:[e.jsxs("div",{className:"contacts-col-node flex items-center gap-2 min-w-0",children:[v&&(d==null?void 0:d.avgSnr)!==null?e.jsx("div",{className:`w-2 h-2 rounded-full flex-shrink-0 self-center ${es(d.avgSnr)}`}):e.jsx("div",{className:"w-2 flex-shrink-0"}),e.jsx("div",{className:"w-6 h-6 flex items-center justify-center flex-shrink-0",title:re,children:(()=>{if(j&&P)return e.jsxs("div",{className:"relative w-5 h-5",children:[e.jsx(he,{className:"w-5 h-5 absolute inset-0 text-sys-pink"}),e.jsx(Es,{className:"w-2.5 h-2.5 absolute -bottom-0.5 -right-0.5 text-sys-teal"})]});if(j)return e.jsx(he,{className:"w-5 h-5 text-sys-pink"});if(P)return e.jsx("div",{className:"w-5 h-5 rounded-full flex items-center justify-center ring-[1.5px] ring-sys-blue",children:e.jsx(pe,{className:"w-3.5 h-3.5 text-sys-blue"})});if((J||Y)&&E!=="Unknown"){const{emoji:w,cleanName:R}=Ss(E);return e.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center",style:{backgroundColor:Ps(R)},children:w?e.jsx("span",{className:"text-sm leading-none",children:w}):e.jsx("span",{className:"text-white text-[9px] font-bold tracking-tighter",children:Rs(E)})})}return e.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center bg-zinc-500/20",children:e.jsx(Fe,{className:"w-3.5 h-3.5 text-sys-amber"})})})()}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[e.jsx("span",{className:"roster-title truncate",title:E,children:E}),x&&e.jsx(k,{color:W.neighbor,compact:!0,className:"flex-shrink-0",children:"NBR"}),f&&e.jsxs(k,{color:W.hub,compact:!0,className:"flex items-center gap-1 flex-shrink-0",children:[e.jsx(zs,{className:"w-3 h-3"}),"HUB"]}),P&&e.jsx(k,{color:W.repeater,compact:!0,className:"flex-shrink-0",children:"RPT"}),j&&e.jsx(k,{color:W.room,compact:!0,className:"flex-shrink-0",children:"ROOM"}),J&&e.jsx(k,{color:W.companion,compact:!0,className:"flex-shrink-0",children:"COMP"}),Y&&e.jsx(k,{color:W.client,compact:!0,className:"flex-shrink-0",children:"CLIENT"}),Q&&e.jsxs(k,{color:"cyan",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",children:[e.jsx(et,{className:"w-2.5 h-2.5"}),"MOBILE"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx(Hs,{copy:!0,size:"compact",truncate:[8,6],children:r}),e.jsx(dt,{hash:r,collisionInfo:z,isViterbiResolved:C}),!x&&y&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`Via ${y.name||y.prefix} (${y.hopCount} hop${y.hopCount!==1?"s":""})`,children:[e.jsx(_s,{className:"w-2.5 h-2.5"}),e.jsx("span",{className:"font-mono",children:y.prefix}),y.hopCount>1&&e.jsxs("span",{className:"opacity-60",children:["+",y.hopCount-1]})]}),I&&!x&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`Last forwarded by ${I}`,children:[e.jsx(Us,{className:"w-2.5 h-2.5"}),e.jsx("span",{className:"font-mono",children:I})]}),u!=null&&u!==0&&e.jsx(k,{color:u>0?"green":"amber",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:u>0?"Path stability improving":"Path stability declining",children:u>0?e.jsx(ss,{className:"w-2.5 h-2.5"}):e.jsx(rt,{className:"w-2.5 h-2.5"})}),h.length>0&&(()=>{const w=h.reduce((oe,ge)=>oe+ge.count,0);if(w===0)return null;const R=w/24;return e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`${w} packets in last 24h (~${R.toFixed(1)}/hr)`,children:[e.jsx(tt,{className:"w-2.5 h-2.5"}),e.jsxs("span",{children:[R<1?"<1":R.toFixed(0),"/hr"]})]})})(),Z&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0 opacity-70",title:`First discovered ${Z}`,children:[e.jsx(Qs,{className:"w-2.5 h-2.5"}),e.jsx("span",{children:Z})]})]})]})]}),e.jsxs("div",{className:"contacts-col-signal flex items-center justify-end gap-2",children:[v&&(d==null?void 0:d.avgRssi)!==null&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ls,{rssi:d.avgRssi,className:"w-3.5 h-3.5"}),e.jsx("span",{className:"type-data-xs text-fg-muted",children:Math.round(d.avgRssi)})]}),v&&(d==null?void 0:d.avgSnr)!==null&&e.jsxs("span",{className:"type-data-xs text-fg-muted",children:[d.avgSnr.toFixed(1)," dB"]})]}),e.jsx("div",{className:"contacts-col-distance flex items-center justify-end gap-1 text-fg-muted",children:g!=null&&e.jsxs(e.Fragment,{children:[e.jsx(He,{className:"w-3 h-3"}),e.jsx("span",{className:"type-data-xs",children:mt(g)})]})}),e.jsx("div",{className:"contacts-col-centrality flex items-center justify-end gap-1",children:N>0&&e.jsxs(e.Fragment,{children:[e.jsx(Oe,{className:"w-3 h-3 text-sys-indigo"}),e.jsxs("span",{className:"type-data-xs text-fg-muted",children:[(N*100).toFixed(0),"%"]})]})}),e.jsx("div",{className:"contacts-col-seen flex items-center justify-end",children:e.jsx("span",{className:"type-data-xs text-fg-primary whitespace-nowrap",children:i.last_seen?Re(i.last_seen):"—"})}),e.jsxs("div",{className:"contacts-col-actions flex items-center justify-end gap-1",children:[x&&e.jsx(e.Fragment,{children:H?e.jsxs("div",{className:"flex items-center gap-1 text-sys-green",title:`RTT: ${H.rtt_ms.toFixed(0)}ms`,children:[e.jsx(we,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"type-data-xs hidden sm:inline",children:[H.snr_db.toFixed(1),"dB"]})]}):D?e.jsx("span",{className:"text-sys-red text-xs",title:D,children:"✗"}):e.jsx("button",{onClick:w=>$(r,w),disabled:L,className:"p-1 sm:p-1.5 radius-inner text-fg-muted/50 hover:text-sys-blue hover:bg-sys-blue/10 transition-base disabled:opacity-50 disabled:cursor-not-allowed",title:"Ping neighbor for updated signal info",children:T?e.jsx(Ee,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 animate-spin"}):e.jsx(Os,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})}),e.jsx("button",{onClick:w=>{w.stopPropagation(),fe(r,E)},className:"p-1 sm:p-1.5 radius-inner text-fg-muted/50 hover:text-sys-red hover:bg-sys-red/10 transition-base",title:"Remove contact",children:e.jsx(Ds,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]})}const ut=n.memo(xt),pt=6371e3,ht=[],ft=[{field:"lastHeard",icon:Ts,label:"Recent"},{field:"distance",icon:He,label:"Distance"},{field:"centrality",icon:Oe,label:"Centrality"}];function gt(r){switch(r){case"room_server":return"room";case"repeater":return"repeater";case"companion":return"companion";case"unknown":return"companion"}}function jt(r){const i=ke(r);return gt(i.type)}function ye(r,i){const{color:f="primary",border:x=!1}=i??{};return ve("flex items-center gap-1.5 px-2 py-1.5 text-sm radius-inner transition-base",r?f==="success"?"bg-sys-green/20 text-sys-green":"bg-sys-blue/20 text-sys-blue":"text-fg-muted hover:text-fg-secondary hover-bg",x&&(r?f==="success"?"border border-sys-green/30":"border border-sys-blue/30":"border border-transparent"))}function bt(r,i,f,x){const g=(f-r)*Math.PI/180,N=(x-i)*Math.PI/180,h=Math.sin(g/2)*Math.sin(g/2)+Math.cos(r*Math.PI/180)*Math.cos(f*Math.PI/180)*Math.sin(N/2)*Math.sin(N/2),d=2*Math.atan2(Math.sqrt(h),Math.sqrt(1-h));return pt*d}function Nt(){const{stats:r}=ts(),i=as(),f=ns(),x=rs(),g=os(),N=is(),h=cs(),d=ls(),z=ds(),C=ms(),L=xs(),T=Ne[C],H=Te(),D=$e(),y=us(),I=D.totalPaths>0&&D.avgPathConfidence>=.7,Q=n.useMemo(()=>{const s=new Map;for(const t of H)s.set(t.prefix,t);return s},[H]),[u,K]=n.useState(null),[$,fe]=n.useState("lastHeard"),[V,E]=n.useState("desc"),[v,ne]=n.useState(""),[P,J]=n.useState(!1),[j,Y]=n.useState(new Set),[X,re]=n.useState(!1),[Z,w]=n.useState(null),[R,oe]=n.useState(null),[ge,je]=n.useState(new Map),[De,ee]=n.useState(new Map),[M,Ie]=n.useState(25),[U,ie]=n.useState(25),be=n.useRef(null),ce=n.useMemo(()=>(r==null?void 0:r.neighbors)??{},[r==null?void 0:r.neighbors]),A=n.useMemo(()=>{const t=Date.now()/1e3-T.minutes*60;return Object.fromEntries(Object.entries(ce).filter(([a,o])=>i.has(a)?!1:(o.last_seen??0)>=t))},[ce,i,T.minutes]),_=ps(),q=r==null?void 0:r.local_hash,Ae=n.useMemo(()=>{const s=new Map;if(!q||h.size===0)return s;for(const[t,a]of h)if(t.endsWith(`→${q}`)&&a.hops.length>1){const o=t.split("→")[0],c=a.hops[a.hops.length-1];s.set(o,c)}return s},[h,q]),le=n.useMemo(()=>{const s=new Map;if(!(_!=null&&_.latitude)||!(_!=null&&_.longitude))return s;for(const[t,a]of Object.entries(A))a.latitude&&a.longitude&&a.latitude!==0&&a.longitude!==0?s.set(t,bt(_.latitude,_.longitude,a.latitude,a.longitude)):s.set(t,null);return s},[A,_]),{neighborHashSet:de,neighborSignalMap:Be}=n.useMemo(()=>{const s=new Set,t=new Map;for(const a of N)s.add(a.hash),t.set(a.hash,{avgRssi:a.avgRssi,avgSnr:a.avgSnr});return{neighborHashSet:s,neighborSignalMap:t}},[N]),Ce=n.useMemo(()=>{const s=v.toLowerCase().trim(),t=s==="neighbor"||s==="neighbors",a=P||t,o=j.size>0;return Object.fromEntries(Object.entries(A).filter(([c,l])=>{if(o){const S=jt(l);if(!j.has(S))return!1}if(a&&!de.has(c))return!1;if(t||!s)return!0;const B=(l.node_name||l.name||"").toLowerCase(),b=ae(c).toLowerCase();return B.includes(s)||b.includes(s)||c.toLowerCase().includes(s)}))},[A,v,P,de,j]),p=n.useMemo(()=>{const s=Object.entries(Ce),t=v.toLowerCase().trim(),a=t.length===2&&/^[0-9a-f]{2}$/i.test(t);return s.sort(([o,c],[l,B])=>{if(a){const S=ae(o).toLowerCase(),F=ae(l).toLowerCase(),se=S===t,me=F===t;if(se&&!me)return-1;if(me&&!se)return 1}let b=0;switch($){case"lastHeard":b=(c.last_seen||0)-(B.last_seen||0);break;case"distance":{const S=le.get(o)??null,F=le.get(l)??null;S===null&&F===null?b=0:S===null?b=1:F===null?b=-1:b=S-F;break}case"centrality":{const S=g.get(o)||0,F=g.get(l)||0;b=S-F;break}}return V==="desc"?-b:b})},[Ce,$,V,le,g,v]),m=n.useMemo(()=>{let s=0,t=0,a=0,o=0,c=0;for(const[,l]of p){const B=ke(l),b=l.latitude&&l.longitude&&l.latitude!==0&&l.longitude!==0;switch(B.type){case"room_server":a++;break;case"repeater":t++;break;case"companion":s++;break;case"unknown":c++;break}b&&o++}return{companions:s,repeaters:t,roomServers:a,total:p.length,withLocation:o,unknown:c}},[p]),Ve=n.useMemo(()=>new Set(x),[x]),Me=n.useMemo(()=>M===0?p:p.slice(0,U),[p,U,M]);n.useEffect(()=>{ie(M||p.length)},[$,V,v,P,j,M,p.length]),n.useEffect(()=>{const s=t=>{t.target.closest("[data-dropdown]")||re(!1)};return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),n.useEffect(()=>{if(M===0)return;const s=new IntersectionObserver(t=>{t[0].isIntersecting&&UMath.min(a+M,p.length))},{threshold:.1,rootMargin:"100px"});return be.current&&s.observe(be.current),()=>s.disconnect()},[M,U,p.length]);const Ue=n.useCallback(s=>{Ie(s),ie(s||p.length)},[p.length]),qe=n.useCallback(s=>{$===s?E(t=>t==="desc"?"asc":"desc"):(fe(s),E("desc"))},[$]),Ge=n.useCallback(s=>{const t=A[s];t!=null&&t.latitude&&(t!=null&&t.longitude)&&t.latitude!==0&&t.longitude!==0&&w(s)},[A]),We=n.useCallback(()=>{w(null)},[]),Qe=n.useCallback((s,t)=>{K({hash:s,name:t})},[]),Ke=n.useCallback(async(s,t)=>{if(t.stopPropagation(),!R){oe(s),je(a=>{const o=new Map(a);return o.delete(s),o}),ee(a=>{const o=new Map(a);return o.delete(s),o});try{const a=s.startsWith("0x")?s.slice(0,4):`0x${s.slice(0,2)}`,o=await js(a,30);o.success&&o.data?(je(c=>new Map(c).set(s,o.data)),setTimeout(()=>{je(c=>{const l=new Map(c);return l.delete(s),l})},1e4)):(ee(c=>new Map(c).set(s,o.error||"Ping failed")),setTimeout(()=>{ee(c=>{const l=new Map(c);return l.delete(s),l})},5e3))}catch(a){const o=a instanceof Error?a.message:"Ping failed";ee(c=>new Map(c).set(s,o)),setTimeout(()=>{ee(c=>{const l=new Map(c);return l.delete(s),l})},5e3)}finally{oe(null)}}},[R]);return e.jsxs(bs,{children:[e.jsx(Ns,{title:"Contacts",icon:e.jsx(te,{}),controls:e.jsxs("div",{className:"flex items-center gap-3 sm:gap-5",children:[e.jsxs("div",{className:"hidden sm:flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-fg-muted",children:"Total:"}),e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:`${m.total} discovered node${m.total!==1?"s":""} on the mesh network`,children:[e.jsx(te,{className:"w-3.5 h-3.5 text-fg-secondary"}),e.jsx("span",{children:m.total})]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-fg-muted",children:"Types:"}),m.repeaters>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Repeaters",children:[e.jsx(pe,{className:"w-3.5 h-3.5 text-sys-blue"}),e.jsx("span",{children:m.repeaters})]}),m.companions>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Companions",children:[e.jsx(Le,{className:"w-3.5 h-3.5 text-fg-muted"}),e.jsx("span",{children:m.companions})]}),m.roomServers>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Room Servers",children:[e.jsx(he,{className:"w-3.5 h-3.5 text-sys-pink"}),e.jsx("span",{children:m.roomServers})]}),m.withLocation>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"With GPS location",children:[e.jsx(As,{className:"w-3.5 h-3.5 text-sys-green"}),e.jsx("span",{children:m.withLocation})]}),m.unknown>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Unknown type",children:[e.jsx(Fe,{className:"w-3.5 h-3.5 text-sys-amber"}),e.jsx("span",{children:m.unknown})]})]})]}),e.jsxs("div",{className:"flex sm:hidden items-center gap-1.5",children:[e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(te,{className:"w-3 h-3 text-fg-secondary"}),e.jsx("span",{children:m.total})]}),m.repeaters>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(pe,{className:"w-3 h-3 text-sys-blue"}),e.jsx("span",{children:m.repeaters})]}),m.companions>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(Le,{className:"w-3 h-3 text-fg-muted"}),e.jsx("span",{children:m.companions})]}),m.roomServers>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(he,{className:"w-3 h-3 text-sys-pink"}),e.jsx("span",{children:m.roomServers})]}),e.jsx(_e,{ranges:Ne,selectedIndex:C,onSelect:L,size:"sm"})]}),e.jsx("div",{className:"hidden sm:block",children:e.jsx(_e,{ranges:Ne,selectedIndex:C,onSelect:L})})]})}),e.jsxs(ys,{children:[z?e.jsx(ct,{neighbors:A,localNode:_??void 0,localHash:q,onRemoveNode:f,selectedNodeHash:Z,onNodeSelected:We}):e.jsx("div",{className:"surface-base radius-card aspect-video flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-6 h-6 border-2 border-sys-blue border-t-transparent rounded-full animate-spin"}),e.jsx("span",{className:"text-sm text-fg-muted",children:"Loading map..."})]})}),e.jsx(hs,{noPadding:!0,children:z?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 px-3 sm:px-4 py-2.5 border-b border-edge-subtle",children:[e.jsx("span",{className:"icon-md flex items-center justify-center text-icon-card-title flex-shrink-0",children:e.jsx(te,{})}),e.jsx("span",{className:"type-micro flex-shrink-0 mr-auto hidden sm:block",children:"Discovered Contacts"}),e.jsx(fs,{type:"search",size:"sm",value:v,onChange:s=>ne(s.target.value),placeholder:"Search...",leadingIcon:e.jsx(Bs,{className:"w-3.5 h-3.5"}),trailingIcon:v?e.jsx("button",{onClick:()=>{ne(""),(v.toLowerCase().trim()==="neighbor"||v.toLowerCase().trim()==="neighbors")&&J(!1)},className:"text-fg-muted hover:text-fg-secondary",children:e.jsx(gs,{className:"w-3 h-3"})}):void 0,className:"w-24 sm:w-32 xl:w-44","aria-label":"Search contacts"}),e.jsx("div",{className:"h-4 w-px bg-border-subtle flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[e.jsxs("div",{className:"relative","data-dropdown":!0,children:[e.jsxs("button",{onClick:()=>re(!X),className:ye(j.size>0,{border:!0}),title:"Filter by contact type",children:[e.jsx(Xs,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:"Filter"}),j.size>0&&e.jsx("span",{className:"tabular-nums text-xs bg-sys-blue/30 px-1 rounded",children:j.size})]}),X&&e.jsxs("div",{className:"absolute right-0 top-full mt-1 z-50 surface-elevated radius-inner py-1 min-w-[140px]",children:[[{key:"repeater",label:"Repeaters"},{key:"companion",label:"Companions"},{key:"room",label:"Rooms"}].map(({key:s,label:t})=>e.jsxs("button",{onClick:()=>{Y(a=>{const o=new Set(a);return o.has(s)?o.delete(s):o.add(s),o})},className:"w-full px-3 py-1.5 text-sm text-left hover-bg transition-base flex items-center gap-2",children:[e.jsx("span",{className:ve("w-4 h-4 flex items-center justify-center radius-badge border",j.has(s)?"bg-sys-blue border-sys-blue text-white":"border-edge-subtle"),children:j.has(s)&&e.jsx(we,{className:"w-3 h-3"})}),e.jsx("span",{className:j.has(s)?"text-fg-primary":"text-fg-secondary",children:t})]},s)),j.size>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t border-edge-subtle my-1"}),e.jsx("button",{onClick:()=>Y(new Set),className:"w-full px-3 py-1.5 text-sm text-left text-fg-muted hover:text-fg-secondary hover-bg transition-base",children:"Clear filters"})]})]})]}),de.size>0&&e.jsxs("button",{onClick:()=>J(!P),className:ye(P,{color:"success",border:!0}),title:P?"Show all contacts":"Show only MeshCore neighbors (direct RF contact)",children:[e.jsx(pe,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:"Neighbors"})]})]}),e.jsx("div",{className:"h-4 w-px bg-border-subtle flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[ft.map(({field:s,icon:t,label:a})=>e.jsxs("button",{onClick:()=>qe(s),className:ye($===s),title:`Sort by ${a.toLowerCase()}`,children:[e.jsx(t,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:a}),$===s&&e.jsx(Gs,{className:ve("w-3 h-3",V==="asc"&&"rotate-180")})]},s)),e.jsx("div",{className:"h-4 w-px bg-border-subtle"}),e.jsxs(vs,{value:M,onChange:Ue,className:"w-auto min-w-[50px] [&_button]:py-1 [&_button]:px-2 [&_button]:text-xs [&_button]:min-h-0","aria-label":"Items per page",children:[e.jsx(ue,{value:25,children:"25"}),e.jsx(ue,{value:50,children:"50"}),e.jsx(ue,{value:100,children:"100"}),e.jsx(ue,{value:0,children:"All"})]})]})]}),p.length>0?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden sm:grid contacts-grid-header border-b border-edge-subtle/50 px-3 py-2 type-micro text-fg-muted",children:[e.jsx("div",{className:"contacts-col-node",children:"Node"}),e.jsx("div",{className:"contacts-col-signal text-right",children:"Signal"}),e.jsx("div",{className:"contacts-col-distance text-right",children:"Distance"}),e.jsx("div",{className:"contacts-col-centrality text-right",children:"Centrality"}),e.jsx("div",{className:"contacts-col-seen text-right",children:"Last Seen"}),e.jsx("div",{className:"contacts-col-actions"})]}),e.jsx("div",{className:"divide-y divide-edge-subtle/30",children:Me.map(([s,t])=>{const a=ae(s),o=Ve.has(s),c=de.has(s),l=le.get(s)??null,B=g.get(s)||0,b=c?Be.get(s):void 0,S=a?Q.get(a)??null:null,F=y.get(s)??ht;let se=null;if(!c&&q&&h.size>0){const Ye=`${s}→${q}`,xe=h.get(Ye);if(xe&&xe.hops.length>0){const Se=xe.hops[0],Pe=Object.keys(ce).find(Xe=>Xe.toUpperCase().startsWith(Se.toUpperCase())),G=Pe?ce[Pe]:null;se={prefix:Se,name:(G==null?void 0:G.node_name)??(G==null?void 0:G.name)??null,hopCount:xe.hopCount}}}const me=d.has(s),Je=Ae.get(s)??null;return e.jsx(ut,{hash:s,contact:t,isHub:o,isNeighbor:c,distance:l,centrality:B,sparklineData:F,neighborSignal:b,collisionInfo:S,isViterbiResolved:I,isPinging:R!==null,isPingingThis:R===s,pingResult:ge.get(s),pingError:De.get(s),gatewayInfo:se,lastForwarderPrefix:Je,isMobile:me,onRowClick:Ge,onPing:Ke,onRemove:Qe},s)})}),M>0&&U0&&Uie(s=>Math.min(s+M,p.length)),className:"text-sys-blue hover:text-sys-blue/80 transition-base",children:"Load more"})]})]}):e.jsxs("div",{className:"roster-empty",children:[e.jsx(te,{className:"roster-empty-icon"}),e.jsx("div",{className:"type-label text-fg-secondary",children:"No Contacts Discovered"}),e.jsx("div",{className:"type-data-xs text-fg-muted mt-1",children:"Contacts will appear here as they advertise on the mesh network."})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-4 border-b border-edge-subtle",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"w-32 h-4 rounded bg-elevated animate-pulse"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-16 h-6 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"w-24 h-6 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"w-16 h-6 rounded bg-elevated animate-pulse"})]})]}),e.jsx("div",{className:"px-3 py-3 space-y-3",children:[...Array(5)].map((s,t)=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 rounded bg-elevated animate-pulse"}),e.jsxs("div",{className:"flex-1 space-y-1.5",children:[e.jsx("div",{className:"h-4 w-32 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"h-3 w-24 rounded bg-elevated animate-pulse"})]}),e.jsx("div",{className:"w-12 h-4 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"w-16 h-4 rounded bg-elevated animate-pulse"})]},t))})]})})]}),e.jsx(Is,{isOpen:!!u,title:"Remove Contact",message:`Are you sure you would like to remove ${(u==null?void 0:u.name)||"this contact"}?`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{u&&f(u.hash),K(null)},onCancel:()=>K(null)})]})}const At=Object.freeze(Object.defineProperty({__proto__:null,default:Nt},Symbol.toStringTag,{value:"Module"}));export{At as C,dt as P,He as R,rt as T}; + */const nt=[["path",{d:"M16 17h6v-6",key:"t6n2it"}],["path",{d:"m22 17-8.5-8.5-5 5L2 7",key:"x473p"}]],rt=O("trending-down",nt);class ot extends n.Component{constructor(i){super(i),this.state={hasError:!1}}static getDerivedStateFromError(i){return{hasError:!0,error:i}}render(){var i;return this.state.hasError?e.jsx("div",{className:"map-container-16-9 flex items-center justify-center rounded-2xl surface-base",role:"alert","aria-live":"assertive",children:e.jsxs("div",{className:"text-center text-fg-muted p-4",children:[e.jsx("p",{className:"text-lg mb-2",children:"Map failed to load"}),e.jsx("p",{className:"text-sm text-fg-muted",children:((i=this.state.error)==null?void 0:i.message)||"Unknown error"}),e.jsx("p",{className:"text-xs text-fg-muted mt-2",children:"Try refreshing the page or check your browser's WebGL support."})]})}):this.props.children}}const it=n.lazy(()=>Ze(()=>import("./ContactsMapMapLibre-CKQy2_cg.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40])));function ct({neighbors:r,localNode:i,localHash:f,onRemoveNode:x,selectedNodeHash:g,onNodeSelected:N,highlightedEdgeKey:h,highlightedGhost:d}){return e.jsx(ot,{children:e.jsx(n.Suspense,{fallback:e.jsx("div",{className:"map-container-16-9 flex items-center justify-center rounded-2xl surface-base",role:"status","aria-live":"polite","aria-label":"Loading map",children:e.jsxs("div",{className:"text-fg-muted flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 border-2 border-sys-blue border-t-transparent rounded-full animate-spin","aria-hidden":"true"}),e.jsx("span",{children:"Loading map..."})]})}),children:e.jsx(it,{neighbors:r,localNode:i,localHash:f,onRemoveNode:x,selectedNodeHash:g,onNodeSelected:N,highlightedEdgeKey:h,highlightedGhost:d})})})}function lt({hash:r,className:i="",size:f="sm",collisionInfo:x,isViterbiResolved:g}){const N=Te(),h=$e(),[d,z]=n.useState(!1),C=n.useMemo(()=>ae(r),[r]),L=n.useMemo(()=>x!==void 0?x:C?N.find(u=>u.prefix===C)??null:null,[C,N,x]),T=g??(h.totalPaths>0&&h.avgPathConfidence>=.7),H=n.useCallback(u=>{u.preventDefault(),u.stopPropagation(),z(!0)},[]),D=n.useCallback(()=>{z(!1)},[]);if(!L)return null;const y=f==="sm"?"w-3.5 h-3.5":"w-4 h-4",I=T?"text-sys-cyan hover:text-sys-cyan hover:bg-sys-cyan/10 focus:ring-sys-cyan/50":"text-signal-fair hover:text-sys-indigo hover:bg-signal-fair/10 focus:ring-signal-fair/50",Q=T?`Prefix conflict resolved by Viterbi HMM (${(h.avgPathConfidence*100).toFixed(0)}% confidence)`:`Prefix conflict: ${L.candidateCount} nodes share prefix "${C}"`;return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:H,className:`inline-flex items-center justify-center p-0.5 rounded focus:outline-none focus:ring-2 transition-colors cursor-pointer touch-manipulation ${I} ${i}`,title:Q,"aria-label":`View prefix conflict for ${C}${T?" (Viterbi resolved)":""}`,children:T?e.jsxs("span",{className:"relative",children:[e.jsx(Fs,{className:y}),e.jsx(we,{className:"absolute -bottom-0.5 -right-0.5 w-2 h-2 text-sys-green"})]}):e.jsx(Js,{className:y})}),e.jsx($s,{isOpen:d,prefix:L.prefix,candidateHashes:L.candidateHashes,onClose:D})]})}const dt=n.memo(lt),ze=[{target:"Contacts",fn:"name",minStage:1,when:ks},{target:"Contacts",fn:"traceLinks.directed",minStage:2,when:Cs}];Ms(ze);function mt(r){return r<1e3?`${Math.round(r)}m`:`${(r/1e3).toFixed(1)}km`}function xt({hash:r,contact:i,isHub:f,isNeighbor:x,distance:g,centrality:N,sparklineData:h,neighborSignal:d,collisionInfo:z,isViterbiResolved:C,isPinging:L,isPingingThis:T,pingResult:H,pingError:D,gatewayInfo:y,lastForwarderPrefix:I,isMobile:Q,pathStability:u,onRowClick:K,onPing:$,onRemove:fe}){ws(ze);const V=i.latitude&&i.longitude&&i.latitude!==0&&i.longitude!==0,E=i.node_name||i.name||"Unknown",v=x&&d,ne=ke(i),{isRepeater:P,isCompanion:J,isRoomServer:j,isClient:Y,label:X}=ne,re=x?`${X} — Direct RF contact (zero-hop neighbor)`:`${X} — Flood routing (multi-hop via mesh)`,Z=i.first_seen?Re(i.first_seen).replace(/ ago$/i," old"):null;return e.jsxs("div",{className:`contacts-grid-row ${f?"bg-sys-amber/5 border-l-2 border-l-sys-amber":""} ${V?"cursor-pointer hover:bg-subtle-fill":""}`,onClick:()=>K(r),children:[e.jsxs("div",{className:"contacts-col-node flex items-center gap-2 min-w-0",children:[v&&(d==null?void 0:d.avgSnr)!==null?e.jsx("div",{className:`w-2 h-2 rounded-full flex-shrink-0 self-center ${es(d.avgSnr)}`}):e.jsx("div",{className:"w-2 flex-shrink-0"}),e.jsx("div",{className:"w-6 h-6 flex items-center justify-center flex-shrink-0",title:re,children:(()=>{if(j&&P)return e.jsxs("div",{className:"relative w-5 h-5",children:[e.jsx(he,{className:"w-5 h-5 absolute inset-0 text-sys-pink"}),e.jsx(Es,{className:"w-2.5 h-2.5 absolute -bottom-0.5 -right-0.5 text-sys-teal"})]});if(j)return e.jsx(he,{className:"w-5 h-5 text-sys-pink"});if(P)return e.jsx("div",{className:"w-5 h-5 rounded-full flex items-center justify-center ring-[1.5px] ring-sys-blue",children:e.jsx(pe,{className:"w-3.5 h-3.5 text-sys-blue"})});if((J||Y)&&E!=="Unknown"){const{emoji:w,cleanName:R}=Ss(E);return e.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center",style:{backgroundColor:Ps(R)},children:w?e.jsx("span",{className:"text-sm leading-none",children:w}):e.jsx("span",{className:"text-white text-[9px] font-bold tracking-tighter",children:Rs(E)})})}return e.jsx("div",{className:"w-6 h-6 rounded-full flex items-center justify-center bg-zinc-500/20",children:e.jsx(Fe,{className:"w-3.5 h-3.5 text-sys-amber"})})})()}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5 overflow-hidden",children:[e.jsx("span",{className:"roster-title truncate",title:E,children:E}),x&&e.jsx(k,{color:W.neighbor,compact:!0,className:"flex-shrink-0",children:"NBR"}),f&&e.jsxs(k,{color:W.hub,compact:!0,className:"flex items-center gap-1 flex-shrink-0",children:[e.jsx(zs,{className:"w-3 h-3"}),"HUB"]}),P&&e.jsx(k,{color:W.repeater,compact:!0,className:"flex-shrink-0",children:"RPT"}),j&&e.jsx(k,{color:W.room,compact:!0,className:"flex-shrink-0",children:"ROOM"}),J&&e.jsx(k,{color:W.companion,compact:!0,className:"flex-shrink-0",children:"COMP"}),Y&&e.jsx(k,{color:W.client,compact:!0,className:"flex-shrink-0",children:"CLIENT"}),Q&&e.jsxs(k,{color:"cyan",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",children:[e.jsx(et,{className:"w-2.5 h-2.5"}),"MOBILE"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5 mt-0.5",children:[e.jsx(Hs,{copy:!0,size:"compact",truncate:[8,6],children:r}),e.jsx(dt,{hash:r,collisionInfo:z,isViterbiResolved:C}),!x&&y&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`Via ${y.name||y.prefix} (${y.hopCount} hop${y.hopCount!==1?"s":""})`,children:[e.jsx(_s,{className:"w-2.5 h-2.5"}),e.jsx("span",{className:"font-mono",children:y.prefix}),y.hopCount>1&&e.jsxs("span",{className:"opacity-60",children:["+",y.hopCount-1]})]}),I&&!x&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`Last forwarded by ${I}`,children:[e.jsx(Us,{className:"w-2.5 h-2.5"}),e.jsx("span",{className:"font-mono",children:I})]}),u!=null&&u!==0&&e.jsx(k,{color:u>0?"green":"amber",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:u>0?"Path stability improving":"Path stability declining",children:u>0?e.jsx(ss,{className:"w-2.5 h-2.5"}):e.jsx(rt,{className:"w-2.5 h-2.5"})}),h.length>0&&(()=>{const w=h.reduce((oe,ge)=>oe+ge.count,0);if(w===0)return null;const R=w/24;return e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0",title:`${w} packets in last 24h (~${R.toFixed(1)}/hr)`,children:[e.jsx(tt,{className:"w-2.5 h-2.5"}),e.jsxs("span",{children:[R<1?"<1":R.toFixed(0),"/hr"]})]})})(),Z&&e.jsxs(k,{color:"zinc",compact:!0,className:"flex items-center gap-0.5 flex-shrink-0 opacity-70",title:`First discovered ${Z}`,children:[e.jsx(Qs,{className:"w-2.5 h-2.5"}),e.jsx("span",{children:Z})]})]})]})]}),e.jsxs("div",{className:"contacts-col-signal flex items-center justify-end gap-2",children:[v&&(d==null?void 0:d.avgRssi)!==null&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ls,{rssi:d.avgRssi,className:"w-3.5 h-3.5"}),e.jsx("span",{className:"type-data-xs text-fg-muted",children:Math.round(d.avgRssi)})]}),v&&(d==null?void 0:d.avgSnr)!==null&&e.jsxs("span",{className:"type-data-xs text-fg-muted",children:[d.avgSnr.toFixed(1)," dB"]})]}),e.jsx("div",{className:"contacts-col-distance flex items-center justify-end gap-1 text-fg-muted",children:g!=null&&e.jsxs(e.Fragment,{children:[e.jsx(He,{className:"w-3 h-3"}),e.jsx("span",{className:"type-data-xs",children:mt(g)})]})}),e.jsx("div",{className:"contacts-col-centrality flex items-center justify-end gap-1",children:N>0&&e.jsxs(e.Fragment,{children:[e.jsx(Oe,{className:"w-3 h-3 text-sys-indigo"}),e.jsxs("span",{className:"type-data-xs text-fg-muted",children:[(N*100).toFixed(0),"%"]})]})}),e.jsx("div",{className:"contacts-col-seen flex items-center justify-end",children:e.jsx("span",{className:"type-data-xs text-fg-primary whitespace-nowrap",children:i.last_seen?Re(i.last_seen):"—"})}),e.jsxs("div",{className:"contacts-col-actions flex items-center justify-end gap-1",children:[x&&e.jsx(e.Fragment,{children:H?e.jsxs("div",{className:"flex items-center gap-1 text-sys-green",title:`RTT: ${H.rtt_ms.toFixed(0)}ms`,children:[e.jsx(we,{className:"w-3.5 h-3.5"}),e.jsxs("span",{className:"type-data-xs hidden sm:inline",children:[H.snr_db.toFixed(1),"dB"]})]}):D?e.jsx("span",{className:"text-sys-red text-xs",title:D,children:"✗"}):e.jsx("button",{onClick:w=>$(r,w),disabled:L,className:"p-1 sm:p-1.5 radius-inner text-fg-muted/50 hover:text-sys-blue hover:bg-sys-blue/10 transition-base disabled:opacity-50 disabled:cursor-not-allowed",title:"Ping neighbor for updated signal info",children:T?e.jsx(Ee,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4 animate-spin"}):e.jsx(Os,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})}),e.jsx("button",{onClick:w=>{w.stopPropagation(),fe(r,E)},className:"p-1 sm:p-1.5 radius-inner text-fg-muted/50 hover:text-sys-red hover:bg-sys-red/10 transition-base",title:"Remove contact",children:e.jsx(Ds,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]})}const ut=n.memo(xt),pt=6371e3,ht=[],ft=[{field:"lastHeard",icon:Ts,label:"Recent"},{field:"distance",icon:He,label:"Distance"},{field:"centrality",icon:Oe,label:"Centrality"}];function gt(r){switch(r){case"room_server":return"room";case"repeater":return"repeater";case"companion":return"companion";case"unknown":return"companion"}}function jt(r){const i=ke(r);return gt(i.type)}function ye(r,i){const{color:f="primary",border:x=!1}=i??{};return ve("flex items-center gap-1.5 px-2 py-1.5 text-sm radius-inner transition-base",r?f==="success"?"bg-sys-green/20 text-sys-green":"bg-sys-blue/20 text-sys-blue":"text-fg-muted hover:text-fg-secondary hover-bg",x&&(r?f==="success"?"border border-sys-green/30":"border border-sys-blue/30":"border border-transparent"))}function bt(r,i,f,x){const g=(f-r)*Math.PI/180,N=(x-i)*Math.PI/180,h=Math.sin(g/2)*Math.sin(g/2)+Math.cos(r*Math.PI/180)*Math.cos(f*Math.PI/180)*Math.sin(N/2)*Math.sin(N/2),d=2*Math.atan2(Math.sqrt(h),Math.sqrt(1-h));return pt*d}function Nt(){const{stats:r}=ts(),i=as(),f=ns(),x=rs(),g=os(),N=is(),h=cs(),d=ls(),z=ds(),C=ms(),L=xs(),T=Ne[C],H=Te(),D=$e(),y=us(),I=D.totalPaths>0&&D.avgPathConfidence>=.7,Q=n.useMemo(()=>{const s=new Map;for(const t of H)s.set(t.prefix,t);return s},[H]),[u,K]=n.useState(null),[$,fe]=n.useState("lastHeard"),[V,E]=n.useState("desc"),[v,ne]=n.useState(""),[P,J]=n.useState(!1),[j,Y]=n.useState(new Set),[X,re]=n.useState(!1),[Z,w]=n.useState(null),[R,oe]=n.useState(null),[ge,je]=n.useState(new Map),[De,ee]=n.useState(new Map),[M,Ie]=n.useState(25),[U,ie]=n.useState(25),be=n.useRef(null),ce=n.useMemo(()=>(r==null?void 0:r.neighbors)??{},[r==null?void 0:r.neighbors]),A=n.useMemo(()=>{const t=Date.now()/1e3-T.minutes*60;return Object.fromEntries(Object.entries(ce).filter(([a,o])=>i.has(a)?!1:(o.last_seen??0)>=t))},[ce,i,T.minutes]),_=ps(),q=r==null?void 0:r.local_hash,Ae=n.useMemo(()=>{const s=new Map;if(!q||h.size===0)return s;for(const[t,a]of h)if(t.endsWith(`→${q}`)&&a.hops.length>1){const o=t.split("→")[0],c=a.hops[a.hops.length-1];s.set(o,c)}return s},[h,q]),le=n.useMemo(()=>{const s=new Map;if(!(_!=null&&_.latitude)||!(_!=null&&_.longitude))return s;for(const[t,a]of Object.entries(A))a.latitude&&a.longitude&&a.latitude!==0&&a.longitude!==0?s.set(t,bt(_.latitude,_.longitude,a.latitude,a.longitude)):s.set(t,null);return s},[A,_]),{neighborHashSet:de,neighborSignalMap:Be}=n.useMemo(()=>{const s=new Set,t=new Map;for(const a of N)s.add(a.hash),t.set(a.hash,{avgRssi:a.avgRssi,avgSnr:a.avgSnr});return{neighborHashSet:s,neighborSignalMap:t}},[N]),Ce=n.useMemo(()=>{const s=v.toLowerCase().trim(),t=s==="neighbor"||s==="neighbors",a=P||t,o=j.size>0;return Object.fromEntries(Object.entries(A).filter(([c,l])=>{if(o){const S=jt(l);if(!j.has(S))return!1}if(a&&!de.has(c))return!1;if(t||!s)return!0;const B=(l.node_name||l.name||"").toLowerCase(),b=ae(c).toLowerCase();return B.includes(s)||b.includes(s)||c.toLowerCase().includes(s)}))},[A,v,P,de,j]),p=n.useMemo(()=>{const s=Object.entries(Ce),t=v.toLowerCase().trim(),a=t.length===2&&/^[0-9a-f]{2}$/i.test(t);return s.sort(([o,c],[l,B])=>{if(a){const S=ae(o).toLowerCase(),F=ae(l).toLowerCase(),se=S===t,me=F===t;if(se&&!me)return-1;if(me&&!se)return 1}let b=0;switch($){case"lastHeard":b=(c.last_seen||0)-(B.last_seen||0);break;case"distance":{const S=le.get(o)??null,F=le.get(l)??null;S===null&&F===null?b=0:S===null?b=1:F===null?b=-1:b=S-F;break}case"centrality":{const S=g.get(o)||0,F=g.get(l)||0;b=S-F;break}}return V==="desc"?-b:b})},[Ce,$,V,le,g,v]),m=n.useMemo(()=>{let s=0,t=0,a=0,o=0,c=0;for(const[,l]of p){const B=ke(l),b=l.latitude&&l.longitude&&l.latitude!==0&&l.longitude!==0;switch(B.type){case"room_server":a++;break;case"repeater":t++;break;case"companion":s++;break;case"unknown":c++;break}b&&o++}return{companions:s,repeaters:t,roomServers:a,total:p.length,withLocation:o,unknown:c}},[p]),Ve=n.useMemo(()=>new Set(x),[x]),Me=n.useMemo(()=>M===0?p:p.slice(0,U),[p,U,M]);n.useEffect(()=>{ie(M||p.length)},[$,V,v,P,j,M,p.length]),n.useEffect(()=>{const s=t=>{t.target.closest("[data-dropdown]")||re(!1)};return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[]),n.useEffect(()=>{if(M===0)return;const s=new IntersectionObserver(t=>{t[0].isIntersecting&&UMath.min(a+M,p.length))},{threshold:.1,rootMargin:"100px"});return be.current&&s.observe(be.current),()=>s.disconnect()},[M,U,p.length]);const Ue=n.useCallback(s=>{Ie(s),ie(s||p.length)},[p.length]),qe=n.useCallback(s=>{$===s?E(t=>t==="desc"?"asc":"desc"):(fe(s),E("desc"))},[$]),Ge=n.useCallback(s=>{const t=A[s];t!=null&&t.latitude&&(t!=null&&t.longitude)&&t.latitude!==0&&t.longitude!==0&&w(s)},[A]),We=n.useCallback(()=>{w(null)},[]),Qe=n.useCallback((s,t)=>{K({hash:s,name:t})},[]),Ke=n.useCallback(async(s,t)=>{if(t.stopPropagation(),!R){oe(s),je(a=>{const o=new Map(a);return o.delete(s),o}),ee(a=>{const o=new Map(a);return o.delete(s),o});try{const a=s.startsWith("0x")?s.slice(0,4):`0x${s.slice(0,2)}`,o=await js(a,30);o.success&&o.data?(je(c=>new Map(c).set(s,o.data)),setTimeout(()=>{je(c=>{const l=new Map(c);return l.delete(s),l})},1e4)):(ee(c=>new Map(c).set(s,o.error||"Ping failed")),setTimeout(()=>{ee(c=>{const l=new Map(c);return l.delete(s),l})},5e3))}catch(a){const o=a instanceof Error?a.message:"Ping failed";ee(c=>new Map(c).set(s,o)),setTimeout(()=>{ee(c=>{const l=new Map(c);return l.delete(s),l})},5e3)}finally{oe(null)}}},[R]);return e.jsxs(bs,{children:[e.jsx(Ns,{title:"Contacts",icon:e.jsx(te,{}),controls:e.jsxs("div",{className:"flex items-center gap-3 sm:gap-5",children:[e.jsxs("div",{className:"hidden sm:flex items-center gap-4",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-fg-muted",children:"Total:"}),e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:`${m.total} discovered node${m.total!==1?"s":""} on the mesh network`,children:[e.jsx(te,{className:"w-3.5 h-3.5 text-fg-secondary"}),e.jsx("span",{children:m.total})]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"text-xs text-fg-muted",children:"Types:"}),m.repeaters>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Repeaters",children:[e.jsx(pe,{className:"w-3.5 h-3.5 text-sys-blue"}),e.jsx("span",{children:m.repeaters})]}),m.companions>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Companions",children:[e.jsx(Le,{className:"w-3.5 h-3.5 text-fg-muted"}),e.jsx("span",{children:m.companions})]}),m.roomServers>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Room Servers",children:[e.jsx(he,{className:"w-3.5 h-3.5 text-sys-pink"}),e.jsx("span",{children:m.roomServers})]}),m.withLocation>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"With GPS location",children:[e.jsx(As,{className:"w-3.5 h-3.5 text-sys-green"}),e.jsx("span",{children:m.withLocation})]}),m.unknown>0&&e.jsxs("span",{className:"data-box flex items-center gap-1.5 cursor-default",title:"Unknown type",children:[e.jsx(Fe,{className:"w-3.5 h-3.5 text-sys-amber"}),e.jsx("span",{children:m.unknown})]})]})]}),e.jsxs("div",{className:"flex sm:hidden items-center gap-1.5",children:[e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(te,{className:"w-3 h-3 text-fg-secondary"}),e.jsx("span",{children:m.total})]}),m.repeaters>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(pe,{className:"w-3 h-3 text-sys-blue"}),e.jsx("span",{children:m.repeaters})]}),m.companions>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(Le,{className:"w-3 h-3 text-fg-muted"}),e.jsx("span",{children:m.companions})]}),m.roomServers>0&&e.jsxs("span",{className:"data-box !px-1.5 !py-0.5 !text-[10px] flex items-center gap-1",children:[e.jsx(he,{className:"w-3 h-3 text-sys-pink"}),e.jsx("span",{children:m.roomServers})]}),e.jsx(_e,{ranges:Ne,selectedIndex:C,onSelect:L,size:"sm"})]}),e.jsx("div",{className:"hidden sm:block",children:e.jsx(_e,{ranges:Ne,selectedIndex:C,onSelect:L})})]})}),e.jsxs(ys,{children:[z?e.jsx(ct,{neighbors:A,localNode:_??void 0,localHash:q,onRemoveNode:f,selectedNodeHash:Z,onNodeSelected:We}):e.jsx("div",{className:"surface-base radius-card aspect-video flex items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-6 h-6 border-2 border-sys-blue border-t-transparent rounded-full animate-spin"}),e.jsx("span",{className:"text-sm text-fg-muted",children:"Loading map..."})]})}),e.jsx(hs,{noPadding:!0,children:z?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 px-3 sm:px-4 py-2.5 border-b border-edge-subtle",children:[e.jsx("span",{className:"icon-md flex items-center justify-center text-icon-card-title flex-shrink-0",children:e.jsx(te,{})}),e.jsx("span",{className:"type-micro flex-shrink-0 mr-auto hidden sm:block",children:"Discovered Contacts"}),e.jsx(fs,{type:"search",size:"sm",value:v,onChange:s=>ne(s.target.value),placeholder:"Search...",leadingIcon:e.jsx(Bs,{className:"w-3.5 h-3.5"}),trailingIcon:v?e.jsx("button",{onClick:()=>{ne(""),(v.toLowerCase().trim()==="neighbor"||v.toLowerCase().trim()==="neighbors")&&J(!1)},className:"text-fg-muted hover:text-fg-secondary",children:e.jsx(gs,{className:"w-3 h-3"})}):void 0,className:"w-24 sm:w-32 xl:w-44","aria-label":"Search contacts"}),e.jsx("div",{className:"h-4 w-px bg-border-subtle flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[e.jsxs("div",{className:"relative","data-dropdown":!0,children:[e.jsxs("button",{onClick:()=>re(!X),className:ye(j.size>0,{border:!0}),title:"Filter by contact type",children:[e.jsx(Xs,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:"Filter"}),j.size>0&&e.jsx("span",{className:"tabular-nums text-xs bg-sys-blue/30 px-1 rounded",children:j.size})]}),X&&e.jsxs("div",{className:"absolute right-0 top-full mt-1 z-50 surface-elevated radius-inner py-1 min-w-[140px]",children:[[{key:"repeater",label:"Repeaters"},{key:"companion",label:"Companions"},{key:"room",label:"Rooms"}].map(({key:s,label:t})=>e.jsxs("button",{onClick:()=>{Y(a=>{const o=new Set(a);return o.has(s)?o.delete(s):o.add(s),o})},className:"w-full px-3 py-1.5 text-sm text-left hover-bg transition-base flex items-center gap-2",children:[e.jsx("span",{className:ve("w-4 h-4 flex items-center justify-center radius-badge border",j.has(s)?"bg-sys-blue border-sys-blue text-white":"border-edge-subtle"),children:j.has(s)&&e.jsx(we,{className:"w-3 h-3"})}),e.jsx("span",{className:j.has(s)?"text-fg-primary":"text-fg-secondary",children:t})]},s)),j.size>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t border-edge-subtle my-1"}),e.jsx("button",{onClick:()=>Y(new Set),className:"w-full px-3 py-1.5 text-sm text-left text-fg-muted hover:text-fg-secondary hover-bg transition-base",children:"Clear filters"})]})]})]}),de.size>0&&e.jsxs("button",{onClick:()=>J(!P),className:ye(P,{color:"success",border:!0}),title:P?"Show all contacts":"Show only MeshCore neighbors (direct RF contact)",children:[e.jsx(pe,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:"Neighbors"})]})]}),e.jsx("div",{className:"h-4 w-px bg-border-subtle flex-shrink-0"}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[ft.map(({field:s,icon:t,label:a})=>e.jsxs("button",{onClick:()=>qe(s),className:ye($===s),title:`Sort by ${a.toLowerCase()}`,children:[e.jsx(t,{className:"w-3.5 h-3.5"}),e.jsx("span",{className:"hidden xl:inline",children:a}),$===s&&e.jsx(Gs,{className:ve("w-3 h-3",V==="asc"&&"rotate-180")})]},s)),e.jsx("div",{className:"h-4 w-px bg-border-subtle"}),e.jsxs(vs,{value:M,onChange:Ue,className:"w-auto min-w-[50px] [&_button]:py-1 [&_button]:px-2 [&_button]:text-xs [&_button]:min-h-0","aria-label":"Items per page",children:[e.jsx(ue,{value:25,children:"25"}),e.jsx(ue,{value:50,children:"50"}),e.jsx(ue,{value:100,children:"100"}),e.jsx(ue,{value:0,children:"All"})]})]})]}),p.length>0?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"hidden sm:grid contacts-grid-header border-b border-edge-subtle/50 px-3 py-2 type-micro text-fg-muted",children:[e.jsx("div",{className:"contacts-col-node",children:"Node"}),e.jsx("div",{className:"contacts-col-signal text-right",children:"Signal"}),e.jsx("div",{className:"contacts-col-distance text-right",children:"Distance"}),e.jsx("div",{className:"contacts-col-centrality text-right",children:"Centrality"}),e.jsx("div",{className:"contacts-col-seen text-right",children:"Last Seen"}),e.jsx("div",{className:"contacts-col-actions"})]}),e.jsx("div",{className:"divide-y divide-edge-subtle/30",children:Me.map(([s,t])=>{const a=ae(s),o=Ve.has(s),c=de.has(s),l=le.get(s)??null,B=g.get(s)||0,b=c?Be.get(s):void 0,S=a?Q.get(a)??null:null,F=y.get(s)??ht;let se=null;if(!c&&q&&h.size>0){const Ye=`${s}→${q}`,xe=h.get(Ye);if(xe&&xe.hops.length>0){const Se=xe.hops[0],Pe=Object.keys(ce).find(Xe=>Xe.toUpperCase().startsWith(Se.toUpperCase())),G=Pe?ce[Pe]:null;se={prefix:Se,name:(G==null?void 0:G.node_name)??(G==null?void 0:G.name)??null,hopCount:xe.hopCount}}}const me=d.has(s),Je=Ae.get(s)??null;return e.jsx(ut,{hash:s,contact:t,isHub:o,isNeighbor:c,distance:l,centrality:B,sparklineData:F,neighborSignal:b,collisionInfo:S,isViterbiResolved:I,isPinging:R!==null,isPingingThis:R===s,pingResult:ge.get(s),pingError:De.get(s),gatewayInfo:se,lastForwarderPrefix:Je,isMobile:me,onRowClick:Ge,onPing:Ke,onRemove:Qe},s)})}),M>0&&U0&&Uie(s=>Math.min(s+M,p.length)),className:"text-sys-blue hover:text-sys-blue/80 transition-base",children:"Load more"})]})]}):e.jsxs("div",{className:"roster-empty",children:[e.jsx(te,{className:"roster-empty-icon"}),e.jsx("div",{className:"type-label text-fg-secondary",children:"No Contacts Discovered"}),e.jsx("div",{className:"type-data-xs text-fg-muted mt-1",children:"Contacts will appear here as they advertise on the mesh network."})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center justify-between px-5 py-4 border-b border-edge-subtle",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"w-32 h-4 rounded bg-elevated animate-pulse"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-16 h-6 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"w-24 h-6 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"w-16 h-6 rounded bg-elevated animate-pulse"})]})]}),e.jsx("div",{className:"px-3 py-3 space-y-3",children:[...Array(5)].map((s,t)=>e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-5 h-5 rounded bg-elevated animate-pulse"}),e.jsxs("div",{className:"flex-1 space-y-1.5",children:[e.jsx("div",{className:"h-4 w-32 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"h-3 w-24 rounded bg-elevated animate-pulse"})]}),e.jsx("div",{className:"w-12 h-4 rounded bg-elevated animate-pulse"}),e.jsx("div",{className:"w-16 h-4 rounded bg-elevated animate-pulse"})]},t))})]})})]}),e.jsx(Is,{isOpen:!!u,title:"Remove Contact",message:`Are you sure you would like to remove ${(u==null?void 0:u.name)||"this contact"}?`,confirmLabel:"Remove",cancelLabel:"Cancel",variant:"danger",onConfirm:()=>{u&&f(u.hash),K(null)},onCancel:()=>K(null)})]})}const At=Object.freeze(Object.defineProperty({__proto__:null,default:Nt},Symbol.toStringTag,{value:"Module"}));export{At as C,dt as P,He as R,rt as T}; diff --git a/frontend/dist/assets/ContactsMapMapLibre-vYZ4_STu.js b/frontend/dist/assets/ContactsMapMapLibre-CKQy2_cg.js similarity index 53% rename from frontend/dist/assets/ContactsMapMapLibre-vYZ4_STu.js rename to frontend/dist/assets/ContactsMapMapLibre-CKQy2_cg.js index 3a4aaa19..fc12f4f2 100644 --- a/frontend/dist/assets/ContactsMapMapLibre-vYZ4_STu.js +++ b/frontend/dist/assets/ContactsMapMapLibre-CKQy2_cg.js @@ -1,56 +1,56 @@ -import{d as N0,_ as ta,r as R,fa as ra,cR as e0,Z as I0,fb as Fo,fc as gs,fd as na,bD as oa,bJ as ia,j as p,bL as sa,c as L0,a0 as ps,m as a0,ae as ys,A as j0,b as Vr,B as zt,cS as la,bF as so,M as Po,S as Qo,cI as xs,L as Oo,bh as ws,ac as aa,R as vs,bc as dn,ad as ua,w as zo,b8 as gi,fe as ks,y as ca,E as fa,cQ as ha,ff as da,a9 as bs,bj as pi,bl as ma,x as Ho,bH as ga,aD as pa,e7 as Cs,fg as ya,bM as xa,fh as wa,ep as Es,$ as hn,bX as va,fi as Ss,fj as ka,fk as ba,ah as Ms,q as x0,fl as Bs,bw as Ca,f8 as Ea,by as Sa,cJ as Ma,H as Ba,fm as Da,ej as _a,fn as lo}from"./index-CdwYueSG.js";import{u as Ds,b as er,S as Ar,L as t0,P as Ta,c as Ra,M as ja,d as Ia,B as La}from"./BasemapLayer-DAxIlO26.js";import{u as _s,r as Ts,e as yi,f as xi,g as Na}from"./consumer-registry-DhVehOm2.js";import{L as On,c as Fa}from"./link-scoring-D5cTtUUv.js";import{T as Go,C as Pa}from"./ConfirmModal-D_7JTlAb.js";import{b as Qa,e as Oa,a as Rs,m as wi,f as za,d as Ha,M as Ga,g as Ua,E as Va,u as Wa,G as Ya,h as Ka,i as Za,j as $a,D as qa}from"./DeepAnalysisModal-CtwX6n44.js";import{H as Ja,A as un,Z as Xa,D as vi,p as Au,c as eu,u as cr}from"./useMapViewStore-COYDTQJ4.js";import{R as js}from"./refresh-cw-Bcz_yxe3.js";import{E as Is}from"./target-CAnStHns.js";import{F as tu}from"./funnel-DznwFNVG.js";import{P as ru}from"./plus-BxLpl_sF.js";import{C as nu,a as Ls,b as ko,c as ou}from"./easing-D6lOfiWJ.js";import{D as iu}from"./download-Cxh-dhwT.js";import{W as su}from"./wifi-Af5E3WZ9.js";import{C as Ns}from"./SignalIndicator-B7F9Dvpc.js";import{C as lu}from"./chevron-right-Clx_OSXY.js";import{T as au,P as uu,R as cu}from"./Contacts-CFnmM0Y1.js";import{c as fu}from"./node-types-DedpfI8l.js";import{H as ki,C as Nr,N as hu,a as du}from"./badge-colors-BNUqIXCA.js";import{L as mu}from"./LightSparkline-DDCHe_-F.js";import{M as gu}from"./map-pin-BTzarosW.js";import{c as Fs}from"./geo-utils-BP1zBK9h.js";import"./triangle-alert-DaComX7z.js";import"./database-BZ4a6Qd1.js";import"./index-BaK1kOPF.js";import"./ping-C5xXtX1r.js";import"./PageLayout-gbvZ6tct.js";import"./listbox-B4IRFwwn.js";import"./element-movement-C6F5QGkE.js";import"./TimeRangeStepper-DCz-TWVT.js";import"./chat-utils-B3hkabuB.js";import"./CollisionExplorerModal-CjMAUeX8.js";import"./monitor-smartphone-CBUcuPPv.js";import"./DataBox-D9AB1NGO.js";import"./circle-question-mark-Bdu9dBju.js";import"./network-CWIy2ZSo.js";import"./activity-B7U7wJdR.js";import"./search-DV-Xcdgb.js";/** +import{d as L0,_ as ta,r as R,fa as ra,cR as e0,Z as j0,fb as Fo,fc as gs,fd as na,bD as oa,bJ as ia,j as p,bL as sa,c as I0,a0 as ps,m as u0,ae as ys,A as R0,b as Ur,B as Ot,cS as la,bF as so,M as Po,S as Qo,cI as xs,L as Oo,bh as ws,ac as aa,R as vs,bc as dn,ad as ua,w as zo,b8 as gi,fe as ks,y as ca,E as fa,cQ as ha,ff as da,a9 as bs,bj as pi,bl as ma,x as Ho,bH as ga,aD as pa,e7 as Cs,fg as ya,bM as xa,fh as wa,ep as Es,$ as hn,bX as va,fi as Ss,fj as ka,fk as ba,ah as Ms,q as y0,fl as Bs,bw as Ca,f8 as Ea,by as Sa,cJ as Ma,H as Ba,fm as Da,ej as _a,fn as lo}from"./index-C8IY8K2r.js";import{u as Ds,b as Ar,S as X0,L as t0,P as Ta,c as Ra,M as ja,d as Ia,B as La}from"./BasemapLayer-D5WYHXmJ.js";import{u as _s,r as Ts,e as yi,f as xi,g as Na}from"./consumer-registry-lDKP4bcU.js";import{L as On,c as Fa}from"./link-scoring-CX7bMGSJ.js";import{T as Go,C as Pa}from"./ConfirmModal-CNsW1W2q.js";import{b as Qa,e as Oa,a as Rs,m as wi,f as za,d as Ha,M as Ga,g as Ua,E as Va,u as Wa,G as Ya,h as Ka,i as Za,j as $a,D as qa}from"./DeepAnalysisModal-B2m7JxOp.js";import{H as Ja,A as un,Z as Xa,D as vi,p as Au,c as eu,u as ur}from"./useMapViewStore-ax-BqDpg.js";import{R as js}from"./refresh-cw-BqACEANM.js";import{E as Is}from"./target-DviLCm8U.js";import{F as tu}from"./funnel-BDRRJl0y.js";import{P as ru}from"./plus-PWV57wbr.js";import{C as nu,a as Ls,b as ko,c as ou}from"./easing-CXN4GmUW.js";import{D as iu}from"./download-IUkhheKK.js";import{W as su}from"./wifi-Cq9uCDyf.js";import{C as Ns}from"./SignalIndicator-Dw_bfp50.js";import{C as lu}from"./chevron-right-DUgYTR6d.js";import{T as au,P as uu,R as cu}from"./Contacts-CKgzKZ-Z.js";import{c as fu}from"./node-types-3T9Wr7vI.js";import{H as ki,C as Lr,N as hu,a as du}from"./badge-colors-BNUqIXCA.js";import{L as mu}from"./LightSparkline-CkL4j4OZ.js";import{M as gu}from"./map-pin-DMVHq6j8.js";import{c as Fs}from"./geo-utils-BP1zBK9h.js";import"./triangle-alert-8k00uu7o.js";import"./database-BEyHF_p_.js";import"./index-B-prVW1V.js";import"./ping-lLlOzF2r.js";import"./PageLayout-NQBVrM09.js";import"./listbox-BhQdM5DY.js";import"./element-movement-D4o83B2Z.js";import"./TimeRangeStepper-BlC9rlkV.js";import"./chat-utils-D1Q4VWjO.js";import"./CollisionExplorerModal-DeHgfjGl.js";import"./monitor-smartphone-DF_mmgOV.js";import"./DataBox-W2v3wy8k.js";import"./circle-question-mark-C7l07_IA.js";import"./network-DBkquEPb.js";import"./activity-2-g8m4_g.js";import"./search-zALFwCS4.js";/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const pu=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],bo=N0("boxes",pu);/** + */const pu=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],bo=L0("boxes",pu);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const yu=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],xu=N0("circle-alert",yu);/** + */const yu=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],xu=L0("circle-alert",yu);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const wu=[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]],vu=N0("map",wu);/** + */const wu=[["path",{d:"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",key:"169xi5"}],["path",{d:"M15 5.764v15",key:"1pn4in"}],["path",{d:"M9 3.236v15",key:"1uimfh"}]],vu=L0("map",wu);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const ku=[["path",{d:"m8 3 4 8 5-5 5 15H2L8 3z",key:"otkl63"}]],bu=N0("mountain",ku);/** + */const ku=[["path",{d:"m8 3 4 8 5-5 5 15H2L8 3z",key:"otkl63"}]],bu=L0("mountain",ku);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Cu=[["path",{d:"M6 8.32a7.43 7.43 0 0 1 0 7.36",key:"9iaqei"}],["path",{d:"M9.46 6.21a11.76 11.76 0 0 1 0 11.58",key:"1yha7l"}],["path",{d:"M12.91 4.1a15.91 15.91 0 0 1 .01 15.8",key:"4iu2gk"}],["path",{d:"M16.37 2a20.16 20.16 0 0 1 0 20",key:"sap9u2"}]],Ps=N0("nfc",Cu);/** + */const Cu=[["path",{d:"M6 8.32a7.43 7.43 0 0 1 0 7.36",key:"9iaqei"}],["path",{d:"M9.46 6.21a11.76 11.76 0 0 1 0 11.58",key:"1yha7l"}],["path",{d:"M12.91 4.1a15.91 15.91 0 0 1 .01 15.8",key:"4iu2gk"}],["path",{d:"M16.37 2a20.16 20.16 0 0 1 0 20",key:"sap9u2"}]],Ps=L0("nfc",Cu);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Eu=[["path",{d:"M18 7V5a1 1 0 0 0-1-1H6.5a.5.5 0 0 0-.4.8l4.5 6a2 2 0 0 1 0 2.4l-4.5 6a.5.5 0 0 0 .4.8H17a1 1 0 0 0 1-1v-2",key:"wuwx1p"}]],Su=N0("sigma",Eu);/** + */const Eu=[["path",{d:"M18 7V5a1 1 0 0 0-1-1H6.5a.5.5 0 0 0-.4.8l4.5 6a2 2 0 0 1 0 2.4l-4.5 6a.5.5 0 0 0 .4.8H17a1 1 0 0 0 1-1v-2",key:"wuwx1p"}]],Su=L0("sigma",Eu);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Mu=[["polyline",{points:"14.5 17.5 3 6 3 3 6 3 17.5 14.5",key:"1hfsw2"}],["line",{x1:"13",x2:"19",y1:"19",y2:"13",key:"1vrmhu"}],["line",{x1:"16",x2:"20",y1:"16",y2:"20",key:"1bron3"}],["line",{x1:"19",x2:"21",y1:"21",y2:"19",key:"13pww6"}],["polyline",{points:"14.5 6.5 18 3 21 3 21 6 17.5 9.5",key:"hbey2j"}],["line",{x1:"5",x2:"9",y1:"14",y2:"18",key:"1hf58s"}],["line",{x1:"7",x2:"4",y1:"17",y2:"20",key:"pidxm4"}],["line",{x1:"3",x2:"5",y1:"19",y2:"21",key:"1pehsh"}]],Bu=N0("swords",Mu);/** + */const Mu=[["polyline",{points:"14.5 17.5 3 6 3 3 6 3 17.5 14.5",key:"1hfsw2"}],["line",{x1:"13",x2:"19",y1:"19",y2:"13",key:"1vrmhu"}],["line",{x1:"16",x2:"20",y1:"16",y2:"20",key:"1bron3"}],["line",{x1:"19",x2:"21",y1:"21",y2:"19",key:"13pww6"}],["polyline",{points:"14.5 6.5 18 3 21 3 21 6 17.5 9.5",key:"hbey2j"}],["line",{x1:"5",x2:"9",y1:"14",y2:"18",key:"1hf58s"}],["line",{x1:"7",x2:"4",y1:"17",y2:"20",key:"pidxm4"}],["line",{x1:"3",x2:"5",y1:"19",y2:"21",key:"1pehsh"}]],Bu=L0("swords",Mu);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Du=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],_u=N0("wifi-off",Du);/** + */const Du=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],_u=L0("wifi-off",Du);/** * @license lucide-react v0.559.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const Tu=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],Ru=N0("wrench",Tu);function ju(c,u){return u.filter(y=>y.nodes.includes(c)).sort((y,x)=>x.avgCertainCount-y.avgCertainCount)}function Iu(c,u,g){const y=ju(c,u),x=new Set,C=[];for(const T of y)for(const P of T.edgeKeys)if(!x.has(P)){x.add(P);const _=g.get(P);C.push({key:P,certainCount:(_==null?void 0:_.certainCount)??0})}return C.sort((T,P)=>P.certainCount-T.certainCount),{loops:y,highlightedEdgeKeys:x,sortedEdges:C}}function Lu(c){const u=new Map;for(const g of c)for(const y of g.edgeKeys){const x=u.get(y)??[];x.push(g),u.set(y,x)}return u}const Sn={MAX_THICKNESS_AT:300,MIN_VALIDATIONS:5},Nu=6,bi=1;function Co(c,u){const g=Math.max(Sn.MIN_VALIDATIONS,Math.min(c,Sn.MAX_THICKNESS_AT)),y=Math.log(Sn.MIN_VALIDATIONS),x=Math.log(Sn.MAX_THICKNESS_AT),T=(Math.log(g)-y)/(x-y);return bi+(Nu-bi)*T}const Fu=Pu(Qu);function Pu(c){return function(u,g,y=g){if(!((g=+g)>=0))throw new RangeError("invalid rx");if(!((y=+y)>=0))throw new RangeError("invalid ry");let{data:x,width:C,height:T}=u;if(!((C=Math.floor(C))>=0))throw new RangeError("invalid width");if(!((T=Math.floor(T!==void 0?T:x.length/C))>=0))throw new RangeError("invalid height");if(!C||!T||!g&&!y)return u;const P=g&&c(g),_=y&&c(y),E=x.slice();return P&&_?(Fr(P,E,x,C,T),Fr(P,x,E,C,T),Fr(P,E,x,C,T),Pr(_,x,E,C,T),Pr(_,E,x,C,T),Pr(_,x,E,C,T)):P?(Fr(P,x,E,C,T),Fr(P,E,x,C,T),Fr(P,x,E,C,T)):_&&(Pr(_,x,E,C,T),Pr(_,E,x,C,T),Pr(_,x,E,C,T)),u}}function Fr(c,u,g,y,x){for(let C=0,T=y*x;C{if(!((P-=_)>=T))return;let E=u*C[T];const Q=_*u,O=Q+_;for(let H=T,V=T+Q;H{if(!((C-=T)>=x))return;let P=c*y[x];const _=T*c;for(let E=x,Q=x+_;E=y&&++g;return g}function Hu(c,u,g){let y;for(;;){const x=Qa(c,u,g);if(x===y||x===0||!isFinite(x))return[c,u];x>0?(c=Math.floor(c/x)*x,u=Math.ceil(u/x)*x):x<0&&(c=Math.ceil(c*x)/x,u=Math.floor(u*x)/x),y=x}}function Gu(c){return Math.max(1,Math.ceil(Math.log(zu(c))/Math.LN2)+1)}var Uu=Array.prototype,Qs=Uu.slice;function Vu(c,u){return c-u}function Wu(c){for(var u=0,g=c.length,y=c[g-1][1]*c[0][0]-c[g-1][0]*c[0][1];++u()=>c;function Yu(c,u){for(var g=-1,y=u.length,x;++gy!=V>y&&g<(H-E)*(y-Q)/(V-Q)+E&&(x=-x)}return x}function Zu(c,u,g){var y;return $u(c,u,g)&&qu(c[y=+(c[0]===u[0])],g[y],u[y])}function $u(c,u,g){return(u[0]-c[0])*(g[1]-c[1])===(g[0]-c[0])*(u[1]-c[1])}function qu(c,u,g){return c<=u&&u<=g||g<=u&&u<=c}function Ju(){}var T0=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Ci(){var c=1,u=1,g=Gu,y=_;function x(E){var Q=g(E);if(Array.isArray(Q))Q=Q.slice().sort(Vu);else{const O=Oa(E,Xu);for(Q=Rs(...Hu(O[0],O[1],Q),Q);Q[Q.length-1]>=O[1];)Q.pop();for(;Q[1]C(E,O))}function C(E,Q){const O=Q==null?NaN:+Q;if(isNaN(O))throw new Error(`invalid value: ${Q}`);var H=[],V=[];return T(E,O,function(K){y(K,E,O),Wu(K)>0?H.push([K]):V.push(K)}),V.forEach(function(K){for(var uA=0,J=H.length,eA;uA=Q,T0[Z<<2].forEach(lA);++K0&&V0&&K=0&&O>=0))throw new Error("invalid size");return c=Q,u=O,x},x.thresholds=function(E){return arguments.length?(g=typeof E=="function"?E:Array.isArray(E)?X0(Qs.call(E)):X0(E),x):g},x.smooth=function(E){return arguments.length?(y=E?_:Ju,x):y===_},x}function Xu(c){return isFinite(c)?c:NaN}function fr(c,u){return c==null?!1:+c>=u}function ao(c){return c==null||isNaN(c=+c)?-1/0:c}function Ei(c,u,g,y){const x=y-u,C=g-u,T=isFinite(x)||isFinite(C)?x/C:Math.sign(x)/Math.sign(C);return isNaN(T)?c:c+T-.5}function Ac(c){return c[0]}function ec(c){return c[1]}function tc(){return 1}function rc(){var c=Ac,u=ec,g=tc,y=960,x=500,C=20,T=2,P=C*3,_=y+P*2>>T,E=x+P*2>>T,Q=X0(20);function O(Z){var cA=new Float32Array(_*E),lA=Math.pow(2,-T),kA=-1;for(const NA of Z){var sA=(c(NA,++kA,Z)+P)*lA,hA=(u(NA,kA,Z)+P)*lA,TA=+g(NA,kA,Z);if(TA&&sA>=0&&sA<_&&hA>=0&&hAsA*kA))(cA).map((sA,hA)=>(sA.value=+lA[hA],V(sA)))}H.contours=function(Z){var cA=O(Z),lA=Ci().size([_,E]),kA=Math.pow(2,2*T),sA=hA=>{hA=+hA;var TA=V(lA.contour(cA,hA*kA));return TA.value=hA,TA};return Object.defineProperty(sA,"max",{get:()=>wi(cA)/kA}),sA};function V(Z){return Z.coordinates.forEach(K),Z}function K(Z){Z.forEach(uA)}function uA(Z){Z.forEach(J)}function J(Z){Z[0]=Z[0]*Math.pow(2,T)-P,Z[1]=Z[1]*Math.pow(2,T)-P}function eA(){return P=C*3,_=y+P*2>>T,E=x+P*2>>T,H}return H.x=function(Z){return arguments.length?(c=typeof Z=="function"?Z:X0(+Z),H):c},H.y=function(Z){return arguments.length?(u=typeof Z=="function"?Z:X0(+Z),H):u},H.weight=function(Z){return arguments.length?(g=typeof Z=="function"?Z:X0(+Z),H):g},H.size=function(Z){if(!arguments.length)return[y,x];var cA=+Z[0],lA=+Z[1];if(!(cA>=0&&lA>=0))throw new Error("invalid size");return y=cA,x=lA,eA()},H.cellSize=function(Z){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return T=Math.floor(Math.log(Z)/Math.LN2),eA()},H.thresholds=function(Z){return arguments.length?(Q=typeof Z=="function"?Z:Array.isArray(Z)?X0(Qs.call(Z)):X0(Z),H):Q},H.bandwidth=function(Z){if(!arguments.length)return Math.sqrt(C*(C+1));if(!((Z=+Z)>=0))throw new Error("invalid bandwidth");return C=(Math.sqrt(4*Z*Z+1)-1)/2,eA()},H}function Eo(){const c=ta();return R.useMemo(()=>ra.getPackets(),[c])}const Os=16,So=24,R0=Os,nc=5,xr={textPrimary:I0[900],textSecondary:"#4A4A4A",textMuted:I0[500],border:"rgba(0, 0, 0, 0.12)",hoverBg:"rgba(0, 0, 0, 0.06)",disabledText:"rgba(0, 0, 0, 0.25)"},pr={nodeFill:e0.blue,nodeStroke:"rgba(255,255,255,0.9)",nodeColor:e0.indigo,localColor:e0.amber,hubColor:e0.purple,gatewayColor:e0.indigo,mobileColor:e0.orange,roomServerColor:e0.pink,neighborColor:e0.amber,edges:{rest:I0[700],restBright:I0[600],restDim:I0[800],hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:I0[400],hoverNeighbor:e0.amber,neighborRest:I0[500],neighborHover:e0.amber,highlight:"#FFD700"},edgeOpacity:.82};function Uo(){if(typeof window>"u")return pr;const c=Fo(),u=gs();return{nodeFill:c.nodeFill,nodeStroke:c.nodeStroke,nodeColor:pr.nodeColor,localColor:c.localColor,hubColor:c.hubColor,gatewayColor:c.gatewayColor,mobileColor:c.mobileColor,roomServerColor:c.roomColor,neighborColor:c.neighborColor,edges:{rest:u.rest,restBright:u.restBright,restDim:u.restDim,hoverDirect:u.hoverDirect,hoverLoop:u.hoverLoop,hoverStandard:u.hoverStandard,hoverNeighbor:u.hoverNeighbor,neighborRest:pr.edges.neighborRest,neighborHover:pr.edges.neighborHover,highlight:u.highlight},edgeOpacity:pr.edgeOpacity}}const Mn=2e3,Bn=750,oc="#00FF00",ic=500,Si=500,Mi=250,sc=150,zs=200,lc=Vr.snappy,w0=xr,Hs=R.createContext("dark"),Vn=()=>R.useContext(Hs);function Qr({color:c,ring:u}){const g=R0-2;return p.jsx("span",{className:"shrink-0 rounded-full","aria-hidden":"true",style:{width:g,height:g,backgroundColor:u?"transparent":c,border:u?`${nc-1}px solid ${c}`:void 0,boxSizing:"border-box"}})}function uo({color:c,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:c,strokeWidth:3,strokeLinecap:"round",strokeDasharray:u==="dashed"?"5,3":u==="dotted"?"2,3":void 0})})}function A0({indicator:c,label:u,tooltip:g}){const y=Vn()==="light";return p.jsxs("div",{className:"flex items-center gap-1.5",children:[c,p.jsx("span",{className:L0(!y&&"text-fg-secondary"),style:y?{color:w0.textSecondary}:void 0,children:u}),g&&p.jsx(ps,{content:g,delay:zs,children:p.jsx("span",{className:L0("cursor-help text-[11px] opacity-75 hover:opacity-100 transition-opacity",!y&&"text-fg-muted"),style:y?{color:w0.textMuted}:void 0,children:"ⓘ"})})]})}function ac(c){return`legend-section-${c.toLowerCase().replace(/\s+/g,"-")}`}function co({title:c,tooltip:u,isOpen:g,onToggle:y,showDivider:x,children:C}){const T=Vn()==="light",P=ac(c);return p.jsxs("div",{className:x?"mt-2 pt-2 border-t":"",style:x?{borderColor:T?w0.border:"var(--map-ui-border)"}:void 0,children:[p.jsxs("button",{type:"button",onClick:y,"aria-expanded":g,"aria-controls":P,className:L0("group w-full flex items-center justify-between py-1 min-h-[44px] sm:min-h-0 font-medium transition-colors",!T&&"text-fg-secondary hover:text-fg-primary"),style:T?{color:w0.textSecondary}:void 0,children:[p.jsxs("span",{className:"flex items-center gap-1",children:[c,p.jsx(ps,{content:u,delay:zs,children:p.jsx("span",{className:L0("cursor-help text-[11px] opacity-75 group-hover:opacity-100 transition-opacity",!T&&"text-fg-muted"),style:T?{color:w0.textMuted}:void 0,children:"ⓘ"})})]}),p.jsx(a0.span,{animate:{rotate:g?0:-90},transition:{duration:.15},"aria-hidden":"true",children:p.jsx(ys,{className:"w-3 h-3",style:T?{color:w0.textMuted}:{color:"var(--fg-muted)"}})})]}),p.jsx(j0,{initial:!1,children:g&&p.jsx(a0.div,{id:P,role:"region","aria-label":c,initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:lc,className:"overflow-hidden",children:p.jsx("div",{className:"flex flex-col gap-1 pt-1.5",children:C})})})]})}function Bi({label:c,value:u,color:g}){const y=Vn()==="light";return p.jsxs("div",{className:L0("flex justify-between tabular-nums",!y&&"text-fg-muted"),style:y?{color:w0.textMuted}:void 0,children:[p.jsx("span",{children:c}),p.jsx("span",{style:g?{color:g}:y?{color:w0.textSecondary}:{color:"var(--fg-secondary)"},children:u})]})}function Di({icon:c,color:u,title:g,subtitle:y}){const x=Vn()==="light";return p.jsx("div",{className:"mt-1.5 pt-1.5 border-t",style:{borderColor:x?w0.border:"var(--map-ui-border)"},children:p.jsxs("div",{className:"flex items-center gap-1.5",children:[p.jsx("span",{className:"shrink-0",style:{color:u},children:c}),p.jsxs("div",{className:"flex flex-col min-w-0",children:[p.jsx("span",{className:"font-medium truncate",style:{color:u},children:g}),p.jsx("span",{className:L0("text-[10px] leading-tight",!x&&"text-fg-muted"),style:x?{color:w0.textMuted}:void 0,children:y})]})]})})}function uc(c){return c.some(([,u])=>{var y;const g=(y=u.contact_type)==null?void 0:y.toLowerCase();return g==="room server"||g==="room_server"||g==="room"||g==="server"})}function cc(c){let u=0;for(const g of c.txDelayRecommendations.values())g.networkRole==="backbone"&&u++;return u}function fc({showTopology:c,validatedPolylineCount:u,filteredNeighborCount:g,hasLocalNode:y,meshTopology:x,zeroHopNeighbors:C,neighborsWithLocation:T,basemapMode:P="dark"}){const _=na(),E=oa(),Q=ia(),O=E.filter(lA=>lA.isLikelyReal).length,H=cc(x),V=C.size>0,[K,uA]=R.useState(!0),[J,eA]=R.useState(!0),[Z,cA]=R.useState(!0);return p.jsx(Hs.Provider,{value:P,children:p.jsxs("div",{className:"map-control-surface p-2.5 text-xs",children:[p.jsxs(co,{title:"Nodes",tooltip:"Node type shown by shape + color. Yellow = direct RF neighbor.",isOpen:K,onToggle:()=>uA(lA=>!lA),children:[p.jsx(A0,{indicator:p.jsx(Qr,{color:_.nodeFill}),label:"Node",tooltip:"Standard mesh node. Repeater, client, or companion device."}),p.jsx(A0,{indicator:p.jsx(Qr,{color:_.hubColor}),label:"Hub",tooltip:"Network hub (≥10% of last-hop traffic)."}),uc(T)&&p.jsx(A0,{indicator:p.jsx(sa,{className:"w-3 h-3 shrink-0",style:{color:_.roomColor},strokeWidth:2.5}),label:"Room",tooltip:"Room Server identity for client sync."}),p.jsx(A0,{indicator:p.jsx(Ja,{className:"w-3 h-3 shrink-0",style:{color:_.localColor},strokeWidth:2.5}),label:"Local",tooltip:"Your repeater running pyMC_Repeater."}),V&&p.jsx(A0,{indicator:p.jsx(Qr,{color:_.neighborColor}),label:"Neighbor",tooltip:"Zero-hop direct RF contact."}),x.gatewayNodes.length>0&&p.jsx(A0,{indicator:p.jsx(Qr,{color:_.gatewayColor}),label:"Gateway",tooltip:"Significant forwarder (7-10% traffic)."}),H>0&&p.jsx(A0,{indicator:p.jsx(Qr,{color:_.hubColor}),label:"Backbone",tooltip:"Critical relay with high centrality."}),x.mobileNodes.length>0&&p.jsx(A0,{indicator:p.jsx(Qr,{color:_.mobileColor,ring:!0}),label:"Mobile",tooltip:"Volatile node that appears/disappears."}),O>0&&p.jsx(A0,{indicator:p.jsx(za,{className:"w-3 h-3 shrink-0",style:{color:_.ghostColor},strokeWidth:2.5}),label:`Ghost (${O})`,tooltip:"Unknown repeater from Viterbi analysis."})]}),V&&p.jsxs(co,{title:"Link Quality",tooltip:"Neighbor edge colors based on bidirectional balance.",isOpen:J,onToggle:()=>eA(lA=>!lA),showDivider:!0,children:[p.jsx(A0,{indicator:p.jsx(uo,{color:On.YELLOW,pattern:"solid"}),label:"2-Way",tooltip:"33-67% balanced. Ideal bidirectional link."}),p.jsx(A0,{indicator:p.jsx(uo,{color:On.GREEN,pattern:"dashed"}),label:"Listener",tooltip:">67% listener. They hear us well."}),p.jsx(A0,{indicator:p.jsx(uo,{color:On.RED,pattern:"dotted"}),label:"Loud",tooltip:"<33% listener. They route more to us."})]}),c&&u>0&&p.jsxs(co,{title:"Topology",tooltip:"Links with 5+ validations. Thickness = strength.",isOpen:Z,onToggle:()=>cA(lA=>!lA),showDivider:!0,children:[p.jsx(Bi,{label:"Nodes",value:g+(y?1:0)}),x.hubNodes.length>0&&p.jsx(Bi,{label:"Hubs",value:x.hubNodes.length,color:pr.hubColor}),x.loops.length>0&&p.jsx(Di,{icon:p.jsx(js,{className:"w-3 h-3"}),color:pr.edges.hoverLoop,title:`${x.loops.length} ${x.loops.length===1?"Loop":"Loops"}`,subtitle:"Redundant paths"}),Q.totalPaths>0&&p.jsx(Di,{icon:p.jsx(Is,{className:"w-3 h-3"}),color:_.ghostColor,title:`${Q.totalPaths.toLocaleString()} Viterbi`,subtitle:"HMM decoded paths"})]})]})})}const _i={repeater:"blue",companion:"cyan",room_server:"pink",hubs:"indigo",direct:"green"},Dn={repeater:"Repeaters",companion:"Companions",room_server:"Rooms",hubs:"Hubs",direct:"Direct"},Ti={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"},hc=["repeater","companion","room_server"],Ri=["hubs","direct"],Or="!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",_n="!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",dc=()=>typeof window>"u"?!1:window.innerWidth<640;function mc({mapRef:c,showNeighborLines:u,onToggleNeighborLines:g,hasNeighborPolylines:y,nodeFilters:x,onToggleFilter:C,onToggleAll:T,filterCounts:P,showCoverage:_,onToggleCoverage:E,showMinCut:Q=!1,onToggleMinCut:O,hasMinCutData:H=!1,show3DTerrain:V,onToggle3DTerrain:K,basemapMode:uA,onToggleBasemap:J,isFullscreen:eA,onToggleFullscreen:Z,showLinkQuality:cA=!1,onToggleLinkQuality:lA,hasTraceLinks:kA=!1}){const[sA,hA]=R.useState(()=>!dc()),TA=()=>{var FA,GA;(GA=(FA=c.current)==null?void 0:FA.getMap())==null||GA.zoomIn()},BA=()=>{var FA,GA;(GA=(FA=c.current)==null?void 0:FA.getMap())==null||GA.zoomOut()},bA=()=>{var GA;const FA=(GA=c.current)==null?void 0:GA.getMap();FA&&FA.easeTo({bearing:0,pitch:0,duration:300})},aA="w-4 h-4",jA=uA==="light"?"#525252":"var(--fg-secondary)",NA=x.length>=un.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(zt,{plain:!0,color:u?"warning":"muted",onClick:g,title:u?"Hide edge lines":"Show edge lines","aria-label":u?"Hide edge lines":"Show edge lines","aria-pressed":u,className:Or,"data-tint":u?"warning":void 0,children:p.jsx(la,{className:aA})}),p.jsx(zt,{plain:!0,color:"muted",onClick:()=>hA(FA=>!FA),title:sA?"Hide node filters":"Show node filters","aria-label":sA?"Collapse node filters":"Expand node filters","aria-expanded":sA,className:Or,children:p.jsx(tu,{className:aA})}),p.jsx(j0,{initial:!1,children:sA&&p.jsxs(a0.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(so,{color:NA?"green":"zinc",customColor:NA?void 0:jA,onClick:T,title:"Show all nodes","aria-pressed":NA,"aria-label":"Show all node types",className:"shrink-0",children:"All"}),hc.map(FA=>{const GA=P[FA];if(GA===0)return null;const oA=!NA&&x.includes(FA);return p.jsx(so,{color:oA?_i[FA]:"zinc",customColor:oA?void 0:jA,onClick:()=>C(FA),title:Ti[FA],"aria-pressed":oA,"aria-label":`${Dn[FA]} (${GA})`,className:"shrink-0",children:Dn[FA]},FA)}),Ri.some(FA=>P[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"}),Ri.map(FA=>{const GA=P[FA];if(GA===0)return null;const oA=!NA&&x.includes(FA);return p.jsx(so,{color:oA?_i[FA]:"zinc",customColor:oA?void 0:jA,onClick:()=>C(FA),title:Ti[FA],"aria-pressed":oA,"aria-label":`${Dn[FA]} (${GA})`,className:"shrink-0",children:Dn[FA]},FA)})]})}),H&&O&&p.jsx(zt,{plain:!0,color:Q?"primary":"muted",onClick:O,title:Q?"Hide community partition":"Show community partition","aria-label":Q?"Hide community partition":"Show community partition","aria-pressed":Q,className:Or,"data-tint":Q?"primary":void 0,children:p.jsx(bo,{className:aA})}),p.jsx(zt,{plain:!0,color:uA==="light"?"primary":"muted",onClick:J,title:uA==="light"?"Switch to dark map":"Switch to light map","aria-label":uA==="light"?"Switch to dark map":"Switch to light map","aria-pressed":uA==="light",className:Or,"data-tint":uA==="light"?"primary":void 0,children:uA==="light"?p.jsx(Po,{className:aA}):p.jsx(Qo,{className:aA})}),p.jsx(zt,{plain:!0,color:V?"success":"muted",onClick:K,title:V?"Disable 3D terrain":"Enable 3D terrain","aria-label":V?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":V,className:Or,"data-tint":V?"success":void 0,children:p.jsx(bu,{className:aA})}),p.jsx(zt,{plain:!0,color:"muted",onClick:Z,title:eA?"Exit fullscreen":"Fullscreen","aria-label":eA?"Exit fullscreen":"Enter fullscreen","aria-pressed":eA,className:Or,children:eA?p.jsx(Ha,{className:aA}):p.jsx(Ga,{className:aA})})]}),p.jsxs("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:[p.jsx(zt,{plain:!0,color:"muted",onClick:TA,title:"Zoom in","aria-label":"Zoom in",className:_n,children:p.jsx(ru,{className:aA})}),p.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),p.jsx(zt,{plain:!0,color:"muted",onClick:BA,title:"Zoom out","aria-label":"Zoom out",className:_n,children:p.jsx(xs,{className:aA})}),p.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),p.jsx(zt,{plain:!0,color:"muted",onClick:bA,title:"Reset bearing to north","aria-label":"Reset bearing to north",className:_n,children:p.jsx(nu,{className:aA})})]}),kA&&lA&&p.jsx("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:p.jsx(zt,{plain:!0,color:cA?"success":"muted",onClick:lA,title:cA?"Hide link quality overlay":"Show link quality overlay","aria-label":cA?"Hide link quality overlay":"Show link quality overlay","aria-pressed":cA,className:_n,"data-tint":cA?"success":void 0,children:p.jsx(Ps,{className:aA})})})]})})}const gc="#4ADE80",pc="#16A34A",yc="rgba(10, 26, 10, 1)",xc="rgba(220, 252, 231, 1)",fo={text:xr.textSecondary,activeText:pc,activeBg:xc},wc={activeBg:yc},hr="DeepAnalysis",vc=700,ji="abcdefghijklmnopqrstuvwxyz0123456789";function kc(){return ji[Math.floor(Math.random()*ji.length)]}function bc({isActive:c,hasAnalyzed:u,isLoading:g,onClick:y,basemapMode:x="dark"}){const C=x==="light",T=C?fo.text:void 0,P=C?fo.activeText:gc,[_,E]=R.useState(!1),[Q,O]=R.useState(hr),H=R.useRef(!1),V=R.useRef(null),[K]=R.useState(()=>{var Z;return typeof window<"u"&&(((Z=window.matchMedia)==null?void 0:Z.call(window,"(hover: hover)").matches)??!1)}),uA=_&&!c&&!g&&K;R.useEffect(()=>{if(_&&!c&&!g&&!H.current){H.current=!0;const Z=performance.now(),cA=lA=>{const kA=lA-Z,sA=Math.min(kA/vc,1),hA=Math.floor(sA*hr.length);let TA="";for(let BA=0;BA{V.current&&cancelAnimationFrame(V.current)}},[_,c,g]);const J=g?"Analyzing...":Q,eA=g?"Analyzing packet history":u?c?"Hide topology edges":"Show topology edges":"Load full packet history and build topology";return p.jsxs("button",{onClick:y,onMouseEnter:()=>K&&E(!0),onMouseLeave:()=>K&&E(!1),onPointerEnter:()=>K&&E(!0),onPointerLeave:()=>K&&E(!1),disabled:g,className:`map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base ${g?"cursor-wait":""}`,style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:C?fo.activeBg:wc.activeBg}},title:eA,"aria-label":eA,"aria-pressed":c,children:[g?p.jsx(Oo,{className:"w-3.5 h-3.5 shrink-0 animate-spin",style:{color:P}}):p.jsx(Ua,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${c?"":"text-fg-secondary"}`,style:{...c&&{color:P},...uA&&{color:P},...!c&&!uA&&T&&{color:T}}}),p.jsx("span",{className:`${c?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:c||uA?700:500,letterSpacing:"-0.01em",lineHeight:1,...c&&{color:P},...uA&&{color:P},...!c&&!uA&&T&&{color:T}},children:J})]})}const Cc=e0.teal,Ec="#0D7377",Sc="rgba(10, 36, 32, 1)",Mc="rgba(204, 251, 241, 1)",ho={text:xr.textSecondary,activeTeal:Ec,activeBg:Mc},Bc={activeBg:Sc},Ii="LiveTrace",Dc=400,Li=100;function _c({isActive:c,onClick:u,basemapMode:g="dark"}){const y=g==="light",x=y?ho.text:void 0,C=y?ho.activeTeal:Cc,[T,P]=R.useState(!1),[_,E]=R.useState(0),Q=R.useRef(!1),O=R.useRef(null),[H,V]=R.useState(0),K=R.useRef(!1),[uA]=R.useState(()=>{var cA;return typeof window<"u"&&(((cA=window.matchMedia)==null?void 0:cA.call(window,"(hover: hover)").matches)??!1)}),J=T&&!c&&uA;R.useEffect(()=>{J&&!K.current&&(K.current=!0,V(1),setTimeout(()=>V(2),Li),setTimeout(()=>V(3),Li*2)),T||(K.current=!1,V(0))},[J,T]),R.useEffect(()=>{if(T&&!c&&!Q.current){Q.current=!0;const cA=performance.now(),lA=kA=>{const sA=kA-cA,hA=Math.min(sA/Dc,1);E(hA),hA<1&&(O.current=requestAnimationFrame(lA))};O.current=requestAnimationFrame(lA)}return T||(O.current&&(cancelAnimationFrame(O.current),O.current=null),Q.current=!1,E(0)),()=>{O.current&&cancelAnimationFrame(O.current)}},[T,c]);const eA=cA=>{if(c)return C;if(!J)return x;const lA=Ii.length,kA=_*(lA+2);return cA>=kA-2&&cAuA&&P(!0),onMouseLeave:()=>uA&&P(!1),onPointerEnter:()=>uA&&P(!0),onPointerLeave:()=>uA&&P(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:y?ho.activeBg:Bc.activeBg}},title:c?"Disable live packet tracing (reduces CPU usage)":"Enable live packet tracing","aria-label":Z,"aria-pressed":c,children:[p.jsx(Xa,{className:`w-3.5 h-3.5 shrink-0 ${c?"":"text-fg-secondary"}`,fill:H===1?"#FFFFFF":H===3?C:"none",stroke:H===1||H===2?"#FFFFFF":c||J?C:x||"currentColor",style:{transition:"fill 0.05s, stroke 0.05s"}}),p.jsx("span",{className:`${c?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:c||J?700:500,letterSpacing:"-0.01em",lineHeight:1},children:Ii.split("").map((cA,lA)=>p.jsx("span",{style:{color:eA(lA)||void 0},children:cA},lA))})]})}const Ni=.2,Tc="rgba(26, 20, 8, 1)",Rc="rgba(254, 243, 199, 1)",Tn={text:xr.textSecondary,activeBg:Rc,disabledText:xr.disabledText},jc={activeBg:Tc},mo=.01,go=1,Fi="#fe8019",Ic="'Wardrive', serif",Mo=1.45,Lc=Mo*1.1,Nc=80;function Fc({isActive:c,onClick:u,brightness:g=.7,onBrightnessChange:y,basemapMode:x="dark"}){const C=x==="light",T=C?Tn.text:void 0,[P,_]=R.useState(!1),[E,Q]=R.useState(!1),[O]=R.useState(()=>{var cA;return typeof window<"u"&&(((cA=window.matchMedia)==null?void 0:cA.call(window,"(hover: hover)").matches)??!1)});R.useEffect(()=>{if(!P||c)return;const cA=requestAnimationFrame(()=>Q(!0)),lA=setTimeout(()=>Q(!1),Nc);return()=>{cancelAnimationFrame(cA),clearTimeout(lA)}},[P,c]);const H=Math.max(mo,Math.min(go,g)),V=cA=>{cA.stopPropagation();const lA=Math.min(go,H+Ni);y==null||y(lA)},K=cA=>{cA.stopPropagation();const lA=Math.max(mo,H-Ni);y==null||y(lA)},uA=Hmo+.001,eA=P&&!c&&O,Z=c?"Configure wardriving coverage":"Show wardriving coverage";return p.jsxs("button",{onClick:u,onMouseEnter:()=>O&&_(!0),onMouseLeave:()=>O&&_(!1),onPointerEnter:()=>O&&_(!0),onPointerLeave:()=>O&&_(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:C?Tn.activeBg:jc.activeBg}},title:Z,"aria-label":Z,"aria-pressed":c,children:[p.jsx(Bu,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${c?"text-sys-amber":"text-fg-secondary"}`,style:eA?{color:Fi}:!c&&T?{color:T}:void 0}),p.jsx("span",{className:`${c?"text-sys-amber":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:c||eA?Ic:"ui-monospace, SFMono-Regular, monospace",fontSize:c||eA?"0.75rem":"0.6875rem",fontWeight:500,letterSpacing:"-0.01em",lineHeight:1,transition:"none",transform:c?`scale(${Mo})`:eA?`scale(${E?Lc:Mo})`:void 0,transformOrigin:"left center",...eA?{color:Fi}:!c&&T?{color:T}:{}},children:"Wardrive"}),c&&y&&p.jsxs("div",{className:"ml-auto flex items-center gap-0.5",children:[p.jsx("button",{onClick:K,disabled:!J,className:`p-1 sm:p-0.5 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center rounded transition-colors ${J?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:J?void 0:{color:C?Tn.disabledText:"rgba(251, 191, 36, 0.3)"},title:`Decrease opacity (${Math.round(H*100)}%)`,"aria-label":`Decrease opacity, currently ${Math.round(H*100)}%`,children:p.jsx(Po,{className:"w-3.5 h-3.5"})}),p.jsx("button",{onClick:V,disabled:!uA,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 ${uA?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:uA?void 0:{color:C?Tn.disabledText:"rgba(251, 191, 36, 0.3)"},title:`Increase opacity (${Math.round(H*100)}%)`,"aria-label":`Increase opacity, currently ${Math.round(H*100)}%`,children:p.jsx(Qo,{className:"w-3.5 h-3.5"})})]})]})}const Pc="0123456789bcdefghjkmnpqrstuvwxyz";function Qc(c){let u=!0,g=-90,y=90,x=-180,C=180;for(const T of c.toLowerCase()){const P=Pc.indexOf(T);if(P!==-1)for(let _=4;_>=0;_--){const E=P>>_&1;if(u){const Q=(x+C)/2;E?x=Q:C=Q}else{const Q=(g+y)/2;E?g=Q:y=Q}u=!u}}return{lat:(g+y)/2,lon:(x+C)/2}}function Oc(c){return Math.exp(-c*Math.LN2/7)}const Bo="pymc-wardriving-url",Gs="pymc-wardriving-enabled",Us="pymc-wardriving-brightness",Pi=.7;function zc(){return typeof localStorage>"u"?"":localStorage.getItem(Bo)||""}function Qi(c){typeof localStorage>"u"||(c?localStorage.setItem(Bo,c):localStorage.removeItem(Bo))}function Hc(){return typeof localStorage>"u"?!1:localStorage.getItem(Gs)==="true"}function Rn(c){typeof localStorage>"u"||localStorage.setItem(Gs,String(c))}function Gc(){if(typeof localStorage>"u")return Pi;const c=localStorage.getItem(Us);if(c){const u=parseFloat(c);if(!isNaN(u)&&u>=.01&&u<=1)return u}return Pi}function Uc(c){if(typeof localStorage>"u")return;const u=Math.max(.01,Math.min(1,c));localStorage.setItem(Us,String(u))}const Vc=8e3;async function Wc(c,u={},g=Vc){const y=new AbortController,x=setTimeout(()=>y.abort(),g);try{return await fetch(c,{...u,signal:y.signal})}catch(C){throw C instanceof Error&&C.name==="AbortError"?new Error(`Connection timed out after ${g/1e3}s`):C}finally{clearTimeout(x)}}async function Yc(c){const g=`${c.replace(/\/+$/,"").replace(/\/get-nodes$/,"").replace(/\/get-samples$/,"")}/get-samples`,y=await Wc(g,{headers:{Accept:"application/json"}});if(!y.ok)throw new Error(`Failed to fetch precise samples: ${y.status}`);return y.json()}function Kc(c,u=null){if(c!==null){const y=(Math.max(-12,Math.min(12,c))+12)/24;if(u!==null){const C=(Math.max(-120,Math.min(-50,u))+120)/70;return y*.8+C*.2}return y}return u!==null?(Math.max(-120,Math.min(-50,u))+120)/70:.5}function Zc(c){var g;const u=[];for(const y of c.keys){if(!y.observed)continue;const{lat:x,lon:C}=Qc(y.hash),T=parseInt(y.time,10),P=isNaN(T)?30:(Date.now()-T)/(1e3*60*60*24),_=Oc(P),Q=Kc(y.snr,y.rssi)*(.3+_*.7);u.push({lat:x,lon:C,successRate:y.observed?1:0,weight:Q,totalSamples:1,ageDays:P,geohash:y.hash,repeaters:((g=y.path)==null?void 0:g.map(O=>O.toLowerCase()))||[]})}return u}const cn=ws((c,u)=>({status:"idle",isVisible:Hc(),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:zc(),brightness:Gc(),isModalOpen:!1,openModal:()=>c({isModalOpen:!0}),closeModal:()=>c({isModalOpen:!1}),setUrl:g=>c({url:g}),setBrightness:g=>{const y=Math.max(.01,Math.min(1,g));Uc(y),c({brightness:y})},toggleVisibility:()=>{const g=!u().isVisible;Rn(g),c({isVisible:g})},setVisible:g=>{Rn(g),c({isVisible:g})},loadCoverage:async g=>{if(!g.trim())return c({error:"Please enter a URL",status:"error"}),!1;try{new URL(g.trim())}catch{return c({error:"Invalid URL format",status:"error"}),!1}c({error:null,status:"connecting"});try{c({status:"loading"});const y=await Yc(g.trim());if(!y||typeof y!="object")throw new Error("Invalid response from server");if(!Array.isArray(y.keys))throw new Error("No sample data found in response");c({status:"processing"});const x=Zc(y);if(x.length===0)throw new Error("No valid coverage points found");return c({coveragePoints:x,repeaters:[],stats:{coverageCount:x.length,repeaterCount:0,lastUpdated:new Date},status:"success",isVisible:!0,url:g.trim()}),Qi(g.trim()),Rn(!0),!0}catch(y){const x=y instanceof Error?y.message:"Failed to load coverage data";let C=x;return x.includes("timed out")?C="Connection timed out. Server may be unreachable or slow.":x.includes("Failed to fetch")||x.includes("NetworkError")?C="Could not connect to server. Check the URL and try again.":x.includes("CORS")?C="Server does not allow cross-origin requests.":x.includes("404")?C="Coverage endpoint not found. Check the URL.":(x.includes("ERR_NAME_NOT_RESOLVED")||x.includes("DNS"))&&(C="Server not found. Check the URL for typos."),c({error:C,status:"error"}),!1}},clearCoverage:()=>{c({coveragePoints:[],repeaters:[],stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},status:"idle",error:null,isVisible:!1,url:""}),Qi(""),Rn(!1)}})),$c={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"},Vs={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)"},Ws=R.createContext({theme:Vs,isLight:!1});function wr(){return R.useContext(Ws)}function qc({status:c,hasData:u}){const{theme:g,isLight:y}=wr(),x=R.useMemo(()=>c==="connecting"||c==="loading"||c==="processing"?{icon:p.jsx(Oo,{className:"w-3.5 h-3.5 animate-spin"}),label:c==="connecting"?"Connecting...":c==="loading"?"Loading...":"Processing...",color:g.warning,bg:g.warningBg}:c==="error"?{icon:p.jsx(_u,{className:"w-3.5 h-3.5"}),label:"Disconnected",color:g.error,bg:g.errorBg}:u?{icon:p.jsx(su,{className:"w-3.5 h-3.5"}),label:"Connected",color:g.success,bg:g.successBg}:{icon:p.jsx(vs,{className:"w-3.5 h-3.5"}),label:"Ready",color:g.textMuted,bg:y?"rgba(0,0,0,0.04)":"rgba(255,255,255,0.04)"},[c,u,g,y]);return p.jsxs(a0.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 Jc({status:c}){const{theme:u}=wr(),g=R.useMemo(()=>{switch(c){case"connecting":return 25;case"loading":return 60;case"processing":return 90;default:return 0}},[c]);return g===0?null:p.jsx(a0.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(a0.div,{className:"h-full rounded-full",style:{backgroundColor:u.primary},initial:{width:0},animate:{width:`${g}%`},transition:{duration:.4,ease:"easeOut"}})})}function Oi({variant:c,title:u,description:g,onDismiss:y}){const{theme:x}=wr(),C=R.useMemo(()=>{switch(c){case"success":return{icon:p.jsx(zo,{className:"w-4 h-4"}),color:x.success,bg:x.successBg,border:x.successBorder};case"error":return{icon:p.jsx(xu,{className:"w-4 h-4"}),color:x.error,bg:x.errorBg,border:x.errorBorder};case"info":return{icon:p.jsx(vu,{className:"w-4 h-4"}),color:x.info,bg:x.infoBg,border:x.infoBorder}}},[c,x]);return p.jsxs(a0.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:Vr.snappy,className:"flex items-start gap-3 p-3 rounded-lg border",style:{backgroundColor:C.bg,borderColor:C.border,color:C.color},children:[p.jsx("div",{className:"shrink-0 mt-0.5",children:C.icon}),p.jsxs("div",{className:"flex-1 min-w-0",children:[p.jsx("p",{className:"text-sm font-medium",children:u}),g&&p.jsx("p",{className:"text-xs mt-0.5 opacity-80",children:g})]}),y&&p.jsx("button",{onClick:y,className:"shrink-0 p-1 rounded hover:bg-black/10 transition-colors","aria-label":"Dismiss",children:p.jsx(dn,{className:"w-3.5 h-3.5"})})]})}function Xc({value:c,onChange:u,onSubmit:g,disabled:y}){const{theme:x,isLight:C}=wr(),[T,P]=R.useState(!1),_=E=>{E.key==="Enter"&&!E.shiftKey&&!y&&(E.preventDefault(),g())};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:c,onChange:E=>u(E.target.value),onKeyDown:_,onFocus:()=>P(!0),onBlur:()=>P(!1),placeholder:"https://coverage.wcmesh.com",disabled:y,className:L0("w-full pl-3 pr-10 py-2.5 rounded-lg border text-sm transition-all duration-150","focus:outline-none",y&&"opacity-50 cursor-not-allowed"),style:{backgroundColor:x.bgInput,borderColor:T?x.borderFocus:x.border,color:x.text,boxShadow:T?`0 0 0 3px ${C?"rgba(59, 130, 246, 0.15)":"rgba(139, 92, 246, 0.15)"}`:"none"}}),c&&!y&&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:E=>E.currentTarget.style.color=x.text,onMouseLeave:E=>E.currentTarget.style.color=x.textMuted,"aria-label":"Clear URL",children:p.jsx(dn,{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 Af({value:c,onChange:u}){const{theme:g,isLight:y}=wr(),x=Math.round(c*100);return p.jsx(a0.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:Vr.gentle,className:"overflow-hidden",children:p.jsx("div",{className:"p-3 rounded-lg border",style:{backgroundColor:g.bgSubtle,borderColor:g.border},children:p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsxs("div",{className:"relative w-4 h-4",children:[p.jsx(Po,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:g.textMuted,opacity:c<.5?1:0}}),p.jsx(Qo,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:g.primary,opacity:c>=.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:g.textSecondary},children:"Layer Opacity"}),p.jsxs("span",{className:"text-xs font-mono tabular-nums px-1.5 py-0.5 rounded",style:{color:g.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:C=>u(Number(C.target.value)/100),className:L0("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, ${g.primary} ${x}%, ${g.sliderTrack} ${x}%)`,"--thumb-color":g.sliderThumb}}),p.jsx("style",{children:` + */const Tu=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],Ru=L0("wrench",Tu);function ju(c,u){return u.filter(y=>y.nodes.includes(c)).sort((y,x)=>x.avgCertainCount-y.avgCertainCount)}function Iu(c,u,g){const y=ju(c,u),x=new Set,C=[];for(const T of y)for(const P of T.edgeKeys)if(!x.has(P)){x.add(P);const _=g.get(P);C.push({key:P,certainCount:(_==null?void 0:_.certainCount)??0})}return C.sort((T,P)=>P.certainCount-T.certainCount),{loops:y,highlightedEdgeKeys:x,sortedEdges:C}}function Lu(c){const u=new Map;for(const g of c)for(const y of g.edgeKeys){const x=u.get(y)??[];x.push(g),u.set(y,x)}return u}const Sn={MAX_THICKNESS_AT:300,MIN_VALIDATIONS:5},Nu=6,bi=1;function Co(c,u){const g=Math.max(Sn.MIN_VALIDATIONS,Math.min(c,Sn.MAX_THICKNESS_AT)),y=Math.log(Sn.MIN_VALIDATIONS),x=Math.log(Sn.MAX_THICKNESS_AT),T=(Math.log(g)-y)/(x-y);return bi+(Nu-bi)*T}const Fu=Pu(Qu);function Pu(c){return function(u,g,y=g){if(!((g=+g)>=0))throw new RangeError("invalid rx");if(!((y=+y)>=0))throw new RangeError("invalid ry");let{data:x,width:C,height:T}=u;if(!((C=Math.floor(C))>=0))throw new RangeError("invalid width");if(!((T=Math.floor(T!==void 0?T:x.length/C))>=0))throw new RangeError("invalid height");if(!C||!T||!g&&!y)return u;const P=g&&c(g),_=y&&c(y),E=x.slice();return P&&_?(Nr(P,E,x,C,T),Nr(P,x,E,C,T),Nr(P,E,x,C,T),Fr(_,x,E,C,T),Fr(_,E,x,C,T),Fr(_,x,E,C,T)):P?(Nr(P,x,E,C,T),Nr(P,E,x,C,T),Nr(P,x,E,C,T)):_&&(Fr(_,x,E,C,T),Fr(_,E,x,C,T),Fr(_,x,E,C,T)),u}}function Nr(c,u,g,y,x){for(let C=0,T=y*x;C{if(!((P-=_)>=T))return;let E=u*C[T];const Q=_*u,O=Q+_;for(let H=T,V=T+Q;H{if(!((C-=T)>=x))return;let P=c*y[x];const _=T*c;for(let E=x,Q=x+_;E=y&&++g;return g}function Hu(c,u,g){let y;for(;;){const x=Qa(c,u,g);if(x===y||x===0||!isFinite(x))return[c,u];x>0?(c=Math.floor(c/x)*x,u=Math.ceil(u/x)*x):x<0&&(c=Math.ceil(c*x)/x,u=Math.floor(u*x)/x),y=x}}function Gu(c){return Math.max(1,Math.ceil(Math.log(zu(c))/Math.LN2)+1)}var Uu=Array.prototype,Qs=Uu.slice;function Vu(c,u){return c-u}function Wu(c){for(var u=0,g=c.length,y=c[g-1][1]*c[0][0]-c[g-1][0]*c[0][1];++u()=>c;function Yu(c,u){for(var g=-1,y=u.length,x;++gy!=V>y&&g<(H-E)*(y-Q)/(V-Q)+E&&(x=-x)}return x}function Zu(c,u,g){var y;return $u(c,u,g)&&qu(c[y=+(c[0]===u[0])],g[y],u[y])}function $u(c,u,g){return(u[0]-c[0])*(g[1]-c[1])===(g[0]-c[0])*(u[1]-c[1])}function qu(c,u,g){return c<=u&&u<=g||g<=u&&u<=c}function Ju(){}var _0=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function Ci(){var c=1,u=1,g=Gu,y=_;function x(E){var Q=g(E);if(Array.isArray(Q))Q=Q.slice().sort(Vu);else{const O=Oa(E,Xu);for(Q=Rs(...Hu(O[0],O[1],Q),Q);Q[Q.length-1]>=O[1];)Q.pop();for(;Q[1]C(E,O))}function C(E,Q){const O=Q==null?NaN:+Q;if(isNaN(O))throw new Error(`invalid value: ${Q}`);var H=[],V=[];return T(E,O,function(K){y(K,E,O),Wu(K)>0?H.push([K]):V.push(K)}),V.forEach(function(K){for(var aA=0,J=H.length,eA;aA=Q,_0[Z<<2].forEach(oA);++K0&&V0&&K=0&&O>=0))throw new Error("invalid size");return c=Q,u=O,x},x.thresholds=function(E){return arguments.length?(g=typeof E=="function"?E:Array.isArray(E)?J0(Qs.call(E)):J0(E),x):g},x.smooth=function(E){return arguments.length?(y=E?_:Ju,x):y===_},x}function Xu(c){return isFinite(c)?c:NaN}function cr(c,u){return c==null?!1:+c>=u}function ao(c){return c==null||isNaN(c=+c)?-1/0:c}function Ei(c,u,g,y){const x=y-u,C=g-u,T=isFinite(x)||isFinite(C)?x/C:Math.sign(x)/Math.sign(C);return isNaN(T)?c:c+T-.5}function Ac(c){return c[0]}function ec(c){return c[1]}function tc(){return 1}function rc(){var c=Ac,u=ec,g=tc,y=960,x=500,C=20,T=2,P=C*3,_=y+P*2>>T,E=x+P*2>>T,Q=J0(20);function O(Z){var uA=new Float32Array(_*E),oA=Math.pow(2,-T),vA=-1;for(const LA of Z){var iA=(c(LA,++vA,Z)+P)*oA,fA=(u(LA,vA,Z)+P)*oA,jA=+g(LA,vA,Z);if(jA&&iA>=0&&iA<_&&fA>=0&&fAiA*vA))(uA).map((iA,fA)=>(iA.value=+oA[fA],V(iA)))}H.contours=function(Z){var uA=O(Z),oA=Ci().size([_,E]),vA=Math.pow(2,2*T),iA=fA=>{fA=+fA;var jA=V(oA.contour(uA,fA*vA));return jA.value=fA,jA};return Object.defineProperty(iA,"max",{get:()=>wi(uA)/vA}),iA};function V(Z){return Z.coordinates.forEach(K),Z}function K(Z){Z.forEach(aA)}function aA(Z){Z.forEach(J)}function J(Z){Z[0]=Z[0]*Math.pow(2,T)-P,Z[1]=Z[1]*Math.pow(2,T)-P}function eA(){return P=C*3,_=y+P*2>>T,E=x+P*2>>T,H}return H.x=function(Z){return arguments.length?(c=typeof Z=="function"?Z:J0(+Z),H):c},H.y=function(Z){return arguments.length?(u=typeof Z=="function"?Z:J0(+Z),H):u},H.weight=function(Z){return arguments.length?(g=typeof Z=="function"?Z:J0(+Z),H):g},H.size=function(Z){if(!arguments.length)return[y,x];var uA=+Z[0],oA=+Z[1];if(!(uA>=0&&oA>=0))throw new Error("invalid size");return y=uA,x=oA,eA()},H.cellSize=function(Z){if(!arguments.length)return 1<=1))throw new Error("invalid cell size");return T=Math.floor(Math.log(Z)/Math.LN2),eA()},H.thresholds=function(Z){return arguments.length?(Q=typeof Z=="function"?Z:Array.isArray(Z)?J0(Qs.call(Z)):J0(Z),H):Q},H.bandwidth=function(Z){if(!arguments.length)return Math.sqrt(C*(C+1));if(!((Z=+Z)>=0))throw new Error("invalid bandwidth");return C=(Math.sqrt(4*Z*Z+1)-1)/2,eA()},H}function Eo(){const c=ta();return R.useMemo(()=>ra.getPackets(),[c])}const Os=16,So=24,T0=Os,nc=5,yr={textPrimary:j0[900],textSecondary:"#4A4A4A",textMuted:j0[500],border:"rgba(0, 0, 0, 0.12)",hoverBg:"rgba(0, 0, 0, 0.06)",disabledText:"rgba(0, 0, 0, 0.25)"},gr={nodeFill:e0.blue,nodeStroke:"rgba(255,255,255,0.9)",nodeColor:e0.indigo,localColor:e0.amber,hubColor:e0.purple,gatewayColor:e0.indigo,mobileColor:e0.orange,roomServerColor:e0.pink,neighborColor:e0.amber,edges:{rest:j0[700],restBright:j0[600],restDim:j0[800],hoverDirect:"#6FBCBD",hoverLoop:"#8B7BAD",hoverStandard:j0[400],hoverNeighbor:e0.amber,neighborRest:j0[500],neighborHover:e0.amber,highlight:"#FFD700"},edgeOpacity:.82};function Uo(){if(typeof window>"u")return gr;const c=Fo(),u=gs();return{nodeFill:c.nodeFill,nodeStroke:c.nodeStroke,nodeColor:gr.nodeColor,localColor:c.localColor,hubColor:c.hubColor,gatewayColor:c.gatewayColor,mobileColor:c.mobileColor,roomServerColor:c.roomColor,neighborColor:c.neighborColor,edges:{rest:u.rest,restBright:u.restBright,restDim:u.restDim,hoverDirect:u.hoverDirect,hoverLoop:u.hoverLoop,hoverStandard:u.hoverStandard,hoverNeighbor:u.hoverNeighbor,neighborRest:gr.edges.neighborRest,neighborHover:gr.edges.neighborHover,highlight:u.highlight},edgeOpacity:gr.edgeOpacity}}const Mn=2e3,Bn=750,oc="#00FF00",ic=500,Si=500,Mi=250,sc=150,zs=200,lc=Ur.snappy,x0=yr,Hs=R.createContext("dark"),Vn=()=>R.useContext(Hs);function Pr({color:c,ring:u}){const g=T0-2;return p.jsx("span",{className:"shrink-0 rounded-full","aria-hidden":"true",style:{width:g,height:g,backgroundColor:u?"transparent":c,border:u?`${nc-1}px solid ${c}`:void 0,boxSizing:"border-box"}})}function uo({color:c,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:c,strokeWidth:3,strokeLinecap:"round",strokeDasharray:u==="dashed"?"5,3":u==="dotted"?"2,3":void 0})})}function A0({indicator:c,label:u,tooltip:g}){const y=Vn()==="light";return p.jsxs("div",{className:"flex items-center gap-1.5",children:[c,p.jsx("span",{className:I0(!y&&"text-fg-secondary"),style:y?{color:x0.textSecondary}:void 0,children:u}),g&&p.jsx(ps,{content:g,delay:zs,children:p.jsx("span",{className:I0("cursor-help text-[11px] opacity-75 hover:opacity-100 transition-opacity",!y&&"text-fg-muted"),style:y?{color:x0.textMuted}:void 0,children:"ⓘ"})})]})}function ac(c){return`legend-section-${c.toLowerCase().replace(/\s+/g,"-")}`}function co({title:c,tooltip:u,isOpen:g,onToggle:y,showDivider:x,children:C}){const T=Vn()==="light",P=ac(c);return p.jsxs("div",{className:x?"mt-2 pt-2 border-t":"",style:x?{borderColor:T?x0.border:"var(--map-ui-border)"}:void 0,children:[p.jsxs("button",{type:"button",onClick:y,"aria-expanded":g,"aria-controls":P,className:I0("group w-full flex items-center justify-between py-1 min-h-[44px] sm:min-h-0 font-medium transition-colors",!T&&"text-fg-secondary hover:text-fg-primary"),style:T?{color:x0.textSecondary}:void 0,children:[p.jsxs("span",{className:"flex items-center gap-1",children:[c,p.jsx(ps,{content:u,delay:zs,children:p.jsx("span",{className:I0("cursor-help text-[11px] opacity-75 group-hover:opacity-100 transition-opacity",!T&&"text-fg-muted"),style:T?{color:x0.textMuted}:void 0,children:"ⓘ"})})]}),p.jsx(u0.span,{animate:{rotate:g?0:-90},transition:{duration:.15},"aria-hidden":"true",children:p.jsx(ys,{className:"w-3 h-3",style:T?{color:x0.textMuted}:{color:"var(--fg-muted)"}})})]}),p.jsx(R0,{initial:!1,children:g&&p.jsx(u0.div,{id:P,role:"region","aria-label":c,initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:lc,className:"overflow-hidden",children:p.jsx("div",{className:"flex flex-col gap-1 pt-1.5",children:C})})})]})}function Bi({label:c,value:u,color:g}){const y=Vn()==="light";return p.jsxs("div",{className:I0("flex justify-between tabular-nums",!y&&"text-fg-muted"),style:y?{color:x0.textMuted}:void 0,children:[p.jsx("span",{children:c}),p.jsx("span",{style:g?{color:g}:y?{color:x0.textSecondary}:{color:"var(--fg-secondary)"},children:u})]})}function Di({icon:c,color:u,title:g,subtitle:y}){const x=Vn()==="light";return p.jsx("div",{className:"mt-1.5 pt-1.5 border-t",style:{borderColor:x?x0.border:"var(--map-ui-border)"},children:p.jsxs("div",{className:"flex items-center gap-1.5",children:[p.jsx("span",{className:"shrink-0",style:{color:u},children:c}),p.jsxs("div",{className:"flex flex-col min-w-0",children:[p.jsx("span",{className:"font-medium truncate",style:{color:u},children:g}),p.jsx("span",{className:I0("text-[10px] leading-tight",!x&&"text-fg-muted"),style:x?{color:x0.textMuted}:void 0,children:y})]})]})})}function uc(c){return c.some(([,u])=>{var y;const g=(y=u.contact_type)==null?void 0:y.toLowerCase();return g==="room server"||g==="room_server"||g==="room"||g==="server"})}function cc(c){let u=0;for(const g of c.txDelayRecommendations.values())g.networkRole==="backbone"&&u++;return u}function fc({showTopology:c,validatedPolylineCount:u,filteredNeighborCount:g,hasLocalNode:y,meshTopology:x,zeroHopNeighbors:C,neighborsWithLocation:T,basemapMode:P="dark"}){const _=na(),E=oa(),Q=ia(),O=E.filter(oA=>oA.isLikelyReal).length,H=cc(x),V=C.size>0,[K,aA]=R.useState(!0),[J,eA]=R.useState(!0),[Z,uA]=R.useState(!0);return p.jsx(Hs.Provider,{value:P,children:p.jsxs("div",{className:"map-control-surface p-2.5 text-xs",children:[p.jsxs(co,{title:"Nodes",tooltip:"Node type shown by shape + color. Yellow = direct RF neighbor.",isOpen:K,onToggle:()=>aA(oA=>!oA),children:[p.jsx(A0,{indicator:p.jsx(Pr,{color:_.nodeFill}),label:"Node",tooltip:"Standard mesh node. Repeater, client, or companion device."}),p.jsx(A0,{indicator:p.jsx(Pr,{color:_.hubColor}),label:"Hub",tooltip:"Network hub (≥10% of last-hop traffic)."}),uc(T)&&p.jsx(A0,{indicator:p.jsx(sa,{className:"w-3 h-3 shrink-0",style:{color:_.roomColor},strokeWidth:2.5}),label:"Room",tooltip:"Room Server identity for client sync."}),p.jsx(A0,{indicator:p.jsx(Ja,{className:"w-3 h-3 shrink-0",style:{color:_.localColor},strokeWidth:2.5}),label:"Local",tooltip:"Your repeater running pyMC_Repeater."}),V&&p.jsx(A0,{indicator:p.jsx(Pr,{color:_.neighborColor}),label:"Neighbor",tooltip:"Zero-hop direct RF contact."}),x.gatewayNodes.length>0&&p.jsx(A0,{indicator:p.jsx(Pr,{color:_.gatewayColor}),label:"Gateway",tooltip:"Significant forwarder (7-10% traffic)."}),H>0&&p.jsx(A0,{indicator:p.jsx(Pr,{color:_.hubColor}),label:"Backbone",tooltip:"Critical relay with high centrality."}),x.mobileNodes.length>0&&p.jsx(A0,{indicator:p.jsx(Pr,{color:_.mobileColor,ring:!0}),label:"Mobile",tooltip:"Volatile node that appears/disappears."}),O>0&&p.jsx(A0,{indicator:p.jsx(za,{className:"w-3 h-3 shrink-0",style:{color:_.ghostColor},strokeWidth:2.5}),label:`Ghost (${O})`,tooltip:"Unknown repeater from Viterbi analysis."})]}),V&&p.jsxs(co,{title:"Link Quality",tooltip:"Neighbor edge colors based on bidirectional balance.",isOpen:J,onToggle:()=>eA(oA=>!oA),showDivider:!0,children:[p.jsx(A0,{indicator:p.jsx(uo,{color:On.YELLOW,pattern:"solid"}),label:"2-Way",tooltip:"33-67% balanced. Ideal bidirectional link."}),p.jsx(A0,{indicator:p.jsx(uo,{color:On.GREEN,pattern:"dashed"}),label:"Listener",tooltip:">67% listener. They hear us well."}),p.jsx(A0,{indicator:p.jsx(uo,{color:On.RED,pattern:"dotted"}),label:"Loud",tooltip:"<33% listener. They route more to us."})]}),c&&u>0&&p.jsxs(co,{title:"Topology",tooltip:"Links with 5+ validations. Thickness = strength.",isOpen:Z,onToggle:()=>uA(oA=>!oA),showDivider:!0,children:[p.jsx(Bi,{label:"Nodes",value:g+(y?1:0)}),x.hubNodes.length>0&&p.jsx(Bi,{label:"Hubs",value:x.hubNodes.length,color:gr.hubColor}),x.loops.length>0&&p.jsx(Di,{icon:p.jsx(js,{className:"w-3 h-3"}),color:gr.edges.hoverLoop,title:`${x.loops.length} ${x.loops.length===1?"Loop":"Loops"}`,subtitle:"Redundant paths"}),Q.totalPaths>0&&p.jsx(Di,{icon:p.jsx(Is,{className:"w-3 h-3"}),color:_.ghostColor,title:`${Q.totalPaths.toLocaleString()} Viterbi`,subtitle:"HMM decoded paths"})]})]})})}const _i={repeater:"blue",companion:"cyan",room_server:"pink",hubs:"indigo",direct:"green"},Dn={repeater:"Repeaters",companion:"Companions",room_server:"Rooms",hubs:"Hubs",direct:"Direct"},Ti={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"},hc=["repeater","companion","room_server"],Ri=["hubs","direct"],Qr="!p-2.5 sm:!p-1.5 !rounded-md min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 shrink-0 flex items-center justify-center",_n="!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",dc=()=>typeof window>"u"?!1:window.innerWidth<640;function mc({mapRef:c,showNeighborLines:u,onToggleNeighborLines:g,hasNeighborPolylines:y,nodeFilters:x,onToggleFilter:C,onToggleAll:T,filterCounts:P,showCoverage:_,onToggleCoverage:E,showMinCut:Q=!1,onToggleMinCut:O,hasMinCutData:H=!1,show3DTerrain:V,onToggle3DTerrain:K,basemapMode:aA,onToggleBasemap:J,isFullscreen:eA,onToggleFullscreen:Z,showLinkQuality:uA=!1,onToggleLinkQuality:oA,hasTraceLinks:vA=!1}){const[iA,fA]=R.useState(()=>!dc()),jA=()=>{var NA,GA;(GA=(NA=c.current)==null?void 0:NA.getMap())==null||GA.zoomIn()},DA=()=>{var NA,GA;(GA=(NA=c.current)==null?void 0:NA.getMap())==null||GA.zoomOut()},CA=()=>{var GA;const NA=(GA=c.current)==null?void 0:GA.getMap();NA&&NA.easeTo({bearing:0,pitch:0,duration:300})},yA="w-4 h-4",kA=aA==="light"?"#525252":"var(--fg-secondary)",LA=x.length>=un.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(Ot,{plain:!0,color:u?"warning":"muted",onClick:g,title:u?"Hide edge lines":"Show edge lines","aria-label":u?"Hide edge lines":"Show edge lines","aria-pressed":u,className:Qr,"data-tint":u?"warning":void 0,children:p.jsx(la,{className:yA})}),p.jsx(Ot,{plain:!0,color:"muted",onClick:()=>fA(NA=>!NA),title:iA?"Hide node filters":"Show node filters","aria-label":iA?"Collapse node filters":"Expand node filters","aria-expanded":iA,className:Qr,children:p.jsx(tu,{className:yA})}),p.jsx(R0,{initial:!1,children:iA&&p.jsxs(u0.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(so,{color:LA?"green":"zinc",customColor:LA?void 0:kA,onClick:T,title:"Show all nodes","aria-pressed":LA,"aria-label":"Show all node types",className:"shrink-0",children:"All"}),hc.map(NA=>{const GA=P[NA];if(GA===0)return null;const bA=!LA&&x.includes(NA);return p.jsx(so,{color:bA?_i[NA]:"zinc",customColor:bA?void 0:kA,onClick:()=>C(NA),title:Ti[NA],"aria-pressed":bA,"aria-label":`${Dn[NA]} (${GA})`,className:"shrink-0",children:Dn[NA]},NA)}),Ri.some(NA=>P[NA]>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"}),Ri.map(NA=>{const GA=P[NA];if(GA===0)return null;const bA=!LA&&x.includes(NA);return p.jsx(so,{color:bA?_i[NA]:"zinc",customColor:bA?void 0:kA,onClick:()=>C(NA),title:Ti[NA],"aria-pressed":bA,"aria-label":`${Dn[NA]} (${GA})`,className:"shrink-0",children:Dn[NA]},NA)})]})}),H&&O&&p.jsx(Ot,{plain:!0,color:Q?"primary":"muted",onClick:O,title:Q?"Hide community partition":"Show community partition","aria-label":Q?"Hide community partition":"Show community partition","aria-pressed":Q,className:Qr,"data-tint":Q?"primary":void 0,children:p.jsx(bo,{className:yA})}),p.jsx(Ot,{plain:!0,color:aA==="light"?"primary":"muted",onClick:J,title:aA==="light"?"Switch to dark map":"Switch to light map","aria-label":aA==="light"?"Switch to dark map":"Switch to light map","aria-pressed":aA==="light",className:Qr,"data-tint":aA==="light"?"primary":void 0,children:aA==="light"?p.jsx(Po,{className:yA}):p.jsx(Qo,{className:yA})}),p.jsx(Ot,{plain:!0,color:V?"success":"muted",onClick:K,title:V?"Disable 3D terrain":"Enable 3D terrain","aria-label":V?"Disable 3D terrain":"Enable 3D terrain","aria-pressed":V,className:Qr,"data-tint":V?"success":void 0,children:p.jsx(bu,{className:yA})}),p.jsx(Ot,{plain:!0,color:"muted",onClick:Z,title:eA?"Exit fullscreen":"Fullscreen","aria-label":eA?"Exit fullscreen":"Enter fullscreen","aria-pressed":eA,className:Qr,children:eA?p.jsx(Ha,{className:yA}):p.jsx(Ga,{className:yA})})]}),p.jsxs("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:[p.jsx(Ot,{plain:!0,color:"muted",onClick:jA,title:"Zoom in","aria-label":"Zoom in",className:_n,children:p.jsx(ru,{className:yA})}),p.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),p.jsx(Ot,{plain:!0,color:"muted",onClick:DA,title:"Zoom out","aria-label":"Zoom out",className:_n,children:p.jsx(xs,{className:yA})}),p.jsx("div",{className:"h-px bg-border-subtle","aria-hidden":"true"}),p.jsx(Ot,{plain:!0,color:"muted",onClick:CA,title:"Reset bearing to north","aria-label":"Reset bearing to north",className:_n,children:p.jsx(nu,{className:yA})})]}),vA&&oA&&p.jsx("div",{className:"map-control-surface flex flex-col items-stretch !overflow-hidden self-end !p-0",children:p.jsx(Ot,{plain:!0,color:uA?"success":"muted",onClick:oA,title:uA?"Hide link quality overlay":"Show link quality overlay","aria-label":uA?"Hide link quality overlay":"Show link quality overlay","aria-pressed":uA,className:_n,"data-tint":uA?"success":void 0,children:p.jsx(Ps,{className:yA})})})]})})}const gc="#4ADE80",pc="#16A34A",yc="rgba(10, 26, 10, 1)",xc="rgba(220, 252, 231, 1)",fo={text:yr.textSecondary,activeText:pc,activeBg:xc},wc={activeBg:yc},fr="DeepAnalysis",vc=700,ji="abcdefghijklmnopqrstuvwxyz0123456789";function kc(){return ji[Math.floor(Math.random()*ji.length)]}function bc({isActive:c,hasAnalyzed:u,isLoading:g,onClick:y,basemapMode:x="dark"}){const C=x==="light",T=C?fo.text:void 0,P=C?fo.activeText:gc,[_,E]=R.useState(!1),[Q,O]=R.useState(fr),H=R.useRef(!1),V=R.useRef(null),[K]=R.useState(()=>{var Z;return typeof window<"u"&&(((Z=window.matchMedia)==null?void 0:Z.call(window,"(hover: hover)").matches)??!1)}),aA=_&&!c&&!g&&K;R.useEffect(()=>{if(_&&!c&&!g&&!H.current){H.current=!0;const Z=performance.now(),uA=oA=>{const vA=oA-Z,iA=Math.min(vA/vc,1),fA=Math.floor(iA*fr.length);let jA="";for(let DA=0;DA{V.current&&cancelAnimationFrame(V.current)}},[_,c,g]);const J=g?"Analyzing...":Q,eA=g?"Analyzing packet history":u?c?"Hide topology edges":"Show topology edges":"Load full packet history and build topology";return p.jsxs("button",{onClick:y,onMouseEnter:()=>K&&E(!0),onMouseLeave:()=>K&&E(!1),onPointerEnter:()=>K&&E(!0),onPointerLeave:()=>K&&E(!1),disabled:g,className:`map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base ${g?"cursor-wait":""}`,style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:C?fo.activeBg:wc.activeBg}},title:eA,"aria-label":eA,"aria-pressed":c,children:[g?p.jsx(Oo,{className:"w-3.5 h-3.5 shrink-0 animate-spin",style:{color:P}}):p.jsx(Ua,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${c?"":"text-fg-secondary"}`,style:{...c&&{color:P},...aA&&{color:P},...!c&&!aA&&T&&{color:T}}}),p.jsx("span",{className:`${c?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:c||aA?700:500,letterSpacing:"-0.01em",lineHeight:1,...c&&{color:P},...aA&&{color:P},...!c&&!aA&&T&&{color:T}},children:J})]})}const Cc=e0.teal,Ec="#0D7377",Sc="rgba(10, 36, 32, 1)",Mc="rgba(204, 251, 241, 1)",ho={text:yr.textSecondary,activeTeal:Ec,activeBg:Mc},Bc={activeBg:Sc},Ii="LiveTrace",Dc=400,Li=100;function _c({isActive:c,onClick:u,basemapMode:g="dark"}){const y=g==="light",x=y?ho.text:void 0,C=y?ho.activeTeal:Cc,[T,P]=R.useState(!1),[_,E]=R.useState(0),Q=R.useRef(!1),O=R.useRef(null),[H,V]=R.useState(0),K=R.useRef(!1),[aA]=R.useState(()=>{var uA;return typeof window<"u"&&(((uA=window.matchMedia)==null?void 0:uA.call(window,"(hover: hover)").matches)??!1)}),J=T&&!c&&aA;R.useEffect(()=>{J&&!K.current&&(K.current=!0,V(1),setTimeout(()=>V(2),Li),setTimeout(()=>V(3),Li*2)),T||(K.current=!1,V(0))},[J,T]),R.useEffect(()=>{if(T&&!c&&!Q.current){Q.current=!0;const uA=performance.now(),oA=vA=>{const iA=vA-uA,fA=Math.min(iA/Dc,1);E(fA),fA<1&&(O.current=requestAnimationFrame(oA))};O.current=requestAnimationFrame(oA)}return T||(O.current&&(cancelAnimationFrame(O.current),O.current=null),Q.current=!1,E(0)),()=>{O.current&&cancelAnimationFrame(O.current)}},[T,c]);const eA=uA=>{if(c)return C;if(!J)return x;const oA=Ii.length,vA=_*(oA+2);return uA>=vA-2&&uAaA&&P(!0),onMouseLeave:()=>aA&&P(!1),onPointerEnter:()=>aA&&P(!0),onPointerLeave:()=>aA&&P(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:y?ho.activeBg:Bc.activeBg}},title:c?"Disable live packet tracing (reduces CPU usage)":"Enable live packet tracing","aria-label":Z,"aria-pressed":c,children:[p.jsx(Xa,{className:`w-3.5 h-3.5 shrink-0 ${c?"":"text-fg-secondary"}`,fill:H===1?"#FFFFFF":H===3?C:"none",stroke:H===1||H===2?"#FFFFFF":c||J?C:x||"currentColor",style:{transition:"fill 0.05s, stroke 0.05s"}}),p.jsx("span",{className:`${c?"":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:"ui-monospace, SFMono-Regular, monospace",fontSize:"0.6875rem",fontWeight:c||J?700:500,letterSpacing:"-0.01em",lineHeight:1},children:Ii.split("").map((uA,oA)=>p.jsx("span",{style:{color:eA(oA)||void 0},children:uA},oA))})]})}const Ni=.2,Tc="rgba(26, 20, 8, 1)",Rc="rgba(254, 243, 199, 1)",Tn={text:yr.textSecondary,activeBg:Rc,disabledText:yr.disabledText},jc={activeBg:Tc},mo=.01,go=1,Fi="#fe8019",Ic="'Wardrive', serif",Mo=1.45,Lc=Mo*1.1,Nc=80;function Fc({isActive:c,onClick:u,brightness:g=.7,onBrightnessChange:y,basemapMode:x="dark"}){const C=x==="light",T=C?Tn.text:void 0,[P,_]=R.useState(!1),[E,Q]=R.useState(!1),[O]=R.useState(()=>{var uA;return typeof window<"u"&&(((uA=window.matchMedia)==null?void 0:uA.call(window,"(hover: hover)").matches)??!1)});R.useEffect(()=>{if(!P||c)return;const uA=requestAnimationFrame(()=>Q(!0)),oA=setTimeout(()=>Q(!1),Nc);return()=>{cancelAnimationFrame(uA),clearTimeout(oA)}},[P,c]);const H=Math.max(mo,Math.min(go,g)),V=uA=>{uA.stopPropagation();const oA=Math.min(go,H+Ni);y==null||y(oA)},K=uA=>{uA.stopPropagation();const oA=Math.max(mo,H-Ni);y==null||y(oA)},aA=Hmo+.001,eA=P&&!c&&O,Z=c?"Configure wardriving coverage":"Show wardriving coverage";return p.jsxs("button",{onClick:u,onMouseEnter:()=>O&&_(!0),onMouseLeave:()=>O&&_(!1),onPointerEnter:()=>O&&_(!0),onPointerLeave:()=>O&&_(!1),className:"map-tool-btn flex items-center gap-2 w-full text-left radius-inner transition-base",style:{padding:"0.5rem 0.625rem",...c&&{backgroundColor:C?Tn.activeBg:jc.activeBg}},title:Z,"aria-label":Z,"aria-pressed":c,children:[p.jsx(Bu,{className:`w-3.5 h-3.5 shrink-0 transition-colors ${c?"text-sys-amber":"text-fg-secondary"}`,style:eA?{color:Fi}:!c&&T?{color:T}:void 0}),p.jsx("span",{className:`${c?"text-sys-amber":"text-fg-secondary"}`,"aria-hidden":"true",style:{fontFamily:c||eA?Ic:"ui-monospace, SFMono-Regular, monospace",fontSize:c||eA?"0.75rem":"0.6875rem",fontWeight:500,letterSpacing:"-0.01em",lineHeight:1,transition:"none",transform:c?`scale(${Mo})`:eA?`scale(${E?Lc:Mo})`:void 0,transformOrigin:"left center",...eA?{color:Fi}:!c&&T?{color:T}:{}},children:"Wardrive"}),c&&y&&p.jsxs("div",{className:"ml-auto flex items-center gap-0.5",children:[p.jsx("button",{onClick:K,disabled:!J,className:`p-1 sm:p-0.5 min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center rounded transition-colors ${J?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:J?void 0:{color:C?Tn.disabledText:"rgba(251, 191, 36, 0.3)"},title:`Decrease opacity (${Math.round(H*100)}%)`,"aria-label":`Decrease opacity, currently ${Math.round(H*100)}%`,children:p.jsx(Po,{className:"w-3.5 h-3.5"})}),p.jsx("button",{onClick:V,disabled:!aA,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 ${aA?"text-sys-amber hover:bg-[var(--map-ui-hover,var(--elevated))] active:bg-[var(--map-ui-active,var(--subtle))]":"cursor-not-allowed"}`,style:aA?void 0:{color:C?Tn.disabledText:"rgba(251, 191, 36, 0.3)"},title:`Increase opacity (${Math.round(H*100)}%)`,"aria-label":`Increase opacity, currently ${Math.round(H*100)}%`,children:p.jsx(Qo,{className:"w-3.5 h-3.5"})})]})]})}const Pc="0123456789bcdefghjkmnpqrstuvwxyz";function Qc(c){let u=!0,g=-90,y=90,x=-180,C=180;for(const T of c.toLowerCase()){const P=Pc.indexOf(T);if(P!==-1)for(let _=4;_>=0;_--){const E=P>>_&1;if(u){const Q=(x+C)/2;E?x=Q:C=Q}else{const Q=(g+y)/2;E?g=Q:y=Q}u=!u}}return{lat:(g+y)/2,lon:(x+C)/2}}function Oc(c){return Math.exp(-c*Math.LN2/7)}const Bo="pymc-wardriving-url",Gs="pymc-wardriving-enabled",Us="pymc-wardriving-brightness",Pi=.7;function zc(){return typeof localStorage>"u"?"":localStorage.getItem(Bo)||""}function Qi(c){typeof localStorage>"u"||(c?localStorage.setItem(Bo,c):localStorage.removeItem(Bo))}function Hc(){return typeof localStorage>"u"?!1:localStorage.getItem(Gs)==="true"}function Rn(c){typeof localStorage>"u"||localStorage.setItem(Gs,String(c))}function Gc(){if(typeof localStorage>"u")return Pi;const c=localStorage.getItem(Us);if(c){const u=parseFloat(c);if(!isNaN(u)&&u>=.01&&u<=1)return u}return Pi}function Uc(c){if(typeof localStorage>"u")return;const u=Math.max(.01,Math.min(1,c));localStorage.setItem(Us,String(u))}const Vc=8e3;async function Wc(c,u={},g=Vc){const y=new AbortController,x=setTimeout(()=>y.abort(),g);try{return await fetch(c,{...u,signal:y.signal})}catch(C){throw C instanceof Error&&C.name==="AbortError"?new Error(`Connection timed out after ${g/1e3}s`):C}finally{clearTimeout(x)}}async function Yc(c){const g=`${c.replace(/\/+$/,"").replace(/\/get-nodes$/,"").replace(/\/get-samples$/,"")}/get-samples`,y=await Wc(g,{headers:{Accept:"application/json"}});if(!y.ok)throw new Error(`Failed to fetch precise samples: ${y.status}`);return y.json()}function Kc(c,u=null){if(c!==null){const y=(Math.max(-12,Math.min(12,c))+12)/24;if(u!==null){const C=(Math.max(-120,Math.min(-50,u))+120)/70;return y*.8+C*.2}return y}return u!==null?(Math.max(-120,Math.min(-50,u))+120)/70:.5}function Zc(c){var g;const u=[];for(const y of c.keys){if(!y.observed)continue;const{lat:x,lon:C}=Qc(y.hash),T=parseInt(y.time,10),P=isNaN(T)?30:(Date.now()-T)/(1e3*60*60*24),_=Oc(P),Q=Kc(y.snr,y.rssi)*(.3+_*.7);u.push({lat:x,lon:C,successRate:y.observed?1:0,weight:Q,totalSamples:1,ageDays:P,geohash:y.hash,repeaters:((g=y.path)==null?void 0:g.map(O=>O.toLowerCase()))||[]})}return u}const cn=ws((c,u)=>({status:"idle",isVisible:Hc(),coveragePoints:[],repeaters:[],error:null,stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},url:zc(),brightness:Gc(),isModalOpen:!1,openModal:()=>c({isModalOpen:!0}),closeModal:()=>c({isModalOpen:!1}),setUrl:g=>c({url:g}),setBrightness:g=>{const y=Math.max(.01,Math.min(1,g));Uc(y),c({brightness:y})},toggleVisibility:()=>{const g=!u().isVisible;Rn(g),c({isVisible:g})},setVisible:g=>{Rn(g),c({isVisible:g})},loadCoverage:async g=>{if(!g.trim())return c({error:"Please enter a URL",status:"error"}),!1;try{new URL(g.trim())}catch{return c({error:"Invalid URL format",status:"error"}),!1}c({error:null,status:"connecting"});try{c({status:"loading"});const y=await Yc(g.trim());if(!y||typeof y!="object")throw new Error("Invalid response from server");if(!Array.isArray(y.keys))throw new Error("No sample data found in response");c({status:"processing"});const x=Zc(y);if(x.length===0)throw new Error("No valid coverage points found");return c({coveragePoints:x,repeaters:[],stats:{coverageCount:x.length,repeaterCount:0,lastUpdated:new Date},status:"success",isVisible:!0,url:g.trim()}),Qi(g.trim()),Rn(!0),!0}catch(y){const x=y instanceof Error?y.message:"Failed to load coverage data";let C=x;return x.includes("timed out")?C="Connection timed out. Server may be unreachable or slow.":x.includes("Failed to fetch")||x.includes("NetworkError")?C="Could not connect to server. Check the URL and try again.":x.includes("CORS")?C="Server does not allow cross-origin requests.":x.includes("404")?C="Coverage endpoint not found. Check the URL.":(x.includes("ERR_NAME_NOT_RESOLVED")||x.includes("DNS"))&&(C="Server not found. Check the URL for typos."),c({error:C,status:"error"}),!1}},clearCoverage:()=>{c({coveragePoints:[],repeaters:[],stats:{coverageCount:0,repeaterCount:0,lastUpdated:null},status:"idle",error:null,isVisible:!1,url:""}),Qi(""),Rn(!1)}})),$c={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"},Vs={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)"},Ws=R.createContext({theme:Vs,isLight:!1});function xr(){return R.useContext(Ws)}function qc({status:c,hasData:u}){const{theme:g,isLight:y}=xr(),x=R.useMemo(()=>c==="connecting"||c==="loading"||c==="processing"?{icon:p.jsx(Oo,{className:"w-3.5 h-3.5 animate-spin"}),label:c==="connecting"?"Connecting...":c==="loading"?"Loading...":"Processing...",color:g.warning,bg:g.warningBg}:c==="error"?{icon:p.jsx(_u,{className:"w-3.5 h-3.5"}),label:"Disconnected",color:g.error,bg:g.errorBg}:u?{icon:p.jsx(su,{className:"w-3.5 h-3.5"}),label:"Connected",color:g.success,bg:g.successBg}:{icon:p.jsx(vs,{className:"w-3.5 h-3.5"}),label:"Ready",color:g.textMuted,bg:y?"rgba(0,0,0,0.04)":"rgba(255,255,255,0.04)"},[c,u,g,y]);return p.jsxs(u0.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 Jc({status:c}){const{theme:u}=xr(),g=R.useMemo(()=>{switch(c){case"connecting":return 25;case"loading":return 60;case"processing":return 90;default:return 0}},[c]);return g===0?null:p.jsx(u0.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(u0.div,{className:"h-full rounded-full",style:{backgroundColor:u.primary},initial:{width:0},animate:{width:`${g}%`},transition:{duration:.4,ease:"easeOut"}})})}function Oi({variant:c,title:u,description:g,onDismiss:y}){const{theme:x}=xr(),C=R.useMemo(()=>{switch(c){case"success":return{icon:p.jsx(zo,{className:"w-4 h-4"}),color:x.success,bg:x.successBg,border:x.successBorder};case"error":return{icon:p.jsx(xu,{className:"w-4 h-4"}),color:x.error,bg:x.errorBg,border:x.errorBorder};case"info":return{icon:p.jsx(vu,{className:"w-4 h-4"}),color:x.info,bg:x.infoBg,border:x.infoBorder}}},[c,x]);return p.jsxs(u0.div,{initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:Ur.snappy,className:"flex items-start gap-3 p-3 rounded-lg border",style:{backgroundColor:C.bg,borderColor:C.border,color:C.color},children:[p.jsx("div",{className:"shrink-0 mt-0.5",children:C.icon}),p.jsxs("div",{className:"flex-1 min-w-0",children:[p.jsx("p",{className:"text-sm font-medium",children:u}),g&&p.jsx("p",{className:"text-xs mt-0.5 opacity-80",children:g})]}),y&&p.jsx("button",{onClick:y,className:"shrink-0 p-1 rounded hover:bg-black/10 transition-colors","aria-label":"Dismiss",children:p.jsx(dn,{className:"w-3.5 h-3.5"})})]})}function Xc({value:c,onChange:u,onSubmit:g,disabled:y}){const{theme:x,isLight:C}=xr(),[T,P]=R.useState(!1),_=E=>{E.key==="Enter"&&!E.shiftKey&&!y&&(E.preventDefault(),g())};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:c,onChange:E=>u(E.target.value),onKeyDown:_,onFocus:()=>P(!0),onBlur:()=>P(!1),placeholder:"https://coverage.wcmesh.com",disabled:y,className:I0("w-full pl-3 pr-10 py-2.5 rounded-lg border text-sm transition-all duration-150","focus:outline-none",y&&"opacity-50 cursor-not-allowed"),style:{backgroundColor:x.bgInput,borderColor:T?x.borderFocus:x.border,color:x.text,boxShadow:T?`0 0 0 3px ${C?"rgba(59, 130, 246, 0.15)":"rgba(139, 92, 246, 0.15)"}`:"none"}}),c&&!y&&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:E=>E.currentTarget.style.color=x.text,onMouseLeave:E=>E.currentTarget.style.color=x.textMuted,"aria-label":"Clear URL",children:p.jsx(dn,{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 Af({value:c,onChange:u}){const{theme:g,isLight:y}=xr(),x=Math.round(c*100);return p.jsx(u0.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},transition:Ur.gentle,className:"overflow-hidden",children:p.jsx("div",{className:"p-3 rounded-lg border",style:{backgroundColor:g.bgSubtle,borderColor:g.border},children:p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsxs("div",{className:"relative w-4 h-4",children:[p.jsx(Po,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:g.textMuted,opacity:c<.5?1:0}}),p.jsx(Qo,{className:"w-4 h-4 absolute inset-0 transition-opacity",style:{color:g.primary,opacity:c>=.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:g.textSecondary},children:"Layer Opacity"}),p.jsxs("span",{className:"text-xs font-mono tabular-nums px-1.5 py-0.5 rounded",style:{color:g.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:C=>u(Number(C.target.value)/100),className:I0("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, ${g.primary} ${x}%, ${g.sliderTrack} ${x}%)`,"--thumb-color":g.sliderThumb}}),p.jsx("style",{children:` input[type="range"]::-webkit-slider-thumb { background-color: ${g.sliderThumb}; } input[type="range"]::-moz-range-thumb { background-color: ${g.sliderThumb}; } - `})]})]})})})}function ef({coverageCount:c,repeaterCount:u,lastUpdated:g}){const{theme:y}=wr();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(vi,{value:c,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(vi,{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(Ns,{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:g?g.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"—"})]}),p.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Updated"})]})]})}function zi({icon:c,label:u,onClick:g,disabled:y,variant:x="default",active:C}){const{theme:T,isLight:P}=wr(),_=R.useMemo(()=>x==="danger"?{text:T.error,hoverBg:P?"rgba(220, 38, 38, 0.08)":"rgba(239, 68, 68, 0.15)"}:{text:C?T.primary:T.textSecondary,hoverBg:T.hoverBg},[x,C,T,P]);return p.jsxs("button",{onClick:g,disabled:y,className:L0("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:_.text},onMouseEnter:E=>!y&&(E.currentTarget.style.backgroundColor=_.hoverBg),onMouseLeave:E=>E.currentTarget.style.backgroundColor="transparent",children:[c,p.jsx("span",{children:u})]})}function tf(){const c=Ds(),u=c==="light",g=u?$c:Vs,{isModalOpen:y,closeModal:x,status:C,isVisible:T,stats:P,error:_,url:E,brightness:Q,loadCoverage:O,clearCoverage:H,toggleVisibility:V,setUrl:K,setBrightness:uA}=cn(),J=C==="connecting"||C==="loading"||C==="processing",eA=P.coverageCount>0,[Z,cA]=R.useState(!0),[lA,kA]=R.useState(E);R.useEffect(()=>{kA(E)},[E]),R.useEffect(()=>{C==="error"&&cA(!0)},[C]);const sA=R.useCallback(async()=>{await O(lA)},[lA,O]),hA=R.useCallback(()=>{kA(""),H()},[H]),TA=R.useCallback(aA=>{kA(aA),K(aA)},[K]),BA=R.useCallback(()=>{J||x()},[J,x]),bA=lA.trim().length>0&&!J;return p.jsx(Ws.Provider,{value:{theme:g,isLight:u},children:p.jsxs(aa,{open:y,onClose:BA,size:"md",bottomSheet:!0,basemapMode:c,children:[p.jsxs("div",{className:"flex items-center justify-between p-4 border-b",style:{borderColor:g.border},children:[p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsx("div",{className:"p-2 rounded-lg",style:{backgroundColor:g.bgSubtle,color:g.primary},children:p.jsx(vs,{className:"w-5 h-5"})}),p.jsxs("div",{children:[p.jsx("h2",{className:"type-micro",style:{color:g.text},children:"Wardriving Coverage"}),p.jsx("p",{className:"text-xs",style:{color:g.textMuted},children:"RF coverage heatmap overlay"})]})]}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx(qc,{status:C,hasData:eA}),!J&&p.jsxs(p.Fragment,{children:[p.jsx("button",{onClick:BA,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:g.primary},children:"Done"}),p.jsx("button",{onClick:BA,className:"hidden sm:flex items-center justify-center p-2 rounded-lg transition-colors",style:{color:g.textMuted},onMouseEnter:aA=>{aA.currentTarget.style.color=g.text,aA.currentTarget.style.backgroundColor=g.hoverBg},onMouseLeave:aA=>{aA.currentTarget.style.color=g.textMuted,aA.currentTarget.style.backgroundColor="transparent"},"aria-label":"Close",children:p.jsx(dn,{className:"w-5 h-5"})})]})]})]}),p.jsx(j0,{children:J&&p.jsx(Jc,{status:C})}),p.jsxs(ua,{className:"space-y-4",children:[p.jsx(Xc,{value:lA,onChange:TA,onSubmit:sA,disabled:J}),p.jsx(j0,{children:C==="error"&&_&&Z&&p.jsx(Oi,{variant:"error",title:"Connection Failed",description:_,onDismiss:()=>cA(!1)})}),p.jsx(j0,{children:C==="success"&&eA&&p.jsx(Oi,{variant:"success",title:"Coverage Data Loaded",description:"Adjust opacity below, then close to view on map"})}),p.jsx(j0,{children:eA&&!J&&p.jsx(a0.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:8},transition:Vr.snappy,children:p.jsx(ef,{coverageCount:P.coverageCount,repeaterCount:P.repeaterCount,lastUpdated:P.lastUpdated})})}),p.jsx(j0,{children:eA&&!J&&p.jsx(Af,{value:Q,onChange:uA})})]}),p.jsxs("div",{className:"flex items-center justify-between p-4 border-t",style:{borderColor:g.border},children:[p.jsx("div",{className:"flex items-center gap-1",children:p.jsx(j0,{children:eA&&p.jsxs(a0.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},exit:{opacity:0,x:-10},transition:Vr.snappy,className:"flex items-center gap-1",children:[p.jsx(zi,{icon:T?p.jsx(Va,{className:"w-4 h-4"}):p.jsx(Is,{className:"w-4 h-4"}),label:T?"Hide":"Show",onClick:V,disabled:J,active:T}),p.jsx(zi,{icon:p.jsx(Go,{className:"w-4 h-4"}),label:"Clear",onClick:hA,disabled:J,variant:"danger"})]})})}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx(zt,{plain:!0,color:"muted",onClick:BA,disabled:J,children:eA?"Done":"Cancel"}),p.jsx(zt,{color:"warning",onClick:sA,disabled:!bA,children:J?p.jsxs(p.Fragment,{children:[p.jsx(Oo,{"data-slot":"icon",className:"animate-spin"}),C==="connecting"?"Connecting...":C==="loading"?"Loading...":"Processing..."]}):eA?p.jsxs(p.Fragment,{children:[p.jsx(js,{"data-slot":"icon"}),"Refresh"]}):p.jsxs(p.Fragment,{children:[p.jsx(iu,{"data-slot":"icon"}),"Connect"]})})]})]})]})})}const rf={bandwidth:.07,threshold:.1,opacity:1,strokeWidth:4.5},r0={...xr,trackBg:xr.border};function jn({label:c,value:u,min:g,max:y,step:x,unit:C,formatValue:T,onChange:P,isLightMode:_}){const E=T?T(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",style:_?{color:r0.textSecondary}:{color:"var(--fg-secondary)"},children:c}),p.jsx("input",{type:"range",min:g,max:y,step:x,value:u,onChange:Q=>P(parseFloat(Q.target.value)),className:`flex-1 h-1.5 rounded-full appearance-none cursor-pointer + `})]})]})})})}function ef({coverageCount:c,repeaterCount:u,lastUpdated:g}){const{theme:y}=xr();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(vi,{value:c,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(vi,{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(Ns,{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:g?g.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"—"})]}),p.jsx("div",{className:"text-xs mt-0.5",style:{color:y.textMuted},children:"Updated"})]})]})}function zi({icon:c,label:u,onClick:g,disabled:y,variant:x="default",active:C}){const{theme:T,isLight:P}=xr(),_=R.useMemo(()=>x==="danger"?{text:T.error,hoverBg:P?"rgba(220, 38, 38, 0.08)":"rgba(239, 68, 68, 0.15)"}:{text:C?T.primary:T.textSecondary,hoverBg:T.hoverBg},[x,C,T,P]);return p.jsxs("button",{onClick:g,disabled:y,className:I0("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:_.text},onMouseEnter:E=>!y&&(E.currentTarget.style.backgroundColor=_.hoverBg),onMouseLeave:E=>E.currentTarget.style.backgroundColor="transparent",children:[c,p.jsx("span",{children:u})]})}function tf(){const c=Ds(),u=c==="light",g=u?$c:Vs,{isModalOpen:y,closeModal:x,status:C,isVisible:T,stats:P,error:_,url:E,brightness:Q,loadCoverage:O,clearCoverage:H,toggleVisibility:V,setUrl:K,setBrightness:aA}=cn(),J=C==="connecting"||C==="loading"||C==="processing",eA=P.coverageCount>0,[Z,uA]=R.useState(!0),[oA,vA]=R.useState(E);R.useEffect(()=>{vA(E)},[E]),R.useEffect(()=>{C==="error"&&uA(!0)},[C]);const iA=R.useCallback(async()=>{await O(oA)},[oA,O]),fA=R.useCallback(()=>{vA(""),H()},[H]),jA=R.useCallback(yA=>{vA(yA),K(yA)},[K]),DA=R.useCallback(()=>{J||x()},[J,x]),CA=oA.trim().length>0&&!J;return p.jsx(Ws.Provider,{value:{theme:g,isLight:u},children:p.jsxs(aa,{open:y,onClose:DA,size:"md",bottomSheet:!0,basemapMode:c,children:[p.jsxs("div",{className:"flex items-center justify-between p-4 border-b",style:{borderColor:g.border},children:[p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsx("div",{className:"p-2 rounded-lg",style:{backgroundColor:g.bgSubtle,color:g.primary},children:p.jsx(vs,{className:"w-5 h-5"})}),p.jsxs("div",{children:[p.jsx("h2",{className:"type-micro",style:{color:g.text},children:"Wardriving Coverage"}),p.jsx("p",{className:"text-xs",style:{color:g.textMuted},children:"RF coverage heatmap overlay"})]})]}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx(qc,{status:C,hasData:eA}),!J&&p.jsxs(p.Fragment,{children:[p.jsx("button",{onClick:DA,className:"sm:hidden min-h-[44px] min-w-[44px] px-3 flex items-center justify-center text-[15px] font-medium transition-base radius-inner active:bg-subtle-fill",style:{color:g.primary},children:"Done"}),p.jsx("button",{onClick:DA,className:"hidden sm:flex items-center justify-center p-2 rounded-lg transition-colors",style:{color:g.textMuted},onMouseEnter:yA=>{yA.currentTarget.style.color=g.text,yA.currentTarget.style.backgroundColor=g.hoverBg},onMouseLeave:yA=>{yA.currentTarget.style.color=g.textMuted,yA.currentTarget.style.backgroundColor="transparent"},"aria-label":"Close",children:p.jsx(dn,{className:"w-5 h-5"})})]})]})]}),p.jsx(R0,{children:J&&p.jsx(Jc,{status:C})}),p.jsxs(ua,{className:"space-y-4",children:[p.jsx(Xc,{value:oA,onChange:jA,onSubmit:iA,disabled:J}),p.jsx(R0,{children:C==="error"&&_&&Z&&p.jsx(Oi,{variant:"error",title:"Connection Failed",description:_,onDismiss:()=>uA(!1)})}),p.jsx(R0,{children:C==="success"&&eA&&p.jsx(Oi,{variant:"success",title:"Coverage Data Loaded",description:"Adjust opacity below, then close to view on map"})}),p.jsx(R0,{children:eA&&!J&&p.jsx(u0.div,{initial:{opacity:0,y:8},animate:{opacity:1,y:0},exit:{opacity:0,y:8},transition:Ur.snappy,children:p.jsx(ef,{coverageCount:P.coverageCount,repeaterCount:P.repeaterCount,lastUpdated:P.lastUpdated})})}),p.jsx(R0,{children:eA&&!J&&p.jsx(Af,{value:Q,onChange:aA})})]}),p.jsxs("div",{className:"flex items-center justify-between p-4 border-t",style:{borderColor:g.border},children:[p.jsx("div",{className:"flex items-center gap-1",children:p.jsx(R0,{children:eA&&p.jsxs(u0.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},exit:{opacity:0,x:-10},transition:Ur.snappy,className:"flex items-center gap-1",children:[p.jsx(zi,{icon:T?p.jsx(Va,{className:"w-4 h-4"}):p.jsx(Is,{className:"w-4 h-4"}),label:T?"Hide":"Show",onClick:V,disabled:J,active:T}),p.jsx(zi,{icon:p.jsx(Go,{className:"w-4 h-4"}),label:"Clear",onClick:fA,disabled:J,variant:"danger"})]})})}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx(Ot,{plain:!0,color:"muted",onClick:DA,disabled:J,children:eA?"Done":"Cancel"}),p.jsx(Ot,{color:"warning",onClick:iA,disabled:!CA,children:J?p.jsxs(p.Fragment,{children:[p.jsx(Oo,{"data-slot":"icon",className:"animate-spin"}),C==="connecting"?"Connecting...":C==="loading"?"Loading...":"Processing..."]}):eA?p.jsxs(p.Fragment,{children:[p.jsx(js,{"data-slot":"icon"}),"Refresh"]}):p.jsxs(p.Fragment,{children:[p.jsx(iu,{"data-slot":"icon"}),"Connect"]})})]})]})]})})}const rf={bandwidth:.07,threshold:.1,opacity:1,strokeWidth:4.5},r0={...yr,trackBg:yr.border};function jn({label:c,value:u,min:g,max:y,step:x,unit:C,formatValue:T,onChange:P,isLightMode:_}){const E=T?T(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",style:_?{color:r0.textSecondary}:{color:"var(--fg-secondary)"},children:c}),p.jsx("input",{type:"range",min:g,max:y,step:x,value:u,onChange:Q=>P(parseFloat(Q.target.value)),className:`flex-1 h-1.5 rounded-full appearance-none cursor-pointer [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3.5 [&::-webkit-slider-thumb]:h-3.5 @@ -59,7 +59,7 @@ import{d as N0,_ as ta,r as R,fa as ra,cR as e0,Z as I0,fb as Fo,fc as gs,fd as [&::-webkit-slider-thumb]:cursor-pointer [&::-webkit-slider-thumb]:transition-transform [&::-webkit-slider-thumb]:hover:scale-110 - [&::-webkit-slider-thumb]:shadow-md`,style:_?{backgroundColor:r0.trackBg}:{backgroundColor:"var(--elevated)"}}),p.jsxs("span",{className:"text-xs font-mono tabular-nums w-12 sm:w-14 text-right shrink-0",style:_?{color:r0.textPrimary}:{color:"var(--fg-muted)"},children:[E,C&&p.jsx("span",{className:"ml-0.5 opacity-70",style:_?{color:r0.textMuted}:void 0,children:C})]})]})}function In({icon:c,label:u,value:g,subtext:y,isLightMode:x}){return p.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 py-0.5 sm:py-1",children:[p.jsx("div",{style:x?{color:r0.textMuted}:{color:"var(--fg-muted)"},children:c}),p.jsx("div",{className:"flex-1 min-w-0",children:p.jsx("div",{className:"text-[10px] sm:text-xs truncate",style:x?{color:r0.textSecondary}:{color:"var(--fg-secondary)"},children:u})}),p.jsxs("div",{className:"text-right",children:[p.jsx("div",{className:"text-xs font-mono tabular-nums",style:x?{color:r0.textPrimary}:{color:"var(--fg-primary)"},children:g}),y&&p.jsx("div",{className:"text-[9px] leading-tight opacity-70",style:x?{color:r0.textMuted}:{color:"var(--fg-muted)"},children:y})]})]})}function nf({visible:c,onClose:u,settings:g,onSettingsChange:y,partition:x,totalNodes:C,basemapMode:T="dark"}){const P=Wa(),_=R.useRef(null),E=T==="light",Q=R.useMemo(()=>{if(!x)return{numCommunities:0,avgCommunitySize:0,minCommunitySize:0,maxCommunitySize:0,fiedlerValue:0,modularity:0,coveragePercent:0};const V=Array.from(x.communities.values()).map(uA=>uA.length),K=V.reduce((uA,J)=>uA+J,0);return{numCommunities:x.numCommunities,avgCommunitySize:V.length>0?Math.round(K/V.length):0,minCommunitySize:V.length>0?Math.min(...V):0,maxCommunitySize:V.length>0?Math.max(...V):0,fiedlerValue:x.fiedlerValue,modularity:0,coveragePercent:C>0?Math.round(K/C*100):0}},[x,C]),O=(V,K)=>{y({...g,[V]:K})},H=(g.bandwidth*111).toFixed(1);return p.jsx("div",{ref:_,className:"absolute inset-0 z-[600] pointer-events-none",children:p.jsx(j0,{children:c&&p.jsx(a0.div,{drag:!0,dragControls:P,dragConstraints:_,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:Vr.smooth,className:` + [&::-webkit-slider-thumb]:shadow-md`,style:_?{backgroundColor:r0.trackBg}:{backgroundColor:"var(--elevated)"}}),p.jsxs("span",{className:"text-xs font-mono tabular-nums w-12 sm:w-14 text-right shrink-0",style:_?{color:r0.textPrimary}:{color:"var(--fg-muted)"},children:[E,C&&p.jsx("span",{className:"ml-0.5 opacity-70",style:_?{color:r0.textMuted}:void 0,children:C})]})]})}function In({icon:c,label:u,value:g,subtext:y,isLightMode:x}){return p.jsxs("div",{className:"flex items-center gap-1.5 sm:gap-2 py-0.5 sm:py-1",children:[p.jsx("div",{style:x?{color:r0.textMuted}:{color:"var(--fg-muted)"},children:c}),p.jsx("div",{className:"flex-1 min-w-0",children:p.jsx("div",{className:"text-[10px] sm:text-xs truncate",style:x?{color:r0.textSecondary}:{color:"var(--fg-secondary)"},children:u})}),p.jsxs("div",{className:"text-right",children:[p.jsx("div",{className:"text-xs font-mono tabular-nums",style:x?{color:r0.textPrimary}:{color:"var(--fg-primary)"},children:g}),y&&p.jsx("div",{className:"text-[9px] leading-tight opacity-70",style:x?{color:r0.textMuted}:{color:"var(--fg-muted)"},children:y})]})]})}function nf({visible:c,onClose:u,settings:g,onSettingsChange:y,partition:x,totalNodes:C,basemapMode:T="dark"}){const P=Wa(),_=R.useRef(null),E=T==="light",Q=R.useMemo(()=>{if(!x)return{numCommunities:0,avgCommunitySize:0,minCommunitySize:0,maxCommunitySize:0,fiedlerValue:0,modularity:0,coveragePercent:0};const V=Array.from(x.communities.values()).map(aA=>aA.length),K=V.reduce((aA,J)=>aA+J,0);return{numCommunities:x.numCommunities,avgCommunitySize:V.length>0?Math.round(K/V.length):0,minCommunitySize:V.length>0?Math.min(...V):0,maxCommunitySize:V.length>0?Math.max(...V):0,fiedlerValue:x.fiedlerValue,modularity:0,coveragePercent:C>0?Math.round(K/C*100):0}},[x,C]),O=(V,K)=>{y({...g,[V]:K})},H=(g.bandwidth*111).toFixed(1);return p.jsx("div",{ref:_,className:"absolute inset-0 z-[600] pointer-events-none",children:p.jsx(R0,{children:c&&p.jsx(u0.div,{drag:!0,dragControls:P,dragConstraints:_,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:Ur.smooth,className:` absolute pointer-events-auto /* Mobile: bottom sheet style, full width with margins */ bottom-2 left-2 right-2 @@ -80,10 +80,10 @@ import{d as N0,_ as ta,r as R,fa as ra,cR as e0,Z as I0,fb as Fo,fc as gs,fd as cursor-grab active:cursor-grabbing /* Larger touch target on mobile */ min-h-[44px] sm:min-h-0 - `,style:E?{borderColor:r0.border}:void 0,onPointerDown:V=>P.start(V),children:[p.jsxs("div",{className:"flex items-center gap-2 sm:gap-1.5",children:[p.jsx(Ya,{className:"w-4 h-4 sm:w-3 sm:h-3",style:E?{color:r0.textMuted}:void 0}),p.jsx(bo,{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",style:E?{color:r0.textPrimary}:void 0,children:"Partition"})]}),p.jsx(zt,{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(dn,{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",style:E?{borderColor:r0.border}:void 0,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(In,{icon:p.jsx(bo,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Communities",value:Q.numCommunities,isLightMode:E}),p.jsx(In,{icon:p.jsx(gi,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Avg Size",value:Q.avgCommunitySize,subtext:`${Q.minCommunitySize}–${Q.maxCommunitySize}`,isLightMode:E}),p.jsx(In,{icon:p.jsx(Su,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Fiedler λ₂",value:Q.fiedlerValue.toFixed(3),isLightMode:E}),p.jsx(In,{icon:p.jsx(gi,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Coverage",value:`${Q.coveragePercent}%`,subtext:`of ${C}`,isLightMode:E})]})}),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(jn,{label:"Bandwidth",value:g.bandwidth,min:.01,max:.15,step:.005,formatValue:()=>H,unit:"km",onChange:V=>O("bandwidth",V),isLightMode:E}),p.jsx(jn,{label:"Threshold",value:g.threshold,min:.05,max:.5,step:.01,formatValue:V=>`${Math.round((1-V)*100)}%`,unit:"cov",onChange:V=>O("threshold",V),isLightMode:E}),p.jsx(jn,{label:"Opacity",value:g.opacity,min:.1,max:1,step:.05,formatValue:V=>`${Math.round(V*100)}%`,onChange:V=>O("opacity",V),isLightMode:E}),p.jsx(jn,{label:"Stroke",value:g.strokeWidth,min:0,max:5,step:.5,unit:"px",formatValue:V=>V.toFixed(1),onChange:V=>O("strokeWidth",V),isLightMode:E})]})})]})})})})}const of={excellent:"text-signal-excellent",good:"text-signal-good",fair:"text-signal-fair",poor:"text-signal-poor",critical:"text-signal-critical"};function fn(c,u){return of[Cs(c,u)]}const sf={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 zr({prefix:c,name:u}){const g=R.useRef(null),[y,x]=R.useState(!1),[C,T]=R.useState({top:0,left:0}),P=()=>{if(!u||!g.current)return;const _=g.current.getBoundingClientRect();T({top:_.top-4,left:_.left+_.width/2}),x(!0)};return p.jsxs(p.Fragment,{children:[p.jsx("span",{ref:g,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:sf,onMouseEnter:P,onMouseLeave:()=>x(!1),children:c}),u&&y&&pa.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:C.top,left:C.left},children:u}),document.body)]})}function Ys(c){if(c._tracePathHashes)return c._tracePathHashes;if(c.payload&&c.payload.length>=20){const u=c.payload.slice(18),g=[];for(let y=0;y0?g:null}return null}function Ks(c,u){return c.src_hash?[c.src_hash.replace(/^0x/i,"").slice(0,2).toUpperCase(),...u.map(y=>y.toUpperCase())]:u.map(g=>g.toUpperCase())}function af(c,u,g,y=15){const x=[],C=u.toUpperCase(),T=g.toUpperCase();for(const P of c){if((P.type??P.payload_type)!==ga.TRACE)continue;const E=Ys(P);if(!E||E.length<1)continue;const Q=Ks(P,E);if(!(Q.length<2)){for(let O=0;O=y)break}}return x}function uf(c){switch(c){case"improving":return p.jsx(xa,{className:"w-3 h-3 text-sys-green"});case"degrading":return p.jsx(au,{className:"w-3 h-3 text-sys-red"});case"stable":return p.jsx(xs,{className:"w-3 h-3 text-fg-muted"});default:return null}}const cf={backgroundColor:"var(--map-ui-stripe)"};function zn({label:c,value:u,unit:g,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:c}),p.jsxs("span",{className:`data-box data-box-compact ${y||""}`,children:[u,g&&p.jsx("span",{className:"text-fg-muted ml-0.5",children:g})]})]})}function Hi({stats:c,direction:u,sf:g,noiseFloor:y}){if(!c)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=c.max-c.min,C=c.median-c.mean,T=ya(g),P=c.mean-T,_=Cs(c.mean,g),E=[`Mean SNR: ${c.mean.toFixed(1)} dB (${_}) from ${c.count} measurement${c.count!==1?"s":""}`,`Variability: ±${c.stdDev.toFixed(1)} dB`,"",`Link budget (SF${g}, 3.5 dBi omni):`,` Demod threshold: ${T.toFixed(1)} dB`,` SNR margin: ${P>=0?"+":""}${P.toFixed(1)} dB`];return y!=null&&E.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:`${c.count} measurement${c.count!==1?"s":""}`,children:["n=",c.count]})]}),p.jsx(zn,{label:"Mean",value:c.mean.toFixed(1),unit:"dB",color:fn(c.mean,g),tooltip:E.join(` + `,style:E?{borderColor:r0.border}:void 0,onPointerDown:V=>P.start(V),children:[p.jsxs("div",{className:"flex items-center gap-2 sm:gap-1.5",children:[p.jsx(Ya,{className:"w-4 h-4 sm:w-3 sm:h-3",style:E?{color:r0.textMuted}:void 0}),p.jsx(bo,{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",style:E?{color:r0.textPrimary}:void 0,children:"Partition"})]}),p.jsx(Ot,{plain:!0,color:"muted",onClick:u,className:"!p-1.5 sm:!p-0.5 !rounded min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center","aria-label":"Close toolbox",children:p.jsx(dn,{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",style:E?{borderColor:r0.border}:void 0,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(In,{icon:p.jsx(bo,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Communities",value:Q.numCommunities,isLightMode:E}),p.jsx(In,{icon:p.jsx(gi,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Avg Size",value:Q.avgCommunitySize,subtext:`${Q.minCommunitySize}–${Q.maxCommunitySize}`,isLightMode:E}),p.jsx(In,{icon:p.jsx(Su,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Fiedler λ₂",value:Q.fiedlerValue.toFixed(3),isLightMode:E}),p.jsx(In,{icon:p.jsx(gi,{className:"w-3.5 h-3.5 sm:w-3 sm:h-3"}),label:"Coverage",value:`${Q.coveragePercent}%`,subtext:`of ${C}`,isLightMode:E})]})}),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(jn,{label:"Bandwidth",value:g.bandwidth,min:.01,max:.15,step:.005,formatValue:()=>H,unit:"km",onChange:V=>O("bandwidth",V),isLightMode:E}),p.jsx(jn,{label:"Threshold",value:g.threshold,min:.05,max:.5,step:.01,formatValue:V=>`${Math.round((1-V)*100)}%`,unit:"cov",onChange:V=>O("threshold",V),isLightMode:E}),p.jsx(jn,{label:"Opacity",value:g.opacity,min:.1,max:1,step:.05,formatValue:V=>`${Math.round(V*100)}%`,onChange:V=>O("opacity",V),isLightMode:E}),p.jsx(jn,{label:"Stroke",value:g.strokeWidth,min:0,max:5,step:.5,unit:"px",formatValue:V=>V.toFixed(1),onChange:V=>O("strokeWidth",V),isLightMode:E})]})})]})})})})}const of={excellent:"text-signal-excellent",good:"text-signal-good",fair:"text-signal-fair",poor:"text-signal-poor",critical:"text-signal-critical"};function fn(c,u){return of[Cs(c,u)]}const sf={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 Or({prefix:c,name:u}){const g=R.useRef(null),[y,x]=R.useState(!1),[C,T]=R.useState({top:0,left:0}),P=()=>{if(!u||!g.current)return;const _=g.current.getBoundingClientRect();T({top:_.top-4,left:_.left+_.width/2}),x(!0)};return p.jsxs(p.Fragment,{children:[p.jsx("span",{ref:g,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:sf,onMouseEnter:P,onMouseLeave:()=>x(!1),children:c}),u&&y&&pa.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:C.top,left:C.left},children:u}),document.body)]})}function Ys(c){if(c._tracePathHashes)return c._tracePathHashes;if(c.payload&&c.payload.length>=20){const u=c.payload.slice(18),g=[];for(let y=0;y0?g:null}return null}function Ks(c,u){return c.src_hash?[c.src_hash.replace(/^0x/i,"").slice(0,2).toUpperCase(),...u.map(y=>y.toUpperCase())]:u.map(g=>g.toUpperCase())}function af(c,u,g,y=15){const x=[],C=u.toUpperCase(),T=g.toUpperCase();for(const P of c){if((P.type??P.payload_type)!==ga.TRACE)continue;const E=Ys(P);if(!E||E.length<1)continue;const Q=Ks(P,E);if(!(Q.length<2)){for(let O=0;O=y)break}}return x}function uf(c){switch(c){case"improving":return p.jsx(xa,{className:"w-3 h-3 text-sys-green"});case"degrading":return p.jsx(au,{className:"w-3 h-3 text-sys-red"});case"stable":return p.jsx(xs,{className:"w-3 h-3 text-fg-muted"});default:return null}}const cf={backgroundColor:"var(--map-ui-stripe)"};function zn({label:c,value:u,unit:g,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:c}),p.jsxs("span",{className:`data-box data-box-compact ${y||""}`,children:[u,g&&p.jsx("span",{className:"text-fg-muted ml-0.5",children:g})]})]})}function Hi({stats:c,direction:u,sf:g,noiseFloor:y}){if(!c)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=c.max-c.min,C=c.median-c.mean,T=ya(g),P=c.mean-T,_=Cs(c.mean,g),E=[`Mean SNR: ${c.mean.toFixed(1)} dB (${_}) from ${c.count} measurement${c.count!==1?"s":""}`,`Variability: ±${c.stdDev.toFixed(1)} dB`,"",`Link budget (SF${g}, 3.5 dBi omni):`,` Demod threshold: ${T.toFixed(1)} dB`,` SNR margin: ${P>=0?"+":""}${P.toFixed(1)} dB`];return y!=null&&E.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:`${c.count} measurement${c.count!==1?"s":""}`,children:["n=",c.count]})]}),p.jsx(zn,{label:"Mean",value:c.mean.toFixed(1),unit:"dB",color:fn(c.mean,g),tooltip:E.join(` `)}),p.jsx(zn,{label:"Median",value:c.median.toFixed(1),unit:"dB",tooltip:`Middle value — less affected by unusual readings than the average.${Math.abs(C)>=.15?` -Differs from mean by ${C>0?"+":""}${C.toFixed(1)} dB`:""}`}),p.jsx(zn,{label:"Range",value:`${c.min.toFixed(1)}–${c.max.toFixed(1)}`,unit:"dB",tooltip:`Best to worst signal observed. Total spread: ${x.toFixed(1)} dB.`})]})}function ff({pair:c,onClose:u,prefixToName:g}){var kA,sA,hA,TA,BA,bA,aA,jA,NA,FA,GA,oA;const y=ks(),x=ca(),C=fa(),T=ha(),[P,_]=R.useState(null),E=((sA=(kA=C==null?void 0:C.config)==null?void 0:kA.radio)==null?void 0:sA.spreading_factor)??da,Q=R.useMemo(()=>{const fA=`${c.nodeA.hash}>${c.nodeB.hash}`,dA=`${c.nodeB.hash}>${c.nodeA.hash}`;return{forward:y.get(fA)??null,reverse:y.get(dA)??null}},[y,c.nodeA.hash,c.nodeB.hash]),O=R.useMemo(()=>!x||x.length===0?[]:af(x,c.nodeA.prefix,c.nodeB.prefix),[x,c.nodeA.prefix,c.nodeB.prefix]),H=c.nodeA.name||(g==null?void 0:g.get(c.nodeA.prefix.toUpperCase()))||null,V=c.nodeB.name||(g==null?void 0:g.get(c.nodeB.prefix.toUpperCase()))||null,K=((hA=Q.forward)==null?void 0:hA.trend)??((TA=Q.reverse)==null?void 0:TA.trend)??"insufficient",uA=Math.max(((BA=Q.forward)==null?void 0:BA.lastSeen)??0,((bA=Q.reverse)==null?void 0:bA.lastSeen)??0),J=(((aA=Q.forward)==null?void 0:aA.uniqueTraceCount)??0)+(((jA=Q.reverse)==null?void 0:jA.uniqueTraceCount)??0),eA=K==="insufficient"?"Not enough data to determine trend (need at least 4 measurements).":`Whether signal quality is getting better or worse over time. -Compares older measurements to newer ones.`,Z=((NA=Q.forward)==null?void 0:NA.uniqueTraceCount)??0,cA=((FA=Q.reverse)==null?void 0:FA.uniqueTraceCount)??0,lA=["Number of trace packets that traveled through this link.",`${c.nodeA.prefix}→${c.nodeB.prefix}: ${Z}`,`${c.nodeB.prefix}→${c.nodeA.prefix}: ${cA}`].join(` +Differs from mean by ${C>0?"+":""}${C.toFixed(1)} dB`:""}`}),p.jsx(zn,{label:"Range",value:`${c.min.toFixed(1)}–${c.max.toFixed(1)}`,unit:"dB",tooltip:`Best to worst signal observed. Total spread: ${x.toFixed(1)} dB.`})]})}function ff({pair:c,onClose:u,prefixToName:g}){var vA,iA,fA,jA,DA,CA,yA,kA,LA,NA,GA,bA;const y=ks(),x=ca(),C=fa(),T=ha(),[P,_]=R.useState(null),E=((iA=(vA=C==null?void 0:C.config)==null?void 0:vA.radio)==null?void 0:iA.spreading_factor)??da,Q=R.useMemo(()=>{const cA=`${c.nodeA.hash}>${c.nodeB.hash}`,sA=`${c.nodeB.hash}>${c.nodeA.hash}`;return{forward:y.get(cA)??null,reverse:y.get(sA)??null}},[y,c.nodeA.hash,c.nodeB.hash]),O=R.useMemo(()=>!x||x.length===0?[]:af(x,c.nodeA.prefix,c.nodeB.prefix),[x,c.nodeA.prefix,c.nodeB.prefix]),H=c.nodeA.name||(g==null?void 0:g.get(c.nodeA.prefix.toUpperCase()))||null,V=c.nodeB.name||(g==null?void 0:g.get(c.nodeB.prefix.toUpperCase()))||null,K=((fA=Q.forward)==null?void 0:fA.trend)??((jA=Q.reverse)==null?void 0:jA.trend)??"insufficient",aA=Math.max(((DA=Q.forward)==null?void 0:DA.lastSeen)??0,((CA=Q.reverse)==null?void 0:CA.lastSeen)??0),J=(((yA=Q.forward)==null?void 0:yA.uniqueTraceCount)??0)+(((kA=Q.reverse)==null?void 0:kA.uniqueTraceCount)??0),eA=K==="insufficient"?"Not enough data to determine trend (need at least 4 measurements).":`Whether signal quality is getting better or worse over time. +Compares older measurements to newer ones.`,Z=((LA=Q.forward)==null?void 0:LA.uniqueTraceCount)??0,uA=((NA=Q.reverse)==null?void 0:NA.uniqueTraceCount)??0,oA=["Number of trace packets that traveled through this link.",`${c.nodeA.prefix}→${c.nodeB.prefix}: ${Z}`,`${c.nodeB.prefix}→${c.nodeA.prefix}: ${uA}`].join(` `);return p.jsx("div",{className:` absolute z-[700] overflow-hidden /* Mobile: full-width bottom sheet with breathing room */ @@ -96,7 +96,7 @@ Compares older measurements to newer ones.`,Z=((NA=Q.forward)==null?void 0:NA.un 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(Ps,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5 text-sys-green shrink-0"}),p.jsx(zr,{prefix:c.nodeA.prefix,name:H}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"↔"}),p.jsx(zr,{prefix:c.nodeB.prefix,name:V})]}),p.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[uA>0&&p.jsx("span",{className:"type-data-xs text-fg-muted",title:pi(uA),children:bs(uA)}),p.jsx(zt,{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(dn,{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:`${c.nodeA.prefix}→${c.nodeB.prefix}: mean of ${((GA=c.aToB)==null?void 0:GA.count)??0} measurements`,children:[p.jsxs("span",{className:"flex items-center gap-1",children:[p.jsx(zr,{prefix:c.nodeA.prefix,name:H}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),p.jsx(zr,{prefix:c.nodeB.prefix,name:V})]}),c.aToB?p.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${fn(c.aToB.mean,E)}`,children:[c.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:`${c.nodeB.prefix}→${c.nodeA.prefix}: mean of ${((oA=c.bToA)==null?void 0:oA.count)??0} measurements`,children:[p.jsxs("span",{className:"flex items-center gap-1",children:[p.jsx(zr,{prefix:c.nodeB.prefix,name:V}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),p.jsx(zr,{prefix:c.nodeA.prefix,name:H})]}),c.bToA?p.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${fn(c.bToA.mean,E)}`,children:[c.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(Hi,{stats:c.aToB,direction:`${c.nodeA.prefix}→${c.nodeB.prefix}`,sf:E,noiseFloor:T})}),p.jsx("div",{className:"px-3 pt-2 pb-1",children:p.jsx(Hi,{stats:c.bToA,direction:`${c.nodeB.prefix}→${c.nodeA.prefix}`,sf:E,noiseFloor:T})})]})]}),p.jsxs("div",{className:"px-3 py-1.5 border-b border-edge-subtle",children:[K!=="insufficient"&&p.jsxs("div",{className:"flex items-center justify-between gap-2 py-[3px] cursor-help",title:eA,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:[uf(K),p.jsx("span",{className:"text-fg-secondary capitalize",children:K})]})})]}),J>0&&p.jsx(zn,{label:"Unique traces",value:J.toString(),tooltip:lA})]}),O.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 (",O.length,")"]}),p.jsx("div",{className:"overflow-y-auto flex-1 min-h-0 overscroll-contain",style:{scrollbarGutter:"stable"},children:O.map((fA,dA)=>{const CA=Ys(fA),IA=CA?Ks(fA,CA):null,Ae=IA?Math.max(0,IA.length-1):0,ae=IA?IA.map($A=>(g==null?void 0:g.get($A))??$A).join(" → "):null,ZA=P===dA,VA=fA.id??`${fA.packet_hash}-${fA.timestamp}`;return p.jsxs("div",{className:"rounded-sm",style:dA%2===1?cf:void 0,children:[p.jsxs("button",{onClick:()=>_(ZA?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:[ZA?p.jsx(ys,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"}):p.jsx(lu,{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:pi(fA.timestamp)}),ae?p.jsx("span",{className:"text-fg-secondary truncate min-w-0",title:IA.join(" → "),children:ae}):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:[Ae,"h"]}),fA.snr!=null&&p.jsx("span",{className:`shrink-0 tabular-nums ${fn(fA.snr,E)}`,children:fA.snr.toFixed(1)})]}),ZA&&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:[fA.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:[fA.rssi," dBm"]})]}),fA.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 ${fn(fA.snr,E)}`,children:[fA.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:ma(fA.route??fA.route_type)})]}),fA.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:$A=>{$A.stopPropagation(),navigator.clipboard.writeText(fA.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:fA.packet_hash}),p.jsx(Ho,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"})]})]}),fA.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:fA.src_hash,children:fA.src_hash})]}),IA&&IA.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:IA.join(" → "),children:IA.join(" → ")})]})]})]},VA)})})]})]})})}const hf={getItem:c=>{try{return localStorage.getItem(c)}catch{return null}},setItem:(c,u)=>{try{localStorage.setItem(c,u)}catch{}},removeItem:c=>{try{localStorage.removeItem(c)}catch{}}},Zs=ws()(Au(c=>({isEnabled:!1,toggle:()=>c(u=>({isEnabled:!u.isEnabled})),setEnabled:u=>c({isEnabled:u})}),{name:"pymc-live-trace",storage:eu(()=>hf)})),df=()=>Zs(c=>c.isEnabled),mf=()=>Zs(c=>c.toggle);var Tt=(function(c){c=c||{};var u=typeof c<"u"?c:{},g={},y;for(y in u)u.hasOwnProperty(y)&&(g[y]=u[y]);var x="";function C(rA){return u.locateFile?u.locateFile(rA,x):x+rA}var T;typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),x.indexOf("blob:")!==0?x=x.substr(0,x.lastIndexOf("/")+1):x="",T=function(yA,RA,wA){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 me=u0(yA);if(me){RA(me.buffer);return}wA()},t.onerror=wA,t.send(null)};var P=u.print||console.log.bind(console),_=u.printErr||console.warn.bind(console);for(y in g)g.hasOwnProperty(y)&&(u[y]=g[y]);g=null,u.arguments&&u.arguments;var E=0,Q=function(rA){E=rA},O=function(){return E},H=8;function V(rA,yA,RA,wA){switch(RA=RA||"i8",RA.charAt(RA.length-1)==="*"&&(RA="i32"),RA){case"i1":jA[rA>>0]=yA;break;case"i8":jA[rA>>0]=yA;break;case"i16":FA[rA>>1]=yA;break;case"i32":GA[rA>>2]=yA;break;case"i64":lt=[yA>>>0,(Ge=yA,+xe(Ge)>=1?Ge>0?(Ke(+be(Ge/4294967296),4294967295)|0)>>>0:~~+we((Ge-+(~~Ge>>>0))/4294967296)>>>0:0)],GA[rA>>2]=lt[0],GA[rA+4>>2]=lt[1];break;case"float":oA[rA>>2]=yA;break;case"double":fA[rA>>3]=yA;break;default:ht("invalid type for setValue: "+RA)}}function K(rA,yA,RA){switch(yA=yA||"i8",yA.charAt(yA.length-1)==="*"&&(yA="i32"),yA){case"i1":return jA[rA>>0];case"i8":return jA[rA>>0];case"i16":return FA[rA>>1];case"i32":return GA[rA>>2];case"i64":return GA[rA>>2];case"float":return oA[rA>>2];case"double":return fA[rA>>3];default:ht("invalid type for getValue: "+yA)}return null}var uA=!1;function J(rA,yA){rA||ht("Assertion failed: "+yA)}function eA(rA){var yA=u["_"+rA];return J(yA,"Cannot call unknown function "+rA+", make sure it is exported"),yA}function Z(rA,yA,RA,wA,t){var b={string:function(oe){var et=0;if(oe!=null&&oe!==0){var Lt=(oe.length<<2)+1;et=at(Lt),TA(oe,et,Lt)}return et},array:function(oe){var et=at(oe.length);return BA(oe,et),et}};function me(oe){return yA==="string"?sA(oe):yA==="boolean"?!!oe:oe}var Me=eA(rA),Oe=[],KA=0;if(wA)for(var ge=0;ge=wA);)++t;if(t-yA>16&&rA.subarray&&lA)return lA.decode(rA.subarray(yA,t));for(var b="";yA>10,56320|KA&1023)}}return b}function sA(rA,yA){return rA?kA(NA,rA,yA):""}function hA(rA,yA,RA,wA){if(!(wA>0))return 0;for(var t=RA,b=RA+wA-1,me=0;me=55296&&Me<=57343){var Oe=rA.charCodeAt(++me);Me=65536+((Me&1023)<<10)|Oe&1023}if(Me<=127){if(RA>=b)break;yA[RA++]=Me}else if(Me<=2047){if(RA+1>=b)break;yA[RA++]=192|Me>>6,yA[RA++]=128|Me&63}else if(Me<=65535){if(RA+2>=b)break;yA[RA++]=224|Me>>12,yA[RA++]=128|Me>>6&63,yA[RA++]=128|Me&63}else{if(RA+3>=b)break;yA[RA++]=240|Me>>18,yA[RA++]=128|Me>>12&63,yA[RA++]=128|Me>>6&63,yA[RA++]=128|Me&63}}return yA[RA]=0,RA-t}function TA(rA,yA,RA){return hA(rA,NA,yA,RA)}typeof TextDecoder<"u"&&new TextDecoder("utf-16le");function BA(rA,yA){jA.set(rA,yA)}function bA(rA,yA){return rA%yA>0&&(rA+=yA-rA%yA),rA}var aA,jA,NA,FA,GA,oA,fA;function dA(rA){aA=rA,u.HEAP8=jA=new Int8Array(rA),u.HEAP16=FA=new Int16Array(rA),u.HEAP32=GA=new Int32Array(rA),u.HEAPU8=NA=new Uint8Array(rA),u.HEAPU16=new Uint16Array(rA),u.HEAPU32=new Uint32Array(rA),u.HEAPF32=oA=new Float32Array(rA),u.HEAPF64=fA=new Float64Array(rA)}var CA=5271536,IA=28624,Ae=u.TOTAL_MEMORY||33554432;u.buffer?aA=u.buffer:aA=new ArrayBuffer(Ae),Ae=aA.byteLength,dA(aA),GA[IA>>2]=CA;function ae(rA){for(;rA.length>0;){var yA=rA.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 ZA=[],VA=[],$A=[],Fe=[];function Pe(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)He(u.preRun.shift());ae(ZA)}function ue(){ae(VA)}function ee(){ae($A)}function ke(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)De(u.postRun.shift());ae(Fe)}function He(rA){ZA.unshift(rA)}function De(rA){Fe.unshift(rA)}var xe=Math.abs,we=Math.ceil,be=Math.floor,Ke=Math.min,qe=0,$e=null;function rt(rA){qe++,u.monitorRunDependencies&&u.monitorRunDependencies(qe)}function xt(rA){if(qe--,u.monitorRunDependencies&&u.monitorRunDependencies(qe),qe==0&&$e){var yA=$e;$e=null,yA()}}u.preloadedImages={},u.preloadedAudios={};var Qe=null,Je="data:application/octet-stream;base64,";function Se(rA){return String.prototype.startsWith?rA.startsWith(Je):rA.indexOf(Je)===0}var Ge,lt;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 k0(rA,yA,RA,wA){ht("Assertion failed: "+sA(rA)+", at: "+[yA?sA(yA):"unknown filename",RA,wA?sA(wA):"unknown function"])}function Rt(){return jA.length}function Kt(rA,yA,RA){NA.set(NA.subarray(yA,yA+RA),rA)}function F0(rA){return u.___errno_location&&(GA[u.___errno_location()>>2]=rA),rA}function tr(rA){ht("OOM")}function b0(rA){try{var yA=new ArrayBuffer(rA);return yA.byteLength!=rA?void 0:(new Int8Array(yA).set(jA),c0(yA),dA(yA),1)}catch{}}function Ht(rA){var yA=Rt(),RA=16777216,wA=2147483648-RA;if(rA>wA)return!1;for(var t=16777216,b=Math.max(yA,t);b>4,t=(Me&15)<<4|Oe>>2,b=(Oe&3)<<6|KA,RA=RA+String.fromCharCode(wA),Oe!==64&&(RA=RA+String.fromCharCode(t)),KA!==64&&(RA=RA+String.fromCharCode(b));while(ge13780509?(A=vn(15,A)|0,A|0):(r=((e|0)<0)<<31>>31,o=ct(e|0,r|0,3,0)|0,n=S()|0,r=WA(e|0,r|0,1,0)|0,r=ct(o|0,n|0,r|0,S()|0)|0,r=WA(r|0,S()|0,1,0)|0,e=S()|0,t[A>>2]=r,t[A+4>>2]=e,A=0,A|0)}function v(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,D(e,A,r,n,0)|0}function D(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0;if(a=k,k=k+16|0,s=a,!(F(e,A,r,n,o)|0))return n=0,k=a,n|0;do if((r|0)>=0){if((r|0)>13780509){if(i=vn(15,s)|0,i|0)break;l=s,s=t[l>>2]|0,l=t[l+4>>2]|0}else i=((r|0)<0)<<31>>31,f=ct(r|0,i|0,3,0)|0,l=S()|0,i=WA(r|0,i|0,1,0)|0,i=ct(f|0,l|0,i|0,S()|0)|0,i=WA(i|0,S()|0,1,0)|0,l=S()|0,t[s>>2]=i,t[s+4>>2]=l,s=i;if(K0(n|0,0,s<<3|0)|0,o|0){K0(o|0,0,s<<2|0)|0,i=X(e,A,r,n,o,s,l,0)|0;break}i=Ot(s,4)|0,i?(f=X(e,A,r,n,i,s,l,0)|0,YA(i),i=f):i=13}else i=2;while(!1);return f=i,k=a,f|0}function F(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0;if(G=k,k=k+16|0,I=G,L=G+8|0,j=I,t[j>>2]=e,t[j+4>>2]=A,(r|0)<0)return L=2,k=G,L|0;if(i=n,t[i>>2]=e,t[i+4>>2]=A,i=(o|0)!=0,i&&(t[o>>2]=0),ze(e,A)|0)return L=9,k=G,L|0;t[L>>2]=0;A:do if((r|0)>=1)if(i)for(m=1,f=0,M=0,j=1,i=e;;){if(!(f|M)){if(i=Y(i,A,4,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,ze(i,A)|0){i=9;break A}}if(i=Y(i,A,t[26800+(M<<2)>>2]|0,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(m<<3)|0,t[e>>2]=i,t[e+4>>2]=A,t[o+(m<<2)>>2]=j,e=f+1|0,s=(e|0)==(j|0),l=M+1|0,a=(l|0)==6,ze(i,A)|0){i=9;break A}if(j=j+(a&s&1)|0,(j|0)>(r|0)){i=0;break}else m=m+1|0,f=s?0:e,M=s?a?0:l:M}else for(m=1,f=0,M=0,j=1,i=e;;){if(!(f|M)){if(i=Y(i,A,4,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,ze(i,A)|0){i=9;break A}}if(i=Y(i,A,t[26800+(M<<2)>>2]|0,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(m<<3)|0,t[e>>2]=i,t[e+4>>2]=A,e=f+1|0,s=(e|0)==(j|0),l=M+1|0,a=(l|0)==6,ze(i,A)|0){i=9;break A}if(j=j+(a&s&1)|0,(j|0)>(r|0)){i=0;break}else m=m+1|0,f=s?0:e,M=s?a?0:l:M}else i=0;while(!1);return L=i,k=G,L|0}function X(e,A,r,n,o,i,s,l){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0,s=s|0,l=l|0;var a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0;if(G=k,k=k+16|0,I=G+8|0,L=G,a=Ir(e|0,A|0,i|0,s|0)|0,m=S()|0,M=n+(a<<3)|0,W=M,nA=t[W>>2]|0,W=t[W+4>>2]|0,f=(nA|0)==(e|0)&(W|0)==(A|0),!((nA|0)==0&(W|0)==0|f))do a=WA(a|0,m|0,1,0)|0,a=jr(a|0,S()|0,i|0,s|0)|0,m=S()|0,M=n+(a<<3)|0,nA=M,W=t[nA>>2]|0,nA=t[nA+4>>2]|0,f=(W|0)==(e|0)&(nA|0)==(A|0);while(!((W|0)==0&(nA|0)==0|f));if(a=o+(a<<2)|0,f&&(t[a>>2]|0)<=(l|0)||(nA=M,t[nA>>2]=e,t[nA+4>>2]=A,t[a>>2]=l,(l|0)>=(r|0)))return nA=0,k=G,nA|0;switch(f=l+1|0,t[I>>2]=0,a=Y(e,A,2,I,L)|0,a|0){case 9:{j=9;break}case 0:{a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a||(j=9);break}}A:do if((j|0)==9){switch(t[I>>2]=0,a=Y(e,A,3,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=Y(e,A,1,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=Y(e,A,5,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=Y(e,A,4,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=Y(e,A,6,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}return nA=0,k=G,nA|0}while(!1);return nA=a,k=G,nA|0}function Y(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0;if(r>>>0>6)return o=1,o|0;if(M=(t[n>>2]|0)%6|0,t[n>>2]=M,(M|0)>0){i=0;do r=Ut(r)|0,i=i+1|0;while((i|0)<(t[n>>2]|0))}if(M=vA(e|0,A|0,45)|0,S()|0,m=M&127,m>>>0>121)return o=5,o|0;a=Qt(e,A)|0,i=vA(e|0,A|0,52)|0,S()|0,i=i&15;A:do if(!i)f=8;else{for(;;){if(s=(15-i|0)*3|0,l=vA(e|0,A|0,s|0)|0,S()|0,l=l&7,(l|0)==7){A=5;break}if(L=(Jt(i)|0)==0,i=i+-1|0,j=EA(7,0,s|0)|0,A=A&~(S()|0),I=EA(t[(L?432:16)+(l*28|0)+(r<<2)>>2]|0,0,s|0)|0,s=S()|0,r=t[(L?640:224)+(l*28|0)+(r<<2)>>2]|0,e=I|e&~j,A=s|A,!r){r=0;break A}if(!i){f=8;break A}}return A|0}while(!1);(f|0)==8&&(L=t[848+(m*28|0)+(r<<2)>>2]|0,I=EA(L|0,0,45)|0,e=I|e,A=S()|0|A&-1040385,r=t[4272+(m*28|0)+(r<<2)>>2]|0,(L&127|0)==127&&(L=EA(t[848+(m*28|0)+20>>2]|0,0,45)|0,A=S()|0|A&-1040385,r=t[4272+(m*28|0)+20>>2]|0,e=ar(L|e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+1)),l=vA(e|0,A|0,45)|0,S()|0,l=l&127;A:do if(Te(l)|0){e:do if((Qt(e,A)|0)==1){if((m|0)!=(l|0))if(M0(l,t[7696+(m*28|0)>>2]|0)|0){e=Zn(e,A)|0,s=1,A=S()|0;break}else OA(27795,26864,533,26872);switch(a|0){case 3:{e=ar(e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+1,s=0;break e}case 5:{e=Zn(e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+5,s=0;break e}case 0:return L=9,L|0;default:return L=1,L|0}}else s=0;while(!1);if((r|0)>0){i=0;do e=Kn(e,A)|0,A=S()|0,i=i+1|0;while((i|0)!=(r|0))}if((m|0)!=(l|0)){if(!(bt(l)|0)){if((s|0)!=0|(Qt(e,A)|0)!=5)break;t[n>>2]=(t[n>>2]|0)+1;break}switch(M&127){case 8:case 118:break A}(Qt(e,A)|0)!=3&&(t[n>>2]=(t[n>>2]|0)+1)}}else if((r|0)>0){i=0;do e=ar(e,A)|0,A=S()|0,i=i+1|0;while((i|0)!=(r|0))}while(!1);return t[n>>2]=((t[n>>2]|0)+r|0)%6|0,L=o,t[L>>2]=e,t[L+4>>2]=A,L=0,L|0}function mA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,_A(e,A,r,n)|0?(K0(n|0,0,r*48|0)|0,n=qA(e,A,r,n)|0,n|0):(n=0,n|0)}function _A(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0;if(L=k,k=k+16|0,j=L,I=L+8|0,M=j,t[M>>2]=e,t[M+4>>2]=A,(r|0)<0)return I=2,k=L,I|0;if(!r)return I=n,t[I>>2]=e,t[I+4>>2]=A,I=0,k=L,I|0;t[I>>2]=0;A:do if(ze(e,A)|0)e=9;else{o=0,M=e;do{if(e=Y(M,A,4,I,j)|0,e|0)break A;if(A=j,M=t[A>>2]|0,A=t[A+4>>2]|0,o=o+1|0,ze(M,A)|0){e=9;break A}}while((o|0)<(r|0));m=n,t[m>>2]=M,t[m+4>>2]=A,m=r+-1|0,f=0,e=1;do{if(o=26800+(f<<2)|0,(f|0)==5)for(s=t[o>>2]|0,i=0,o=e;;){if(e=j,e=Y(t[e>>2]|0,t[e+4>>2]|0,s,I,j)|0,e|0)break A;if((i|0)!=(m|0))if(a=j,l=t[a>>2]|0,a=t[a+4>>2]|0,e=n+(o<<3)|0,t[e>>2]=l,t[e+4>>2]=a,!(ze(l,a)|0))e=o+1|0;else{e=9;break A}else e=o;if(i=i+1|0,(i|0)>=(r|0))break;o=e}else for(s=j,a=t[o>>2]|0,l=0,o=e,i=t[s>>2]|0,s=t[s+4>>2]|0;;){if(e=Y(i,s,a,I,j)|0,e|0)break A;if(s=j,i=t[s>>2]|0,s=t[s+4>>2]|0,e=n+(o<<3)|0,t[e>>2]=i,t[e+4>>2]=s,e=o+1|0,ze(i,s)|0){e=9;break A}if(l=l+1|0,(l|0)>=(r|0))break;o=e}f=f+1|0}while(f>>>0<6);e=j,e=(M|0)==(t[e>>2]|0)&&(A|0)==(t[e+4>>2]|0)?0:9}while(!1);return I=e,k=L,I|0}function qA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;if(M=k,k=k+16|0,s=M,!r)return t[n>>2]=e,t[n+4>>2]=A,n=0,k=M,n|0;do if((r|0)>=0){if((r|0)>13780509){if(o=vn(15,s)|0,o|0)break;i=s,o=t[i>>2]|0,i=t[i+4>>2]|0}else o=((r|0)<0)<<31>>31,m=ct(r|0,o|0,3,0)|0,i=S()|0,o=WA(r|0,o|0,1,0)|0,o=ct(m|0,i|0,o|0,S()|0)|0,o=WA(o|0,S()|0,1,0)|0,i=S()|0,m=s,t[m>>2]=o,t[m+4>>2]=i;if(f=Ot(o,8)|0,!f)o=13;else{if(m=Ot(o,4)|0,!m){YA(f),o=13;break}if(o=X(e,A,r,f,m,o,i,0)|0,o|0){YA(f),YA(m);break}if(A=t[s>>2]|0,s=t[s+4>>2]|0,(s|0)>0|(s|0)==0&A>>>0>0){o=0,l=0,a=0;do e=f+(l<<3)|0,i=t[e>>2]|0,e=t[e+4>>2]|0,!((i|0)==0&(e|0)==0)&&(t[m+(l<<2)>>2]|0)==(r|0)&&(j=n+(o<<3)|0,t[j>>2]=i,t[j+4>>2]=e,o=o+1|0),l=WA(l|0,a|0,1,0)|0,a=S()|0;while((a|0)<(s|0)|(a|0)==(s|0)&l>>>0>>0)}YA(f),YA(m),o=0}}else o=2;while(!1);return j=o,k=M,j|0}function JA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;for(l=k,k=k+16|0,i=l,s=l+8|0,o=(ze(e,A)|0)==0,o=o?1:2;;){if(t[s>>2]=0,f=(Y(e,A,o,s,i)|0)==0,a=i,f&((t[a>>2]|0)==(r|0)?(t[a+4>>2]|0)==(n|0):0)){e=4;break}if(o=o+1|0,o>>>0>=7){o=7,e=4;break}}return(e|0)==4?(k=l,o|0):0}function ce(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;if(l=k,k=k+48|0,o=l+16|0,i=l+8|0,s=l,r=on(r)|0,r|0)return s=r,k=l,s|0;if(f=e,a=t[f+4>>2]|0,r=i,t[r>>2]=t[f>>2],t[r+4>>2]=a,ei(i,o),r=iA(o,A,s)|0,!r){if(A=t[i>>2]|0,i=t[e+8>>2]|0,(i|0)>0){o=t[e+12>>2]|0,r=0;do A=(t[o+(r<<3)>>2]|0)+A|0,r=r+1|0;while((r|0)<(i|0))}r=s,o=t[r>>2]|0,r=t[r+4>>2]|0,i=((A|0)<0)<<31>>31,(r|0)<(i|0)|(r|0)==(i|0)&o>>>0>>0?(r=s,t[r>>2]=A,t[r+4>>2]=i,r=i):A=o,a=WA(A|0,r|0,12,0)|0,f=S()|0,r=s,t[r>>2]=a,t[r+4>>2]=f,r=n,t[r>>2]=a,t[r+4>>2]=f,r=0}return f=r,k=l,f|0}function Ue(e,A,r,n,o,i,s){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0,s=s|0;var l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0,fe=0,he=0,Ce=0,ne=0,HA=0,SA=0,ye=0,We=0,de=0,Ye=0,_t=0,mi=0;if(We=k,k=k+64|0,ne=We+48|0,HA=We+32|0,SA=We+24|0,MA=We+8|0,zA=We,a=t[e>>2]|0,(a|0)<=0)return ye=0,k=We,ye|0;for(QA=e+4|0,fe=ne+8|0,he=HA+8|0,Ce=MA+8|0,l=0,$=0;;){f=t[QA>>2]|0,q=f+($<<4)|0,t[ne>>2]=t[q>>2],t[ne+4>>2]=t[q+4>>2],t[ne+8>>2]=t[q+8>>2],t[ne+12>>2]=t[q+12>>2],($|0)==(a+-1|0)?(t[HA>>2]=t[f>>2],t[HA+4>>2]=t[f+4>>2],t[HA+8>>2]=t[f+8>>2],t[HA+12>>2]=t[f+12>>2]):(q=f+($+1<<4)|0,t[HA>>2]=t[q>>2],t[HA+4>>2]=t[q+4>>2],t[HA+8>>2]=t[q+8>>2],t[HA+12>>2]=t[q+12>>2]),a=xA(ne,HA,n,SA)|0;A:do if(a)f=0,l=a;else if(a=SA,f=t[a>>2]|0,a=t[a+4>>2]|0,(a|0)>0|(a|0)==0&f>>>0>0){nA=0,q=0;e:for(;;){if(Ye=1/(+(f>>>0)+4294967296*+(a|0)),mi=+b[ne>>3],a=ut(f|0,a|0,nA|0,q|0)|0,_t=+(a>>>0)+4294967296*+(S()|0),de=+(nA>>>0)+4294967296*+(q|0),b[MA>>3]=Ye*(mi*_t)+Ye*(+b[HA>>3]*de),b[Ce>>3]=Ye*(+b[fe>>3]*_t)+Ye*(+b[he>>3]*de),a=$n(MA,n,zA)|0,a|0){l=a;break}W=zA,G=t[W>>2]|0,W=t[W+4>>2]|0,j=Ir(G|0,W|0,A|0,r|0)|0,m=S()|0,a=s+(j<<3)|0,M=a,f=t[M>>2]|0,M=t[M+4>>2]|0;t:do if((f|0)==0&(M|0)==0)U=a,ye=16;else for(I=0,L=0;;){if((I|0)>(r|0)|(I|0)==(r|0)&L>>>0>A>>>0){l=1;break e}if((f|0)==(G|0)&(M|0)==(W|0))break t;if(a=WA(j|0,m|0,1,0)|0,j=jr(a|0,S()|0,A|0,r|0)|0,m=S()|0,L=WA(L|0,I|0,1,0)|0,I=S()|0,a=s+(j<<3)|0,M=a,f=t[M>>2]|0,M=t[M+4>>2]|0,(f|0)==0&(M|0)==0){U=a,ye=16;break}}while(!1);if((ye|0)==16&&(ye=0,!((G|0)==0&(W|0)==0))&&(L=U,t[L>>2]=G,t[L+4>>2]=W,L=i+(t[o>>2]<<3)|0,t[L>>2]=G,t[L+4>>2]=W,L=o,L=WA(t[L>>2]|0,t[L+4>>2]|0,1,0)|0,G=S()|0,W=o,t[W>>2]=L,t[W+4>>2]=G),nA=WA(nA|0,q|0,1,0)|0,q=S()|0,a=SA,f=t[a>>2]|0,a=t[a+4>>2]|0,!((a|0)>(q|0)|(a|0)==(q|0)&f>>>0>nA>>>0)){f=1;break A}}f=0}else f=1;while(!1);if($=$+1|0,!f){ye=21;break}if(a=t[e>>2]|0,($|0)>=(a|0)){l=0,ye=21;break}}return(ye|0)==21?(k=We,l|0):0}function vt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0,fe=0,he=0,Ce=0,ne=0,HA=0,SA=0,ye=0,We=0,de=0,Ye=0,_t=0;if(_t=k,k=k+112|0,ye=_t+80|0,a=_t+72|0,We=_t,de=_t+56|0,o=on(r)|0,o|0)return Ye=o,k=_t,Ye|0;if(f=e+8|0,Ye=y0((t[f>>2]<<5)+32|0)|0,!Ye)return Ye=13,k=_t,Ye|0;if(ro(e,Ye),o=on(r)|0,!o){if(HA=e,SA=t[HA+4>>2]|0,o=a,t[o>>2]=t[HA>>2],t[o+4>>2]=SA,ei(a,ye),o=iA(ye,A,We)|0,o)HA=0,SA=0;else{if(o=t[a>>2]|0,i=t[f>>2]|0,(i|0)>0){s=t[e+12>>2]|0,r=0;do o=(t[s+(r<<3)>>2]|0)+o|0,r=r+1|0;while((r|0)!=(i|0));r=o}else r=o;o=We,i=t[o>>2]|0,o=t[o+4>>2]|0,s=((r|0)<0)<<31>>31,(o|0)<(s|0)|(o|0)==(s|0)&i>>>0>>0?(o=We,t[o>>2]=r,t[o+4>>2]=s,o=s):r=i,HA=WA(r|0,o|0,12,0)|0,SA=S()|0,o=We,t[o>>2]=HA,t[o+4>>2]=SA,o=0}if(!o){if(r=Ot(HA,8)|0,!r)return YA(Ye),Ye=13,k=_t,Ye|0;if(l=Ot(HA,8)|0,!l)return YA(Ye),YA(r),Ye=13,k=_t,Ye|0;Ce=ye,t[Ce>>2]=0,t[Ce+4>>2]=0,Ce=e,ne=t[Ce+4>>2]|0,o=a,t[o>>2]=t[Ce>>2],t[o+4>>2]=ne,o=Ue(a,HA,SA,A,ye,r,l)|0;A:do if(o)YA(r),YA(l),YA(Ye);else{e:do if((t[f>>2]|0)>0){for(s=e+12|0,i=0;o=Ue((t[s>>2]|0)+(i<<3)|0,HA,SA,A,ye,r,l)|0,i=i+1|0,!(o|0);)if((i|0)>=(t[f>>2]|0))break e;YA(r),YA(l),YA(Ye);break A}while(!1);(SA|0)>0|(SA|0)==0&HA>>>0>0&&K0(l|0,0,HA<<3|0)|0,ne=ye,Ce=t[ne+4>>2]|0;e:do if((Ce|0)>0|(Ce|0)==0&(t[ne>>2]|0)>>>0>0){QA=r,fe=l,he=r,Ce=l,ne=r,o=r,U=r,MA=l,zA=l,r=l;t:for(;;){for(W=0,nA=0,q=0,$=0,i=0,s=0;;){l=We,a=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));if(A=QA+(W<<3)|0,f=t[A>>2]|0,A=t[A+4>>2]|0,F(f,A,1,We,0)|0){l=We,a=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));l=Ot(7,4)|0,l|0&&(X(f,A,1,We,l,7,0,0)|0,YA(l))}for(G=0;;){L=We+(G<<3)|0,I=t[L>>2]|0,L=t[L+4>>2]|0;r:do if((I|0)==0&(L|0)==0)l=i,a=s;else{if(m=Ir(I|0,L|0,HA|0,SA|0)|0,f=S()|0,l=n+(m<<3)|0,A=l,a=t[A>>2]|0,A=t[A+4>>2]|0,!((a|0)==0&(A|0)==0)){M=0,j=0;do{if((M|0)>(SA|0)|(M|0)==(SA|0)&j>>>0>HA>>>0)break t;if((a|0)==(I|0)&(A|0)==(L|0)){l=i,a=s;break r}l=WA(m|0,f|0,1,0)|0,m=jr(l|0,S()|0,HA|0,SA|0)|0,f=S()|0,j=WA(j|0,M|0,1,0)|0,M=S()|0,l=n+(m<<3)|0,A=l,a=t[A>>2]|0,A=t[A+4>>2]|0}while(!((a|0)==0&(A|0)==0))}if((I|0)==0&(L|0)==0){l=i,a=s;break}ur(I,L,de)|0,no(e,Ye,de)|0&&(j=WA(i|0,s|0,1,0)|0,s=S()|0,M=l,t[M>>2]=I,t[M+4>>2]=L,i=fe+(i<<3)|0,t[i>>2]=I,t[i+4>>2]=L,i=j),l=i,a=s}while(!1);if(G=G+1|0,G>>>0>=7)break;i=l,s=a}if(W=WA(W|0,nA|0,1,0)|0,nA=S()|0,q=WA(q|0,$|0,1,0)|0,$=S()|0,s=ye,i=t[s>>2]|0,s=t[s+4>>2]|0,($|0)<(s|0)|($|0)==(s|0)&q>>>0>>0)i=l,s=a;else break}if((s|0)>0|(s|0)==0&i>>>0>0){i=0,s=0;do $=QA+(i<<3)|0,t[$>>2]=0,t[$+4>>2]=0,i=WA(i|0,s|0,1,0)|0,s=S()|0,$=ye,q=t[$+4>>2]|0;while((s|0)<(q|0)|((s|0)==(q|0)?i>>>0<(t[$>>2]|0)>>>0:0))}if($=ye,t[$>>2]=l,t[$+4>>2]=a,(a|0)>0|(a|0)==0&l>>>0>0)G=r,W=zA,nA=ne,q=MA,$=fe,r=U,zA=o,MA=he,U=G,o=W,ne=Ce,Ce=nA,he=q,fe=QA,QA=$;else break e}YA(he),YA(Ce),YA(Ye),o=1;break A}else o=l;while(!1);YA(Ye),YA(r),YA(o),o=0}while(!1);return Ye=o,k=_t,Ye|0}}return YA(Ye),Ye=o,k=_t,Ye|0}function kt(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(m=k,k=k+176|0,a=m,(A|0)<1)return si(r,0,0),f=0,k=m,f|0;for(l=e,l=vA(t[l>>2]|0,t[l+4>>2]|0,52)|0,S()|0,si(r,(A|0)>6?A:6,l&15),l=0;n=e+(l<<3)|0,n=Tr(t[n>>2]|0,t[n+4>>2]|0,a)|0,!(n|0);){if(n=t[a>>2]|0,(n|0)>0){s=0;do i=a+8+(s<<4)|0,s=s+1|0,n=a+8+(((s|0)%(n|0)|0)<<4)|0,o=Jl(r,n,i)|0,o?ui(r,o)|0:ql(r,i,n)|0,n=t[a>>2]|0;while((s|0)<(n|0))}if(l=l+1|0,(l|0)>=(A|0)){n=0,f=13;break}}return(f|0)==13?(k=m,n|0):(li(r),f=n,k=m,f|0)}function gt(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;if(i=k,k=k+32|0,n=i,o=i+16|0,e=kt(e,A,o)|0,e|0)return r=e,k=i,r|0;if(t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,e=ai(o)|0,e|0)do{A=Ml(r)|0;do Bl(A,e)|0,s=e+16|0,t[n>>2]=t[s>>2],t[n+4>>2]=t[s+4>>2],t[n+8>>2]=t[s+8>>2],t[n+12>>2]=t[s+12>>2],ui(o,e)|0,e=Xl(o,n)|0;while((e|0)!=0);e=ai(o)|0}while((e|0)!=0);return li(o),e=Dl(r)|0,e?(qo(r),s=e,k=i,s|0):(s=0,k=i,s|0)}function Te(e){return e=e|0,e>>>0>121?(e=0,e|0):(e=t[7696+(e*28|0)+16>>2]|0,e|0)}function bt(e){return e=e|0,(e|0)==4|(e|0)==117|0}function d0(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 l0(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 G0(e,A){e=e|0,A=A|0,e=7696+(e*28|0)|0,t[A>>2]=t[e>>2],t[A+4>>2]=t[e+4>>2],t[A+8>>2]=t[e+8>>2],t[A+12>>2]=t[e+12>>2]}function qt(e,A){e=e|0,A=A|0;var r=0,n=0;if(A>>>0>20)return A=-1,A|0;do if((t[11120+(A*216|0)>>2]|0)!=(e|0))if((t[11120+(A*216|0)+8>>2]|0)!=(e|0))if((t[11120+(A*216|0)+16>>2]|0)!=(e|0))if((t[11120+(A*216|0)+24>>2]|0)!=(e|0))if((t[11120+(A*216|0)+32>>2]|0)!=(e|0))if((t[11120+(A*216|0)+40>>2]|0)!=(e|0))if((t[11120+(A*216|0)+48>>2]|0)!=(e|0))if((t[11120+(A*216|0)+56>>2]|0)!=(e|0))if((t[11120+(A*216|0)+64>>2]|0)!=(e|0))if((t[11120+(A*216|0)+72>>2]|0)!=(e|0))if((t[11120+(A*216|0)+80>>2]|0)!=(e|0))if((t[11120+(A*216|0)+88>>2]|0)!=(e|0))if((t[11120+(A*216|0)+96>>2]|0)!=(e|0))if((t[11120+(A*216|0)+104>>2]|0)!=(e|0))if((t[11120+(A*216|0)+112>>2]|0)!=(e|0))if((t[11120+(A*216|0)+120>>2]|0)!=(e|0))if((t[11120+(A*216|0)+128>>2]|0)!=(e|0))if((t[11120+(A*216|0)+136>>2]|0)==(e|0))e=2,r=1,n=2;else{if((t[11120+(A*216|0)+144>>2]|0)==(e|0)){e=0,r=2,n=0;break}if((t[11120+(A*216|0)+152>>2]|0)==(e|0)){e=0,r=2,n=1;break}if((t[11120+(A*216|0)+160>>2]|0)==(e|0)){e=0,r=2,n=2;break}if((t[11120+(A*216|0)+168>>2]|0)==(e|0)){e=1,r=2,n=0;break}if((t[11120+(A*216|0)+176>>2]|0)==(e|0)){e=1,r=2,n=1;break}if((t[11120+(A*216|0)+184>>2]|0)==(e|0)){e=1,r=2,n=2;break}if((t[11120+(A*216|0)+192>>2]|0)==(e|0)){e=2,r=2,n=0;break}if((t[11120+(A*216|0)+200>>2]|0)==(e|0)){e=2,r=2,n=1;break}if((t[11120+(A*216|0)+208>>2]|0)==(e|0)){e=2,r=2,n=2;break}else e=-1;return e|0}else e=2,r=1,n=1;else e=2,r=1,n=0;else e=1,r=1,n=2;else e=1,r=1,n=1;else e=1,r=1,n=0;else e=0,r=1,n=2;else e=0,r=1,n=1;else e=0,r=1,n=0;else e=2,r=0,n=2;else e=2,r=0,n=1;else e=2,r=0,n=0;else e=1,r=0,n=2;else e=1,r=0,n=1;else e=1,r=0,n=0;else e=0,r=0,n=2;else e=0,r=0,n=1;else e=0,r=0,n=0;while(!1);return A=t[11120+(A*216|0)+(r*72|0)+(e*24|0)+(n<<3)+4>>2]|0,A|0}function M0(e,A){return e=e|0,A=A|0,(t[7696+(e*28|0)+20>>2]|0)==(A|0)?(A=1,A|0):(A=(t[7696+(e*28|0)+24>>2]|0)==(A|0),A|0)}function or(e,A){return e=e|0,A=A|0,t[848+(e*28|0)+(A<<2)>>2]|0}function ir(e,A){return e=e|0,A=A|0,(t[848+(e*28|0)>>2]|0)==(A|0)?(A=0,A|0):(t[848+(e*28|0)+4>>2]|0)==(A|0)?(A=1,A|0):(t[848+(e*28|0)+8>>2]|0)==(A|0)?(A=2,A|0):(t[848+(e*28|0)+12>>2]|0)==(A|0)?(A=3,A|0):(t[848+(e*28|0)+16>>2]|0)==(A|0)?(A=4,A|0):(t[848+(e*28|0)+20>>2]|0)==(A|0)?(A=5,A|0):((t[848+(e*28|0)+24>>2]|0)==(A|0)?6:7)|0}function vr(){return 122}function Wr(e){e=e|0;var A=0,r=0,n=0;A=0;do EA(A|0,0,45)|0,n=S()|0|134225919,r=e+(A<<3)|0,t[r>>2]=-1,t[r+4>>2]=n,A=A+1|0;while((A|0)!=122);return 0}function Yr(e){e=e|0;var A=0,r=0,n=0;return n=+b[e+16>>3],r=+b[e+24>>3],A=n-r,+(n>3]<+b[e+24>>3]|0}function sr(e){return e=e|0,+(+b[e>>3]-+b[e+8>>3])}function m0(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;return r=+b[A>>3],!(r>=+b[e+8>>3])||!(r<=+b[e>>3])?(A=0,A|0):(n=+b[e+16>>3],r=+b[e+24>>3],o=+b[A+8>>3],A=o>=r,e=o<=n&1,n>3]<+b[A+8>>3]||+b[e+8>>3]>+b[A>>3]?(n=0,n|0):(i=+b[e+16>>3],r=e+24|0,m=+b[r>>3],s=i>3],o=A+24|0,a=+b[o>>3],l=f>3],A)||(m=+Wt(+b[r>>3],e),m>+Wt(+b[n>>3],A))?(l=0,l|0):(l=1,l|0))}function g0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0;i=+b[e+16>>3],a=+b[e+24>>3],e=i>3],s=+b[A+24>>3],o=l>2]=e?o|A?1:2:0,t[n>>2]=o?e?1:A?2:1:0}function B0(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;return+b[e>>3]<+b[A>>3]||+b[e+8>>3]>+b[A+8>>3]?(n=0,n|0):(n=e+16|0,a=+b[n>>3],i=+b[e+24>>3],s=a>3],o=A+24|0,f=+b[o>>3],l=m>3],A)?(m=+Wt(+b[n>>3],e),l=m>=+Wt(+b[r>>3],A),l|0):(l=0,l|0))}function z(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0;o=k,k=k+176|0,n=o,t[n>>2]=4,l=+b[A>>3],b[n+8>>3]=l,i=+b[A+16>>3],b[n+16>>3]=i,b[n+24>>3]=l,l=+b[A+24>>3],b[n+32>>3]=l,s=+b[A+8>>3],b[n+40>>3]=s,b[n+48>>3]=l,b[n+56>>3]=s,b[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));Lr(e|0,n|0,168)|0,k=o}function iA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0;L=k,k=k+288|0,m=L+264|0,M=L+96|0,f=L,l=f,a=l+96|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));return A=Jn(A,f)|0,A|0?(I=A,k=L,I|0):(a=f,f=t[a>>2]|0,a=t[a+4>>2]|0,ur(f,a,m)|0,Tr(f,a,M)|0,s=+rn(m,M+8|0),b[m>>3]=+b[e>>3],a=m+8|0,b[a>>3]=+b[e+16>>3],b[M>>3]=+b[e+8>>3],f=M+8|0,b[f>>3]=+b[e+24>>3],o=+rn(m,M),W=+b[a>>3]-+b[f>>3],i=+KA(+W),G=+b[m>>3]-+b[M>>3],n=+KA(+G),!(W==0|G==0)&&(W=+hi(+i,+n),W=+mt(+(o*o/+Cn(+(W/+Cn(+i,+n)),3)/(s*(s*2.59807621135)*.8))),b[me>>3]=W,j=~~W>>>0,I=+KA(W)>=1?W>0?~~+At(+Oe(W/4294967296),4294967295)>>>0:~~+mt((W-+(~~W>>>0))/4294967296)>>>0:0,(t[me+4>>2]&2146435072|0)!=2146435072)?(M=(j|0)==0&(I|0)==0,A=r,t[A>>2]=M?1:j,t[A+4>>2]=M?0:I,A=0):A=1,I=A,k=L,I|0)}function xA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0;f=k,k=k+288|0,s=f+264|0,l=f+96|0,a=f,o=a,i=o+96|0;do t[o>>2]=0,o=o+4|0;while((o|0)<(i|0));return r=Jn(r,a)|0,r|0?(n=r,k=f,n|0):(r=a,o=t[r>>2]|0,r=t[r+4>>2]|0,ur(o,r,s)|0,Tr(o,r,l)|0,m=+rn(s,l+8|0),m=+mt(+(+rn(e,A)/(m*2))),b[me>>3]=m,r=~~m>>>0,o=+KA(m)>=1?m>0?~~+At(+Oe(m/4294967296),4294967295)>>>0:~~+mt((m-+(~~m>>>0))/4294967296)>>>0:0,(t[me+4>>2]&2146435072|0)==2146435072?(n=1,k=f,n|0):(a=(r|0)==0&(o|0)==0,t[n>>2]=a?1:r,t[n+4>>2]=a?0:o,n=0,k=f,n|0))}function LA(e,A){e=e|0,A=+A;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;i=e+16|0,s=+b[i>>3],r=e+24|0,o=+b[r>>3],n=s-o,n=s>3],l=e+8|0,a=+b[l>>3],m=f-a,n=(n*A-n)*.5,A=(m*A-m)*.5,f=f+A,b[e>>3]=f>1.5707963267948966?1.5707963267948966:f,A=a-A,b[l>>3]=A<-1.5707963267948966?-1.5707963267948966:A,A=s+n,A=A>3.141592653589793?A+-6.283185307179586:A,b[i>>3]=A<-3.141592653589793?A+6.283185307179586:A,A=o-n,A=A>3.141592653589793?A+-6.283185307179586:A,b[r>>3]=A<-3.141592653589793?A+6.283185307179586:A}function ie(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 Ee(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;M=A+8|0,t[M>>2]=0,a=+b[e>>3],s=+KA(+a),f=+b[e+8>>3],l=+KA(+f)*1.1547005383792515,s=s+l*.5,r=~~s,e=~~l,s=s-+(r|0),l=l-+(e|0);do if(s<.5)if(s<.3333333333333333)if(t[A>>2]=r,l<(s+1)*.5){t[A+4>>2]=e;break}else{e=e+1|0,t[A+4>>2]=e;break}else if(j=1-s,e=(!(l>2]=e,j<=l&l>2]=r;break}else{t[A>>2]=r;break}else{if(!(s<.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-s){if(t[A+4>>2]=e,s*2+-1>2]=r;break}}else e=e+1|0,t[A+4>>2]=e;r=r+1|0,t[A>>2]=r}while(!1);do if(a<0)if(e&1){m=(e+1|0)/2|0,m=ut(r|0,((r|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-((+(m>>>0)+4294967296*+(S()|0))*2+1)),t[A>>2]=r;break}else{m=(e|0)/2|0,m=ut(r|0,((r|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-(+(m>>>0)+4294967296*+(S()|0))*2),t[A>>2]=r;break}while(!1);m=A+4|0,f<0&&(r=r-((e<<1|1|0)/2|0)|0,t[A>>2]=r,e=0-e|0,t[m>>2]=e),n=e-r|0,(r|0)<0?(o=0-r|0,t[m>>2]=n,t[M>>2]=o,t[A>>2]=0,e=n,r=0):o=0,(e|0)<0&&(r=r-e|0,t[A>>2]=r,o=o-e|0,t[M>>2]=o,t[m>>2]=0,e=0),i=r-o|0,n=e-o|0,(o|0)<0&&(t[A>>2]=i,t[m>>2]=n,t[M>>2]=0,e=n,r=i,o=0),n=(e|0)<(r|0)?e:r,n=(o|0)<(n|0)?o:n,!((n|0)<=0)&&(t[A>>2]=r-n,t[m>>2]=e-n,t[M>>2]=o-n)}function je(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0;A=t[e>>2]|0,s=e+4|0,r=t[s>>2]|0,(A|0)<0&&(r=r-A|0,t[s>>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,o=(t[i>>2]|0)-r|0,t[i>>2]=o,t[s>>2]=0,r=0):(o=e+8|0,i=o,o=t[o>>2]|0),(o|0)<0&&(A=A-o|0,t[e>>2]=A,r=r-o|0,t[s>>2]=r,t[i>>2]=0,o=0),n=(r|0)<(A|0)?r:A,n=(o|0)<(n|0)?o:n,!((n|0)<=0)&&(t[e>>2]=A-n,t[s>>2]=r-n,t[i>>2]=o-n)}function Xe(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),b[A>>3]=+((t[e>>2]|0)-n|0)-r*.5,b[A+8>>3]=r*.8660254037844386}function Ze(e,A,r){e=e|0,A=A|0,r=r|0,t[r>>2]=(t[A>>2]|0)+(t[e>>2]|0),t[r+4>>2]=(t[A+4>>2]|0)+(t[e+4>>2]|0),t[r+8>>2]=(t[A+8>>2]|0)+(t[e+8>>2]|0)}function Pt(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 Ct(e,A){e=e|0,A=A|0;var r=0,n=0;r=Ne(t[e>>2]|0,A)|0,t[e>>2]=r,r=e+4|0,n=Ne(t[r>>2]|0,A)|0,t[r>>2]=n,e=e+8|0,A=Ne(t[e>>2]|0,A)|0,t[e>>2]=A}function tt(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;s=t[e>>2]|0,l=(s|0)<0,n=(t[e+4>>2]|0)-(l?s:0)|0,i=(n|0)<0,o=(i?0-n|0:0)+((t[e+8>>2]|0)-(l?s:0))|0,r=(o|0)<0,e=r?0:o,A=(i?0:n)-(r?o:0)|0,o=(l?0:s)-(i?n:0)-(r?o:0)|0,r=(A|0)<(o|0)?A:o,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(o-(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 Et(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0;if(a=e+8|0,s=t[a>>2]|0,l=(t[e>>2]|0)-s|0,f=e+4|0,s=(t[f>>2]|0)-s|0,l>>>0>715827881|s>>>0>715827881){if(n=(l|0)>0,o=2147483647-l|0,i=-2147483648-l|0,(n?(o|0)<(l|0):(i|0)>(l|0))||(r=l<<1,n?(2147483647-r|0)<(l|0):(-2147483648-r|0)>(l|0))||((s|0)>0?(2147483647-s|0)<(s|0):(-2147483648-s|0)>(s|0))||(A=l*3|0,r=s<<1,(n?(o|0)<(r|0):(i|0)>(r|0))||((l|0)>-1?(A|-2147483648|0)>=(s|0):(A^-2147483648|0)<(s|0))))return f=1,f|0}else r=s<<1,A=l*3|0;return n=W0(+(A-s|0)*.14285714285714285)|0,t[e>>2]=n,o=W0(+(r+l|0)*.14285714285714285)|0,t[f>>2]=o,t[a>>2]=0,r=(o|0)<(n|0),A=r?n:o,r=r?o: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=o-n|0,(n|0)<0?(r=0-n|0,t[f>>2]=A,t[a>>2]=r,t[e>>2]=0,n=0):(A=o,r=0),(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[a>>2]=r,t[f>>2]=0,A=0),i=n-r|0,o=A-r|0,(r|0)<0?(t[e>>2]=i,t[f>>2]=o,t[a>>2]=0,A=o,o=i,r=0):o=n,n=(A|0)<(o|0)?A:o,n=(r|0)<(n|0)?r:n,(n|0)<=0?(f=0,f|0):(t[e>>2]=o-n,t[f>>2]=A-n,t[a>>2]=r-n,f=0,f|0)}function mn(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(s=e+8|0,o=t[s>>2]|0,i=(t[e>>2]|0)-o|0,l=e+4|0,o=(t[l>>2]|0)-o|0,i>>>0>715827881|o>>>0>715827881){if(r=(i|0)>0,(r?(2147483647-i|0)<(i|0):(-2147483648-i|0)>(i|0))||(A=i<<1,n=(o|0)>0,n?(2147483647-o|0)<(o|0):(-2147483648-o|0)>(o|0)))return l=1,l|0;if(a=o<<1,(n?(2147483647-a|0)<(o|0):(-2147483648-a|0)>(o|0))||(r?(2147483647-A|0)<(o|0):(-2147483648-A|0)>(o|0))||(r=o*3|0,(o|0)>-1?(r|-2147483648|0)>=(i|0):(r^-2147483648|0)<(i|0)))return a=1,a|0}else r=o*3|0,A=i<<1;return n=W0(+(A+o|0)*.14285714285714285)|0,t[e>>2]=n,o=W0(+(r-i|0)*.14285714285714285)|0,t[l>>2]=o,t[s>>2]=0,r=(o|0)<(n|0),A=r?n:o,r=r?o: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=o-n|0,(n|0)<0?(r=0-n|0,t[l>>2]=A,t[s>>2]=r,t[e>>2]=0,n=0):(A=o,r=0),(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[s>>2]=r,t[l>>2]=0,A=0),i=n-r|0,o=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=o,t[s>>2]=0,A=o,o=i,r=0):o=n,n=(A|0)<(o|0)?A:o,n=(r|0)<(n|0)?r:n,(n|0)<=0?(a=0,a|0):(t[e>>2]=o-n,t[l>>2]=A-n,t[s>>2]=r-n,a=0,a|0)}function kr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;s=e+8|0,r=t[s>>2]|0,A=(t[e>>2]|0)-r|0,l=e+4|0,r=(t[l>>2]|0)-r|0,n=W0(+((A*3|0)-r|0)*.14285714285714285)|0,t[e>>2]=n,A=W0(+((r<<1)+A|0)*.14285714285714285)|0,t[l>>2]=A,t[s>>2]=0,r=A-n|0,(n|0)<0?(i=0-n|0,t[l>>2]=r,t[s>>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[s>>2]=r,t[l>>2]=0,A=0),i=n-r|0,o=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=o,t[s>>2]=0,A=o,o=i,r=0):o=n,n=(A|0)<(o|0)?A:o,n=(r|0)<(n|0)?r:n,!((n|0)<=0)&&(t[e>>2]=o-n,t[l>>2]=A-n,t[s>>2]=r-n)}function br(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;s=e+8|0,r=t[s>>2]|0,A=(t[e>>2]|0)-r|0,l=e+4|0,r=(t[l>>2]|0)-r|0,n=W0(+((A<<1)+r|0)*.14285714285714285)|0,t[e>>2]=n,A=W0(+((r*3|0)-A|0)*.14285714285714285)|0,t[l>>2]=A,t[s>>2]=0,r=A-n|0,(n|0)<0?(i=0-n|0,t[l>>2]=r,t[s>>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[s>>2]=r,t[l>>2]=0,A=0),i=n-r|0,o=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=o,t[s>>2]=0,A=o,o=i,r=0):o=n,n=(A|0)<(o|0)?A:o,n=(r|0)<(n|0)?r:n,!((n|0)<=0)&&(t[e>>2]=o-n,t[l>>2]=A-n,t[s>>2]=r-n)}function Cr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;A=t[e>>2]|0,s=e+4|0,r=t[s>>2]|0,l=e+8|0,n=t[l>>2]|0,o=r+(A*3|0)|0,t[e>>2]=o,r=n+(r*3|0)|0,t[s>>2]=r,A=(n*3|0)+A|0,t[l>>2]=A,n=r-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=n,t[l>>2]=A,t[e>>2]=0,r=n,n=0):n=o,(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=o,t[l>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[s>>2]=o-r,t[l>>2]=A-r)}function Gt(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;o=t[e>>2]|0,s=e+4|0,A=t[s>>2]|0,l=e+8|0,r=t[l>>2]|0,n=(A*3|0)+o|0,o=r+(o*3|0)|0,t[e>>2]=o,t[s>>2]=n,A=(r*3|0)+A|0,t[l>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=r,t[l>>2]=A,t[e>>2]=0,o=0):r=n,(r|0)<0&&(o=o-r|0,t[e>>2]=o,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=o-A|0,n=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=n,t[l>>2]=0,o=i,A=0):n=r,r=(n|0)<(o|0)?n:o,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=o-r,t[s>>2]=n-r,t[l>>2]=A-r)}function gn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0;(A+-1|0)>>>0>=6||(o=(t[15440+(A*12|0)>>2]|0)+(t[e>>2]|0)|0,t[e>>2]=o,l=e+4|0,n=(t[15440+(A*12|0)+4>>2]|0)+(t[l>>2]|0)|0,t[l>>2]=n,s=e+8|0,A=(t[15440+(A*12|0)+8>>2]|0)+(t[s>>2]|0)|0,t[s>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[l>>2]=r,t[s>>2]=A,t[e>>2]=0,n=0):(r=n,n=o),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[s>>2]=A,t[l>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[l>>2]=o,t[s>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[l>>2]=o-r,t[s>>2]=A-r))}function Er(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;o=t[e>>2]|0,s=e+4|0,A=t[s>>2]|0,l=e+8|0,r=t[l>>2]|0,n=A+o|0,o=r+o|0,t[e>>2]=o,t[s>>2]=n,A=r+A|0,t[l>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=r,t[l>>2]=A,t[e>>2]=0,n=0):(r=n,n=o),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=o,t[l>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[s>>2]=o-r,t[l>>2]=A-r)}function D0(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;A=t[e>>2]|0,s=e+4|0,n=t[s>>2]|0,l=e+8|0,r=t[l>>2]|0,o=n+A|0,t[e>>2]=o,n=r+n|0,t[s>>2]=n,A=r+A|0,t[l>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=r,t[l>>2]=A,t[e>>2]=0,n=0):(r=n,n=o),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=o,t[l>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[s>>2]=o-r,t[l>>2]=A-r)}function Ut(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 Vt(e){switch(e=e|0,e|0){case 1:{e=3;break}case 3:{e=2;break}case 2:{e=6;break}case 6:{e=4;break}case 4:{e=5;break}case 5:{e=1;break}}return e|0}function Kr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;A=t[e>>2]|0,s=e+4|0,r=t[s>>2]|0,l=e+8|0,n=t[l>>2]|0,o=r+(A<<1)|0,t[e>>2]=o,r=n+(r<<1)|0,t[s>>2]=r,A=(n<<1)+A|0,t[l>>2]=A,n=r-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=n,t[l>>2]=A,t[e>>2]=0,r=n,n=0):n=o,(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=o,t[l>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[s>>2]=o-r,t[l>>2]=A-r)}function Zr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;o=t[e>>2]|0,s=e+4|0,A=t[s>>2]|0,l=e+8|0,r=t[l>>2]|0,n=(A<<1)+o|0,o=r+(o<<1)|0,t[e>>2]=o,t[s>>2]=n,A=(r<<1)+A|0,t[l>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=r,t[l>>2]=A,t[e>>2]=0,o=0):r=n,(r|0)<0&&(o=o-r|0,t[e>>2]=o,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=o-A|0,n=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=n,t[l>>2]=0,o=i,A=0):n=r,r=(n|0)<(o|0)?n:o,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=o-r,t[s>>2]=n-r,t[l>>2]=A-r)}function Sr(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0;return s=(t[e>>2]|0)-(t[A>>2]|0)|0,l=(s|0)<0,n=(t[e+4>>2]|0)-(t[A+4>>2]|0)-(l?s:0)|0,i=(n|0)<0,o=(l?0-s|0:0)+(t[e+8>>2]|0)-(t[A+8>>2]|0)+(i?0-n|0:0)|0,e=(o|0)<0,A=e?0:o,r=(i?0:n)-(e?o:0)|0,o=(l?0:s)-(i?n:0)-(e?o:0)|0,e=(r|0)<(o|0)?r:o,e=(A|0)<(e|0)?A:e,n=(e|0)>0,A=A-(n?e:0)|0,r=r-(n?e:0)|0,e=o-(n?e:0)|0,e=(e|0)>-1?e:0-e|0,r=(r|0)>-1?r:0-r|0,A=(A|0)>-1?A:0-A|0,A=(r|0)>(A|0)?r:A,((e|0)>(A|0)?e:A)|0}function $r(e,A){e=e|0,A=A|0;var r=0;r=t[e+8>>2]|0,t[A>>2]=(t[e>>2]|0)-r,t[A+4>>2]=(t[e+4>>2]|0)-r}function St(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0;return n=t[e>>2]|0,t[A>>2]=n,o=t[e+4>>2]|0,s=A+4|0,t[s>>2]=o,l=A+8|0,t[l>>2]=0,r=(o|0)<(n|0),e=r?n:o,r=r?o: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=o-n|0,(n|0)<0?(r=0-n|0,t[s>>2]=e,t[l>>2]=r,t[A>>2]=0,n=0):(e=o,r=0),(e|0)<0&&(n=n-e|0,t[A>>2]=n,r=r-e|0,t[l>>2]=r,t[s>>2]=0,e=0),i=n-r|0,o=e-r|0,(r|0)<0?(t[A>>2]=i,t[s>>2]=o,t[l>>2]=0,e=o,o=i,r=0):o=n,n=(e|0)<(o|0)?e:o,n=(r|0)<(n|0)?r:n,(n|0)<=0?(A=0,A|0):(t[A>>2]=o-n,t[s>>2]=e-n,t[l>>2]=r-n,A=0,A|0))}function qr(e){e=e|0;var A=0,r=0,n=0,o=0;A=e+8|0,o=t[A>>2]|0,r=o-(t[e>>2]|0)|0,t[e>>2]=r,n=e+4|0,e=(t[n>>2]|0)-o|0,t[n>>2]=e,t[A>>2]=0-(e+r)}function Jr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;r=t[e>>2]|0,A=0-r|0,t[e>>2]=A,s=e+8|0,t[s>>2]=0,l=e+4|0,n=t[l>>2]|0,o=n+r|0,(r|0)>0?(t[l>>2]=o,t[s>>2]=r,t[e>>2]=0,A=0,n=o):r=0,(n|0)<0?(i=A-n|0,t[e>>2]=i,r=r-n|0,t[s>>2]=r,t[l>>2]=0,o=i-r|0,A=0-r|0,(r|0)<0?(t[e>>2]=o,t[l>>2]=A,t[s>>2]=0,n=A,r=0):(n=0,o=i)):o=A,A=(n|0)<(o|0)?n:o,A=(r|0)<(A|0)?r:A,!((A|0)<=0)&&(t[e>>2]=o-A,t[l>>2]=n-A,t[s>>2]=r-A)}function Yn(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0;if(M=k,k=k+64|0,m=M,l=M+56|0,!(!0&(A&2013265920|0)==134217728&(!0&(n&2013265920|0)==134217728)))return o=5,k=M,o|0;if((e|0)==(r|0)&(A|0)==(n|0))return t[o>>2]=0,o=0,k=M,o|0;if(s=vA(e|0,A|0,52)|0,S()|0,s=s&15,f=vA(r|0,n|0,52)|0,S()|0,(s|0)!=(f&15|0))return o=12,k=M,o|0;if(i=s+-1|0,s>>>0>1){Dt(e,A,i,m)|0,Dt(r,n,i,l)|0,f=m,a=t[f>>2]|0,f=t[f+4>>2]|0;A:do if((a|0)==(t[l>>2]|0)&&(f|0)==(t[l+4>>2]|0)){s=(s^15)*3|0,i=vA(e|0,A|0,s|0)|0,S()|0,i=i&7,s=vA(r|0,n|0,s|0)|0,S()|0,s=s&7;do if((i|0)==0|(s|0)==0)t[o>>2]=1,i=0;else if((i|0)==7)i=5;else{if((i|0)==1|(s|0)==1&&ze(a,f)|0){i=5;break}if((t[15536+(i<<2)>>2]|0)!=(s|0)&&(t[15568+(i<<2)>>2]|0)!=(s|0))break A;t[o>>2]=1,i=0}while(!1);return o=i,k=M,o|0}while(!1)}i=m,s=i+56|0;do t[i>>2]=0,i=i+4|0;while((i|0)<(s|0));return v(e,A,1,m)|0,A=m,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0))&&(A=m+8|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+16|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+24|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+32|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+40|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))?(i=m+48|0,i=((t[i>>2]|0)==(r|0)?(t[i+4>>2]|0)==(n|0):0)&1):i=1,t[o>>2]=i,o=0,k=M,o|0}function pn(e,A,r,n,o){return e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,r=JA(e,A,r,n)|0,(r|0)==7?(o=11,o|0):(n=EA(r|0,0,56)|0,A=A&-2130706433|(S()|0)|268435456,t[o>>2]=e|n,t[o+4>>2]=A,o=0,o|0)}function Mr(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 yn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;return o=k,k=k+16|0,n=o,t[n>>2]=0,!0&(A&2013265920|0)==268435456?(i=vA(e|0,A|0,56)|0,S()|0,n=Y(e,A&-2130706433|134217728,i&7,n,r)|0,k=o,n|0):(n=6,k=o,n|0)}function Xr(e,A){e=e|0,A=A|0;var r=0;switch(r=vA(e|0,A|0,56)|0,S()|0,r&7){case 0:case 7:return r=0,r|0}return r=A&-2130706433|134217728,!(!0&(A&2013265920|0)==268435456)||!0&(A&117440512|0)==16777216&(ze(e,r)|0)!=0?(r=0,r|0):(r=Ve(e,r)|0,r|0)}function Br(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;return o=k,k=k+16|0,n=o,!0&(A&2013265920|0)==268435456?(i=A&-2130706433|134217728,s=r,t[s>>2]=e,t[s+4>>2]=i,t[n>>2]=0,A=vA(e|0,A|0,56)|0,S()|0,n=Y(e,i,A&7,n,r+8|0)|0,k=o,n|0):(n=6,k=o,n|0)}function Dr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;return o=(ze(e,A)|0)==0,A=A&-2130706433,n=r,t[n>>2]=o?e:0,t[n+4>>2]=o?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 lr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;return s=k,k=k+16|0,o=s,i=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(n=vA(e|0,A|0,56)|0,S()|0,n=Kl(e,i,n&7)|0,(n|0)==-1?(t[r>>2]=0,i=6,k=s,i|0):(_r(e,i,o)|0&&OA(27795,26932,282,26947),A=vA(e|0,A|0,52)|0,S()|0,A=A&15,ze(e,i)|0?w(o,A,n,2,r):AA(o,A,n,2,r),i=0,k=s,i|0)):(i=6,k=s,i|0)}function xn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;n=k,k=k+16|0,o=n,wn(e,A,r,o),Ee(o,r+4|0),k=n}function wn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0;if(l=k,k=k+16|0,a=l,An(e,r,a),i=+Lt(+(1-+b[a>>3]*.5)),i<1e-16){t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,t[n+12>>2]=0,k=l;return}if(a=t[r>>2]|0,o=+b[15920+(a*24|0)>>3],o=+tn(o-+tn(+pl(15600+(a<<4)|0,e))),Jt(A)|0?s=+tn(o+-.3334731722518321):s=o,o=+et(+i)*2.618033988749896,(A|0)>0){e=0;do o=o*2.6457513110645907,e=e+1|0;while((e|0)!=(A|0))}i=+Be(+s)*o,b[n>>3]=i,s=+oe(+s)*o,b[n+8>>3]=s,k=l}function An(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if(i=k,k=k+32|0,o=i,Yl(e,o),t[A>>2]=0,b[r>>3]=5,n=+it(16400,o),n<+b[r>>3]&&(t[A>>2]=0,b[r>>3]=n),n=+it(16424,o),n<+b[r>>3]&&(t[A>>2]=1,b[r>>3]=n),n=+it(16448,o),n<+b[r>>3]&&(t[A>>2]=2,b[r>>3]=n),n=+it(16472,o),n<+b[r>>3]&&(t[A>>2]=3,b[r>>3]=n),n=+it(16496,o),n<+b[r>>3]&&(t[A>>2]=4,b[r>>3]=n),n=+it(16520,o),n<+b[r>>3]&&(t[A>>2]=5,b[r>>3]=n),n=+it(16544,o),n<+b[r>>3]&&(t[A>>2]=6,b[r>>3]=n),n=+it(16568,o),n<+b[r>>3]&&(t[A>>2]=7,b[r>>3]=n),n=+it(16592,o),n<+b[r>>3]&&(t[A>>2]=8,b[r>>3]=n),n=+it(16616,o),n<+b[r>>3]&&(t[A>>2]=9,b[r>>3]=n),n=+it(16640,o),n<+b[r>>3]&&(t[A>>2]=10,b[r>>3]=n),n=+it(16664,o),n<+b[r>>3]&&(t[A>>2]=11,b[r>>3]=n),n=+it(16688,o),n<+b[r>>3]&&(t[A>>2]=12,b[r>>3]=n),n=+it(16712,o),n<+b[r>>3]&&(t[A>>2]=13,b[r>>3]=n),n=+it(16736,o),n<+b[r>>3]&&(t[A>>2]=14,b[r>>3]=n),n=+it(16760,o),n<+b[r>>3]&&(t[A>>2]=15,b[r>>3]=n),n=+it(16784,o),n<+b[r>>3]&&(t[A>>2]=16,b[r>>3]=n),n=+it(16808,o),n<+b[r>>3]&&(t[A>>2]=17,b[r>>3]=n),n=+it(16832,o),n<+b[r>>3]&&(t[A>>2]=18,b[r>>3]=n),n=+it(16856,o),!(n<+b[r>>3])){k=i;return}t[A>>2]=19,b[r>>3]=n,k=i}function U0(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0;if(i=+Wl(e),i<1e-16){A=15600+(A<<4)|0,t[o>>2]=t[A>>2],t[o+4>>2]=t[A+4>>2],t[o+8>>2]=t[A+8>>2],t[o+12>>2]=t[A+12>>2];return}if(s=+_e(+ +b[e+8>>3],+ +b[e>>3]),(r|0)>0){e=0;do i=i*.37796447300922725,e=e+1|0;while((e|0)!=(r|0))}l=i*.3333333333333333,n?(r=(Jt(r)|0)==0,i=+dt(+((r?l:l*.37796447300922725)*.381966011250105))):(i=+dt(+(i*.381966011250105)),Jt(r)|0&&(s=+tn(s+.3334731722518321))),yl(15600+(A<<4)|0,+tn(+b[15920+(A*24|0)>>3]-s),i,o)}function d(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;n=k,k=k+16|0,o=n,Xe(e+4|0,o),U0(o,t[e>>2]|0,A,0,r),k=n}function w(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0,fe=0,he=0,Ce=0,ne=0,HA=0,SA=0,ye=0,We=0,de=0;if(ye=k,k=k+272|0,i=ye+256|0,q=ye+240|0,ne=ye,HA=ye+224|0,SA=ye+208|0,$=ye+176|0,U=ye+160|0,MA=ye+192|0,zA=ye+144|0,QA=ye+128|0,fe=ye+112|0,he=ye+96|0,Ce=ye+80|0,t[i>>2]=A,t[q>>2]=t[e>>2],t[q+4>>2]=t[e+4>>2],t[q+8>>2]=t[e+8>>2],t[q+12>>2]=t[e+12>>2],B(q,i,ne),t[o>>2]=0,q=n+r+((n|0)==5&1)|0,(q|0)<=(r|0)){k=ye;return}a=t[i>>2]|0,f=HA+4|0,m=$+4|0,M=r+5|0,j=16880+(a<<2)|0,I=16960+(a<<2)|0,L=QA+8|0,G=fe+8|0,W=he+8|0,nA=SA+4|0,l=r;A:for(;;){s=ne+(((l|0)%5|0)<<4)|0,t[SA>>2]=t[s>>2],t[SA+4>>2]=t[s+4>>2],t[SA+8>>2]=t[s+8>>2],t[SA+12>>2]=t[s+12>>2];do;while((N(SA,a,0,1)|0)==2);if((l|0)>(r|0)&(Jt(A)|0)!=0){if(t[$>>2]=t[SA>>2],t[$+4>>2]=t[SA+4>>2],t[$+8>>2]=t[SA+8>>2],t[$+12>>2]=t[SA+12>>2],Xe(f,U),n=t[$>>2]|0,i=t[17040+(n*80|0)+(t[HA>>2]<<2)>>2]|0,t[$>>2]=t[18640+(n*80|0)+(i*20|0)>>2],s=t[18640+(n*80|0)+(i*20|0)+16>>2]|0,(s|0)>0){e=0;do Er(m),e=e+1|0;while((e|0)<(s|0))}switch(s=18640+(n*80|0)+(i*20|0)+4|0,t[MA>>2]=t[s>>2],t[MA+4>>2]=t[s+4>>2],t[MA+8>>2]=t[s+8>>2],Ct(MA,(t[j>>2]|0)*3|0),Ze(m,MA,m),je(m),Xe(m,zA),We=+(t[I>>2]|0),b[QA>>3]=We*3,b[L>>3]=0,de=We*-1.5,b[fe>>3]=de,b[G>>3]=We*2.598076211353316,b[he>>3]=de,b[W>>3]=We*-2.598076211353316,t[17040+((t[$>>2]|0)*80|0)+(t[SA>>2]<<2)>>2]|0){case 1:{e=fe,n=QA;break}case 3:{e=he,n=fe;break}case 2:{e=QA,n=he;break}default:{e=12;break A}}ni(U,zA,n,e,Ce),U0(Ce,t[$>>2]|0,a,1,o+8+(t[o>>2]<<4)|0),t[o>>2]=(t[o>>2]|0)+1}if((l|0)<(M|0)&&(Xe(nA,$),U0($,t[SA>>2]|0,a,1,o+8+(t[o>>2]<<4)|0),t[o>>2]=(t[o>>2]|0)+1),t[HA>>2]=t[SA>>2],t[HA+4>>2]=t[SA+4>>2],t[HA+8>>2]=t[SA+8>>2],t[HA+12>>2]=t[SA+12>>2],l=l+1|0,(l|0)>=(q|0)){e=3;break}}if((e|0)==3){k=ye;return}else(e|0)==12&&OA(26970,27017,572,27027)}function B(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0;a=k,k=k+128|0,n=a+64|0,o=a,i=n,s=20240,l=i+60|0;do t[i>>2]=t[s>>2],i=i+4|0,s=s+4|0;while((i|0)<(l|0));i=o,s=20304,l=i+60|0;do t[i>>2]=t[s>>2],i=i+4|0,s=s+4|0;while((i|0)<(l|0));l=(Jt(t[A>>2]|0)|0)==0,n=l?n:o,o=e+4|0,Kr(o),Zr(o),Jt(t[A>>2]|0)|0&&(Gt(o),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,Ze(o,n,A),je(A),t[r+16>>2]=t[e>>2],A=r+20|0,Ze(o,n+12|0,A),je(A),t[r+32>>2]=t[e>>2],A=r+36|0,Ze(o,n+24|0,A),je(A),t[r+48>>2]=t[e>>2],A=r+52|0,Ze(o,n+36|0,A),je(A),t[r+64>>2]=t[e>>2],r=r+68|0,Ze(o,n+48|0,r),je(r),k=a}function N(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0;if(L=k,k=k+32|0,j=L+12|0,l=L,I=e+4|0,M=t[16960+(A<<2)>>2]|0,m=(n|0)!=0,M=m?M*3|0:M,o=t[I>>2]|0,f=e+8|0,s=t[f>>2]|0,m){if(i=e+12|0,n=t[i>>2]|0,o=s+o+n|0,(o|0)==(M|0))return I=1,k=L,I|0;a=i}else a=e+12|0,n=t[a>>2]|0,o=s+o+n|0;if((o|0)<=(M|0))return I=0,k=L,I|0;do if((n|0)>0){if(n=t[e>>2]|0,(s|0)>0){i=18640+(n*80|0)+60|0,n=e;break}n=18640+(n*80|0)+40|0,r?(ie(j,M,0,0),Pt(I,j,l),D0(l),Ze(l,j,I),i=n,n=e):(i=n,n=e)}else i=18640+((t[e>>2]|0)*80|0)+20|0,n=e;while(!1);if(t[n>>2]=t[i>>2],o=i+16|0,(t[o>>2]|0)>0){n=0;do Er(I),n=n+1|0;while((n|0)<(t[o>>2]|0))}return e=i+4|0,t[j>>2]=t[e>>2],t[j+4>>2]=t[e+4>>2],t[j+8>>2]=t[e+8>>2],A=t[16880+(A<<2)>>2]|0,Ct(j,m?A*3|0:A),Ze(I,j,I),je(I),m?n=((t[f>>2]|0)+(t[I>>2]|0)+(t[a>>2]|0)|0)==(M|0)?1:2:n=2,I=n,k=L,I|0}function tA(e,A){e=e|0,A=A|0;var r=0;do r=N(e,A,0,1)|0;while((r|0)==2);return r|0}function AA(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0,fe=0,he=0,Ce=0,ne=0;if(he=k,k=k+240|0,i=he+224|0,MA=he+208|0,zA=he,QA=he+192|0,fe=he+176|0,W=he+160|0,nA=he+144|0,q=he+128|0,$=he+112|0,U=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],gA(MA,i,zA),t[o>>2]=0,G=n+r+((n|0)==6&1)|0,(G|0)<=(r|0)){k=he;return}a=t[i>>2]|0,f=r+6|0,m=16960+(a<<2)|0,M=nA+8|0,j=q+8|0,I=$+8|0,L=QA+4|0,s=0,l=r,n=-1;A:for(;;){if(i=(l|0)%6|0,e=zA+(i<<4)|0,t[QA>>2]=t[e>>2],t[QA+4>>2]=t[e+4>>2],t[QA+8>>2]=t[e+8>>2],t[QA+12>>2]=t[e+12>>2],e=s,s=N(QA,a,0,1)|0,(l|0)>(r|0)&(Jt(A)|0)!=0&&(e|0)!=1&&(t[QA>>2]|0)!=(n|0)){switch(Xe(zA+(((i+5|0)%6|0)<<4)+4|0,fe),Xe(zA+(i<<4)+4|0,W),Ce=+(t[m>>2]|0),b[nA>>3]=Ce*3,b[M>>3]=0,ne=Ce*-1.5,b[q>>3]=ne,b[j>>3]=Ce*2.598076211353316,b[$>>3]=ne,b[I>>3]=Ce*-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=q,n=nA;break}case 3:{e=$,n=q;break}case 2:{e=nA,n=$;break}default:{e=8;break A}}ni(fe,W,n,e,U),!(oi(fe,U)|0)&&!(oi(W,U)|0)&&(U0(U,t[MA>>2]|0,a,1,o+8+(t[o>>2]<<4)|0),t[o>>2]=(t[o>>2]|0)+1)}if((l|0)<(f|0)&&(Xe(L,fe),U0(fe,t[QA>>2]|0,a,1,o+8+(t[o>>2]<<4)|0),t[o>>2]=(t[o>>2]|0)+1),l=l+1|0,(l|0)>=(G|0)){e=3;break}else n=t[QA>>2]|0}if((e|0)==3){k=he;return}else(e|0)==8&&OA(27054,27017,737,27099)}function gA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0;a=k,k=k+160|0,n=a+80|0,o=a,i=n,s=20368,l=i+72|0;do t[i>>2]=t[s>>2],i=i+4|0,s=s+4|0;while((i|0)<(l|0));i=o,s=20448,l=i+72|0;do t[i>>2]=t[s>>2],i=i+4|0,s=s+4|0;while((i|0)<(l|0));l=(Jt(t[A>>2]|0)|0)==0,n=l?n:o,o=e+4|0,Kr(o),Zr(o),Jt(t[A>>2]|0)|0&&(Gt(o),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,Ze(o,n,A),je(A),t[r+16>>2]=t[e>>2],A=r+20|0,Ze(o,n+12|0,A),je(A),t[r+32>>2]=t[e>>2],A=r+36|0,Ze(o,n+24|0,A),je(A),t[r+48>>2]=t[e>>2],A=r+52|0,Ze(o,n+36|0,A),je(A),t[r+64>>2]=t[e>>2],A=r+68|0,Ze(o,n+48|0,A),je(A),t[r+80>>2]=t[e>>2],r=r+84|0,Ze(o,n+60|0,r),je(r),k=a}function DA(e,A){return e=e|0,A=A|0,A=vA(e|0,A|0,52)|0,S()|0,A&15|0}function te(e,A){return e=e|0,A=A|0,A=vA(e|0,A|0,45)|0,S()|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=vA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,t[n>>2]=r&7,n=0,n|0)}function pe(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;if(e>>>0>15)return n=4,n|0;if(A>>>0>121)return n=17,n|0;s=EA(e|0,0,52)|0,o=S()|0,l=EA(A|0,0,45)|0,o=o|(S()|0)|134225919;A:do if((e|0)>=1){for(l=1,s=(wA[20528+A>>0]|0)!=0,i=-1;;){if(A=t[r+(l+-1<<2)>>2]|0,A>>>0>6){o=18,A=10;break}if(!((A|0)==0|s^1))if((A|0)==1){o=19,A=10;break}else s=0;if(f=(15-l|0)*3|0,a=EA(7,0,f|0)|0,o=o&~(S()|0),A=EA(A|0,((A|0)<0)<<31>>31|0,f|0)|0,i=A|i&~a,o=S()|0|o,(l|0)<(e|0))l=l+1|0;else break A}if((A|0)==10)return o|0}else i=-1;while(!1);return f=n,t[f>>2]=i,t[f+4>>2]=o,f=0,f|0}function Ve(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;return!(!0&(A&-16777216|0)==134217728)||(n=vA(e|0,A|0,52)|0,S()|0,n=n&15,r=vA(e|0,A|0,45)|0,S()|0,r=r&127,r>>>0>121)?(e=0,e|0):(s=(n^15)*3|0,o=vA(e|0,A|0,s|0)|0,s=EA(o|0,S()|0,s|0)|0,o=S()|0,i=ut(-1227133514,-1171,s|0,o|0)|0,!((s&613566756&i|0)==0&(o&4681&(S()|0)|0)==0)||(s=(n*3|0)+19|0,i=EA(~e|0,~A|0,s|0)|0,s=vA(i|0,S()|0,s|0)|0,!((n|0)==15|(s|0)==0&(S()|0)==0))?(s=0,s|0):!(wA[20528+r>>0]|0)||(A=A&8191,(e|0)==0&(A|0)==0)?(s=1,s|0):(s=io(e|0,A|0)|0,S()|0,((63-s|0)%3|0|0)!=0|0))}function Mt(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;return!0&(A&-16777216|0)==134217728&&(n=vA(e|0,A|0,52)|0,S()|0,n=n&15,r=vA(e|0,A|0,45)|0,S()|0,r=r&127,r>>>0<=121)&&(s=(n^15)*3|0,o=vA(e|0,A|0,s|0)|0,s=EA(o|0,S()|0,s|0)|0,o=S()|0,i=ut(-1227133514,-1171,s|0,o|0)|0,(s&613566756&i|0)==0&(o&4681&(S()|0)|0)==0)&&(s=(n*3|0)+19|0,i=EA(~e|0,~A|0,s|0)|0,s=vA(i|0,S()|0,s|0)|0,(n|0)==15|(s|0)==0&(S()|0)==0)&&(!(wA[20528+r>>0]|0)||(r=A&8191,(e|0)==0&(r|0)==0)||(s=io(e|0,r|0)|0,S()|0,(63-s|0)%3|0|0))||Xr(e,A)|0?(s=1,s|0):(s=(ii(e,A)|0)!=0&1,s|0)}function Bt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0;if(o=EA(A|0,0,52)|0,i=S()|0,r=EA(r|0,0,45)|0,r=i|(S()|0)|134225919,(A|0)<1){i=-1,n=r,A=e,t[A>>2]=i,e=e+4|0,t[e>>2]=n;return}for(i=1,o=-1;s=(15-i|0)*3|0,l=EA(7,0,s|0)|0,r=r&~(S()|0),s=EA(n|0,0,s|0)|0,o=o&~l|s,r=r|(S()|0),(i|0)!=(A|0);)i=i+1|0;l=e,s=l,t[s>>2]=o,l=l+4|0,t[l>>2]=r}function Dt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0;if(i=vA(e|0,A|0,52)|0,S()|0,i=i&15,r>>>0>15)return n=4,n|0;if((i|0)<(r|0))return n=12,n|0;if((i|0)==(r|0))return t[n>>2]=e,t[n+4>>2]=A,n=0,n|0;if(o=EA(r|0,0,52)|0,o=o|e,e=S()|0|A&-15728641,(i|0)>(r|0))do A=EA(7,0,(14-r|0)*3|0)|0,r=r+1|0,o=A|o,e=S()|0|e;while((r|0)<(i|0));return t[n>>2]=o,t[n+4>>2]=e,n=0,n|0}function p0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0;if(i=vA(e|0,A|0,52)|0,S()|0,i=i&15,!((r|0)<16&(i|0)<=(r|0)))return n=4,n|0;o=r-i|0,r=vA(e|0,A|0,45)|0,S()|0;A:do if(!(Te(r&127)|0))r=V0(7,0,o,((o|0)<0)<<31>>31)|0,o=S()|0;else{e:do if(i|0){for(r=1;s=EA(7,0,(15-r|0)*3|0)|0,!!((s&e|0)==0&((S()|0)&A|0)==0);)if(r>>>0>>0)r=r+1|0;else break e;r=V0(7,0,o,((o|0)<0)<<31>>31)|0,o=S()|0;break A}while(!1);r=V0(7,0,o,((o|0)<0)<<31>>31)|0,r=ct(r|0,S()|0,5,0)|0,r=WA(r|0,S()|0,-5,-1)|0,r=Y0(r|0,S()|0,6,0)|0,r=WA(r|0,S()|0,1,0)|0,o=S()|0}while(!1);return s=n,t[s>>2]=r,t[s+4>>2]=o,s=0,s|0}function ze(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;if(o=vA(e|0,A|0,45)|0,S()|0,!(Te(o&127)|0))return o=0,o|0;o=vA(e|0,A|0,52)|0,S()|0,o=o&15;A:do if(!o)r=0;else for(n=1;;){if(r=vA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,r=r&7,r|0)break A;if(n>>>0>>0)n=n+1|0;else{r=0;break}}while(!1);return o=(r|0)==0&1,o|0}function en(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0;if(s=k,k=k+16|0,i=s,Xn(i,e,A,r),A=i,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0)return k=s,0;o=0,r=0;do l=n+(o<<3)|0,t[l>>2]=e,t[l+4>>2]=A,o=WA(o|0,r|0,1,0)|0,r=S()|0,Ao(i),l=i,e=t[l>>2]|0,A=t[l+4>>2]|0;while(!((e|0)==0&(A|0)==0));return k=s,0}function Vo(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,UA(r|0),n|0):(r=EA(-1,-1,((n-r|0)*3|0)+3|0)|0,n=EA(~r|0,~(S()|0)|0,(15-n|0)*3|0)|0,r=~(S()|0)&A,n=~n&e,UA(r|0),n|0)}function Wo(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0;return o=vA(e|0,A|0,52)|0,S()|0,o=o&15,(r|0)<16&(o|0)<=(r|0)?((o|0)<(r|0)&&(o=EA(-1,-1,((r+-1-o|0)*3|0)+3|0)|0,o=EA(~o|0,~(S()|0)|0,(15-r|0)*3|0)|0,A=~(S()|0)&A,e=~o&e),o=EA(r|0,0,52)|0,r=A&-15728641|(S()|0),t[n>>2]=e|o,t[n+4>>2]=r,n=0,n|0):(n=4,n|0)}function ol(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0,fe=0,he=0,Ce=0,ne=0,HA=0,SA=0;if((r|0)==0&(n|0)==0)return SA=0,SA|0;if(o=e,i=t[o>>2]|0,o=t[o+4>>2]|0,!0&(o&15728640|0)==0){if(!((n|0)>0|(n|0)==0&r>>>0>0)||(SA=A,t[SA>>2]=i,t[SA+4>>2]=o,(r|0)==1&(n|0)==0))return SA=0,SA|0;o=1,i=0;do ne=e+(o<<3)|0,HA=t[ne+4>>2]|0,SA=A+(o<<3)|0,t[SA>>2]=t[ne>>2],t[SA+4>>2]=HA,o=WA(o|0,i|0,1,0)|0,i=S()|0;while((i|0)<(n|0)|(i|0)==(n|0)&o>>>0>>0);return o=0,o|0}if(Ce=r<<3,HA=y0(Ce)|0,!HA)return SA=13,SA|0;if(Lr(HA|0,e|0,Ce|0)|0,ne=Ot(r,8)|0,!ne)return YA(HA),SA=13,SA|0;A:for(;;){o=HA,f=t[o>>2]|0,o=t[o+4>>2]|0,fe=vA(f|0,o|0,52)|0,S()|0,fe=fe&15,he=fe+-1|0,QA=(fe|0)!=0,zA=(n|0)>0|(n|0)==0&r>>>0>0;e:do if(QA&zA){if(q=EA(he|0,0,52)|0,$=S()|0,he>>>0>15){if(!((f|0)==0&(o|0)==0)){SA=16;break A}for(i=0,e=0;;){if(i=WA(i|0,e|0,1,0)|0,e=S()|0,!((e|0)<(n|0)|(e|0)==(n|0)&i>>>0>>0))break e;if(s=HA+(i<<3)|0,MA=t[s>>2]|0,s=t[s+4>>2]|0,!((MA|0)==0&(s|0)==0)){o=s,SA=16;break A}}}for(l=f,e=o,i=0,s=0;;){if(!((l|0)==0&(e|0)==0)){if(!(!0&(e&117440512|0)==0)){SA=21;break A}if(m=vA(l|0,e|0,52)|0,S()|0,m=m&15,(m|0)<(he|0)){o=12,SA=27;break A}if((m|0)!=(he|0)&&(l=l|q,e=e&-15728641|$,m>>>0>=fe>>>0)){a=he;do MA=EA(7,0,(14-a|0)*3|0)|0,a=a+1|0,l=MA|l,e=S()|0|e;while(a>>>0>>0)}if(j=Ir(l|0,e|0,r|0,n|0)|0,I=S()|0,a=ne+(j<<3)|0,m=a,M=t[m>>2]|0,m=t[m+4>>2]|0,!((M|0)==0&(m|0)==0)){W=0,nA=0;do{if((W|0)>(n|0)|(W|0)==(n|0)&nA>>>0>r>>>0){SA=31;break A}if((M|0)==(l|0)&(m&-117440513|0)==(e|0)){L=vA(M|0,m|0,56)|0,S()|0,L=L&7,G=L+1|0,MA=vA(M|0,m|0,45)|0,S()|0;t:do if(!(Te(MA&127)|0))m=7;else{if(M=vA(M|0,m|0,52)|0,S()|0,M=M&15,!M){m=6;break}for(m=1;;){if(MA=EA(7,0,(15-m|0)*3|0)|0,!((MA&l|0)==0&((S()|0)&e|0)==0)){m=7;break t}if(m>>>0>>0)m=m+1|0;else{m=6;break}}}while(!1);if((L+2|0)>>>0>m>>>0){SA=41;break A}MA=EA(G|0,0,56)|0,e=S()|0|e&-117440513,U=a,t[U>>2]=0,t[U+4>>2]=0,l=MA|l}else j=WA(j|0,I|0,1,0)|0,j=jr(j|0,S()|0,r|0,n|0)|0,I=S()|0;nA=WA(nA|0,W|0,1,0)|0,W=S()|0,a=ne+(j<<3)|0,m=a,M=t[m>>2]|0,m=t[m+4>>2]|0}while(!((M|0)==0&(m|0)==0))}MA=a,t[MA>>2]=l,t[MA+4>>2]=e}if(i=WA(i|0,s|0,1,0)|0,s=S()|0,!((s|0)<(n|0)|(s|0)==(n|0)&i>>>0>>0))break e;e=HA+(i<<3)|0,l=t[e>>2]|0,e=t[e+4>>2]|0}}while(!1);if(MA=WA(r|0,n|0,5,0)|0,U=S()|0,U>>>0<0|(U|0)==0&MA>>>0<11){SA=85;break}if(MA=Y0(r|0,n|0,6,0)|0,S()|0,MA=Ot(MA,8)|0,!MA){SA=48;break}do if(zA){for(G=0,e=0,L=0,W=0;;){if(m=ne+(G<<3)|0,s=m,i=t[s>>2]|0,s=t[s+4>>2]|0,(i|0)==0&(s|0)==0)U=L;else{M=vA(i|0,s|0,56)|0,S()|0,M=M&7,l=M+1|0,j=s&-117440513,U=vA(i|0,s|0,45)|0,S()|0;e:do if(Te(U&127)|0){if(I=vA(i|0,s|0,52)|0,S()|0,I=I&15,I|0)for(a=1;;){if(U=EA(7,0,(15-a|0)*3|0)|0,!((i&U|0)==0&(j&(S()|0)|0)==0))break e;if(a>>>0>>0)a=a+1|0;else break}s=EA(l|0,0,56)|0,i=s|i,s=S()|0|j,l=m,t[l>>2]=i,t[l+4>>2]=s,l=M+2|0}while(!1);(l|0)==7?(U=MA+(e<<3)|0,t[U>>2]=i,t[U+4>>2]=s&-117440513,e=WA(e|0,L|0,1,0)|0,U=S()|0):U=L}if(G=WA(G|0,W|0,1,0)|0,W=S()|0,(W|0)<(n|0)|(W|0)==(n|0)&G>>>0>>0)L=U;else break}if(zA){if(nA=he>>>0>15,q=EA(he|0,0,52)|0,$=S()|0,!QA){for(i=0,a=0,l=0,s=0;(f|0)==0&(o|0)==0||(he=A+(i<<3)|0,t[he>>2]=f,t[he+4>>2]=o,i=WA(i|0,a|0,1,0)|0,a=S()|0),l=WA(l|0,s|0,1,0)|0,s=S()|0,!!((s|0)<(n|0)|(s|0)==(n|0)&l>>>0>>0);)o=HA+(l<<3)|0,f=t[o>>2]|0,o=t[o+4>>2]|0;o=U;break}for(i=0,a=0,s=0,l=0;;){do if(!((f|0)==0&(o|0)==0)){if(I=vA(f|0,o|0,52)|0,S()|0,I=I&15,nA|(I|0)<(he|0)){SA=80;break A}if((I|0)!=(he|0)){if(m=f|q,M=o&-15728641|$,I>>>0>=fe>>>0){j=he;do QA=EA(7,0,(14-j|0)*3|0)|0,j=j+1|0,m=QA|m,M=S()|0|M;while(j>>>0>>0)}}else m=f,M=o;L=Ir(m|0,M|0,r|0,n|0)|0,j=0,I=0,W=S()|0;do{if((j|0)>(n|0)|(j|0)==(n|0)&I>>>0>r>>>0){SA=81;break A}if(QA=ne+(L<<3)|0,G=t[QA+4>>2]|0,(G&-117440513|0)==(M|0)&&(t[QA>>2]|0)==(m|0)){SA=65;break}QA=WA(L|0,W|0,1,0)|0,L=jr(QA|0,S()|0,r|0,n|0)|0,W=S()|0,I=WA(I|0,j|0,1,0)|0,j=S()|0,QA=ne+(L<<3)|0}while(!((t[QA>>2]|0)==(m|0)&&(t[QA+4>>2]|0)==(M|0)));if((SA|0)==65&&(SA=0,!0&(G&117440512|0)==100663296))break;QA=A+(i<<3)|0,t[QA>>2]=f,t[QA+4>>2]=o,i=WA(i|0,a|0,1,0)|0,a=S()|0}while(!1);if(s=WA(s|0,l|0,1,0)|0,l=S()|0,!((l|0)<(n|0)|(l|0)==(n|0)&s>>>0>>0))break;o=HA+(s<<3)|0,f=t[o>>2]|0,o=t[o+4>>2]|0}o=U}else i=0,o=U}else i=0,e=0,o=0;while(!1);if(K0(ne|0,0,Ce|0)|0,Lr(HA|0,MA|0,e<<3|0)|0,YA(MA),(e|0)==0&(o|0)==0){SA=89;break}else A=A+(i<<3)|0,n=o,r=e}if((SA|0)==16)!0&(o&117440512|0)==0?(o=4,SA=27):SA=21;else if((SA|0)==31)OA(27795,27122,620,27132);else{if((SA|0)==41)return YA(HA),YA(ne),SA=10,SA|0;if((SA|0)==48)return YA(HA),YA(ne),SA=13,SA|0;(SA|0)==80?OA(27795,27122,711,27132):(SA|0)==81?OA(27795,27122,723,27132):(SA|0)==85&&(Lr(A|0,HA|0,r<<3|0)|0,SA=89)}return(SA|0)==21?(YA(HA),YA(ne),SA=5,SA|0):(SA|0)==27?(YA(HA),YA(ne),SA=o,SA|0):(SA|0)==89?(YA(HA),YA(ne),SA=0,SA|0):0}function il(e,A,r,n,o,i,s){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0,s=s|0;var l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0;if(G=k,k=k+16|0,L=G,!((r|0)>0|(r|0)==0&A>>>0>0))return L=0,k=G,L|0;if((s|0)>=16)return L=12,k=G,L|0;j=0,I=0,M=0,l=0;A:for(;;){if(f=e+(j<<3)|0,a=t[f>>2]|0,f=t[f+4>>2]|0,m=vA(a|0,f|0,52)|0,S()|0,(m&15|0)>(s|0)){l=12,a=11;break}if(Xn(L,a,f,s),m=L,f=t[m>>2]|0,m=t[m+4>>2]|0,(f|0)==0&(m|0)==0)a=M;else{a=M;do{if(!((l|0)<(i|0)|(l|0)==(i|0)&a>>>0>>0)){a=10;break A}M=n+(a<<3)|0,t[M>>2]=f,t[M+4>>2]=m,a=WA(a|0,l|0,1,0)|0,l=S()|0,Ao(L),M=L,f=t[M>>2]|0,m=t[M+4>>2]|0}while(!((f|0)==0&(m|0)==0))}if(j=WA(j|0,I|0,1,0)|0,I=S()|0,(I|0)<(r|0)|(I|0)==(r|0)&j>>>0>>0)M=a;else{l=0,a=11;break}}return(a|0)==10?(L=14,k=G,L|0):(a|0)==11?(k=G,l|0):0}function sl(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;j=k,k=k+16|0,M=j;A:do if((r|0)>0|(r|0)==0&A>>>0>0){for(f=0,s=0,i=0,m=0;;){if(a=e+(f<<3)|0,l=t[a>>2]|0,a=t[a+4>>2]|0,!((l|0)==0&(a|0)==0)&&(a=(p0(l,a,n,M)|0)==0,l=M,s=WA(t[l>>2]|0,t[l+4>>2]|0,s|0,i|0)|0,i=S()|0,!a)){i=12;break}if(f=WA(f|0,m|0,1,0)|0,m=S()|0,!((m|0)<(r|0)|(m|0)==(r|0)&f>>>0>>0))break A}return k=j,i|0}else s=0,i=0;while(!1);return t[o>>2]=s,t[o+4>>2]=i,o=0,k=j,o|0}function ll(e,A){return e=e|0,A=A|0,A=vA(e|0,A|0,52)|0,S()|0,A&1|0}function Qt(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;if(o=vA(e|0,A|0,52)|0,S()|0,o=o&15,!o)return o=0,o|0;for(n=1;;){if(r=vA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,r=r&7,r|0){n=5;break}if(n>>>0>>0)n=n+1|0;else{r=0,n=5;break}}return(n|0)==5?r|0:0}function Kn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(a=vA(e|0,A|0,52)|0,S()|0,a=a&15,!a)return l=A,a=e,UA(l|0),a|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=EA(7,0,i|0)|0,o=S()|0,s=vA(e|0,A|0,i|0)|0,S()|0,i=EA(Ut(s&7)|0,0,i|0)|0,s=S()|0,e=i|e&~n,A=s|A&~o;A:do if(!r)if((i&n|0)==0&(s&o|0)==0)r=0;else if(n=vA(e|0,A|0,52)|0,S()|0,n=n&15,!n)r=1;else{r=1;e:for(;;){switch(s=vA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,s&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,o=vA(e|0,A|0,s|0)|0,S()|0,i=EA(7,0,s|0)|0,A=A&~(S()|0),s=EA(Ut(o&7)|0,0,s|0)|0,e=e&~i|s,A=A|(S()|0),r>>>0>>0)r=r+1|0;else{r=1;break}}while(!1);if(l>>>0>>0)l=l+1|0;else break}return UA(A|0),e|0}function ar(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;if(n=vA(e|0,A|0,52)|0,S()|0,n=n&15,!n)return r=A,n=e,UA(r|0),n|0;for(r=1;i=(15-r|0)*3|0,s=vA(e|0,A|0,i|0)|0,S()|0,o=EA(7,0,i|0)|0,A=A&~(S()|0),i=EA(Ut(s&7)|0,0,i|0)|0,e=i|e&~o,A=S()|0|A,r>>>0>>0;)r=r+1|0;return UA(A|0),e|0}function al(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(a=vA(e|0,A|0,52)|0,S()|0,a=a&15,!a)return l=A,a=e,UA(l|0),a|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=EA(7,0,i|0)|0,o=S()|0,s=vA(e|0,A|0,i|0)|0,S()|0,i=EA(Vt(s&7)|0,0,i|0)|0,s=S()|0,e=i|e&~n,A=s|A&~o;A:do if(!r)if((i&n|0)==0&(s&o|0)==0)r=0;else if(n=vA(e|0,A|0,52)|0,S()|0,n=n&15,!n)r=1;else{r=1;e:for(;;){switch(s=vA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,s&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,i=EA(7,0,o|0)|0,s=A&~(S()|0),A=vA(e|0,A|0,o|0)|0,S()|0,A=EA(Vt(A&7)|0,0,o|0)|0,e=e&~i|A,A=s|(S()|0),r>>>0>>0)r=r+1|0;else{r=1;break}}while(!1);if(l>>>0>>0)l=l+1|0;else break}return UA(A|0),e|0}function Zn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;if(n=vA(e|0,A|0,52)|0,S()|0,n=n&15,!n)return r=A,n=e,UA(r|0),n|0;for(r=1;s=(15-r|0)*3|0,i=EA(7,0,s|0)|0,o=A&~(S()|0),A=vA(e|0,A|0,s|0)|0,S()|0,A=EA(Vt(A&7)|0,0,s|0)|0,e=A|e&~i,A=S()|0|o,r>>>0>>0;)r=r+1|0;return UA(A|0),e|0}function ul(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(a=k,k=k+64|0,l=a+40|0,n=a+24|0,o=a+12|0,i=a,EA(A|0,0,52)|0,r=S()|0|134225919,!A)return(t[e+4>>2]|0)>2||(t[e+8>>2]|0)>2||(t[e+12>>2]|0)>2?(s=0,l=0,UA(s|0),k=a,l|0):(EA(d0(e)|0,0,45)|0,s=S()|0|r,l=-1,UA(s|0),k=a,l|0);if(t[l>>2]=t[e>>2],t[l+4>>2]=t[e+4>>2],t[l+8>>2]=t[e+8>>2],t[l+12>>2]=t[e+12>>2],s=l+4|0,(A|0)>0)for(e=-1;t[n>>2]=t[s>>2],t[n+4>>2]=t[s+4>>2],t[n+8>>2]=t[s+8>>2],A&1?(kr(s),t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],t[o+8>>2]=t[s+8>>2],Cr(o)):(br(s),t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],t[o+8>>2]=t[s+8>>2],Gt(o)),Pt(n,o,i),je(i),m=(15-A|0)*3|0,f=EA(7,0,m|0)|0,r=r&~(S()|0),m=EA(tt(i)|0,0,m|0)|0,e=m|e&~f,r=S()|0|r,(A|0)>1;)A=A+-1|0;else e=-1;A:do if((t[s>>2]|0)<=2&&(t[l+8>>2]|0)<=2&&(t[l+12>>2]|0)<=2){if(n=d0(l)|0,A=EA(n|0,0,45)|0,A=A|e,e=S()|0|r&-1040385,i=l0(l)|0,!(Te(n)|0)){if((i|0)<=0)break;for(o=0;;){if(n=vA(A|0,e|0,52)|0,S()|0,n=n&15,n)for(r=1;m=(15-r|0)*3|0,l=vA(A|0,e|0,m|0)|0,S()|0,f=EA(7,0,m|0)|0,e=e&~(S()|0),m=EA(Ut(l&7)|0,0,m|0)|0,A=A&~f|m,e=e|(S()|0),r>>>0>>0;)r=r+1|0;if(o=o+1|0,(o|0)==(i|0))break A}}o=vA(A|0,e|0,52)|0,S()|0,o=o&15;e:do if(o){r=1;t:for(;;){switch(m=vA(A|0,e|0,(15-r|0)*3|0)|0,S()|0,m&7){case 1:break t;case 0:break;default:break e}if(r>>>0>>0)r=r+1|0;else break e}if(M0(n,t[l>>2]|0)|0)for(r=1;l=(15-r|0)*3|0,f=EA(7,0,l|0)|0,m=e&~(S()|0),e=vA(A|0,e|0,l|0)|0,S()|0,e=EA(Vt(e&7)|0,0,l|0)|0,A=A&~f|e,e=m|(S()|0),r>>>0>>0;)r=r+1|0;else for(r=1;m=(15-r|0)*3|0,l=vA(A|0,e|0,m|0)|0,S()|0,f=EA(7,0,m|0)|0,e=e&~(S()|0),m=EA(Ut(l&7)|0,0,m|0)|0,A=A&~f|m,e=e|(S()|0),r>>>0>>0;)r=r+1|0}while(!1);if((i|0)>0){r=0;do A=Kn(A,e)|0,e=S()|0,r=r+1|0;while((r|0)!=(i|0))}}else A=0,e=0;while(!1);return f=e,m=A,UA(f|0),k=a,m|0}function Jt(e){return e=e|0,(e|0)%2|0|0}function $n(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;return o=k,k=k+16|0,n=o,A>>>0>15?(n=4,k=o,n|0):(t[e+4>>2]&2146435072|0)==2146435072||(t[e+8+4>>2]&2146435072|0)==2146435072?(n=3,k=o,n|0):(xn(e,A,n),A=ul(n,A)|0,n=S()|0,t[r>>2]=A,t[r+4>>2]=n,(A|0)==0&(n|0)==0&&OA(27795,27122,1050,27145),n=0,k=o,n|0)}function qn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;if(o=r+4|0,i=vA(e|0,A|0,52)|0,S()|0,i=i&15,s=vA(e|0,A|0,45)|0,S()|0,n=(i|0)==0,Te(s&127)|0){if(n)return s=1,s|0;n=1}else{if(n)return s=0,s|0;(t[o>>2]|0)==0&&(t[r+8>>2]|0)==0?n=(t[r+12>>2]|0)!=0&1:n=1}for(r=1;r&1?Cr(o):Gt(o),s=vA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,gn(o,s&7),r>>>0>>0;)r=r+1|0;return n|0}function _r(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(m=k,k=k+16|0,a=m,f=vA(e|0,A|0,45)|0,S()|0,f=f&127,f>>>0>121)return t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,t[r+12>>2]=0,f=5,k=m,f|0;A:do if((Te(f)|0)!=0&&(i=vA(e|0,A|0,52)|0,S()|0,i=i&15,(i|0)!=0)){n=1;e:for(;;){switch(l=vA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,l&7){case 5:break e;case 0:break;default:{n=A;break A}}if(n>>>0>>0)n=n+1|0;else{n=A;break A}}for(o=1,n=A;A=(15-o|0)*3|0,s=EA(7,0,A|0)|0,l=n&~(S()|0),n=vA(e|0,n|0,A|0)|0,S()|0,n=EA(Vt(n&7)|0,0,A|0)|0,e=e&~s|n,n=l|(S()|0),o>>>0>>0;)o=o+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],!(qn(e,n,r)|0))return f=0,k=m,f|0;if(s=r+4|0,t[a>>2]=t[s>>2],t[a+4>>2]=t[s+4>>2],t[a+8>>2]=t[s+8>>2],i=vA(e|0,n|0,52)|0,S()|0,l=i&15,i&1?(Gt(s),i=l+1|0):i=l,!(Te(f)|0))n=0;else{A:do if(!l)n=0;else for(A=1;;){if(o=vA(e|0,n|0,(15-A|0)*3|0)|0,S()|0,o=o&7,o|0){n=o;break A}if(A>>>0>>0)A=A+1|0;else{n=0;break}}while(!1);n=(n|0)==4&1}if(!(N(r,i,n,0)|0))(i|0)!=(l|0)&&(t[s>>2]=t[a>>2],t[s+4>>2]=t[a+4>>2],t[s+8>>2]=t[a+8>>2]);else{if(Te(f)|0)do;while((N(r,i,0,0)|0)!=0);(i|0)!=(l|0)&&br(s)}return f=0,k=m,f|0}function ur(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;return i=k,k=k+16|0,n=i,o=_r(e,A,n)|0,o|0?(k=i,o|0):(o=vA(e|0,A|0,52)|0,S()|0,d(n,o&15,r),o=0,k=i,o|0)}function Tr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0;if(s=k,k=k+16|0,i=s,n=_r(e,A,i)|0,n|0)return i=n,k=s,i|0;n=vA(e|0,A|0,45)|0,S()|0,n=(Te(n&127)|0)==0,o=vA(e|0,A|0,52)|0,S()|0,o=o&15;A:do if(!n){if(o|0)for(n=1;;){if(l=EA(7,0,(15-n|0)*3|0)|0,!((l&e|0)==0&((S()|0)&A|0)==0))break A;if(n>>>0>>0)n=n+1|0;else break}return w(i,o,0,5,r),l=0,k=s,l|0}while(!1);return AA(i,o,0,6,r),l=0,k=s,l|0}function cl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if(o=vA(e|0,A|0,45)|0,S()|0,!(Te(o&127)|0))return o=2,t[r>>2]=o,0;if(o=vA(e|0,A|0,52)|0,S()|0,o=o&15,!o)return o=5,t[r>>2]=o,0;for(n=1;;){if(i=EA(7,0,(15-n|0)*3|0)|0,!((i&e|0)==0&((S()|0)&A|0)==0)){n=2,e=6;break}if(n>>>0>>0)n=n+1|0;else{n=5,e=6;break}}return(e|0)==6&&(t[r>>2]=n),0}function Yo(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0;M=k,k=k+128|0,f=M+112|0,i=M+96|0,m=M,o=vA(e|0,A|0,52)|0,S()|0,l=o&15,t[f>>2]=l,s=vA(e|0,A|0,45)|0,S()|0,s=s&127;A:do if(Te(s)|0){if(l|0)for(n=1;;){if(a=EA(7,0,(15-n|0)*3|0)|0,!((a&e|0)==0&((S()|0)&A|0)==0)){o=0;break A}if(n>>>0>>0)n=n+1|0;else break}if(o&1)o=1;else return a=EA(l+1|0,0,52)|0,m=S()|0|A&-15728641,f=EA(7,0,(14-l|0)*3|0)|0,m=Yo((a|e)&~f,m&~(S()|0),r)|0,k=M,m|0}else o=0;while(!1);if(n=_r(e,A,i)|0,!n){o?(B(i,f,m),a=5):(gA(i,f,m),a=6);A:do if(Te(s)|0)if(!l)e=5;else for(n=1;;){if(s=EA(7,0,(15-n|0)*3|0)|0,!((s&e|0)==0&((S()|0)&A|0)==0)){e=2;break A}if(n>>>0>>0)n=n+1|0;else{e=5;break}}else e=2;while(!1);K0(r|0,-1,e<<2|0)|0;A:do if(o)for(i=0;;){if(s=m+(i<<4)|0,tA(s,t[f>>2]|0)|0,s=t[s>>2]|0,l=t[r>>2]|0,(l|0)==-1|(l|0)==(s|0))n=r;else{o=0;do{if(o=o+1|0,o>>>0>=e>>>0){n=1;break A}n=r+(o<<2)|0,l=t[n>>2]|0}while(!((l|0)==-1|(l|0)==(s|0)))}if(t[n>>2]=s,i=i+1|0,i>>>0>=a>>>0){n=0;break}}else for(i=0;;){if(s=m+(i<<4)|0,N(s,t[f>>2]|0,0,1)|0,s=t[s>>2]|0,l=t[r>>2]|0,(l|0)==-1|(l|0)==(s|0))n=r;else{o=0;do{if(o=o+1|0,o>>>0>=e>>>0){n=1;break A}n=r+(o<<2)|0,l=t[n>>2]|0}while(!((l|0)==-1|(l|0)==(s|0)))}if(t[n>>2]=s,i=i+1|0,i>>>0>=a>>>0){n=0;break}}while(!1)}return m=n,k=M,m|0}function fl(){return 12}function Jn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(e>>>0>15)return l=4,l|0;if(EA(e|0,0,52)|0,l=S()|0|134225919,!e){r=0,n=0;do Te(n)|0&&(EA(n|0,0,45)|0,s=l|(S()|0),e=A+(r<<3)|0,t[e>>2]=-1,t[e+4>>2]=s,r=r+1|0),n=n+1|0;while((n|0)!=122);return r=0,r|0}r=0,s=0;do{if(Te(s)|0){for(EA(s|0,0,45)|0,n=1,o=-1,i=l|(S()|0);a=EA(7,0,(15-n|0)*3|0)|0,o=o&~a,i=i&~(S()|0),(n|0)!=(e|0);)n=n+1|0;a=A+(r<<3)|0,t[a>>2]=o,t[a+4>>2]=i,r=r+1|0}s=s+1|0}while((s|0)!=122);return r=0,r|0}function hl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0;if(q=k,k=k+16|0,W=q,nA=vA(e|0,A|0,52)|0,S()|0,nA=nA&15,r>>>0>15)return nA=4,k=q,nA|0;if((nA|0)<(r|0))return nA=12,k=q,nA|0;if((nA|0)!=(r|0))if(i=EA(r|0,0,52)|0,i=i|e,l=S()|0|A&-15728641,(nA|0)>(r|0)){a=r;do G=EA(7,0,(14-a|0)*3|0)|0,a=a+1|0,i=G|i,l=S()|0|l;while((a|0)<(nA|0));G=i}else G=i;else G=e,l=A;L=vA(G|0,l|0,45)|0,S()|0;A:do if(Te(L&127)|0){if(a=vA(G|0,l|0,52)|0,S()|0,a=a&15,a|0)for(i=1;;){if(L=EA(7,0,(15-i|0)*3|0)|0,!((L&G|0)==0&((S()|0)&l|0)==0)){f=33;break A}if(i>>>0>>0)i=i+1|0;else break}if(L=n,t[L>>2]=0,t[L+4>>2]=0,(nA|0)>(r|0)){for(L=A&-15728641,I=nA;;){if(j=I,I=I+-1|0,I>>>0>15|(nA|0)<(I|0)){f=19;break}if((nA|0)!=(I|0))if(i=EA(I|0,0,52)|0,i=i|e,a=S()|0|L,(nA|0)<(j|0))M=i;else{f=I;do M=EA(7,0,(14-f|0)*3|0)|0,f=f+1|0,i=M|i,a=S()|0|a;while((f|0)<(nA|0));M=i}else M=e,a=A;if(m=vA(M|0,a|0,45)|0,S()|0,!(Te(m&127)|0))i=0;else{m=vA(M|0,a|0,52)|0,S()|0,m=m&15;e:do if(!m)i=0;else for(f=1;;){if(i=vA(M|0,a|0,(15-f|0)*3|0)|0,S()|0,i=i&7,i|0)break e;if(f>>>0>>0)f=f+1|0;else{i=0;break}}while(!1);i=(i|0)==0&1}if(a=vA(e|0,A|0,(15-j|0)*3|0)|0,S()|0,a=a&7,(a|0)==7){o=5,f=42;break}if(i=(i|0)!=0,(a|0)==1&i){o=5,f=42;break}if(M=a+(((a|0)!=0&i)<<31>>31)|0,M|0&&(f=nA-j|0,f=V0(7,0,f,((f|0)<0)<<31>>31)|0,m=S()|0,i?(i=ct(f|0,m|0,5,0)|0,i=WA(i|0,S()|0,-5,-1)|0,i=Y0(i|0,S()|0,6,0)|0,i=WA(i|0,S()|0,1,0)|0,a=S()|0):(i=f,a=m),j=M+-1|0,j=ct(f|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0,j=WA(i|0,a|0,j|0,S()|0)|0,M=S()|0,m=n,m=WA(j|0,M|0,t[m>>2]|0,t[m+4>>2]|0)|0,M=S()|0,j=n,t[j>>2]=m,t[j+4>>2]=M),(I|0)<=(r|0)){f=37;break}}if((f|0)==19)OA(27795,27122,1367,27158);else if((f|0)==37){s=n,o=t[s+4>>2]|0,s=t[s>>2]|0;break}else if((f|0)==42)return k=q,o|0}else o=0,s=0}else f=33;while(!1);A:do if((f|0)==33)if(L=n,t[L>>2]=0,t[L+4>>2]=0,(nA|0)>(r|0)){for(i=nA;;){if(o=vA(e|0,A|0,(15-i|0)*3|0)|0,S()|0,o=o&7,(o|0)==7){o=5;break}if(s=nA-i|0,s=V0(7,0,s,((s|0)<0)<<31>>31)|0,o=ct(s|0,S()|0,o|0,0)|0,s=S()|0,L=n,s=WA(t[L>>2]|0,t[L+4>>2]|0,o|0,s|0)|0,o=S()|0,L=n,t[L>>2]=s,t[L+4>>2]=o,i=i+-1|0,(i|0)<=(r|0))break A}return k=q,o|0}else o=0,s=0;while(!1);return p0(G,l,nA,W)|0&&OA(27795,27122,1327,27173),nA=W,W=t[nA+4>>2]|0,((o|0)>-1|(o|0)==-1&s>>>0>4294967295)&((W|0)>(o|0)|((W|0)==(o|0)?(t[nA>>2]|0)>>>0>s>>>0:0))?(nA=0,k=q,nA|0):(OA(27795,27122,1407,27158),0)}function dl(e,A,r,n,o,i){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0;var s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0;if(M=k,k=k+16|0,s=M,o>>>0>15)return i=4,k=M,i|0;if(l=vA(r|0,n|0,52)|0,S()|0,l=l&15,(l|0)>(o|0))return i=12,k=M,i|0;if(p0(r,n,o,s)|0&&OA(27795,27122,1327,27173),m=s,f=t[m+4>>2]|0,!(((A|0)>-1|(A|0)==-1&e>>>0>4294967295)&((f|0)>(A|0)|((f|0)==(A|0)?(t[m>>2]|0)>>>0>e>>>0:0))))return i=2,k=M,i|0;m=o-l|0,o=EA(o|0,0,52)|0,a=S()|0|n&-15728641,f=i,t[f>>2]=o|r,t[f+4>>2]=a,f=vA(r|0,n|0,45)|0,S()|0;A:do if(Te(f&127)|0){if(l|0)for(s=1;;){if(f=EA(7,0,(15-s|0)*3|0)|0,!((f&r|0)==0&((S()|0)&n|0)==0))break A;if(s>>>0>>0)s=s+1|0;else break}if((m|0)<1)return i=0,k=M,i|0;for(f=l^15,n=-1,a=1,s=1;;){l=m-a|0,l=V0(7,0,l,((l|0)<0)<<31>>31)|0,r=S()|0;do if(s)if(s=ct(l|0,r|0,5,0)|0,s=WA(s|0,S()|0,-5,-1)|0,s=Y0(s|0,S()|0,6,0)|0,o=S()|0,(A|0)>(o|0)|(A|0)==(o|0)&e>>>0>s>>>0){A=WA(e|0,A|0,-1,-1)|0,A=ut(A|0,S()|0,s|0,o|0)|0,s=S()|0,j=i,L=t[j>>2]|0,j=t[j+4>>2]|0,G=(f+n|0)*3|0,I=EA(7,0,G|0)|0,j=j&~(S()|0),n=Y0(A|0,s|0,l|0,r|0)|0,e=S()|0,o=WA(n|0,e|0,2,0)|0,G=EA(o|0,S()|0,G|0)|0,j=S()|0|j,o=i,t[o>>2]=G|L&~I,t[o+4>>2]=j,e=ct(n|0,e|0,l|0,r|0)|0,e=ut(A|0,s|0,e|0,S()|0)|0,s=0,A=S()|0;break}else{G=i,I=t[G>>2]|0,G=t[G+4>>2]|0,L=EA(7,0,(f+n|0)*3|0)|0,G=G&~(S()|0),s=i,t[s>>2]=I&~L,t[s+4>>2]=G,s=1;break}else I=i,o=t[I>>2]|0,I=t[I+4>>2]|0,n=(f+n|0)*3|0,j=EA(7,0,n|0)|0,I=I&~(S()|0),G=Y0(e|0,A|0,l|0,r|0)|0,s=S()|0,n=EA(G|0,s|0,n|0)|0,I=S()|0|I,L=i,t[L>>2]=n|o&~j,t[L+4>>2]=I,s=ct(G|0,s|0,l|0,r|0)|0,e=ut(e|0,A|0,s|0,S()|0)|0,s=0,A=S()|0;while(!1);if((m|0)>(a|0))n=~a,a=a+1|0;else{A=0;break}}return k=M,A|0}while(!1);if((m|0)<1)return G=0,k=M,G|0;for(o=l^15,s=1;;)if(L=m-s|0,L=V0(7,0,L,((L|0)<0)<<31>>31)|0,G=S()|0,a=i,r=t[a>>2]|0,a=t[a+4>>2]|0,l=(o-s|0)*3|0,n=EA(7,0,l|0)|0,a=a&~(S()|0),j=Y0(e|0,A|0,L|0,G|0)|0,I=S()|0,l=EA(j|0,I|0,l|0)|0,a=S()|0|a,f=i,t[f>>2]=l|r&~n,t[f+4>>2]=a,G=ct(j|0,I|0,L|0,G|0)|0,e=ut(e|0,A|0,G|0,S()|0)|0,A=S()|0,(m|0)<=(s|0)){A=0;break}else s=s+1|0;return k=M,A|0}function Xn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0;o=vA(A|0,r|0,52)|0,S()|0,o=o&15,(A|0)==0&(r|0)==0|((n|0)>15|(o|0)>(n|0))?(i=-1,A=-1,r=0,o=0):(A=Vo(A,r,o+1|0,n)|0,s=(S()|0)&-15728641,r=EA(n|0,0,52)|0,r=A|r,s=s|(S()|0),A=(ze(r,s)|0)==0,i=o,A=A?-1:n,o=s),s=e,t[s>>2]=r,t[s+4>>2]=o,t[e+8>>2]=i,t[e+12>>2]=A}function Ko(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0;if(o=vA(e|0,A|0,52)|0,S()|0,o=o&15,i=n+8|0,t[i>>2]=o,(e|0)==0&(A|0)==0|((r|0)>15|(o|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=Vo(e,A,o+1|0,r)|0,i=(S()|0)&-15728641,o=EA(r|0,0,52)|0,o=e|o,i=i|(S()|0),e=n,t[e>>2]=o,t[e+4>>2]=i,e=n+12|0,ze(o,i)|0){t[e>>2]=r;return}else{t[e>>2]=-1;return}}function Ao(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0;if(r=e,A=t[r>>2]|0,r=t[r+4>>2]|0,!((A|0)==0&(r|0)==0)&&(n=vA(A|0,r|0,52)|0,S()|0,n=n&15,l=EA(1,0,(n^15)*3|0)|0,A=WA(l|0,S()|0,A|0,r|0)|0,r=S()|0,l=e,t[l>>2]=A,t[l+4>>2]=r,l=e+8|0,s=t[l>>2]|0,!((n|0)<(s|0)))){for(a=e+12|0,i=n;;){if((i|0)==(s|0)){n=5;break}if(f=(i|0)==(t[a>>2]|0),o=(15-i|0)*3|0,n=vA(A|0,r|0,o|0)|0,S()|0,n=n&7,f&((n|0)==1&!0)){n=7;break}if(!((n|0)==7&!0)){n=10;break}if(f=EA(1,0,o|0)|0,A=WA(A|0,r|0,f|0,S()|0)|0,r=S()|0,f=e,t[f>>2]=A,t[f+4>>2]=r,(i|0)>(s|0))i=i+-1|0;else{n=10;break}}if((n|0)==5){f=e,t[f>>2]=0,t[f+4>>2]=0,t[l>>2]=-1,t[a>>2]=-1;return}else if((n|0)==7){s=EA(1,0,o|0)|0,s=WA(A|0,r|0,s|0,S()|0)|0,l=S()|0,f=e,t[f>>2]=s,t[f+4>>2]=l,t[a>>2]=i+-1;return}else if((n|0)==10)return}}function tn(e){e=+e;var A=0;return A=e<0?e+6.283185307179586:e,+(e>=6.283185307179586?A+-6.283185307179586:A)}function Rr(e,A){return e=e|0,A=A|0,+KA(+(+b[e>>3]-+b[A>>3]))<17453292519943298e-27?(A=+KA(+(+b[e+8>>3]-+b[A+8>>3]))<17453292519943298e-27,A|0):(A=0,A|0)}function Wt(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 ml(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return o=+b[A>>3],n=+b[e>>3],i=+oe(+((o-n)*.5)),r=+oe(+((+b[A+8>>3]-+b[e+8>>3])*.5)),r=i*i+r*(+Be(+o)*+Be(+n)*r),+(+_e(+ +ge(+r),+ +ge(+(1-r)))*2)}function rn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return o=+b[A>>3],n=+b[e>>3],i=+oe(+((o-n)*.5)),r=+oe(+((+b[A+8>>3]-+b[e+8>>3])*.5)),r=i*i+r*(+Be(+o)*+Be(+n)*r),+(+_e(+ +ge(+r),+ +ge(+(1-r)))*2*6371.007180918475)}function gl(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return o=+b[A>>3],n=+b[e>>3],i=+oe(+((o-n)*.5)),r=+oe(+((+b[A+8>>3]-+b[e+8>>3])*.5)),r=i*i+r*(+Be(+o)*+Be(+n)*r),+(+_e(+ +ge(+r),+ +ge(+(1-r)))*2*6371.007180918475*1e3)}function pl(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;return i=+b[A>>3],n=+Be(+i),o=+b[A+8>>3]-+b[e+8>>3],s=n*+oe(+o),r=+b[e>>3],+ +_e(+s,+(+oe(+i)*+Be(+r)-+Be(+o)*(n*+oe(+r))))}function yl(e,A,r,n){e=e|0,A=+A,r=+r,n=n|0;var o=0,i=0,s=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=+b[e>>3]+r,b[n>>3]=A,o=n;else{if(o=+KA(+(i+-3.141592653589793))<1e-16,A=+b[e>>3],o){A=A-r,b[n>>3]=A,o=n;break}if(s=+Be(+r),r=+oe(+r),A=s*+oe(+A)+ +Be(+i)*(r*+Be(+A)),A=A>1?1:A,A=+f0(+(A<-1?-1:A)),b[n>>3]=A,+KA(+(A+-1.5707963267948966))<1e-16){b[n>>3]=1.5707963267948966,b[n+8>>3]=0;return}if(+KA(+(A+1.5707963267948966))<1e-16){b[n>>3]=-1.5707963267948966,b[n+8>>3]=0;return}if(l=1/+Be(+A),i=r*+oe(+i)*l,r=+b[e>>3],A=l*((s-+oe(+A)*+oe(+r))/+Be(+r)),s=i>1?1:i,A=A>1?1:A,A=+b[e+8>>3]+ +_e(+(s<-1?-1:s),+(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);b[n+8>>3]=A;return}while(!1);if(+KA(+(A+-1.5707963267948966))<1e-16){b[o>>3]=1.5707963267948966,b[n+8>>3]=0;return}if(+KA(+(A+1.5707963267948966))<1e-16){b[o>>3]=-1.5707963267948966,b[n+8>>3]=0;return}if(A=+b[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);b[n+8>>3]=A}function Zo(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(b[A>>3]=+b[20656+(e<<3)>>3],A=0,A|0)}function xl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(b[A>>3]=+b[20784+(e<<3)>>3],A=0,A|0)}function wl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(b[A>>3]=+b[20912+(e<<3)>>3],A=0,A|0)}function vl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(b[A>>3]=+b[21040+(e<<3)>>3],A=0,A|0)}function vn(e,A){e=e|0,A=A|0;var r=0;return e>>>0>15?(A=4,A|0):(r=V0(7,0,e,((e|0)<0)<<31>>31)|0,r=ct(r|0,S()|0,120,0)|0,e=S()|0,t[A>>2]=r|2,t[A+4>>2]=e,A=0,A|0)}function $o(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;return j=+b[A>>3],m=+b[e>>3],a=+oe(+((j-m)*.5)),i=+b[A+8>>3],f=+b[e+8>>3],s=+oe(+((i-f)*.5)),l=+Be(+m),M=+Be(+j),s=a*a+s*(M*l*s),s=+_e(+ +ge(+s),+ +ge(+(1-s)))*2,a=+b[r>>3],j=+oe(+((a-j)*.5)),n=+b[r+8>>3],i=+oe(+((n-i)*.5)),o=+Be(+a),i=j*j+i*(M*o*i),i=+_e(+ +ge(+i),+ +ge(+(1-i)))*2,a=+oe(+((m-a)*.5)),n=+oe(+((f-n)*.5)),n=a*a+n*(l*o*n),n=+_e(+ +ge(+n),+ +ge(+(1-n)))*2,o=(s+i+n)*.5,+(+dt(+ +ge(+(+et(+(o*.5))*+et(+((o-s)*.5))*+et(+((o-i)*.5))*+et(+((o-n)*.5)))))*4)}function eo(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0;if(l=k,k=k+192|0,i=l+168|0,s=l,o=ur(e,A,i)|0,o|0)return r=o,k=l,r|0;if(Tr(e,A,s)|0&&OA(27795,27190,415,27199),A=t[s>>2]|0,(A|0)>0){if(n=+$o(s+8|0,s+8+(((A|0)!=1&1)<<4)|0,i)+0,(A|0)!=1){e=1;do o=e,e=e+1|0,n=n+ +$o(s+8+(o<<4)|0,s+8+(((e|0)%(A|0)|0)<<4)|0,i);while((e|0)<(A|0))}}else n=0;return b[r>>3]=n,r=0,k=l,r|0}function kl(e,A,r){return e=e|0,A=A|0,r=r|0,e=eo(e,A,r)|0,e|0||(b[r>>3]=+b[r>>3]*6371.007180918475*6371.007180918475),e|0}function bl(e,A,r){return e=e|0,A=A|0,r=r|0,e=eo(e,A,r)|0,e|0||(b[r>>3]=+b[r>>3]*6371.007180918475*6371.007180918475*1e3*1e3),e|0}function Cl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(l=k,k=k+176|0,s=l,e=lr(e,A,s)|0,e|0)return s=e,k=l,s|0;if(b[r>>3]=0,e=t[s>>2]|0,(e|0)<=1)return s=0,k=l,s|0;A=e+-1|0,e=0,n=+b[s+8>>3],o=+b[s+16>>3],i=0;do e=e+1|0,f=n,n=+b[s+8+(e<<4)>>3],m=+oe(+((n-f)*.5)),a=o,o=+b[s+8+(e<<4)+8>>3],a=+oe(+((o-a)*.5)),a=m*m+a*(+Be(+n)*+Be(+f)*a),i=i+ +_e(+ +ge(+a),+ +ge(+(1-a)))*2;while((e|0)<(A|0));return b[r>>3]=i,s=0,k=l,s|0}function El(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(l=k,k=k+176|0,s=l,e=lr(e,A,s)|0,e|0)return s=e,i=+b[r>>3],i=i*6371.007180918475,b[r>>3]=i,k=l,s|0;if(b[r>>3]=0,e=t[s>>2]|0,(e|0)<=1)return s=0,i=0,i=i*6371.007180918475,b[r>>3]=i,k=l,s|0;A=e+-1|0,e=0,n=+b[s+8>>3],o=+b[s+16>>3],i=0;do e=e+1|0,f=n,n=+b[s+8+(e<<4)>>3],m=+oe(+((n-f)*.5)),a=o,o=+b[s+8+(e<<4)+8>>3],a=+oe(+((o-a)*.5)),a=m*m+a*(+Be(+f)*+Be(+n)*a),i=i+ +_e(+ +ge(+a),+ +ge(+(1-a)))*2;while((e|0)!=(A|0));return b[r>>3]=i,s=0,m=i,m=m*6371.007180918475,b[r>>3]=m,k=l,s|0}function Sl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(l=k,k=k+176|0,s=l,e=lr(e,A,s)|0,e|0)return s=e,i=+b[r>>3],i=i*6371.007180918475,i=i*1e3,b[r>>3]=i,k=l,s|0;if(b[r>>3]=0,e=t[s>>2]|0,(e|0)<=1)return s=0,i=0,i=i*6371.007180918475,i=i*1e3,b[r>>3]=i,k=l,s|0;A=e+-1|0,e=0,n=+b[s+8>>3],o=+b[s+16>>3],i=0;do e=e+1|0,f=n,n=+b[s+8+(e<<4)>>3],m=+oe(+((n-f)*.5)),a=o,o=+b[s+8+(e<<4)+8>>3],a=+oe(+((o-a)*.5)),a=m*m+a*(+Be(+f)*+Be(+n)*a),i=i+ +_e(+ +ge(+a),+ +ge(+(1-a)))*2;while((e|0)!=(A|0));return b[r>>3]=i,s=0,m=i,m=m*6371.007180918475,m=m*1e3,b[r>>3]=m,k=l,s|0}function Ml(e){e=e|0;var A=0,r=0,n=0;return A=Ot(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 Bl(e,A){e=e|0,A=A|0;var r=0,n=0;return n=y0(24)|0,n||OA(27347,27235,78,27361),t[n>>2]=t[A>>2],t[n+4>>2]=t[A+4>>2],t[n+8>>2]=t[A+8>>2],t[n+12>>2]=t[A+12>>2],t[n+16>>2]=0,A=e+4|0,r=t[A>>2]|0,r|0?(t[r+16>>2]=n,t[A>>2]=n,n|0):(t[e>>2]|0&&OA(27376,27235,82,27361),t[e>>2]=n,t[A>>2]=n,n|0)}function qo(e){e=e|0;var A=0,r=0,n=0,o=0;if(e)for(n=1;;){if(A=t[e>>2]|0,A|0)do{if(r=t[A>>2]|0,r|0)do o=r,r=t[r+16>>2]|0,YA(o);while((r|0)!=0);o=A,A=t[A+8>>2]|0,YA(o)}while((A|0)!=0);if(A=e,e=t[e+8>>2]|0,n||YA(A),e)n=0;else break}}function Dl(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0,fe=0,he=0,Ce=0,ne=0,HA=0,SA=0,ye=0,We=0,de=0;if(o=e+8|0,t[o>>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;ye=y0(r<<2)|0,ye||OA(27396,27235,317,27415),SA=y0(r<<5)|0,SA||OA(27437,27235,321,27415),t[e>>2]=0,zA=e+4|0,t[zA>>2]=0,t[o>>2]=0,r=0,HA=0,MA=0,M=0;A:for(;;){if(m=t[n>>2]|0,m){i=0,s=m;do{if(a=+b[s+8>>3],A=s,s=t[s+16>>2]|0,f=(s|0)==0,o=f?m:s,l=+b[o+8>>3],+KA(+(a-l))>3.141592653589793){de=14;break}i=i+(l-a)*(+b[A>>3]+ +b[o>>3])}while(!f);if((de|0)==14){de=0,i=0,A=m;do U=+b[A+8>>3],ne=A+16|0,Ce=t[ne>>2]|0,Ce=(Ce|0)==0?m:Ce,$=+b[Ce+8>>3],i=i+(+b[A>>3]+ +b[Ce>>3])*(($<0?$+6.283185307179586:$)-(U<0?U+6.283185307179586:U)),A=t[((A|0)==0?n:ne)>>2]|0;while((A|0)!=0)}i>0?(t[ye+(HA<<2)>>2]=n,HA=HA+1|0,o=MA,A=M):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=Ot(1,12)|0,!r){de=23;break A}t[A>>2]=r,o=r+4|0,s=r,A=M}else if(M){o=zA,s=M+8|0,A=n,r=e;break}else if(t[e>>2]|0){de=27;break A}else{o=zA,s=e,A=n,r=e;break}while(!1);if(t[s>>2]=n,t[o>>2]=n,s=SA+(MA<<5)|0,f=t[n>>2]|0,f){for(m=SA+(MA<<5)+8|0,b[m>>3]=17976931348623157e292,M=SA+(MA<<5)+24|0,b[M>>3]=17976931348623157e292,b[s>>3]=-17976931348623157e292,j=SA+(MA<<5)+16|0,b[j>>3]=-17976931348623157e292,nA=17976931348623157e292,q=-17976931348623157e292,o=0,I=f,a=17976931348623157e292,G=17976931348623157e292,W=-17976931348623157e292,l=-17976931348623157e292;i=+b[I>>3],U=+b[I+8>>3],I=t[I+16>>2]|0,L=(I|0)==0,$=+b[(L?f:I)+8>>3],i>3]=i,a=i),U>3]=U,G=U),i>W?b[s>>3]=i:i=W,U>l&&(b[j>>3]=U,l=U),nA=U>0&Uq?U:q,o=o|+KA(+(U-$))>3.141592653589793,!L;)W=i;o&&(b[j>>3]=q,b[M>>3]=nA)}else t[s>>2]=0,t[s+4>>2]=0,t[s+8>>2]=0,t[s+12>>2]=0,t[s+16>>2]=0,t[s+20>>2]=0,t[s+24>>2]=0,t[s+28>>2]=0;o=MA+1|0}if(ne=n+8|0,n=t[ne>>2]|0,t[ne>>2]=0,n)MA=o,M=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((HA|0)>0){for(ne=(o|0)==0,he=o<<2,Ce=(e|0)==0,fe=0,A=0;;){if(QA=t[ye+(fe<<2)>>2]|0,ne)de=73;else{if(MA=y0(he)|0,!MA){de=50;break}if(zA=y0(he)|0,!zA){de=52;break}e:do if(Ce)r=0;else{for(o=0,r=0,s=e;n=SA+(o<<5)|0,Jo(t[s>>2]|0,n,t[QA>>2]|0)|0?(t[MA+(r<<2)>>2]=s,t[zA+(r<<2)>>2]=n,L=r+1|0):L=r,s=t[s+8>>2]|0,s;)o=o+1|0,r=L;if((L|0)>0)if(n=t[MA>>2]|0,(L|0)==1)r=n;else for(j=0,I=-1,r=n,M=n;;){for(f=t[M>>2]|0,n=0,s=0;o=t[t[MA+(s<<2)>>2]>>2]|0,(o|0)==(f|0)?m=n:m=n+((Jo(o,t[zA+(s<<2)>>2]|0,t[f>>2]|0)|0)&1)|0,s=s+1|0,(s|0)!=(L|0);)n=m;if(o=(m|0)>(I|0),r=o?M:r,n=j+1|0,(n|0)==(L|0))break e;j=n,I=o?m:I,M=t[MA+(n<<2)>>2]|0}else r=0}while(!1);if(YA(MA),YA(zA),r){if(o=r+4|0,n=t[o>>2]|0,n)r=n+8|0;else if(t[r>>2]|0){de=70;break}t[r>>2]=QA,t[o>>2]=QA}else de=73}if((de|0)==73){if(de=0,A=t[QA>>2]|0,A|0)do zA=A,A=t[A+16>>2]|0,YA(zA);while((A|0)!=0);YA(QA),A=1}if(fe=fe+1|0,(fe|0)>=(HA|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 YA(ye),YA(SA),de=We,de|0}return 0}function Jo(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(!(m0(A,r)|0)||(A=Ft(A)|0,n=+b[r>>3],o=+b[r+8>>3],o=A&o<0?o+6.283185307179586:o,e=t[e>>2]|0,!e))return e=0,e|0;if(A){A=0,f=o,r=e;A:for(;;){for(;s=+b[r>>3],o=+b[r+8>>3],r=r+16|0,m=t[r>>2]|0,m=(m|0)==0?e:m,i=+b[m>>3],l=+b[m+8>>3],s>i?(a=s,s=l):(a=i,i=s,s=o,o=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=t[r>>2]|0,!r){r=22;break A}if(l=s<0?s+6.283185307179586:s,s=o<0?o+6.283185307179586:o,f=l==f|s==f?f+-2220446049250313e-31:f,a=l+(s-l)*((n-i)/(a-i)),(a<0?a+6.283185307179586:a)>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}else{A=0,f=o,r=e;A:for(;;){for(;s=+b[r>>3],o=+b[r+8>>3],r=r+16|0,m=t[r>>2]|0,m=(m|0)==0?e:m,i=+b[m>>3],l=+b[m+8>>3],s>i?(a=s,s=l):(a=i,i=s,s=o,o=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=t[r>>2]|0,!r){r=22;break A}if(f=s==f|o==f?f+-2220446049250313e-31:f,s+(o-s)*((n-i)/(a-i))>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}return 0}function _0(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0;if(q=k,k=k+32|0,nA=q+16|0,W=q,i=vA(e|0,A|0,52)|0,S()|0,i=i&15,I=vA(r|0,n|0,52)|0,S()|0,(i|0)!=(I&15|0))return nA=12,k=q,nA|0;if(f=vA(e|0,A|0,45)|0,S()|0,f=f&127,m=vA(r|0,n|0,45)|0,S()|0,m=m&127,f>>>0>121|m>>>0>121)return nA=5,k=q,nA|0;if(I=(f|0)!=(m|0),I){if(l=ir(f,m)|0,(l|0)==7)return nA=1,k=q,nA|0;a=ir(m,f)|0,(a|0)==7?OA(27514,27538,161,27548):(L=l,s=a)}else L=0,s=0;M=Te(f)|0,j=Te(m)|0,t[nA>>2]=0,t[nA+4>>2]=0,t[nA+8>>2]=0,t[nA+12>>2]=0;do if(L){if(m=t[4272+(f*28|0)+(L<<2)>>2]|0,l=(m|0)>0,j)if(l){f=0,a=r,l=n;do a=al(a,l)|0,l=S()|0,s=Vt(s)|0,(s|0)==1&&(s=Vt(1)|0),f=f+1|0;while((f|0)!=(m|0));m=s,f=a,a=l}else m=s,f=r,a=n;else if(l){f=0,a=r,l=n;do a=Zn(a,l)|0,l=S()|0,s=Vt(s)|0,f=f+1|0;while((f|0)!=(m|0));m=s,f=a,a=l}else m=s,f=r,a=n;if(qn(f,a,nA)|0,I||OA(27563,27538,191,27548),l=(M|0)!=0,s=(j|0)!=0,l&s&&OA(27590,27538,192,27548),l){if(s=Qt(e,A)|0,(s|0)==7){i=5;break}if(wA[22e3+(s*7|0)+L>>0]|0){i=1;break}a=t[21168+(s*28|0)+(L<<2)>>2]|0,f=a}else if(s){if(s=Qt(f,a)|0,(s|0)==7){i=5;break}if(wA[22e3+(s*7|0)+m>>0]|0){i=1;break}f=0,a=t[21168+(m*28|0)+(s<<2)>>2]|0}else f=0,a=0;if((f|a|0)<0)i=5;else{if((a|0)>0){l=nA+4|0,s=0;do D0(l),s=s+1|0;while((s|0)!=(a|0))}if(t[W>>2]=0,t[W+4>>2]=0,t[W+8>>2]=0,gn(W,L),i|0)for(;Jt(i)|0?Cr(W):Gt(W),(i|0)>1;)i=i+-1|0;if((f|0)>0){i=0;do D0(W),i=i+1|0;while((i|0)!=(f|0))}G=nA+4|0,Ze(G,W,G),je(G),G=51}}else if(qn(r,n,nA)|0,(M|0)!=0&(j|0)!=0)if((m|0)!=(f|0)&&OA(27621,27538,261,27548),s=Qt(e,A)|0,i=Qt(r,n)|0,(s|0)==7|(i|0)==7)i=5;else if(wA[22e3+(s*7|0)+i>>0]|0)i=1;else if(s=t[21168+(s*28|0)+(i<<2)>>2]|0,(s|0)>0){l=nA+4|0,i=0;do D0(l),i=i+1|0;while((i|0)!=(s|0));G=51}else G=51;else G=51;while(!1);return(G|0)==51&&(i=nA+4|0,t[o>>2]=t[i>>2],t[o+4>>2]=t[i+4>>2],t[o+8>>2]=t[i+8>>2],i=0),nA=i,k=q,nA|0}function Xo(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0;if(G=k,k=k+48|0,f=G+36|0,s=G+24|0,l=G+12|0,a=G,o=vA(e|0,A|0,52)|0,S()|0,o=o&15,j=vA(e|0,A|0,45)|0,S()|0,j=j&127,j>>>0>121)return n=5,k=G,n|0;if(m=Te(j)|0,EA(o|0,0,52)|0,W=S()|0|134225919,i=n,t[i>>2]=-1,t[i+4>>2]=W,!o)return o=tt(r)|0,(o|0)==7||(o=or(j,o)|0,(o|0)==127)?(W=1,k=G,W|0):(I=EA(o|0,0,45)|0,L=S()|0,j=n,L=t[j+4>>2]&-1040385|L,W=n,t[W>>2]=t[j>>2]|I,t[W+4>>2]=L,W=0,k=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=o;;){if(i=r,r=r+-1|0,t[s>>2]=t[f>>2],t[s+4>>2]=t[f+4>>2],t[s+8>>2]=t[f+8>>2],Jt(i)|0){if(o=Et(f)|0,o|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],Cr(l)}else{if(o=mn(f)|0,o|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],Gt(l)}if(Pt(s,l,a),je(a),o=n,q=t[o>>2]|0,o=t[o+4>>2]|0,$=(15-i|0)*3|0,nA=EA(7,0,$|0)|0,o=o&~(S()|0),$=EA(tt(a)|0,0,$|0)|0,o=S()|0|o,W=n,t[W>>2]=$|q&~nA,t[W+4>>2]=o,(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=tt(f)|0,o=or(j,r)|0,(o|0)==127?a=0:a=Te(o)|0;e:do if(r){if(m){if(o=Qt(e,A)|0,(o|0)==7){o=5;break A}if(i=t[21376+(o*28|0)+(r<<2)>>2]|0,(i|0)>0){o=r,r=0;do o=Ut(o)|0,r=r+1|0;while((r|0)!=(i|0))}else o=r;if((o|0)==1){o=9;break A}r=or(j,o)|0,(r|0)==127&&OA(27648,27538,411,27678),Te(r)|0?OA(27693,27538,412,27678):(L=r,I=i,M=o)}else L=o,I=0,M=r;if(l=t[4272+(j*28|0)+(M<<2)>>2]|0,(l|0)<=-1&&OA(27724,27538,419,27678),!a){if((I|0)<0){o=5;break A}if(I|0){i=n,o=0,r=t[i>>2]|0,i=t[i+4>>2]|0;do r=ar(r,i)|0,i=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=i,o=o+1|0;while((o|0)<(I|0))}if((l|0)<=0){o=L,r=58;break}for(i=n,o=0,r=t[i>>2]|0,i=t[i+4>>2]|0;;)if(r=ar(r,i)|0,i=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=i,o=o+1|0,(o|0)==(l|0)){o=L,r=58;break e}}if(s=ir(L,j)|0,(s|0)==7&&OA(27514,27538,428,27678),o=n,r=t[o>>2]|0,o=t[o+4>>2]|0,(l|0)>0){i=0;do r=ar(r,o)|0,o=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=o,i=i+1|0;while((i|0)!=(l|0))}if(o=Qt(r,o)|0,(o|0)==7&&OA(27795,27538,440,27678),r=bt(L)|0,r=t[(r?21792:21584)+(s*28|0)+(o<<2)>>2]|0,(r|0)<0&&OA(27795,27538,454,27678),!r)o=L,r=58;else{s=n,o=0,i=t[s>>2]|0,s=t[s+4>>2]|0;do i=Kn(i,s)|0,s=S()|0,$=n,t[$>>2]=i,t[$+4>>2]=s,o=o+1|0;while((o|0)<(r|0));o=L,r=58}}else if((m|0)!=0&(a|0)!=0){if(r=Qt(e,A)|0,i=n,i=Qt(t[i>>2]|0,t[i+4>>2]|0)|0,(r|0)==7|(i|0)==7){o=5;break A}if(i=t[21376+(r*28|0)+(i<<2)>>2]|0,(i|0)<0){o=5;break A}if(!i)r=59;else{l=n,r=0,s=t[l>>2]|0,l=t[l+4>>2]|0;do s=ar(s,l)|0,l=S()|0,$=n,t[$>>2]=s,t[$+4>>2]=l,r=r+1|0;while((r|0)<(i|0));r=58}}else r=58;while(!1);if((r|0)==58&&a&&(r=59),(r|0)==59&&($=n,(Qt(t[$>>2]|0,t[$+4>>2]|0)|0)==1)){o=9;break}$=n,nA=t[$>>2]|0,$=t[$+4>>2]&-1040385,q=EA(o|0,0,45)|0,$=$|(S()|0),o=n,t[o>>2]=nA|q,t[o+4>>2]=$,o=0}else o=1;while(!1);return $=o,k=G,$|0}function _l(e,A,r,n,o,i){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0;var s=0,l=0;return l=k,k=k+16|0,s=l,o?e=15:(e=_0(e,A,r,n,s)|0,e||($r(s,i),e=0)),k=l,e|0}function Tl(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0;return s=k,k=k+16|0,i=s,n?r=15:(r=St(r,i)|0,r||(r=Xo(e,A,i,o)|0)),k=s,r|0}function Rl(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0;return a=k,k=k+32|0,s=a+12|0,l=a,i=_0(e,A,e,A,s)|0,i|0?(l=i,k=a,l|0):(e=_0(e,A,r,n,l)|0,e|0?(l=e,k=a,l|0):(s=Sr(s,l)|0,l=o,t[l>>2]=s,t[l+4>>2]=((s|0)<0)<<31>>31,l=0,k=a,l|0))}function jl(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0;return a=k,k=k+32|0,s=a+12|0,l=a,i=_0(e,A,e,A,s)|0,!i&&(i=_0(e,A,r,n,l)|0,!i)?(n=Sr(s,l)|0,n=WA(n|0,((n|0)<0)<<31>>31|0,1,0)|0,s=S()|0,l=o,t[l>>2]=n,t[l+4>>2]=s,l=0,k=a,l|0):(l=i,k=a,l|0)}function Il(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0,fe=0;if(QA=k,k=k+48|0,MA=QA+24|0,s=QA+12|0,zA=QA,i=_0(e,A,e,A,MA)|0,!i&&(i=_0(e,A,r,n,s)|0,!i)){$=Sr(MA,s)|0,U=(($|0)<0)<<31>>31,t[MA>>2]=0,t[MA+4>>2]=0,t[MA+8>>2]=0,t[s>>2]=0,t[s+4>>2]=0,t[s+8>>2]=0,_0(e,A,e,A,MA)|0&&OA(27795,27538,692,27747),_0(e,A,r,n,s)|0&&OA(27795,27538,697,27747),qr(MA),qr(s),m=($|0)==0?0:1/+($|0),r=t[MA>>2]|0,G=m*+((t[s>>2]|0)-r|0),W=MA+4|0,n=t[W>>2]|0,nA=m*+((t[s+4>>2]|0)-n|0),q=MA+8|0,i=t[q>>2]|0,m=m*+((t[s+8>>2]|0)-i|0),t[zA>>2]=r,M=zA+4|0,t[M>>2]=n,j=zA+8|0,t[j>>2]=i;A:do if(($|0)<0)i=0;else for(I=0,L=0;;){a=+(L>>>0)+4294967296*+(I|0),fe=G*a+ +(r|0),l=nA*a+ +(n|0),a=m*a+ +(i|0),r=~~+En(+fe),s=~~+En(+l),i=~~+En(+a),fe=+KA(+(+(r|0)-fe)),l=+KA(+(+(s|0)-l)),a=+KA(+(+(i|0)-a));do if(fe>l&fe>a)r=0-(s+i)|0,n=s;else if(f=0-r|0,l>a){n=f-i|0;break}else{n=s,i=f-s|0;break}while(!1);if(t[zA>>2]=r,t[M>>2]=n,t[j>>2]=i,Jr(zA),i=Xo(e,A,zA,o+(L<<3)|0)|0,i|0)break A;if(!((I|0)<(U|0)|(I|0)==(U|0)&L>>>0<$>>>0)){i=0;break A}r=WA(L|0,I|0,1,0)|0,n=S()|0,I=n,L=r,r=t[MA>>2]|0,n=t[W>>2]|0,i=t[q>>2]|0}while(!1);return zA=i,k=QA,zA|0}return zA=i,k=QA,zA|0}function V0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0;if((r|0)==0&(n|0)==0)return o=0,i=1,UA(o|0),i|0;i=e,o=A,e=1,A=0;do s=(r&1|0)==0&!0,e=ct((s?1:i)|0,(s?0:o)|0,e|0,A|0)|0,A=S()|0,r=fi(r|0,n|0,1)|0,n=S()|0,i=ct(i|0,o|0,i|0,o|0)|0,o=S()|0;while(!((r|0)==0&(n|0)==0));return UA(A|0),e|0}function to(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0;l=k,k=k+16|0,i=l,s=vA(e|0,A|0,52)|0,S()|0,s=s&15;do if(s){if(o=ur(e,A,i)|0,!o){f=+b[i>>3],a=1/+Be(+f),m=+b[25968+(s<<3)>>3],b[r>>3]=f+m,b[r+8>>3]=f-m,f=+b[i+8>>3],a=m*a,b[r+16>>3]=a+f,b[r+24>>3]=f-a;break}return s=o,k=l,s|0}else{if(o=vA(e|0,A|0,45)|0,S()|0,o=o&127,o>>>0>121)return s=5,k=l,s|0;i=22064+(o<<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 LA(r,n?1.4:1.1),n=26096+(s<<3)|0,(t[n>>2]|0)==(e|0)&&(t[n+4>>2]|0)==(A|0)&&(b[r>>3]=1.5707963267948966),s=26224+(s<<3)|0,(t[s>>2]|0)==(e|0)&&(t[s+4>>2]|0)==(A|0)&&(b[r+8>>3]=-1.5707963267948966),+b[r>>3]!=1.5707963267948966&&+b[r+8>>3]!=-1.5707963267948966?(s=0,k=l,s|0):(b[r+16>>3]=3.141592653589793,b[r+24>>3]=-3.141592653589793,s=0,k=l,s|0)}function Ll(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0;f=k,k=k+48|0,s=f+32|0,i=f+40|0,l=f,Bt(s,0,0,0),a=t[s>>2]|0,s=t[s+4>>2]|0;do if(r>>>0<=15){if(o=on(n)|0,o|0){n=l,t[n>>2]=0,t[n+4>>2]=0,t[l+8>>2]=o,t[l+12>>2]=-1,n=l+16|0,a=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,wA[n+12>>0]=0,wA[a>>0]=wA[i>>0]|0,wA[a+1>>0]=wA[i+1>>0]|0,wA[a+2>>0]=wA[i+2>>0]|0;break}if(o=Ot((t[A+8>>2]|0)+1|0,32)|0,o){ro(A,o),m=l,t[m>>2]=a,t[m+4>>2]=s,t[l+8>>2]=0,t[l+12>>2]=r,t[l+16>>2]=n,t[l+20>>2]=A,t[l+24>>2]=o,wA[l+28>>0]=0,a=l+29|0,wA[a>>0]=wA[i>>0]|0,wA[a+1>>0]=wA[i+1>>0]|0,wA[a+2>>0]=wA[i+2>>0]|0;break}else{n=l,t[n>>2]=0,t[n+4>>2]=0,t[l+8>>2]=13,t[l+12>>2]=-1,n=l+16|0,a=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,wA[n+12>>0]=0,wA[a>>0]=wA[i>>0]|0,wA[a+1>>0]=wA[i+1>>0]|0,wA[a+2>>0]=wA[i+2>>0]|0;break}}else a=l,t[a>>2]=0,t[a+4>>2]=0,t[l+8>>2]=4,t[l+12>>2]=-1,a=l+16|0,m=l+29|0,t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,wA[a+12>>0]=0,wA[m>>0]=wA[i>>0]|0,wA[m+1>>0]=wA[i+1>>0]|0,wA[m+2>>0]=wA[i+2>>0]|0;while(!1);kn(l),t[e>>2]=t[l>>2],t[e+4>>2]=t[l+4>>2],t[e+8>>2]=t[l+8>>2],t[e+12>>2]=t[l+12>>2],t[e+16>>2]=t[l+16>>2],t[e+20>>2]=t[l+20>>2],t[e+24>>2]=t[l+24>>2],t[e+28>>2]=t[l+28>>2],k=f}function kn(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0;if(U=k,k=k+336|0,I=U+168|0,L=U,n=e,r=t[n>>2]|0,n=t[n+4>>2]|0,(r|0)==0&(n|0)==0){k=U;return}if(A=e+28|0,wA[A>>0]|0?(r=Ai(r,n)|0,n=S()|0):wA[A>>0]=1,$=e+20|0,!(t[t[$>>2]>>2]|0)){A=e+24|0,r=t[A>>2]|0,r|0&&YA(r),q=e,t[q>>2]=0,t[q+4>>2]=0,t[e+8>>2]=0,t[$>>2]=0,t[e+12>>2]=-1,t[e+16>>2]=0,t[A>>2]=0,k=U;return}q=e+16|0,A=t[q>>2]|0,o=A&15;A:do if((r|0)==0&(n|0)==0)nA=e+24|0;else{G=e+12|0,M=(o|0)==3,m=A&255,a=(o|1|0)==3,j=e+24|0,f=(o+-1|0)>>>0<3,s=(o|2|0)==3,l=L+8|0;e:for(;;){if(i=vA(r|0,n|0,52)|0,S()|0,i=i&15,(i|0)==(t[G>>2]|0)){switch(m&15){case 0:case 2:case 3:{if(o=ur(r,n,I)|0,o|0){W=15;break e}if(no(t[$>>2]|0,t[j>>2]|0,I)|0){W=19;break e}break}}if(a&&(o=t[(t[$>>2]|0)+4>>2]|0,t[I>>2]=t[o>>2],t[I+4>>2]=t[o+4>>2],t[I+8>>2]=t[o+8>>2],t[I+12>>2]=t[o+12>>2],m0(26832,I)|0)){if($n(t[(t[$>>2]|0)+4>>2]|0,i,L)|0){W=25;break}if(o=L,(t[o>>2]|0)==(r|0)&&(t[o+4>>2]|0)==(n|0)){W=29;break}}if(f){if(o=Tr(r,n,I)|0,o|0){W=32;break}if(to(r,n,L,0)|0){W=36;break}if(s&&ti(t[$>>2]|0,t[j>>2]|0,I,L)|0){W=42;break}if(a&&ri(t[$>>2]|0,t[j>>2]|0,I,L)|0){W=42;break}}if(M){if(A=to(r,n,I,1)|0,o=t[j>>2]|0,A|0){W=45;break}if(Ie(o,I)|0){if(z(L,I),B0(I,t[j>>2]|0)|0){W=53;break}if(no(t[$>>2]|0,t[j>>2]|0,l)|0){W=53;break}if(ri(t[$>>2]|0,t[j>>2]|0,L,I)|0){W=53;break}}}}do if((i|0)<(t[G>>2]|0)){if(A=to(r,n,I,1)|0,o=t[j>>2]|0,A|0){W=58;break e}if(!(Ie(o,I)|0)){W=73;break}if(B0(t[j>>2]|0,I)|0&&(z(L,I),ti(t[$>>2]|0,t[j>>2]|0,L,I)|0)){W=65;break e}if(r=Wo(r,n,i+1|0,L)|0,r|0){W=67;break e}n=L,r=t[n>>2]|0,n=t[n+4>>2]|0}else W=73;while(!1);if((W|0)==73&&(W=0,r=Ai(r,n)|0,n=S()|0),(r|0)==0&(n|0)==0){nA=j;break A}}switch(W|0){case 15:{A=t[j>>2]|0,A|0&&YA(A),W=e,t[W>>2]=0,t[W+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>2]=0,t[e+8>>2]=o,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,k=U;return}case 32:{A=t[j>>2]|0,A|0&&YA(A),nA=e,t[nA>>2]=0,t[nA+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>2]=0,t[e+8>>2]=o,k=U;return}case 36:{OA(27795,27761,493,27772);break}case 42:{t[e>>2]=r,t[e+4>>2]=n,k=U;return}case 45:{o|0&&YA(o),W=e,t[W>>2]=0,t[W+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>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:{o|0&&YA(o),W=e,t[W>>2]=0,t[W+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>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[j>>2]|0,A|0&&YA(A),nA=e,t[nA>>2]=0,t[nA+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>2]=0,t[e+8>>2]=r,k=U;return}}if((W|0)==20){k=U;return}else if((W|0)==55){k=U;return}else if((W|0)==71){k=U;return}}while(!1);A=t[nA>>2]|0,A|0&&YA(A),W=e,t[W>>2]=0,t[W+4>>2]=0,t[e+8>>2]=0,t[$>>2]=0,t[e+12>>2]=-1,t[q>>2]=0,t[nA>>2]=0,k=U}function Ai(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0;M=k,k=k+16|0,m=M,n=vA(e|0,A|0,52)|0,S()|0,n=n&15,r=vA(e|0,A|0,45)|0,S()|0;do if(n){for(;r=EA(n+4095|0,0,52)|0,o=S()|0|A&-15728641,i=(15-n|0)*3|0,s=EA(7,0,i|0)|0,l=S()|0,r=r|e|s,o=o|l,a=vA(e|0,A|0,i|0)|0,S()|0,a=a&7,n=n+-1|0,!(a>>>0<6);)if(n)A=o,e=r;else{f=4;break}if((f|0)==4){r=vA(r|0,o|0,45)|0,S()|0;break}return m=(a|0)==0&(ze(r,o)|0)!=0,m=EA((m?2:1)+a|0,0,i|0)|0,f=S()|0|A&~l,m=m|e&~s,UA(f|0),k=M,m|0}while(!1);return r=r&127,r>>>0>120?(f=0,m=0,UA(f|0),k=M,m|0):(Bt(m,0,r+1|0,0),f=t[m+4>>2]|0,m=t[m>>2]|0,UA(f|0),k=M,m|0)}function Nl(e,A,r,n,o,i){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0;var s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0;W=k,k=k+160|0,M=W+80|0,l=W+64|0,j=W+112|0,G=W,Ll(M,e,A,r),f=M,Xn(l,t[f>>2]|0,t[f+4>>2]|0,A),f=l,a=t[f>>2]|0,f=t[f+4>>2]|0,s=t[M+8>>2]|0,I=j+4|0,t[I>>2]=t[M>>2],t[I+4>>2]=t[M+4>>2],t[I+8>>2]=t[M+8>>2],t[I+12>>2]=t[M+12>>2],t[I+16>>2]=t[M+16>>2],t[I+20>>2]=t[M+20>>2],t[I+24>>2]=t[M+24>>2],t[I+28>>2]=t[M+28>>2],I=G,t[I>>2]=a,t[I+4>>2]=f,I=G+8|0,t[I>>2]=s,e=G+12|0,A=j,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(j=G+48|0,t[j>>2]=t[l>>2],t[j+4>>2]=t[l+4>>2],t[j+8>>2]=t[l+8>>2],t[j+12>>2]=t[l+12>>2],(a|0)==0&(f|0)==0)return G=s,k=W,G|0;r=G+16|0,m=G+24|0,M=G+28|0,s=0,l=0,A=a,e=f;do{if(!((s|0)<(o|0)|(s|0)==(o|0)&l>>>0>>0)){L=4;break}if(f=l,l=WA(l|0,s|0,1,0)|0,s=S()|0,f=i+(f<<3)|0,t[f>>2]=A,t[f+4>>2]=e,Ao(j),e=j,A=t[e>>2]|0,e=t[e+4>>2]|0,(A|0)==0&(e|0)==0){if(kn(r),A=r,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0){L=10;break}Ko(e,A,t[M>>2]|0,j),e=j,A=t[e>>2]|0,e=t[e+4>>2]|0}f=G,t[f>>2]=A,t[f+4>>2]=e}while(!((A|0)==0&(e|0)==0));return(L|0)==4?(e=G+40|0,A=t[e>>2]|0,A|0&&YA(A),L=G+16|0,t[L>>2]=0,t[L+4>>2]=0,t[m>>2]=0,t[G+36>>2]=0,t[M>>2]=-1,t[G+32>>2]=0,t[e>>2]=0,Ko(0,0,0,j),t[G>>2]=0,t[G+4>>2]=0,t[I>>2]=0,G=14,k=W,G|0):((L|0)==10&&(t[G>>2]=0,t[G+4>>2]=0,t[I>>2]=t[m>>2]),G=t[I>>2]|0,k=W,G|0)}function Fl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0;if(M=k,k=k+48|0,a=M+32|0,l=M+40|0,f=M,!(t[e>>2]|0))return m=n,t[m>>2]=0,t[m+4>>2]=0,m=0,k=M,m|0;Bt(a,0,0,0),s=a,o=t[s>>2]|0,s=t[s+4>>2]|0;do if(A>>>0>15)m=f,t[m>>2]=0,t[m+4>>2]=0,t[f+8>>2]=4,t[f+12>>2]=-1,m=f+16|0,r=f+29|0,t[m>>2]=0,t[m+4>>2]=0,t[m+8>>2]=0,wA[m+12>>0]=0,wA[r>>0]=wA[l>>0]|0,wA[r+1>>0]=wA[l+1>>0]|0,wA[r+2>>0]=wA[l+2>>0]|0,r=4,m=9;else{if(r=on(r)|0,r|0){a=f,t[a>>2]=0,t[a+4>>2]=0,t[f+8>>2]=r,t[f+12>>2]=-1,a=f+16|0,m=f+29|0,t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,wA[a+12>>0]=0,wA[m>>0]=wA[l>>0]|0,wA[m+1>>0]=wA[l+1>>0]|0,wA[m+2>>0]=wA[l+2>>0]|0,m=9;break}if(r=Ot((t[e+8>>2]|0)+1|0,32)|0,!r){m=f,t[m>>2]=0,t[m+4>>2]=0,t[f+8>>2]=13,t[f+12>>2]=-1,m=f+16|0,r=f+29|0,t[m>>2]=0,t[m+4>>2]=0,t[m+8>>2]=0,wA[m+12>>0]=0,wA[r>>0]=wA[l>>0]|0,wA[r+1>>0]=wA[l+1>>0]|0,wA[r+2>>0]=wA[l+2>>0]|0,r=13,m=9;break}ro(e,r),I=f,t[I>>2]=o,t[I+4>>2]=s,s=f+8|0,t[s>>2]=0,t[f+12>>2]=A,t[f+20>>2]=e,t[f+24>>2]=r,wA[f+28>>0]=0,o=f+29|0,wA[o>>0]=wA[l>>0]|0,wA[o+1>>0]=wA[l+1>>0]|0,wA[o+2>>0]=wA[l+2>>0]|0,t[f+16>>2]=3,j=+sr(r),j=j*+Yr(r),i=+KA(+ +b[r>>3]),i=j/+Be(+ +Cn(+i,+ +KA(+ +b[r+8>>3])))*6371.007180918475*6371.007180918475,o=f+12|0,r=t[o>>2]|0;A:do if((r|0)>0)do{if(Zo(r+-1|0,a)|0,!(i/+b[a>>3]>10))break A;I=t[o>>2]|0,r=I+-1|0,t[o>>2]=r}while((I|0)>1);while(!1);if(kn(f),o=n,t[o>>2]=0,t[o+4>>2]=0,o=f,r=t[o>>2]|0,o=t[o+4>>2]|0,!((r|0)==0&(o|0)==0))do p0(r,o,A,a)|0,l=a,e=n,l=WA(t[e>>2]|0,t[e+4>>2]|0,t[l>>2]|0,t[l+4>>2]|0)|0,e=S()|0,I=n,t[I>>2]=l,t[I+4>>2]=e,kn(f),I=f,r=t[I>>2]|0,o=t[I+4>>2]|0;while(!((r|0)==0&(o|0)==0));r=t[s>>2]|0}while(!1);return I=r,k=M,I|0}function nn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;if(!(m0(A,r)|0)||(A=Ft(A)|0,n=+b[r>>3],o=+b[r+8>>3],o=A&o<0?o+6.283185307179586:o,j=t[e>>2]|0,(j|0)<=0))return j=0,j|0;if(M=t[e+4>>2]|0,A){A=0,m=o,r=-1,e=0;A:for(;;){for(f=e;s=+b[M+(f<<4)>>3],o=+b[M+(f<<4)+8>>3],e=(r+2|0)%(j|0)|0,i=+b[M+(e<<4)>>3],l=+b[M+(e<<4)+8>>3],s>i?(a=s,s=l):(a=i,i=s,s=o,o=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=f+1|0,(r|0)>=(j|0)){r=22;break A}else e=f,f=r,r=e;if(l=s<0?s+6.283185307179586:s,s=o<0?o+6.283185307179586:o,m=l==m|s==m?m+-2220446049250313e-31:m,a=l+(s-l)*((n-i)/(a-i)),(a<0?a+6.283185307179586:a)>m&&(A=A^1),e=f+1|0,(e|0)>=(j|0)){r=22;break}else r=f}if((r|0)==22)return A|0}else{A=0,m=o,r=-1,e=0;A:for(;;){for(f=e;s=+b[M+(f<<4)>>3],o=+b[M+(f<<4)+8>>3],e=(r+2|0)%(j|0)|0,i=+b[M+(e<<4)>>3],l=+b[M+(e<<4)+8>>3],s>i?(a=s,s=l):(a=i,i=s,s=o,o=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=f+1|0,(r|0)>=(j|0)){r=22;break A}else e=f,f=r,r=e;if(m=s==m|o==m?m+-2220446049250313e-31:m,s+(o-s)*((n-i)/(a-i))>m&&(A=A^1),e=f+1|0,(e|0)>=(j|0)){r=22;break}else r=f}if((r|0)==22)return A|0}return 0}function ei(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0;if(L=t[e>>2]|0,!L){t[A>>2]=0,t[A+4>>2]=0,t[A+8>>2]=0,t[A+12>>2]=0,t[A+16>>2]=0,t[A+20>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0;return}if(G=A+8|0,b[G>>3]=17976931348623157e292,W=A+24|0,b[W>>3]=17976931348623157e292,b[A>>3]=-17976931348623157e292,nA=A+16|0,b[nA>>3]=-17976931348623157e292,!((L|0)<=0)){for(j=t[e+4>>2]|0,f=17976931348623157e292,m=-17976931348623157e292,M=0,e=-1,i=17976931348623157e292,s=17976931348623157e292,a=-17976931348623157e292,n=-17976931348623157e292,I=0;r=+b[j+(I<<4)>>3],l=+b[j+(I<<4)+8>>3],e=e+2|0,o=+b[j+(((e|0)==(L|0)?0:e)<<4)+8>>3],r>3]=r,i=r),l>3]=l,s=l),r>a?b[A>>3]=r:r=a,l>n&&(b[nA>>3]=l,n=l),f=l>0&lm?l:m,M=M|+KA(+(l-o))>3.141592653589793,e=I+1|0,(e|0)!=(L|0);)q=I,a=r,I=e,e=q;M&&(b[nA>>3]=m,b[W>>3]=f)}}function on(e){return e=e|0,(e>>>0<4?0:15)|0}function ro(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0;if(L=t[e>>2]|0,L){if(G=A+8|0,b[G>>3]=17976931348623157e292,W=A+24|0,b[W>>3]=17976931348623157e292,b[A>>3]=-17976931348623157e292,nA=A+16|0,b[nA>>3]=-17976931348623157e292,(L|0)>0){for(o=t[e+4>>2]|0,j=17976931348623157e292,I=-17976931348623157e292,n=0,r=-1,a=17976931348623157e292,f=17976931348623157e292,M=-17976931348623157e292,s=-17976931348623157e292,q=0;i=+b[o+(q<<4)>>3],m=+b[o+(q<<4)+8>>3],zA=r+2|0,l=+b[o+(((zA|0)==(L|0)?0:zA)<<4)+8>>3],i>3]=i,a=i),m>3]=m,f=m),i>M?b[A>>3]=i:i=M,m>s&&(b[nA>>3]=m,s=m),j=m>0&mI?m:I,n=n|+KA(+(m-l))>3.141592653589793,r=q+1|0,(r|0)!=(L|0);)zA=q,M=i,q=r,r=zA;n&&(b[nA>>3]=I,b[W>>3]=j)}}else t[A>>2]=0,t[A+4>>2]=0,t[A+8>>2]=0,t[A+12>>2]=0,t[A+16>>2]=0,t[A+20>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0;if(zA=e+8|0,r=t[zA>>2]|0,!((r|0)<=0)){MA=e+12|0,U=0;do if(o=t[MA>>2]|0,n=U,U=U+1|0,W=A+(U<<5)|0,nA=t[o+(n<<3)>>2]|0,nA){if(q=A+(U<<5)+8|0,b[q>>3]=17976931348623157e292,e=A+(U<<5)+24|0,b[e>>3]=17976931348623157e292,b[W>>3]=-17976931348623157e292,$=A+(U<<5)+16|0,b[$>>3]=-17976931348623157e292,(nA|0)>0){for(L=t[o+(n<<3)+4>>2]|0,j=17976931348623157e292,I=-17976931348623157e292,o=0,n=-1,G=0,a=17976931348623157e292,f=17976931348623157e292,m=-17976931348623157e292,s=-17976931348623157e292;i=+b[L+(G<<4)>>3],M=+b[L+(G<<4)+8>>3],n=n+2|0,l=+b[L+(((n|0)==(nA|0)?0:n)<<4)+8>>3],i>3]=i,a=i),M>3]=M,f=M),i>m?b[W>>3]=i:i=m,M>s&&(b[$>>3]=M,s=M),j=M>0&MI?M:I,o=o|+KA(+(M-l))>3.141592653589793,n=G+1|0,(n|0)!=(nA|0);)QA=G,G=n,m=i,n=QA;o&&(b[$>>3]=I,b[e>>3]=j)}}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[zA>>2]|0;while((U|0)<(r|0))}}function no(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if(!(nn(e,A,r)|0))return o=0,o|0;if(o=e+8|0,(t[o>>2]|0)<=0)return o=1,o|0;for(n=e+12|0,e=0;;){if(i=e,e=e+1|0,nn((t[n>>2]|0)+(i<<3)|0,A+(e<<5)|0,r)|0){e=0,n=6;break}if((e|0)>=(t[o>>2]|0)){e=1,n=6;break}}return(n|0)==6?e|0:0}function ti(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(f=k,k=k+16|0,l=f,s=r+8|0,!(nn(e,A,s)|0))return a=0,k=f,a|0;a=e+8|0;A:do if((t[a>>2]|0)>0){for(i=e+12|0,o=0;;){if(m=o,o=o+1|0,nn((t[i>>2]|0)+(m<<3)|0,A+(o<<5)|0,s)|0){o=0;break}if((o|0)>=(t[a>>2]|0))break A}return k=f,o|0}while(!1);if(bn(e,A,r,n)|0)return m=0,k=f,m|0;t[l>>2]=t[r>>2],t[l+4>>2]=s,o=t[a>>2]|0;A:do if((o|0)>0)for(e=e+12|0,s=0,i=o;;){if(o=t[e>>2]|0,(t[o+(s<<3)>>2]|0)>0){if(nn(l,n,t[o+(s<<3)+4>>2]|0)|0){o=0;break A}if(o=s+1|0,bn((t[e>>2]|0)+(s<<3)|0,A+(o<<5)|0,r,n)|0){o=0;break A}i=t[a>>2]|0}else o=s+1|0;if((o|0)<(i|0))s=o;else{o=1;break}}else o=1;while(!1);return m=o,k=f,m|0}function bn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0,zA=0,QA=0,fe=0;if(zA=k,k=k+176|0,q=zA+172|0,o=zA+168|0,$=zA,!(Ie(A,n)|0))return e=0,k=zA,e|0;if(g0(A,n,q,o),Lr($|0,r|0,168)|0,(t[r>>2]|0)>0){A=0;do QA=$+8+(A<<4)+8|0,nA=+Wt(+b[QA>>3],t[o>>2]|0),b[QA>>3]=nA,A=A+1|0;while((A|0)<(t[r>>2]|0))}G=+b[n>>3],W=+b[n+8>>3],nA=+Wt(+b[n+16>>3],t[o>>2]|0),I=+Wt(+b[n+24>>3],t[o>>2]|0);A:do if((t[e>>2]|0)>0){if(n=e+4|0,o=t[$>>2]|0,(o|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,j=+b[A+(r<<4)>>3],L=+Wt(+b[A+(r<<4)+8>>3],t[q>>2]|0),A=t[n>>2]|0,r=r+1|0,QA=(r|0)%(t[e>>2]|0)|0,i=+b[A+(QA<<4)>>3],s=+Wt(+b[A+(QA<<4)+8>>3],t[q>>2]|0),!(j>=G)|!(i>=G)&&!(j<=W)|!(i<=W)&&!(L<=I)|!(s<=I)&&!(L>=nA)|!(s>=nA)){M=i-j,f=s-L,A=0;do if(fe=A,A=A+1|0,QA=(A|0)==(o|0)?0:A,i=+b[$+8+(fe<<4)+8>>3],s=+b[$+8+(QA<<4)+8>>3]-i,l=+b[$+8+(fe<<4)>>3],a=+b[$+8+(QA<<4)>>3]-l,m=M*s-f*a,m!=0&&(U=L-i,MA=j-l,a=(U*a-s*MA)/m,!(a<0|a>1))&&(m=(M*U-f*MA)/m,m>=0&m<=1)){A=1;break A}while((A|0)<(o|0))}if((r|0)>=(t[e>>2]|0)){A=0;break}}}else A=0;while(!1);return fe=A,k=zA,fe|0}function ri(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0;if(bn(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(o=e+12|0,e=0;;){if(s=e,e=e+1|0,bn((t[o>>2]|0)+(s<<3)|0,A+(e<<5)|0,r,n)|0){e=1,o=6;break}if((e|0)>=(t[i>>2]|0)){e=0,o=6;break}}return(o|0)==6?e|0:0}function Pl(){return 8}function Ql(){return 16}function Ol(){return 168}function zl(){return 8}function Hl(){return 16}function Gl(){return 12}function Ul(){return 8}function Vl(e){return e=e|0,+(+((t[e>>2]|0)>>>0)+4294967296*+(t[e+4>>2]|0))}function Wl(e){e=e|0;var A=0,r=0;return r=+b[e>>3],A=+b[e+8>>3],+ +ge(+(r*r+A*A))}function ni(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;f=+b[e>>3],a=+b[A>>3]-f,l=+b[e+8>>3],s=+b[A+8>>3]-l,M=+b[r>>3],i=+b[n>>3]-M,j=+b[r+8>>3],m=+b[n+8>>3]-j,i=(i*(l-j)-(f-M)*m)/(a*m-s*i),b[o>>3]=f+a*i,b[o+8>>3]=l+s*i}function oi(e,A){return e=e|0,A=A|0,+KA(+(+b[e>>3]-+b[A>>3]))<11920928955078125e-23?(A=+KA(+(+b[e+8>>3]-+b[A+8>>3]))<11920928955078125e-23,A|0):(A=0,A|0)}function it(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;return o=+b[e>>3]-+b[A>>3],n=+b[e+8>>3]-+b[A+8>>3],r=+b[e+16>>3]-+b[A+16>>3],+(o*o+n*n+r*r)}function Yl(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;r=+b[e>>3],n=+Be(+r),r=+oe(+r),b[A+16>>3]=r,r=+b[e+8>>3],o=n*+Be(+r),b[A>>3]=o,r=n*+oe(+r),b[A+8>>3]=r}function Kl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if(i=k,k=k+16|0,o=i,n=ze(e,A)|0,(r+-1|0)>>>0>5||(n=(n|0)!=0,(r|0)==1&n))return o=-1,k=i,o|0;do if(sn(e,A,o)|0)n=-1;else if(n){n=((t[26352+(r<<2)>>2]|0)+5-(t[o>>2]|0)|0)%5|0;break}else{n=((t[26384+(r<<2)>>2]|0)+6-(t[o>>2]|0)|0)%6|0;break}while(!1);return o=n,k=i,o|0}function sn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(m=k,k=k+32|0,l=m+16|0,a=m,n=_r(e,A,l)|0,n|0)return r=n,k=m,r|0;i=te(e,A)|0,f=Qt(e,A)|0,G0(i,a),n=qt(i,t[l>>2]|0)|0;do if(Te(i)|0){do switch(i|0){case 4:{o=0;break}case 14:{o=1;break}case 24:{o=2;break}case 38:{o=3;break}case 49:{o=4;break}case 58:{o=5;break}case 63:{o=6;break}case 72:{o=7;break}case 83:{o=8;break}case 97:{o=9;break}case 107:{o=10;break}case 117:{o=11;break}default:OA(27795,27797,75,27806)}while(!1);if(s=t[26416+(o*24|0)+8>>2]|0,A=t[26416+(o*24|0)+16>>2]|0,e=t[l>>2]|0,(e|0)!=(t[a>>2]|0)&&(a=bt(i)|0,e=t[l>>2]|0,a|(e|0)==(A|0)&&(n=(n+1|0)%6|0)),(f|0)==3&(e|0)==(A|0)){n=(n+5|0)%6|0;break}(f|0)==5&(e|0)==(s|0)&&(n=(n+1|0)%6|0)}while(!1);return t[r>>2]=n,r=0,k=m,r|0}function Xt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0;if($=k,k=k+32|0,q=$+24|0,W=$+20|0,L=$+8|0,I=$+16|0,j=$,a=(ze(e,A)|0)==0,a=a?6:5,m=vA(e|0,A|0,52)|0,S()|0,m=m&15,a>>>0<=r>>>0)return n=2,k=$,n|0;M=(m|0)==0,!M&&(G=EA(7,0,(m^15)*3|0)|0,(G&e|0)==0&((S()|0)&A|0)==0)?o=r:i=4;A:do if((i|0)==4){if(o=(ze(e,A)|0)!=0,((o?4:5)|0)<(r|0)||sn(e,A,q)|0||(i=(t[q>>2]|0)+r|0,o?o=26704+(((i|0)%5|0)<<2)|0:o=26736+(((i|0)%6|0)<<2)|0,G=t[o>>2]|0,(G|0)==7))return n=1,k=$,n|0;t[W>>2]=0,o=Y(e,A,G,W,L)|0;do if(!o){if(l=L,f=t[l>>2]|0,l=t[l+4>>2]|0,s=l>>>0>>0|(l|0)==(A|0)&f>>>0>>0,i=s?f:e,s=s?l:A,!M&&(M=EA(7,0,(m^15)*3|0)|0,(f&M|0)==0&(l&(S()|0)|0)==0))o=r;else{if(l=(r+-1+a|0)%(a|0)|0,o=ze(e,A)|0,(l|0)<0&&OA(27795,27797,248,27822),a=(o|0)!=0,((a?4:5)|0)<(l|0)&&OA(27795,27797,248,27822),sn(e,A,q)|0&&OA(27795,27797,248,27822),o=(t[q>>2]|0)+l|0,a?o=26704+(((o|0)%5|0)<<2)|0:o=26736+(((o|0)%6|0)<<2)|0,l=t[o>>2]|0,(l|0)==7&&OA(27795,27797,248,27822),t[I>>2]=0,o=Y(e,A,l,I,j)|0,o|0)break;f=j,a=t[f>>2]|0,f=t[f+4>>2]|0;do if(f>>>0>>0|(f|0)==(s|0)&a>>>0>>0){if(ze(a,f)|0?i=JA(a,f,e,A)|0:i=t[26800+((((t[I>>2]|0)+(t[26768+(l<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,o=ze(a,f)|0,(i+-1|0)>>>0>5){o=-1,i=a,s=f;break}if(o=(o|0)!=0,(i|0)==1&o){o=-1,i=a,s=f;break}do if(sn(a,f,q)|0)o=-1;else if(o){o=((t[26352+(i<<2)>>2]|0)+5-(t[q>>2]|0)|0)%5|0;break}else{o=((t[26384+(i<<2)>>2]|0)+6-(t[q>>2]|0)|0)%6|0;break}while(!1);i=a,s=f}else o=r;while(!1);l=L,f=t[l>>2]|0,l=t[l+4>>2]|0}if((i|0)==(f|0)&(s|0)==(l|0)){if(a=(ze(f,l)|0)!=0,a?e=JA(f,l,e,A)|0:e=t[26800+((((t[W>>2]|0)+(t[26768+(G<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,o=ze(f,l)|0,(e+-1|0)>>>0<=5&&(nA=(o|0)!=0,!((e|0)==1&nA)))do if(sn(f,l,q)|0)o=-1;else if(nA){o=((t[26352+(e<<2)>>2]|0)+5-(t[q>>2]|0)|0)%5|0;break}else{o=((t[26384+(e<<2)>>2]|0)+6-(t[q>>2]|0)|0)%6|0;break}while(!1);else o=-1;o=o+1|0,o=(o|0)==6|a&(o|0)==5?0:o}A=s,e=i;break A}while(!1);return n=o,k=$,n|0}while(!1);return nA=EA(o|0,0,56)|0,q=S()|0|A&-2130706433|536870912,t[n>>2]=nA|e,t[n+4>>2]=q,n=0,k=$,n|0}function Zl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;return i=(ze(e,A)|0)==0,n=Xt(e,A,0,r)|0,o=(n|0)==0,i?!o||(n=Xt(e,A,1,r+8|0)|0,n|0)||(n=Xt(e,A,2,r+16|0)|0,n|0)||(n=Xt(e,A,3,r+24|0)|0,n|0)||(n=Xt(e,A,4,r+32|0)|0,n)?(i=n,i|0):Xt(e,A,5,r+40|0)|0:!o||(n=Xt(e,A,1,r+8|0)|0,n|0)||(n=Xt(e,A,2,r+16|0)|0,n|0)||(n=Xt(e,A,3,r+24|0)|0,n|0)||(n=Xt(e,A,4,r+32|0)|0,n|0)?(i=n,i|0):(i=r+40|0,t[i>>2]=0,t[i+4>>2]=0,i=0,i|0)}function $l(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0;return a=k,k=k+192|0,o=a,i=a+168|0,s=vA(e|0,A|0,56)|0,S()|0,s=s&7,l=A&-2130706433|134217728,n=_r(e,l,i)|0,n|0?(l=n,k=a,l|0):(A=vA(e|0,A|0,52)|0,S()|0,A=A&15,ze(e,l)|0?w(i,A,s,1,o):AA(i,A,s,1,o),l=o+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,k=a,l|0)}function ii(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return o=k,k=k+16|0,r=o,!(!0&(A&2013265920|0)==536870912)||(n=A&-2130706433|134217728,!(Ve(e,n)|0))?(n=0,k=o,n|0):(i=vA(e|0,A|0,56)|0,S()|0,i=(Xt(e,n,i&7,r)|0)==0,n=r,n=i&((t[n>>2]|0)==(e|0)?(t[n+4>>2]|0)==(A|0):0)&1,k=o,n|0)}function si(e,A,r){e=e|0,A=A|0,r=r|0;var n=0;(A|0)>0?(n=Ot(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 li(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;o=e+4|0,i=e+12|0,s=e+8|0;A:for(;;){for(r=t[o>>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+(~~(+KA(+(+st(10,+ +(15-(t[i>>2]|0)|0))*(+b[l>>3]+ +b[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]}YA(l),t[s>>2]=(t[s>>2]|0)+-1}while(!1)}YA(t[e>>2]|0)}function ai(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 ui(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;if(r=~~(+KA(+(+st(10,+ +(15-(t[e+12>>2]|0)|0))*(+b[A>>3]+ +b[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(o=r;;){if((o|0)==(A|0)){o=8;break}if(r=t[o+32>>2]|0,r)n=o,o=r;else{r=1,o=10;break}}if((o|0)==8){t[n+32>>2]=t[i>>2];break}else if((o|0)==10)return r|0}else t[r>>2]=t[i>>2];while(!1);return YA(A),i=e+8|0,t[i>>2]=(t[i>>2]|0)+-1,i=0,i|0}function ql(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;i=y0(40)|0,i||OA(27888,27858,98,27901),t[i>>2]=t[A>>2],t[i+4>>2]=t[A+4>>2],t[i+8>>2]=t[A+8>>2],t[i+12>>2]=t[A+12>>2],o=i+16|0,t[o>>2]=t[r>>2],t[o+4>>2]=t[r+4>>2],t[o+8>>2]=t[r+8>>2],t[o+12>>2]=t[r+12>>2],t[i+32>>2]=0,o=~~(+KA(+(+st(10,+ +(15-(t[e+12>>2]|0)|0))*(+b[A>>3]+ +b[A+8>>3])))%+(t[e+4>>2]|0))>>>0,o=(t[e>>2]|0)+(o<<2)|0,n=t[o>>2]|0;do if(!n)t[o>>2]=i;else{for(;!(Rr(n,A)|0&&Rr(n+16|0,r)|0);)if(o=t[n+32>>2]|0,n=(o|0)==0?n:o,!(t[n+32>>2]|0)){s=10;break}if((s|0)==10){t[n+32>>2]=i;break}return YA(i),s=n,s|0}while(!1);return s=e+8|0,t[s>>2]=(t[s>>2]|0)+1,s=i,s|0}function Jl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;if(o=~~(+KA(+(+st(10,+ +(15-(t[e+12>>2]|0)|0))*(+b[A>>3]+ +b[A+8>>3])))%+(t[e+4>>2]|0))>>>0,o=t[(t[e>>2]|0)+(o<<2)>>2]|0,!o)return r=0,r|0;if(!r){for(e=o;;){if(Rr(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=o;;){if(Rr(e,A)|0&&Rr(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 Xl(e,A){e=e|0,A=A|0;var r=0;if(r=~~(+KA(+(+st(10,+ +(15-(t[e+12>>2]|0)|0))*(+b[A>>3]+ +b[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(Rr(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 Aa(){return 27920}function W0(e){return e=+e,~~+di(+e)|0}function y0(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,MA=0;MA=k,k=k+16|0,j=MA;do if(e>>>0<245){if(f=e>>>0<11?16:e+11&-8,e=f>>>3,M=t[6981]|0,r=M>>>e,r&3|0)return A=(r&1^1)+e|0,e=27964+(A<<1<<2)|0,r=e+8|0,n=t[r>>2]|0,o=n+8|0,i=t[o>>2]|0,(i|0)==(e|0)?t[6981]=M&~(1<>2]=e,t[r>>2]=i),U=A<<3,t[n+4>>2]=U|3,U=n+U+4|0,t[U>>2]=t[U>>2]|1,U=o,k=MA,U|0;if(m=t[6983]|0,f>>>0>m>>>0){if(r|0)return A=2<>>12&16,A=A>>>l,r=A>>>5&8,A=A>>>r,i=A>>>2&4,A=A>>>i,e=A>>>1&2,A=A>>>e,n=A>>>1&1,n=(r|l|i|e|n)+(A>>>n)|0,A=27964+(n<<1<<2)|0,e=A+8|0,i=t[e>>2]|0,l=i+8|0,r=t[l>>2]|0,(r|0)==(A|0)?(e=M&~(1<>2]=A,t[e>>2]=r,e=M),U=n<<3,s=U-f|0,t[i+4>>2]=f|3,o=i+f|0,t[o+4>>2]=s|1,t[i+U>>2]=s,m|0&&(n=t[6986]|0,A=m>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=n,t[A+12>>2]=n,t[n+8>>2]=A,t[n+12>>2]=r),t[6983]=s,t[6986]=o,U=l,k=MA,U|0;if(i=t[6982]|0,i){for(r=(i&0-i)+-1|0,o=r>>>12&16,r=r>>>o,n=r>>>5&8,r=r>>>n,s=r>>>2&4,r=r>>>s,l=r>>>1&2,r=r>>>l,a=r>>>1&1,a=t[28228+((n|o|s|l|a)+(r>>>a)<<2)>>2]|0,r=a,l=a,a=(t[a+4>>2]&-8)-f|0;e=t[r+16>>2]|0,!(!e&&(e=t[r+20>>2]|0,!e));)s=(t[e+4>>2]&-8)-f|0,o=s>>>0>>0,r=e,l=o?e:l,a=o?s:a;if(s=l+f|0,s>>>0>l>>>0){o=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(o|0){if(A=t[l+28>>2]|0,e=28228+(A<<2)|0,(l|0)==(t[e>>2]|0)){if(t[e>>2]=r,!r){t[6982]=i&~(1<>2]|0)==(l|0)?U:o+20|0)>>2]=r,!r)break;t[r+24>>2]=o,A=t[l+16>>2]|0,A|0&&(t[r+16>>2]=A,t[A+24>>2]=r),A=t[l+20>>2]|0,A|0&&(t[r+20>>2]=A,t[A+24>>2]=r)}while(!1);return a>>>0<16?(U=a+f|0,t[l+4>>2]=U|3,U=l+U+4|0,t[U>>2]=t[U>>2]|1):(t[l+4>>2]=f|3,t[s+4>>2]=a|1,t[s+a>>2]=a,m|0&&(n=t[6986]|0,A=m>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=A|M,A=r,e=r+8|0),t[e>>2]=n,t[A+12>>2]=n,t[n+8>>2]=A,t[n+12>>2]=r),t[6983]=a,t[6986]=s),U=l+8|0,k=MA,U|0}else M=f}else M=f}else M=f}else if(e>>>0<=4294967231)if(e=e+11|0,f=e&-8,n=t[6982]|0,n){o=0-f|0,e=e>>>8,e?f>>>0>16777215?a=31:(M=(e+1048320|0)>>>16&8,G=e<>>16&4,G=G<>>16&2,a=14-(l|M|a)+(G<>>15)|0,a=f>>>(a+7|0)&1|a<<1):a=0,r=t[28228+(a<<2)>>2]|0;A:do if(!r)r=0,e=0,G=61;else for(e=0,l=f<<((a|0)==31?0:25-(a>>>1)|0),i=0;;){if(s=(t[r+4>>2]&-8)-f|0,s>>>0>>0)if(s)e=r,o=s;else{e=r,o=0,G=65;break A}if(G=t[r+20>>2]|0,r=t[r+16+(l>>>31<<2)>>2]|0,i=(G|0)==0|(G|0)==(r|0)?i:G,r)l=l<<1;else{r=i,G=61;break}}while(!1);if((G|0)==61){if((r|0)==0&(e|0)==0){if(e=2<>>12&16,M=M>>>s,i=M>>>5&8,M=M>>>i,l=M>>>2&4,M=M>>>l,a=M>>>1&2,M=M>>>a,r=M>>>1&1,e=0,r=t[28228+((i|s|l|a|r)+(M>>>r)<<2)>>2]|0}r?G=65:(l=e,s=o)}if((G|0)==65)for(i=r;;)if(M=(t[i+4>>2]&-8)-f|0,r=M>>>0>>0,o=r?M:o,e=r?i:e,r=t[i+16>>2]|0,r||(r=t[i+20>>2]|0),r)i=r;else{l=e,s=o;break}if((l|0)!=0&&s>>>0<((t[6983]|0)-f|0)>>>0&&(m=l+f|0,m>>>0>l>>>0)){i=t[l+24>>2]|0,A=t[l+12>>2]|0;do if((A|0)==(l|0)){if(e=l+20|0,A=t[e>>2]|0,!A&&(e=l+16|0,A=t[e>>2]|0,!A)){A=0;break}for(;;)if(o=A+20|0,r=t[o>>2]|0,r)A=r,e=o;else if(o=A+16|0,r=t[o>>2]|0,r)A=r,e=o;else break;t[e>>2]=0}else U=t[l+8>>2]|0,t[U+12>>2]=A,t[A+8>>2]=U;while(!1);do if(i){if(e=t[l+28>>2]|0,r=28228+(e<<2)|0,(l|0)==(t[r>>2]|0)){if(t[r>>2]=A,!A){n=n&~(1<>2]|0)==(l|0)?U:i+20|0)>>2]=A,!A)break;t[A+24>>2]=i,e=t[l+16>>2]|0,e|0&&(t[A+16>>2]=e,t[e+24>>2]=A),e=t[l+20>>2]|0,e&&(t[A+20>>2]=e,t[e+24>>2]=A)}while(!1);A:do if(s>>>0<16)U=s+f|0,t[l+4>>2]=U|3,U=l+U+4|0,t[U>>2]=t[U>>2]|1;else{if(t[l+4>>2]=f|3,t[m+4>>2]=s|1,t[m+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]=m,t[A+12>>2]=m,t[m+8>>2]=A,t[m+12>>2]=r;break}if(A=s>>>8,A?s>>>0>16777215?r=31:($=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,r=14-(q|$|r)+(U<>>15)|0,r=s>>>(r+7|0)&1|r<<1):r=0,A=28228+(r<<2)|0,t[m+28>>2]=r,e=m+16|0,t[e+4>>2]=0,t[e>>2]=0,e=1<>2]=m,t[m+24>>2]=A,t[m+12>>2]=m,t[m+8>>2]=m;break}A=t[A>>2]|0;e:do if((t[A+4>>2]&-8|0)!=(s|0)){for(n=s<<((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)==(s|0)){A=e;break e}else n=n<<1,A=e;t[r>>2]=m,t[m+24>>2]=A,t[m+12>>2]=m,t[m+8>>2]=m;break A}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=m,t[$>>2]=m,t[m+8>>2]=U,t[m+12>>2]=A,t[m+24>>2]=0}while(!1);return U=l+8|0,k=MA,U|0}else M=f}else M=f;else M=-1;while(!1);if(r=t[6983]|0,r>>>0>=M>>>0)return A=r-M|0,e=t[6986]|0,A>>>0>15?(U=e+M|0,t[6986]=U,t[6983]=A,t[U+4>>2]=A|1,t[e+r>>2]=A,t[e+4>>2]=M|3):(t[6983]=0,t[6986]=0,t[e+4>>2]=r|3,U=e+r+4|0,t[U>>2]=t[U>>2]|1),U=e+8|0,k=MA,U|0;if(s=t[6984]|0,s>>>0>M>>>0)return q=s-M|0,t[6984]=q,U=t[6987]|0,$=U+M|0,t[6987]=$,t[$+4>>2]=q|1,t[U+4>>2]=M|3,U=U+8|0,k=MA,U|0;if(t[7099]|0?e=t[7101]|0:(t[7101]=4096,t[7100]=4096,t[7102]=-1,t[7103]=-1,t[7104]=0,t[7092]=0,t[7099]=j&-16^1431655768,e=4096),l=M+48|0,a=M+47|0,i=e+a|0,o=0-e|0,f=i&o,f>>>0<=M>>>0||(e=t[7091]|0,e|0&&(m=t[7089]|0,j=m+f|0,j>>>0<=m>>>0|j>>>0>e>>>0)))return U=0,k=MA,U|0;A:do if(t[7092]&4)A=0,G=143;else{r=t[6987]|0;e:do if(r){for(n=28372;j=t[n>>2]|0,!(j>>>0<=r>>>0&&(j+(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-s&o,A>>>0<2147483647)if(e=Z0(A|0)|0,(e|0)==((t[n>>2]|0)+(t[n+4>>2]|0)|0)){if((e|0)!=-1){s=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=Z0(0)|0,(r|0)!=-1&&(A=r,I=t[7100]|0,L=I+-1|0,A=((L&A|0)==0?0:(L+A&0-I)-A|0)+f|0,I=t[7089]|0,L=A+I|0,A>>>0>M>>>0&A>>>0<2147483647)){if(j=t[7091]|0,j|0&&L>>>0<=I>>>0|L>>>0>j>>>0){A=0;break}if(e=Z0(A|0)|0,(e|0)==(r|0)){s=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{s=A,i=n,G=145;break A}if(e=t[7101]|0,e=a-A+e&0-e,e>>>0>=2147483647){s=A,i=n,G=145;break A}if((Z0(e|0)|0)==-1){Z0(r|0)|0,A=0;break}else{s=e+A|0,i=n,G=145;break A}}while(!1);t[7092]=t[7092]|4,G=143}while(!1);if((G|0)==143&&f>>>0<2147483647&&(q=Z0(f|0)|0,L=Z0(0)|0,W=L-q|0,nA=W>>>0>(M+40|0)>>>0,!((q|0)==-1|nA^1|q>>>0>>0&((q|0)!=-1&(L|0)!=-1)^1))&&(s=nA?W:A,i=q,G=145),(G|0)==145){A=(t[7089]|0)+s|0,t[7089]=A,A>>>0>(t[7090]|0)>>>0&&(t[7090]=A),a=t[6987]|0;A:do if(a){for(A=28372;;){if(e=t[A>>2]|0,r=t[A+4>>2]|0,(i|0)==(e+r|0)){G=154;break}if(n=t[A+8>>2]|0,n)A=n;else break}if((G|0)==154&&($=A+4|0,(t[A+12>>2]&8|0)==0)&&i>>>0>a>>>0&e>>>0<=a>>>0){t[$>>2]=r+s,U=(t[6984]|0)+s|0,q=a+8|0,q=(q&7|0)==0?0:0-q&7,$=a+q|0,q=U-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[a+U+4>>2]=40,t[6988]=t[7103];break}for(i>>>0<(t[6985]|0)>>>0&&(t[6985]=i),r=i+s|0,A=28372;;){if((t[A>>2]|0)==(r|0)){G=162;break}if(e=t[A+8>>2]|0,e)A=e;else break}if((G|0)==162&&(t[A+12>>2]&8|0)==0){t[A>>2]=i,m=A+4|0,t[m>>2]=(t[m>>2]|0)+s,m=i+8|0,m=i+((m&7|0)==0?0:0-m&7)|0,A=r+8|0,A=r+((A&7|0)==0?0:0-A&7)|0,f=m+M|0,l=A-m-M|0,t[m+4>>2]=M|3;e:do if((a|0)==(A|0))U=(t[6984]|0)+l|0,t[6984]=U,t[6987]=f,t[f+4>>2]=U|1;else{if((t[6986]|0)==(A|0)){U=(t[6983]|0)+l|0,t[6983]=U,t[6986]=f,t[f+4>>2]=U|1,t[f+U>>2]=U;break}if(e=t[A+4>>2]|0,(e&3|0)==1){s=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(o=e+20|0,n=t[o>>2]|0,n)e=n,r=o;else if(o=e+16|0,n=t[o>>2]|0,n)e=n,r=o;else break;t[r>>2]=0}else U=t[A+8>>2]|0,t[U+12>>2]=e,t[e+8>>2]=U;while(!1);if(!i)break;r=t[A+28>>2]|0,n=28228+(r<<2)|0;do if((t[n>>2]|0)!=(A|0)){if(U=i+16|0,t[((t[U>>2]|0)==(A|0)?U:i+20|0)>>2]=e,!e)break t}else{if(t[n>>2]=e,e|0)break;t[6982]=t[6982]&~(1<>2]=i,r=A+16|0,n=t[r>>2]|0,n|0&&(t[e+16>>2]=n,t[n+24>>2]=e),r=t[r+4>>2]|0,!r)break;t[e+20>>2]=r,t[r+24>>2]=e}while(!1);A=A+s|0,o=s+l|0}else o=l;if(A=A+4|0,t[A>>2]=t[A>>2]&-2,t[f+4>>2]=o|1,t[f+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]=f,t[A+12>>2]=f,t[f+8>>2]=A,t[f+12>>2]=r;break}A=o>>>8;do if(!A)n=0;else{if(o>>>0>16777215){n=31;break}$=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,n=14-(q|$|n)+(U<>>15)|0,n=o>>>(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)!=(o|0)){for(n=o<<((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)==(o|0)){A=e;break t}else n=n<<1,A=e;t[r>>2]=f,t[f+24>>2]=A,t[f+12>>2]=f,t[f+8>>2]=f;break e}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=f,t[$>>2]=f,t[f+8>>2]=U,t[f+12>>2]=A,t[f+24>>2]=0}while(!1);return U=m+8|0,k=MA,U|0}for(A=28372;e=t[A>>2]|0,!(e>>>0<=a>>>0&&(U=e+(t[A+4>>2]|0)|0,U>>>0>a>>>0));)A=t[A+8>>2]|0;o=U+-47|0,e=o+8|0,e=o+((e&7|0)==0?0:0-e&7)|0,o=a+16|0,e=e>>>0>>0?a:e,A=e+8|0,r=s+-40|0,q=i+8|0,q=(q&7|0)==0?0:0-q&7,$=i+q|0,q=r-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[i+r+4>>2]=40,t[6988]=t[7103],r=e+4|0,t[r>>2]=27,t[A>>2]=t[7093],t[A+4>>2]=t[7094],t[A+8>>2]=t[7095],t[A+12>>2]=t[7096],t[7093]=i,t[7094]=s,t[7096]=0,t[7095]=A,A=e+24|0;do $=A,A=A+4|0,t[A>>2]=7;while(($+8|0)>>>0>>0);if((e|0)!=(a|0)){if(i=e-a|0,t[r>>2]=t[r>>2]&-2,t[a+4>>2]=i|1,t[e>>2]=i,A=i>>>3,i>>>0<256){r=27964+(A<<1<<2)|0,e=t[6981]|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=a,t[A+12>>2]=a,t[a+8>>2]=A,t[a+12>>2]=r;break}if(A=i>>>8,A?i>>>0>16777215?n=31:($=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,n=14-(q|$|n)+(U<>>15)|0,n=i>>>(n+7|0)&1|n<<1):n=0,r=28228+(n<<2)|0,t[a+28>>2]=n,t[a+20>>2]=0,t[o>>2]=0,A=t[6982]|0,e=1<>2]=a,t[a+24>>2]=r,t[a+12>>2]=a,t[a+8>>2]=a;break}A=t[r>>2]|0;e:do if((t[A+4>>2]&-8|0)!=(i|0)){for(n=i<<((n|0)==31?0:25-(n>>>1)|0);r=A+16+(n>>>31<<2)|0,e=t[r>>2]|0,!!e;)if((t[e+4>>2]&-8|0)==(i|0)){A=e;break e}else n=n<<1,A=e;t[r>>2]=a,t[a+24>>2]=A,t[a+12>>2]=a,t[a+8>>2]=a;break A}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=a,t[$>>2]=a,t[a+8>>2]=U,t[a+12>>2]=A,t[a+24>>2]=0}}else U=t[6985]|0,(U|0)==0|i>>>0>>0&&(t[6985]=i),t[7093]=i,t[7094]=s,t[7096]=0,t[6990]=t[7099],t[6989]=-1,t[6994]=27964,t[6993]=27964,t[6996]=27972,t[6995]=27972,t[6998]=27980,t[6997]=27980,t[7e3]=27988,t[6999]=27988,t[7002]=27996,t[7001]=27996,t[7004]=28004,t[7003]=28004,t[7006]=28012,t[7005]=28012,t[7008]=28020,t[7007]=28020,t[7010]=28028,t[7009]=28028,t[7012]=28036,t[7011]=28036,t[7014]=28044,t[7013]=28044,t[7016]=28052,t[7015]=28052,t[7018]=28060,t[7017]=28060,t[7020]=28068,t[7019]=28068,t[7022]=28076,t[7021]=28076,t[7024]=28084,t[7023]=28084,t[7026]=28092,t[7025]=28092,t[7028]=28100,t[7027]=28100,t[7030]=28108,t[7029]=28108,t[7032]=28116,t[7031]=28116,t[7034]=28124,t[7033]=28124,t[7036]=28132,t[7035]=28132,t[7038]=28140,t[7037]=28140,t[7040]=28148,t[7039]=28148,t[7042]=28156,t[7041]=28156,t[7044]=28164,t[7043]=28164,t[7046]=28172,t[7045]=28172,t[7048]=28180,t[7047]=28180,t[7050]=28188,t[7049]=28188,t[7052]=28196,t[7051]=28196,t[7054]=28204,t[7053]=28204,t[7056]=28212,t[7055]=28212,U=s+-40|0,q=i+8|0,q=(q&7|0)==0?0:0-q&7,$=i+q|0,q=U-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[i+U+4>>2]=40,t[6988]=t[7103];while(!1);if(A=t[6984]|0,A>>>0>M>>>0)return q=A-M|0,t[6984]=q,U=t[6987]|0,$=U+M|0,t[6987]=$,t[$+4>>2]=q|1,t[U+4>>2]=M|3,U=U+8|0,k=MA,U|0}return U=Aa()|0,t[U>>2]=12,U=0,k=MA,U|0}function YA(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(e){r=e+-8|0,o=t[6985]|0,e=t[e+-4>>2]|0,A=e&-8,a=r+A|0;do if(e&1)l=r,s=r;else{if(n=t[r>>2]|0,!(e&3)||(s=r+(0-n)|0,i=n+A|0,s>>>0>>0))return;if((t[6986]|0)==(s|0)){if(e=a+4|0,A=t[e>>2]|0,(A&3|0)!=3){l=s,A=i;break}t[6983]=i,t[e>>2]=A&-2,t[s+4>>2]=i|1,t[s+i>>2]=i;return}if(r=n>>>3,n>>>0<256)if(e=t[s+8>>2]|0,A=t[s+12>>2]|0,(A|0)==(e|0)){t[6981]=t[6981]&~(1<>2]=A,t[A+8>>2]=e,l=s,A=i;break}o=t[s+24>>2]|0,e=t[s+12>>2]|0;do if((e|0)==(s|0)){if(A=s+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[s+8>>2]|0,t[l+12>>2]=e,t[e+8>>2]=l;while(!1);if(o){if(A=t[s+28>>2]|0,r=28228+(A<<2)|0,(t[r>>2]|0)==(s|0)){if(t[r>>2]=e,!e){t[6982]=t[6982]&~(1<>2]|0)==(s|0)?l:o+20|0)>>2]=e,!e){l=s,A=i;break}t[e+24>>2]=o,A=s+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=s,A=i):(l=s,A=i)}else l=s,A=i}while(!1);if(!(s>>>0>=a>>>0)&&(e=a+4|0,n=t[e>>2]|0,!!(n&1))){if(n&2)t[e>>2]=n&-2,t[l+4>>2]=A|1,t[s+A>>2]=A,o=A;else{if((t[6987]|0)==(a|0)){if(a=(t[6984]|0)+A|0,t[6984]=a,t[6987]=l,t[l+4>>2]=a|1,(l|0)!=(t[6986]|0))return;t[6986]=0,t[6983]=0;return}if((t[6986]|0)==(a|0)){a=(t[6983]|0)+A|0,t[6983]=a,t[6986]=s,t[l+4>>2]=a|1,t[s+a>>2]=a;return}o=(n&-8)+A|0,r=n>>>3;do if(n>>>0<256)if(A=t[a+8>>2]|0,e=t[a+12>>2]|0,(e|0)==(A|0)){t[6981]=t[6981]&~(1<>2]=e,t[e+8>>2]=A;break}else{i=t[a+24>>2]|0,e=t[a+12>>2]|0;do if((e|0)==(a|0)){if(A=a+16|0,r=A+4|0,e=t[r>>2]|0,e)A=r;else if(e=t[A>>2]|0,!e){r=0;break}for(;;)if(n=e+20|0,r=t[n>>2]|0,r)e=r,A=n;else if(n=e+16|0,r=t[n>>2]|0,r)e=r,A=n;else break;t[A>>2]=0,r=e}else r=t[a+8>>2]|0,t[r+12>>2]=e,t[e+8>>2]=r,r=e;while(!1);if(i|0){if(e=t[a+28>>2]|0,A=28228+(e<<2)|0,(t[A>>2]|0)==(a|0)){if(t[A>>2]=r,!r){t[6982]=t[6982]&~(1<>2]|0)==(a|0)?n:i+20|0)>>2]=r,!r)break;t[r+24>>2]=i,e=a+16|0,A=t[e>>2]|0,A|0&&(t[r+16>>2]=A,t[A+24>>2]=r),e=t[e+4>>2]|0,e|0&&(t[r+20>>2]=e,t[e+24>>2]=r)}}while(!1);if(t[l+4>>2]=o|1,t[s+o>>2]=o,(l|0)==(t[6986]|0)){t[6983]=o;return}}if(e=o>>>3,o>>>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=o>>>8,e?o>>>0>16777215?n=31:(s=(e+1048320|0)>>>16&8,a=e<>>16&4,a=a<>>16&2,n=14-(i|s|n)+(a<>>15)|0,n=o>>>(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)!=(o|0)){for(n=o<<((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)==(o|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);s=e+8|0,a=t[s>>2]|0,t[a+12>>2]=l,t[s>>2]=l,t[l+8>>2]=a,t[l+12>>2]=e,t[l+24>>2]=0}while(!1);if(a=(t[6989]|0)+-1|0,t[6989]=a,!(a|0)){for(e=28380;e=t[e>>2]|0,e;)e=e+8|0;t[6989]=-1}}}}function Ot(e,A){e=e|0,A=A|0;var r=0;return e?(r=Ne(A,e)|0,(A|e)>>>0>65535&&(r=((r>>>0)/(e>>>0)|0|0)==(A|0)?r:-1)):r=0,e=y0(r)|0,!e||!(t[e+-4>>2]&3)||K0(e|0,0,r|0)|0,e|0}function WA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,r=e+r>>>0,UA(A+n+(r>>>0>>0|0)>>>0|0),r|0|0}function ut(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,UA(n|0),e-r>>>0|0|0}function ci(e){return e=e|0,(e?31-(ot(e^e-1)|0)|0:32)|0}function oo(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0;if(m=e,a=A,f=a,s=r,j=n,l=j,!f)return i=(o|0)!=0,l?i?(t[o>>2]=e|0,t[o+4>>2]=A&0,j=0,o=0,UA(j|0),o|0):(j=0,o=0,UA(j|0),o|0):(i&&(t[o>>2]=(m>>>0)%(s>>>0),t[o+4>>2]=0),j=0,o=(m>>>0)/(s>>>0)>>>0,UA(j|0),o|0);i=(l|0)==0;do if(s){if(!i){if(i=(ot(l|0)|0)-(ot(f|0)|0)|0,i>>>0<=31){M=i+1|0,l=31-i|0,A=i-31>>31,s=M,e=m>>>(M>>>0)&A|f<>>(M>>>0)&A,i=0,l=m<>2]=e|0,t[o+4>>2]=a|A&0,j=0,o=0,UA(j|0),o|0):(j=0,o=0,UA(j|0),o|0)}if(i=s-1|0,i&s|0){l=(ot(s|0)|0)+33-(ot(f|0)|0)|0,L=64-l|0,M=32-l|0,a=M>>31,I=l-32|0,A=I>>31,s=l,e=M-1>>31&f>>>(I>>>0)|(f<>>(l>>>0))&A,A=A&f>>>(l>>>0),i=m<>>(I>>>0))&a|m<>31;break}return o|0&&(t[o>>2]=i&m,t[o+4>>2]=0),(s|0)==1?(I=a|A&0,L=e|0|0,UA(I|0),L|0):(L=ci(s|0)|0,I=f>>>(L>>>0)|0,L=f<<32-L|m>>>(L>>>0)|0,UA(I|0),L|0)}else{if(i)return o|0&&(t[o>>2]=(f>>>0)%(s>>>0),t[o+4>>2]=0),I=0,L=(f>>>0)/(s>>>0)>>>0,UA(I|0),L|0;if(!m)return o|0&&(t[o>>2]=0,t[o+4>>2]=(f>>>0)%(l>>>0)),I=0,L=(f>>>0)/(l>>>0)>>>0,UA(I|0),L|0;if(i=l-1|0,!(i&l))return o|0&&(t[o>>2]=e|0,t[o+4>>2]=i&f|A&0),I=0,L=f>>>((ci(l|0)|0)>>>0),UA(I|0),L|0;if(i=(ot(l|0)|0)-(ot(f|0)|0)|0,i>>>0<=30){A=i+1|0,l=31-i|0,s=A,e=f<>>(A>>>0),A=f>>>(A>>>0),i=0,l=m<>2]=e|0,t[o+4>>2]=a|A&0,I=0,L=0,UA(I|0),L|0):(I=0,L=0,UA(I|0),L|0)}while(!1);if(!s)f=l,a=0,l=0;else{M=r|0|0,m=j|n&0,f=WA(M|0,m|0,-1,-1)|0,r=S()|0,a=l,l=0;do n=a,a=i>>>31|a<<1,i=l|i<<1,n=e<<1|n>>>31|0,j=e>>>31|A<<1|0,ut(f|0,r|0,n|0,j|0)|0,L=S()|0,I=L>>31|((L|0)<0?-1:0)<<1,l=I&1,e=ut(n|0,j|0,I&M|0,(((L|0)<0?-1:0)>>31|((L|0)<0?-1:0)<<1)&m|0)|0,A=S()|0,s=s-1|0;while((s|0)!=0);f=a,a=0}return s=0,o|0&&(t[o>>2]=e,t[o+4>>2]=A),I=(i|0)>>>31|(f|s)<<1|(s<<1|i>>>31)&0|a,L=(i<<1|0)&-2|l,UA(I|0),L|0}function Y0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;return f=A>>31|((A|0)<0?-1:0)<<1,a=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,i=n>>31|((n|0)<0?-1:0)<<1,o=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,l=ut(f^e|0,a^A|0,f|0,a|0)|0,s=S()|0,e=i^f,A=o^a,ut((oo(l,s,ut(i^r|0,o^n|0,i|0,o|0)|0,S()|0,0)|0)^e|0,(S()|0)^A|0,e|0,A|0)|0}function ea(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return i=e&65535,o=A&65535,r=Ne(o,i)|0,n=e>>>16,e=(r>>>16)+(Ne(o,n)|0)|0,o=A>>>16,A=Ne(o,i)|0,UA((e>>>16)+(Ne(o,n)|0)+(((e&65535)+A|0)>>>16)|0),e+A<<16|r&65535|0|0}function ct(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0;return o=e,i=r,r=ea(o,i)|0,e=S()|0,UA((Ne(A,i)|0)+(Ne(n,o)|0)+e|e&0|0),r|0|0|0}function jr(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;return o=k,k=k+16|0,l=o|0,s=A>>31|((A|0)<0?-1:0)<<1,i=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,f=n>>31|((n|0)<0?-1:0)<<1,a=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,e=ut(s^e|0,i^A|0,s|0,i|0)|0,A=S()|0,oo(e,A,ut(f^r|0,a^n|0,f|0,a|0)|0,S()|0,l)|0,n=ut(t[l>>2]^s|0,t[l+4>>2]^i|0,s|0,i|0)|0,r=S()|0,k=o,UA(r|0),n|0}function Ir(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0;return i=k,k=k+16|0,o=i|0,oo(e,A,r,n,o)|0,k=i,UA(t[o+4>>2]|0),t[o>>2]|0|0}function fi(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(UA(A>>r|0),e>>>r|(A&(1<>r-32|0)}function vA(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(UA(A>>>r|0),e>>>r|(A&(1<>>r-32|0)}function EA(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(UA(A<>>32-r|0),e<=0?+Oe(e+.5):+mt(e-.5)}function Lr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if((r|0)>=8192)return i0(e|0,A|0,r|0)|0,e|0;if(i=e|0,o=e+r|0,(e&3)==(A&3)){for(;e&3;){if(!r)return i|0;wA[e>>0]=wA[A>>0]|0,e=e+1|0,A=A+1|0,r=r-1|0}for(r=o&-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=o-4|0;(e|0)<(r|0);)wA[e>>0]=wA[A>>0]|0,wA[e+1>>0]=wA[A+1>>0]|0,wA[e+2>>0]=wA[A+2>>0]|0,wA[e+3>>0]=wA[A+3>>0]|0,e=e+4|0,A=A+4|0;for(;(e|0)<(o|0);)wA[e>>0]=wA[A>>0]|0,e=e+1|0,A=A+1|0;return i|0}function K0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;if(i=e+r|0,A=A&255,(r|0)>=67){for(;e&3;)wA[e>>0]=A,e=e+1|0;for(n=i&-4|0,s=A|A<<8|A<<16|A<<24,o=n-64|0;(e|0)<=(o|0);)t[e>>2]=s,t[e+4>>2]=s,t[e+8>>2]=s,t[e+12>>2]=s,t[e+16>>2]=s,t[e+20>>2]=s,t[e+24>>2]=s,t[e+28>>2]=s,t[e+32>>2]=s,t[e+36>>2]=s,t[e+40>>2]=s,t[e+44>>2]=s,t[e+48>>2]=s,t[e+52>>2]=s,t[e+56>>2]=s,t[e+60>>2]=s,e=e+64|0;for(;(e|0)<(n|0);)t[e>>2]=s,e=e+4|0}for(;(e|0)<(i|0);)wA[e>>0]=A,e=e+1|0;return i-r|0}function di(e){return e=+e,e>=0?+Oe(e+.5):+mt(e-.5)}function Z0(e){e=e|0;var A=0,r=0,n=0;return n=O0()|0,r=t[Me>>2]|0,A=r+e|0,(e|0)>0&(A|0)<(r|0)|(A|0)<0?(h0(A|0)|0,Nt(12),-1):(A|0)>(n|0)&&!(s0(A|0)|0)?(Nt(12),-1):(t[Me>>2]=A,r|0)}return{___divdi3:Y0,___muldi3:ct,___remdi3:jr,___uremdi3:Ir,_areNeighborCells:Yn,_bitshift64Ashr:fi,_bitshift64Lshr:vA,_bitshift64Shl:EA,_calloc:Ot,_cellAreaKm2:kl,_cellAreaM2:bl,_cellAreaRads2:eo,_cellToBoundary:Tr,_cellToCenterChild:Wo,_cellToChildPos:hl,_cellToChildren:en,_cellToChildrenSize:p0,_cellToLatLng:ur,_cellToLocalIj:_l,_cellToParent:Dt,_cellToVertex:Xt,_cellToVertexes:Zl,_cellsToDirectedEdge:pn,_cellsToLinkedMultiPolygon:gt,_childPosToCell:dl,_compactCells:ol,_constructCell:pe,_destroyLinkedMultiPolygon:qo,_directedEdgeToBoundary:lr,_directedEdgeToCells:Br,_edgeLengthKm:El,_edgeLengthM:Sl,_edgeLengthRads:Cl,_emscripten_replace_memory:E0,_free:YA,_getBaseCellNumber:te,_getDirectedEdgeDestination:yn,_getDirectedEdgeOrigin:Mr,_getHexagonAreaAvgKm2:Zo,_getHexagonAreaAvgM2:xl,_getHexagonEdgeLengthAvgKm:wl,_getHexagonEdgeLengthAvgM:vl,_getIcosahedronFaces:Yo,_getIndexDigit:ve,_getNumCells:vn,_getPentagons:Jn,_getRes0Cells:Wr,_getResolution:DA,_greatCircleDistanceKm:rn,_greatCircleDistanceM:gl,_greatCircleDistanceRads:ml,_gridDisk:v,_gridDiskDistances:D,_gridDistance:Rl,_gridPathCells:Il,_gridPathCellsSize:jl,_gridRing:mA,_gridRingUnsafe:_A,_i64Add:WA,_i64Subtract:ut,_isPentagon:ze,_isResClassIII:ll,_isValidCell:Ve,_isValidDirectedEdge:Xr,_isValidIndex:Mt,_isValidVertex:ii,_latLngToCell:$n,_llvm_ctlz_i64:io,_llvm_maxnum_f64:hi,_llvm_minnum_f64:Cn,_llvm_round_f64:En,_localIjToCell:Tl,_malloc:y0,_maxFaceCount:cl,_maxGridDiskSize:h,_maxPolygonToCellsSize:ce,_maxPolygonToCellsSizeExperimental:Fl,_memcpy:Lr,_memset:K0,_originToDirectedEdges:Dr,_pentagonCount:fl,_polygonToCells:vt,_polygonToCellsExperimental:Nl,_readInt64AsDoubleFromPointer:Vl,_res0CellCount:vr,_round:di,_sbrk:Z0,_sizeOfCellBoundary:Ol,_sizeOfCoordIJ:Ul,_sizeOfGeoLoop:zl,_sizeOfGeoPolygon:Hl,_sizeOfH3Index:Pl,_sizeOfLatLng:Ql,_sizeOfLinkedGeoPolygon:Gl,_uncompactCells:il,_uncompactCellsSize:sl,_vertexToLatLng:$l,establishStackSpace:S0,stackAlloc:$t,stackRestore:H0,stackSave:z0}})(nr,P0,aA);u.___divdi3=pA.___divdi3,u.___muldi3=pA.___muldi3,u.___remdi3=pA.___remdi3,u.___uremdi3=pA.___uremdi3,u._areNeighborCells=pA._areNeighborCells,u._bitshift64Ashr=pA._bitshift64Ashr,u._bitshift64Lshr=pA._bitshift64Lshr,u._bitshift64Shl=pA._bitshift64Shl,u._calloc=pA._calloc,u._cellAreaKm2=pA._cellAreaKm2,u._cellAreaM2=pA._cellAreaM2,u._cellAreaRads2=pA._cellAreaRads2,u._cellToBoundary=pA._cellToBoundary,u._cellToCenterChild=pA._cellToCenterChild,u._cellToChildPos=pA._cellToChildPos,u._cellToChildren=pA._cellToChildren,u._cellToChildrenSize=pA._cellToChildrenSize,u._cellToLatLng=pA._cellToLatLng,u._cellToLocalIj=pA._cellToLocalIj,u._cellToParent=pA._cellToParent,u._cellToVertex=pA._cellToVertex,u._cellToVertexes=pA._cellToVertexes,u._cellsToDirectedEdge=pA._cellsToDirectedEdge,u._cellsToLinkedMultiPolygon=pA._cellsToLinkedMultiPolygon,u._childPosToCell=pA._childPosToCell,u._compactCells=pA._compactCells,u._constructCell=pA._constructCell,u._destroyLinkedMultiPolygon=pA._destroyLinkedMultiPolygon,u._directedEdgeToBoundary=pA._directedEdgeToBoundary,u._directedEdgeToCells=pA._directedEdgeToCells,u._edgeLengthKm=pA._edgeLengthKm,u._edgeLengthM=pA._edgeLengthM,u._edgeLengthRads=pA._edgeLengthRads;var c0=u._emscripten_replace_memory=pA._emscripten_replace_memory;u._free=pA._free,u._getBaseCellNumber=pA._getBaseCellNumber,u._getDirectedEdgeDestination=pA._getDirectedEdgeDestination,u._getDirectedEdgeOrigin=pA._getDirectedEdgeOrigin,u._getHexagonAreaAvgKm2=pA._getHexagonAreaAvgKm2,u._getHexagonAreaAvgM2=pA._getHexagonAreaAvgM2,u._getHexagonEdgeLengthAvgKm=pA._getHexagonEdgeLengthAvgKm,u._getHexagonEdgeLengthAvgM=pA._getHexagonEdgeLengthAvgM,u._getIcosahedronFaces=pA._getIcosahedronFaces,u._getIndexDigit=pA._getIndexDigit,u._getNumCells=pA._getNumCells,u._getPentagons=pA._getPentagons,u._getRes0Cells=pA._getRes0Cells,u._getResolution=pA._getResolution,u._greatCircleDistanceKm=pA._greatCircleDistanceKm,u._greatCircleDistanceM=pA._greatCircleDistanceM,u._greatCircleDistanceRads=pA._greatCircleDistanceRads,u._gridDisk=pA._gridDisk,u._gridDiskDistances=pA._gridDiskDistances,u._gridDistance=pA._gridDistance,u._gridPathCells=pA._gridPathCells,u._gridPathCellsSize=pA._gridPathCellsSize,u._gridRing=pA._gridRing,u._gridRingUnsafe=pA._gridRingUnsafe,u._i64Add=pA._i64Add,u._i64Subtract=pA._i64Subtract,u._isPentagon=pA._isPentagon,u._isResClassIII=pA._isResClassIII,u._isValidCell=pA._isValidCell,u._isValidDirectedEdge=pA._isValidDirectedEdge,u._isValidIndex=pA._isValidIndex,u._isValidVertex=pA._isValidVertex,u._latLngToCell=pA._latLngToCell,u._llvm_ctlz_i64=pA._llvm_ctlz_i64,u._llvm_maxnum_f64=pA._llvm_maxnum_f64,u._llvm_minnum_f64=pA._llvm_minnum_f64,u._llvm_round_f64=pA._llvm_round_f64,u._localIjToCell=pA._localIjToCell,u._malloc=pA._malloc,u._maxFaceCount=pA._maxFaceCount,u._maxGridDiskSize=pA._maxGridDiskSize,u._maxPolygonToCellsSize=pA._maxPolygonToCellsSize,u._maxPolygonToCellsSizeExperimental=pA._maxPolygonToCellsSizeExperimental,u._memcpy=pA._memcpy,u._memset=pA._memset,u._originToDirectedEdges=pA._originToDirectedEdges,u._pentagonCount=pA._pentagonCount,u._polygonToCells=pA._polygonToCells,u._polygonToCellsExperimental=pA._polygonToCellsExperimental,u._readInt64AsDoubleFromPointer=pA._readInt64AsDoubleFromPointer,u._res0CellCount=pA._res0CellCount,u._round=pA._round,u._sbrk=pA._sbrk,u._sizeOfCellBoundary=pA._sizeOfCellBoundary,u._sizeOfCoordIJ=pA._sizeOfCoordIJ,u._sizeOfGeoLoop=pA._sizeOfGeoLoop,u._sizeOfGeoPolygon=pA._sizeOfGeoPolygon,u._sizeOfH3Index=pA._sizeOfH3Index,u._sizeOfLatLng=pA._sizeOfLatLng,u._sizeOfLinkedGeoPolygon=pA._sizeOfLinkedGeoPolygon,u._uncompactCells=pA._uncompactCells,u._uncompactCellsSize=pA._uncompactCellsSize,u._vertexToLatLng=pA._vertexToLatLng,u.establishStackSpace=pA.establishStackSpace;var at=u.stackAlloc=pA.stackAlloc,Le=u.stackRestore=pA.stackRestore,n0=u.stackSave=pA.stackSave;if(u.asm=pA,u.cwrap=cA,u.setValue=V,u.getValue=K,Qe){Se(Qe)||(Qe=C(Qe));{rt();var Zt=function(rA){rA.byteLength&&(rA=new Uint8Array(rA)),NA.set(rA,H),u.memoryInitializerRequest&&delete u.memoryInitializerRequest.response,xt()},jt=function(){T(Qe,Zt,function(){throw"could not load memory initializer "+Qe})},wt=u0(Qe);if(wt)Zt(wt.buffer);else if(u.memoryInitializerRequest){var o0=function(){var rA=u.memoryInitializerRequest,yA=rA.response;if(rA.status!==200&&rA.status!==0){var RA=u0(u.memoryInitializerRequestURL);if(RA)yA=RA.buffer;else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+rA.status+", retrying "+Qe),jt();return}}Zt(yA)};u.memoryInitializerRequest.response?setTimeout(o0,0):u.memoryInitializerRequest.addEventListener("load",o0)}else jt()}}var yt;$e=function rA(){yt||It(),yt||($e=rA)};function It(rA){if(qe>0||(Pe(),qe>0))return;function yA(){yt||(yt=!0,!uA&&(ue(),ee(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),ke()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),yA()},1)):yA()}u.run=It;function ht(rA){throw u.onAbort&&u.onAbort(rA),rA+="",P(rA),_(rA),uA=!0,"abort("+rA+"). Build with -s ASSERTIONS=1 for more info."}if(u.abort=ht,u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return It(),c})(typeof Tt=="object"?Tt:{}),re="number",XA=re,Hr=re,se=re,le=re,ft=re,PA=re,gf=[["sizeOfH3Index",re],["sizeOfLatLng",re],["sizeOfCellBoundary",re],["sizeOfGeoLoop",re],["sizeOfGeoPolygon",re],["sizeOfLinkedGeoPolygon",re],["sizeOfCoordIJ",re],["readInt64AsDoubleFromPointer",re],["isValidCell",Hr,[se,le]],["isValidIndex",Hr,[se,le]],["latLngToCell",XA,[re,re,ft,PA]],["cellToLatLng",XA,[se,le,PA]],["cellToBoundary",XA,[se,le,PA]],["maxGridDiskSize",XA,[re,PA]],["gridDisk",XA,[se,le,re,PA]],["gridDiskDistances",XA,[se,le,re,PA,PA]],["gridRing",XA,[se,le,re,PA]],["gridRingUnsafe",XA,[se,le,re,PA]],["maxPolygonToCellsSize",XA,[PA,ft,re,PA]],["polygonToCells",XA,[PA,ft,re,PA]],["maxPolygonToCellsSizeExperimental",XA,[PA,ft,re,PA]],["polygonToCellsExperimental",XA,[PA,ft,re,re,re,PA]],["cellsToLinkedMultiPolygon",XA,[PA,re,PA]],["destroyLinkedMultiPolygon",null,[PA]],["compactCells",XA,[PA,PA,re,re]],["uncompactCells",XA,[PA,re,re,PA,re,ft]],["uncompactCellsSize",XA,[PA,re,re,ft,PA]],["isPentagon",Hr,[se,le]],["isResClassIII",Hr,[se,le]],["getBaseCellNumber",re,[se,le]],["getResolution",re,[se,le]],["getIndexDigit",re,[se,le,re]],["constructCell",XA,[re,re,PA,PA]],["maxFaceCount",XA,[se,le,PA]],["getIcosahedronFaces",XA,[se,le,PA]],["cellToParent",XA,[se,le,ft,PA]],["cellToChildren",XA,[se,le,ft,PA]],["cellToCenterChild",XA,[se,le,ft,PA]],["cellToChildrenSize",XA,[se,le,ft,PA]],["cellToChildPos",XA,[se,le,ft,PA]],["childPosToCell",XA,[re,re,se,le,ft,PA]],["areNeighborCells",XA,[se,le,se,le,PA]],["cellsToDirectedEdge",XA,[se,le,se,le,PA]],["getDirectedEdgeOrigin",XA,[se,le,PA]],["getDirectedEdgeDestination",XA,[se,le,PA]],["isValidDirectedEdge",Hr,[se,le]],["directedEdgeToCells",XA,[se,le,PA]],["originToDirectedEdges",XA,[se,le,PA]],["directedEdgeToBoundary",XA,[se,le,PA]],["gridDistance",XA,[se,le,se,le,PA]],["gridPathCells",XA,[se,le,se,le,PA]],["gridPathCellsSize",XA,[se,le,se,le,PA]],["cellToLocalIj",XA,[se,le,se,le,re,PA]],["localIjToCell",XA,[se,le,PA,re,PA]],["getHexagonAreaAvgM2",XA,[ft,PA]],["getHexagonAreaAvgKm2",XA,[ft,PA]],["getHexagonEdgeLengthAvgM",XA,[ft,PA]],["getHexagonEdgeLengthAvgKm",XA,[ft,PA]],["greatCircleDistanceM",re,[PA,PA]],["greatCircleDistanceKm",re,[PA,PA]],["greatCircleDistanceRads",re,[PA,PA]],["cellAreaM2",XA,[se,le,PA]],["cellAreaKm2",XA,[se,le,PA]],["cellAreaRads2",XA,[se,le,PA]],["edgeLengthM",XA,[se,le,PA]],["edgeLengthKm",XA,[se,le,PA]],["edgeLengthRads",XA,[se,le,PA]],["getNumCells",XA,[ft,PA]],["getRes0Cells",XA,[PA]],["res0CellCount",re],["getPentagons",XA,[re,PA]],["pentagonCount",re],["cellToVertex",XA,[se,le,re,PA]],["cellToVertexes",XA,[se,le,PA]],["vertexToLatLng",XA,[se,le,PA]],["isValidVertex",Hr,[se,le]]],pf=0,yf=1,xf=2,wf=3,vf=4,kf=5,bf=6,Cf=7,Ef=8,Sf=9,Mf=10,Bf=11,Df=12,_f=13,Tf=14,Rf=15,jf=16,If=17,Lf=18,Nf=19,nt={};nt[pf]="Success";nt[yf]="The operation failed but a more specific error is not available";nt[xf]="Argument was outside of acceptable range";nt[wf]="Latitude or longitude arguments were outside of acceptable range";nt[vf]="Resolution argument was outside of acceptable range";nt[kf]="Cell argument was not valid";nt[bf]="Directed edge argument was not valid";nt[Cf]="Undirected edge argument was not valid";nt[Ef]="Vertex argument was not valid";nt[Sf]="Pentagon distortion was encountered";nt[Mf]="Duplicate input";nt[Bf]="Cell arguments were not neighbors";nt[Df]="Cell arguments had incompatible resolutions";nt[_f]="Memory allocation failed";nt[Tf]="Bounds of provided memory were insufficient";nt[Rf]="Mode or flags argument was not valid";nt[jf]="Index argument was not valid";nt[If]="Base cell number was outside of acceptable range";nt[Lf]="Child indexing digits invalid";nt[Nf]="Child indexing digits refer to a deleted subsequence";var Ff=1e3,Pf=1001,$s=1002,Wn={};Wn[Ff]="Unknown unit";Wn[Pf]="Array length out of bounds";Wn[$s]="Got unexpected null value for H3 index";var Qf="Unknown error";function qs(c,u,g){var y=g&&"value"in g,x=new Error((c[u]||Qf)+" (code: "+u+(y?", value: "+g.value:"")+")");return x.code=u,x}function Of(c,u){var g=arguments.length===2?{value:u}:{};return qs(nt,c,g)}function zf(c,u){var g=arguments.length===2?{value:u}:{};return qs(Wn,c,g)}function Js(c){if(c!==0)throw Of(c)}var v0={};gf.forEach(function(u){v0[u[0]]=Tt.cwrap.apply(Tt,u)});var Ur=16,Hf=4,Gn=8,Do=v0.sizeOfH3Index(),Gf=v0.sizeOfLatLng(),Uf=v0.sizeOfCellBoundary();v0.sizeOfGeoPolygon();v0.sizeOfGeoLoop();v0.sizeOfLinkedGeoPolygon();v0.sizeOfCoordIJ();function Vf(c){if(!c)throw zf($s);return c}var Wf=/[^0-9a-fA-F]/;function Yf(c){if(Array.isArray(c)&&c.length===2&&Number.isInteger(c[0])&&Number.isInteger(c[1]))return c;if(typeof c!="string"||Wf.test(c))return[0,0];var u=parseInt(c.substring(0,c.length-8),Ur),g=parseInt(c.substring(c.length-8),Ur);return[g,u]}function Gi(c){if(c>=0)return c.toString(Ur);c=c&2147483647;var u=Xs(8,c.toString(Ur)),g=(parseInt(u[0],Ur)+8).toString(Ur);return u=g+u.substring(1),u}function Kf(c,u){return Gi(u)+Xs(8,Gi(c))}function Xs(c,u){for(var g=c-u.length,y="",x=0;x.85?.9+(c-.85)/.15*.1:.1+(c-.15)/.7*.8}function tl(c,u,g,y){const x=g-u;if(x<.001)return Vi(y[12]);const C=Math.max(0,Math.min(1,(c-u)/x)),T=s2(C),P=Math.min(23,Math.floor(T*24));return Vi(y[P])}function l2(c){const u=new Map;for(const C of c){if(typeof C.lat!="number"||typeof C.lon!="number"||isNaN(C.lat)||isNaN(C.lon))continue;const T=Jf(C.lat,C.lon,e2),P=u.get(T),_=C.weight;P?(P.count++,P.qualitySum+=_):u.set(T,{count:1,qualitySum:_})}const g=[];let y=1/0,x=-1/0;for(const[C,T]of u.entries()){const P=T.qualitySum/T.count;g.push({hexId:C,count:T.count,avgQuality:P}),y=Math.min(y,P),x=Math.max(x,P)}return{cells:g,minQuality:g.length>0?y:0,maxQuality:g.length>0?x:0}}function a2(c,u,g,y){const x=[];for(const C of c){const P=Al(C.hexId).map(([E,Q])=>[Q,E]);P.push(P[0]);const _=tl(C.avgQuality,u,g,y);x.push({type:"Feature",properties:{color:_,quality:C.avgQuality,count:C.count},geometry:{type:"Polygon",coordinates:[P]}})}return{type:"FeatureCollection",features:x}}async function u2(c,u,g,y,x){const C=[];let T=0;for(;T[V,H]);Q.push(Q[0]);const O=tl(_.avgQuality,u,g,y);C.push({type:"Feature",properties:{color:O,quality:_.avgQuality,count:_.count},geometry:{type:"Polygon",coordinates:[Q]}})}TrequestAnimationFrame(_))}return{type:"FeatureCollection",features:C}}function c2(c,u){const[g,y]=R.useState(c);return R.useEffect(()=>{const x=setTimeout(()=>y(c),u);return()=>clearTimeout(x)},[c,u]),g}function f2({coveragePoints:c,visible:u,terrainEnabled:g=!1,brightness:y=t2,basemapMode:x="dark"}){const{current:C}=er(),[T,P]=R.useState(null);R.useEffect(()=>{const Z=()=>{var sA;const kA=(sA=C==null?void 0:C.getMap)==null?void 0:sA.call(C);kA&&!T&&P(kA)};Z();const cA=setInterval(Z,50),lA=setTimeout(()=>clearInterval(cA),5e3);return()=>{clearInterval(cA),clearTimeout(lA)}},[C,T]);const[_,E]=R.useState(null),[Q,O]=R.useState(!1),H=R.useRef({aborted:!1}),V=R.useRef(0),K=R.useRef(x),uA=c2(c,r2),J=R.useMemo(()=>i2(x),[x]);R.useEffect(()=>{if(!uA||!Array.isArray(uA)||uA.length===0){queueMicrotask(()=>{E(null),V.current=0});return}const Z=K.current!==x;if(uA.length===V.current&&_&&!Z)return;V.current=uA.length,K.current=x,H.current.aborted=!0,H.current={aborted:!1};const cA=H.current;O(!0);const{cells:lA,minQuality:kA,maxQuality:sA}=l2(uA);if(lA.length===0){E(null),O(!1);return}if(lA.length{!cA.aborted&&hA&&E(hA)}).finally(()=>{cA.aborted||O(!1)}),()=>{cA.aborted=!0}},[uA,J]),R.useEffect(()=>{if(!T)return;const Z=()=>{var cA,lA;try{const kA=T.getLayer(mr),sA=T.getSource(dr);if(u&&_&&_.features.length>0){if(sA?T.getSource(dr).setData(_):T.addSource(dr,{type:"geojson",data:_}),!kA){const hA=T.getLayer("topology-weak-edges-native"),TA=(lA=(cA=T.getStyle())==null?void 0:cA.layers)==null?void 0:lA.find(bA=>bA.type==="symbol"),BA=hA?"topology-weak-edges-native":TA==null?void 0:TA.id;T.addLayer({id:mr,type:"fill",source:dr,paint:{"fill-color":["get","color"],"fill-opacity":y}},BA)}}else kA&&T.removeLayer(mr),sA&&T.removeSource(dr)}catch(kA){console.warn("[WardrivingHexLayerMapLibre] Layer update error:",kA)}};T.isStyleLoaded()?Z():T.once("style.load",Z)},[T,u,_,g]),R.useEffect(()=>{if(!(!T||!u))try{T.getLayer(mr)&&T.setPaintProperty(mr,"fill-opacity",y)}catch{}},[T,y,u]),R.useEffect(()=>()=>{if(T)try{T.getLayer(mr)&&T.removeLayer(mr),T.getSource(dr)&&T.removeSource(dr)}catch{}},[T]);const eA=(_==null?void 0:_.features.length)??0;return eA>0&&u?p.jsx("div",{"data-testid":"wardriving-hexlayer-maplibre-active","data-point-count":(c==null?void 0:c.length)||0,"data-cell-count":eA,"data-terrain-enabled":g,"data-is-processing":Q,style:{display:"none"}}):null}const Wi="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png",Yi="terrarium",Ki=256,Zi=14,ln={shadowColor:"rgba(10, 10, 10, 0.6)",highlightColor:"rgba(245, 240, 230, 0.4)",accentColor:"rgba(90, 75, 65, 0.3)",illuminationDirection:315,exaggeration:.35},$0="terrain-dem",Gr="hillshade-dem",Ln="terrain-hillshade";function h2({enabled:c,exaggeration:u=4}){const{current:g}=er(),[y,x]=R.useState(null),C=R.useRef(null);return R.useEffect(()=>{const T=()=>{var Q;const E=(Q=g==null?void 0:g.getMap)==null?void 0:Q.call(g);E&&!y&&x(E)};T();const P=setInterval(T,50),_=setTimeout(()=>clearInterval(P),5e3);return()=>{clearInterval(P),clearTimeout(_)}},[g,y]),R.useEffect(()=>{if(!y)return;let T=!0;const P=()=>{var _,E;if(T)try{if(y.getSource(Gr)||y.addSource(Gr,{type:"raster-dem",tiles:[Wi],encoding:Yi,tileSize:Ki,maxzoom:Zi}),!y.getLayer(Ln)){const Q=(E=(_=y.getStyle())==null?void 0:_.layers)==null?void 0:E.find(O=>O.type==="symbol");y.addLayer({id:Ln,type:"hillshade",source:Gr,paint:{"hillshade-shadow-color":ln.shadowColor,"hillshade-highlight-color":ln.highlightColor,"hillshade-accent-color":ln.accentColor,"hillshade-illumination-direction":ln.illuminationDirection,"hillshade-exaggeration":ln.exaggeration}},Q==null?void 0:Q.id)}y.getSource($0)||y.addSource($0,{type:"raster-dem",tiles:[Wi],encoding:Yi,tileSize:Ki,maxzoom:Zi})}catch(Q){console.error("[TerrainLayer] Source/layer setup error:",Q)}};return y.isStyleLoaded()?P():(y.once("style.load",P),y.once("load",()=>{T&&!y.getSource(Gr)&&P()})),()=>{T=!1}},[y]),R.useEffect(()=>{if(!y)return;let T=!0,P=!1;const _=()=>{if(!(!T||!y.getSource($0)))try{c?(y.setCenterClampedToGround(!1),y.setTerrain({source:$0,exaggeration:u}),y.setMaxPitch(70),!P&&y.getPitch()<30&&!y.isMoving()&&(P=!0,C.current!==null&&clearTimeout(C.current),C.current=window.setTimeout(()=>{C.current=null,T&&!y.isMoving()&&y.getPitch()<30&&y.easeTo({pitch:45,duration:1e3})},200))):(y.setTerrain(null),y.setCenterClampedToGround(!0),y.getPitch()>0&&!y.isMoving()&&y.easeTo({pitch:0,duration:800}),y.setMaxPitch(60))}catch(E){console.error("[TerrainLayer] Terrain state error:",E)}};if(y.isStyleLoaded()&&y.getSource($0))_();else{const E=()=>{y.getSource($0)&&_()};y.once("idle",E)}return()=>{T=!1,C.current!==null&&(clearTimeout(C.current),C.current=null)}},[y,c,u]),R.useEffect(()=>()=>{var T;try{(T=y==null?void 0:y.getStyle)!=null&&T.call(y)&&y.isStyleLoaded()&&(y.setTerrain(null),y.getLayer(Ln)&&y.removeLayer(Ln),y.getSource(Gr)&&y.removeSource(Gr),y.getSource($0)&&y.removeSource($0))}catch{}},[y]),null}const d2=.03,m2=.1,g2=2,p2=3,y2=.02,x2=3;function w2(c,u=x2){if(c.length<3||u<=0)return c;let g=c;for(let y=0;y0&&x.push([x[0][0],x[0][1]]),g=x}return g}function v2(c,u){let g=1/0,y=-1/0,x=1/0,C=-1/0;for(const[T,P]of c)Ty&&(y=T),PC&&(C=P);return g-=u,y+=u,x-=u,C+=u,{minX:g,minY:x,maxX:y,maxY:C,width:y-g,height:C-x}}function k2(c,u={}){if(c.length(eA-C.minX)/C.width*Q,V=eA=>(eA-C.minY)/C.height*O,K=eA=>eA/Q*C.width+C.minX,uA=eA=>eA/O*C.height+C.minY,J=g/C.width*Q;try{const Z=rc().x(BA=>H(BA[0])).y(BA=>V(BA[1])).size([Q,O]).bandwidth(Math.max(5,J)).cellSize(x)(c);if(Z.length===0)return{coordinates:[],valid:!1};const lA=Math.max(...Z.map(BA=>BA.value))*y;let kA=Z[0],sA=1/0;for(const BA of Z){const bA=Math.abs(BA.value-lA);bA0){const NA=jA[0],FA=jA[jA.length-1];(NA[0]!==FA[0]||NA[1]!==FA[1])&&jA.push([NA[0],NA[1]])}if(jA.length>=4){const NA=w2(jA);bA.push(NA)}}bA.length>0&&hA.push(bA)}const TA=[];for(const BA of hA)for(const bA of BA)TA.push(bA);return{coordinates:hA,valid:hA.length>0}}catch(eA){return console.warn("[KDE Contour] Failed to generate contour:",eA),{coordinates:[],valid:!1}}}function b2(c,u={}){const g=k2(c,u);return!g.valid||g.coordinates.length===0?null:g.coordinates.length===1?{type:"Polygon",coordinates:g.coordinates[0]}:{type:"MultiPolygon",coordinates:g.coordinates}}const C2="mincut-partition",E2="mincut-partition-fill",S2="mincut-partition-stroke",M2=3,B2=.05,D2=.15,_2=.008,$i=12;function qi(c,u,g){return(u[0]-c[0])*(g[1]-c[1])-(u[1]-c[1])*(g[0]-c[0])}function T2(c){if(c.length<3)return c;const u=[...c].sort((x,C)=>x[0]-C[0]||x[1]-C[1]),g=[];for(const x of u){for(;g.length>=2&&qi(g[g.length-2],g[g.length-1],x)<=0;)g.pop();g.push(x)}const y=[];for(let x=u.length-1;x>=0;x--){const C=u[x];for(;y.length>=2&&qi(y[y.length-2],y[y.length-1],C)<=0;)y.pop();y.push(C)}return g.pop(),y.pop(),g.concat(y)}function R2(c,u){if(c.length<3)return c;let g=0,y=0;for(const[x,C]of c)g+=x,y+=C;return g/=c.length,y/=c.length,c.map(([x,C])=>{const T=x-g,P=C-y,_=Math.sqrt(T*T+P*P);if(_<1e-4)return[x,C];const E=(_+u)/_;return[g+T*E,y+P*E]})}function j2(c,u,g,y,x){const C=x*x,T=C*x;return[.5*(2*u[0]+(-c[0]+g[0])*x+(2*c[0]-5*u[0]+4*g[0]-y[0])*C+(-c[0]+3*u[0]-3*g[0]+y[0])*T),.5*(2*u[1]+(-c[1]+g[1])*x+(2*c[1]-5*u[1]+4*g[1]-y[1])*C+(-c[1]+3*u[1]-3*g[1]+y[1])*T)]}function I2(c){if(c.length<3)return c;const u=[],g=c.length;for(let y=0;yc?N2(c,u,x,C):{type:"FeatureCollection",features:[]},[c,u,x,C]),_=g?y:0,E={"fill-color":["get","color"],"fill-opacity":_},Q={"line-color":["get","borderColor"],"line-width":T,"line-opacity":_};return p.jsxs(Ar,{id:C2,type:"geojson",data:P,children:[p.jsx(t0,{id:E2,type:"fill",paint:E}),p.jsx(t0,{id:S2,type:"line",paint:Q})]})}function P2(c,u=!1,g=!1,y=!1,x=.7,C){const T=gs(C);return y?x>=.75?T.restBright:T.rest:x>=.85?T.rest:(x>=.7,T.restDim)}function Ji(c){return[c[1],c[0]]}function Q2(c,u,g,y=12){const[x,C]=c,[T,P]=u,_=[];for(let E=0;E<=y;E++){const Q=E/y,O=C+(P-C)*Q,H=x+(T-x)*Q,V=4*g*Q*(1-Q);_.push([O,H,V])}return _}function Xi(c,u,g,y,x,C,T,P,_,E,Q,O="dark"){const H=Uo(),V=[];let K=1/0,uA=-1/0;const J=[];for(const Z of c){const cA=Z.edge.avgConfidence??(u?.7:.5),lA=Z.edge.certainCount/Math.max(T,1),kA=cA*.7+lA*.3+(u?.5:0);J.push({polyline:Z,brightnessScore:kA}),K=Math.min(K,kA),uA=Math.max(uA,kA)}if(J.length===0)return{type:"FeatureCollection",features:[]};const eA=uA-K||1;J.sort((Z,cA)=>Z.brightnessScore-cA.brightnessScore);for(const{polyline:Z,brightnessScore:cA}of J){const{from:lA,to:kA,edge:sA}=Z,hA=g.get(sA.key)??0;if(hA<=0)continue;const TA=P.has(sA.key),BA=_.has(sA.key),bA=sA.avgConfidence??(u?.7:.5),aA=E===sA.key,jA=Q[sA.fromHash],NA=Q[sA.toHash],FA=(jA==null?void 0:jA.node_name)||(jA==null?void 0:jA.name)||sA.fromHash.slice(0,8),GA=(NA==null?void 0:NA.node_name)||(NA==null?void 0:NA.name)||sA.toHash.slice(0,8),oA=[lA[0]+(kA[0]-lA[0])*hA,lA[1]+(kA[1]-lA[1])*hA];let fA;if(!u)fA=1.5;else{const ae=C.get(sA.key)??Co(sA.certainCount),ZA=x.get(sA.key)??ae;fA=ZA+(ae-ZA)*y,aA?fA=Math.max(fA*1.6,4.5):BA&&(fA=fA*1.3)}let dA;aA?dA=H.edges.highlight:dA=P2(!1,sA.isDirectPathEdge??!1,TA,BA,bA,O);let CA;aA?CA=H.edges.highlight:sA.isDirectPathEdge?CA=H.edges.hoverDirect:TA?CA=H.edges.hoverLoop:CA=H.edges.hoverStandard;let IA;if(!u)IA=(.3+bA*.3)*hA;else{const ae=Math.min(hA*1.5,1)*H.edgeOpacity;IA=BA?ae*1.15:ae}aA&&(IA=.95);const Ae=(cA-K)/eA;V.push({type:"Feature",properties:{key:sA.key,baseColor:dA,hoverColor:CA,baseWidth:fA,baseOpacity:IA,brightnessScore:Ae,isLoopEdge:TA,isBackbone:BA,isDirectPath:sA.isDirectPathEdge??!1,isHubConnection:sA.isHubConnection??!1,isZeroHop:sA.isZeroHop??!1,isValidated:u,certainCount:sA.certainCount,confidence:bA,symmetryRatio:sA.symmetryRatio??1,dominantDirection:sA.dominantDirection??"balanced",fromName:FA,toName:GA,fromHash:sA.fromHash,toHash:sA.toHash},geometry:{type:"LineString",coordinates:[Ji(lA),Ji(oA)]}})}return{type:"FeatureCollection",features:V}}const O2=150,z2=8;function As(c,u){const g=Uo(),y=[];let x=0;for(const C of c){const T=u.get(C.hash);T&&T.blendedScore>x&&(x=T.blendedScore)}for(const C of c){const{from:T,to:P,hash:_,neighbor:E,lastHopData:Q}=C,O=`neighbor-${_}`,H=(Q==null?void 0:Q.avgRssi)??E.rssi??null,V=(Q==null?void 0:Q.avgSnr)??E.snr??null,K=(Q==null?void 0:Q.count)??0,uA=(Q==null?void 0:Q.confidence)??1,J=u.get(_),eA=(J==null?void 0:J.listenerScore)??0,Z=(J==null?void 0:J.loudScore)??0,cA=(J==null?void 0:J.blendedScore)??0,lA=x>0?cA/x:0,kA=C.rxAdvertCount??0,sA=C.txProxyCount??0,hA=kA+sA,TA=hA>0?(sA-kA)/hA:0,BA=Q2(T,P,O2,z2);y.push({type:"Feature",properties:{key:O,hash:_,name:E.node_name||E.name||_.slice(0,8),prefix:_.slice(2,4).toUpperCase(),color:g.neighborColor,width:2.5,opacity:.85,rssi:H,snr:V,packetCount:K,confidence:uA,hasAvgRssi:(Q==null?void 0:Q.avgRssi)!==void 0,hasAvgSnr:(Q==null?void 0:Q.avgSnr)!==void 0,isNeighborEdge:!0,listenerScore:eA,loudScore:Z,blendedScore:cA,trafficWeight:lA,linkAsymmetry:TA,rxAdvertCount:kA,txProxyCount:sA},geometry:{type:"LineString",coordinates:BA}})}return{type:"FeatureCollection",features:y}}function H2({map:c,showTopology:u,validatedPolylines:g,weakPolylines:y,maxCertainCount:x,loopEdgeKeys:C,backboneEdgeKeys:T,highlightedEdgeKey:P,neighbors:_,validatedSourceId:E,weakSourceId:Q,neighborPolylines:O=[],showNeighborLines:H=!0,neighborSourceId:V,neighborLinkScores:K=new Map,basemapMode:uA}){const J=R.useRef(null);R.useEffect(()=>{const ue=c&&"current"in c?c.current:c;J.current=ue});const eA=R.useRef(new Map),Z=R.useRef(1),cA=R.useRef(new Map),lA=R.useRef(new Map),kA=R.useRef(!1),sA=R.useRef(null),hA=R.useRef(u),TA=R.useRef(new Set),BA=R.useRef(""),bA=R.useRef(new Map),aA=R.useRef(""),jA=R.useRef(""),NA=R.useRef(""),FA=R.useRef(g),GA=R.useRef(y),oA=R.useRef(x),fA=R.useRef(C),dA=R.useRef(T),CA=R.useRef(P),IA=R.useRef(_),Ae=R.useRef(O),ae=R.useRef(H),ZA=R.useRef(K),VA=R.useRef(uA);R.useEffect(()=>{FA.current=g,GA.current=y,oA.current=x,fA.current=C,dA.current=T,CA.current=P,IA.current=_,Ae.current=O,ae.current=H,ZA.current=K,VA.current=uA},[g,y,x,C,T,P,_,O,H,K,uA]);const $A=R.useCallback((ue=!1)=>{var xe,we,be,Ke,qe,$e,rt,xt,Qe,Je;const ee=J.current;if(!ee)return;const ke=ee.getSource(E),He=ee.getSource(Q),De=ee.getSource(V);if(ke){const Se=Xi(FA.current,!0,eA.current,Z.current,cA.current,lA.current,oA.current,fA.current,dA.current,CA.current,IA.current,VA.current),Ge=`${Se.features.length}:${((we=(xe=Se.features[0])==null?void 0:xe.properties)==null?void 0:we.key)??""}:${((Ke=(be=Se.features[Se.features.length-1])==null?void 0:be.properties)==null?void 0:Ke.key)??""}:${Array.from(eA.current.values()).reduce((lt,pt)=>lt+pt,0).toFixed(2)}`;(ue||Ge!==aA.current)&&(ke.setData(Se),aA.current=Ge)}if(He){const Se=Xi(GA.current,!1,eA.current,Z.current,cA.current,lA.current,oA.current,fA.current,dA.current,CA.current,IA.current,VA.current),Ge=`${Se.features.length}:${(($e=(qe=Se.features[0])==null?void 0:qe.properties)==null?void 0:$e.key)??""}:${((xt=(rt=Se.features[Se.features.length-1])==null?void 0:rt.properties)==null?void 0:xt.key)??""}`;(ue||Ge!==jA.current)&&(He.setData(Se),jA.current=Ge)}if(De&&Ae.current.length>0){const Se=As(Ae.current,ZA.current),Ge=`${Se.features.length}:${((Je=(Qe=Se.features[0])==null?void 0:Qe.properties)==null?void 0:Je.hash)??""}`;(ue||Ge!==NA.current)&&(De.setData(Se),NA.current=Ge)}},[E,Q,V]),Fe=R.useCallback(()=>{sA.current&&(cancelAnimationFrame(sA.current),sA.current=null),eA.current=new Map,Z.current=1,cA.current=new Map,lA.current=new Map,kA.current=!1,TA.current=new Set,BA.current="",bA.current=new Map},[]);R.useEffect(()=>{const ue=hA.current,ee=u;if(hA.current=u,!!J.current){if(sA.current&&(cancelAnimationFrame(sA.current),sA.current=null),ue&&!ee&&!kA.current){kA.current=!0;const He=new Map(eA.current);let De=null;const xe=we=>{De||(De=we);const be=we-De,Ke=Math.min(be/ic,1),qe=Ls(Ke);for(const[$e,rt]of He)eA.current.set($e,rt*(1-qe));$A(!0),Ke<1?sA.current=requestAnimationFrame(xe):(kA.current=!1,eA.current=new Map,TA.current=new Set,BA.current="",cA.current=new Map,lA.current=new Map,sA.current=null,$A(!0))};sA.current=requestAnimationFrame(xe)}!ue&&ee&&(eA.current=new Map,TA.current=new Set,BA.current="")}},[u,$A]),R.useEffect(()=>{const ue=J.current;if(!u||kA.current||!ue)return;const ee=[...g,...y],ke=ee.map(be=>`${be.edge.key}:${be.edge.certainCount}`).sort().join(","),He=TA.current.size===0,De=BA.current!==""&&BA.current!==ke;if(!He&&!De){$A();return}const xe=[],we=[];for(const{edge:be}of ee)TA.current.has(be.key)?we.push(be.key):xe.push(be.key);De&&we.length>0&&(cA.current=new Map(bA.current),Z.current=0),lA.current=new Map;for(const{edge:be}of g){const Ke=Co(be.certainCount);lA.current.set(be.key,Ke)}for(const be of xe)eA.current.set(be,0);for(const be of we)eA.current.has(be)||eA.current.set(be,1);if(xe.length>0||De&&we.length>0){sA.current&&(cancelAnimationFrame(sA.current),sA.current=null);let be=null;const Ke=Math.min(100,Mn/Math.max(xe.length,1)/2),qe=$e=>{be||(be=$e);const rt=$e-be;for(let Qe=0;Qe0){const Qe=Math.min(rt/Mn,1);Z.current=ko(Qe)}$A(!0);const xt=Mn+(xe.length-1)*Ke;rt{const ue=J.current;if(!ue||!V)return;const ee=()=>{const De=ue.getSource(V);if(!De)return!1;if(O.length>0){const xe=As(O,K);De.setData(xe)}else De.setData({type:"FeatureCollection",features:[]});return!0};if(ee())return;const ke=De=>{De.sourceId===V&&ee()&&ue.off("sourcedata",ke)};ue.on("sourcedata",ke);const He=()=>{ee()&&(ue.off("styledata",He),ue.off("sourcedata",ke))};return ue.on("styledata",He),()=>{ue.off("sourcedata",ke),ue.off("styledata",He)}},[V,O,K]);const Pe=R.useRef(uA);return R.useEffect(()=>{uA!==Pe.current&&(Pe.current=uA,aA.current="",jA.current="",NA.current="",$A(!0))},[uA,$A]),R.useEffect(()=>()=>{sA.current&&(cancelAnimationFrame(sA.current),sA.current=null)},[]),{isExiting:kA.current,isAnimating:sA.current!==null,resetAnimationState:Fe,weightAnimProgress:Z.current,animStartWeights:cA.current,animTargetWeights:lA.current}}function G2({activeFilters:c,neighborHashes:u,hubConnectedNodes:g,directNodeSet:y,localConnectedNodes:x,nodeTypeMap:C,showTopology:T}){const[P,_]=R.useState(new Map),E=R.useMemo(()=>[...c].sort().join(","),[c]),Q=R.useRef(E),O=R.useRef(!1),H=R.useRef(new Map),V=R.useRef(null),K=R.useRef(g),uA=R.useRef(y),J=R.useRef(x),eA=R.useRef(C),Z=R.useRef(T);return R.useEffect(()=>{K.current=g,uA.current=y,J.current=x,eA.current=C,Z.current=T},[g,y,x,C,T]),R.useEffect(()=>{const lA=Q.current,kA=E;if(Q.current=E,lA===kA)return;V.current&&(cancelAnimationFrame(V.current),V.current=null);const sA=new Set(lA?lA.split(",").filter(Boolean):[]),hA=c,TA=K.current,BA=uA.current,bA=eA.current;for(const oA of u)H.current.has(oA)||H.current.set(oA,Math.random());const aA=(oA,fA)=>{if(fA.size===0)return!1;const dA=bA.get(oA)??"unknown";return!!(fA.has("repeater")&&dA==="repeater"||fA.has("companion")&&(dA==="companion"||dA==="unknown")||fA.has("room_server")&&dA==="room_server"||fA.has("direct")&&BA.has(oA)||fA.has("hubs")&&TA.has(oA))},jA=[];for(const oA of u){const fA=aA(oA,sA),dA=aA(oA,hA);fA!==dA&&jA.push({hash:oA,startOpacity:fA?1:0,targetOpacity:dA?1:0})}if(jA.length===0)return;O.current=!0,_(oA=>{const fA=new Map(oA);for(const{hash:dA,startOpacity:CA}of jA)fA.set(dA,CA);return fA});const NA=jA;let FA=null;const GA=oA=>{FA||(FA=oA);const fA=oA-FA;let dA=!0;_(()=>{const IA=new Map;for(const{hash:Ae,startOpacity:ae,targetOpacity:ZA}of NA){const VA=(H.current.get(Ae)??0)*Mi,$A=Math.max(0,fA-VA),Fe=Math.min($A/Si,1),Pe=ko(Fe),ue=ae+(ZA-ae)*Pe;IA.set(Ae,ue),Fe<1&&(dA=!1)}return IA});const CA=Si+Mi;fA{V.current&&(cancelAnimationFrame(V.current),V.current=null),O.current=!1}},[E,c,u]),{nodeOpacities:P,getNodeOpacity:(lA,kA)=>O.current&&P.has(lA)?P.get(lA):kA?1:0}}const po=240,es=240;function U2(c,u){if(c{T.current=C},[C]);const P=R.useRef(0),_=R.useRef(null),E=R.useRef(new Map),Q=R.useRef(new Map);R.useEffect(()=>{Q.current=V2(c)},[c]);const O=R.useRef(null);return R.useEffect(()=>{const H=()=>{const V=performance.now(),K=E.current;if(K.size===0){_.current=null,x(new Map);return}const uA=new Map,J=[];for(const[eA,{startTime:Z,staggerDelay:cA}]of K){const lA=V-Z-cA;if(!(lA<0))if(lA>=Bn)J.push(eA);else{const kA=U2(lA,Bn);kA>0&&uA.set(eA,kA)}}for(const eA of J)K.delete(eA);x(uA),K.size>0&&O.current?_.current=requestAnimationFrame(O.current):_.current=null};O.current=H},[]),R.useEffect(()=>{if(!g)return;const H=T.current;if(H.length===0)return;const V=P.current,K=H.filter(Z=>(Z.timestamp??0)>V);if(V===0){const Z=H.reduce((cA,lA)=>Math.max(cA,lA.timestamp??0),0);P.current=Z;return}if(K.length===0)return;const uA=K.reduce((Z,cA)=>Math.max(Z,cA.timestamp??0),0);P.current=uA;const J=performance.now();let eA=0;for(const Z of K){const cA=Es(Z,u);if(!cA||cA.original.length===0)continue;const lA=W2(cA.original,Q.current,u);if(lA.length===0)continue;const kA=Bn*.5;for(let sA=0;sA()=>{_.current!==null&&(cancelAnimationFrame(_.current),_.current=null)},[]),{blinkingNodes:y,blinkColor:oc}}const q0="edge-blink-source",yr="edge-blink-layer",_o=1e3,To=1e3,yo=150,K2=175,Z2=3e4,$2=e0.teal,q2="#8B7BAD",J2=2.5,X2=1.875,A1=.5,Un="node-markers-layer";function e1(c){if(!c.getLayer(yr))return;const u=c.getLayer(Un)?Un:void 0;try{c.moveLayer(yr,u)}catch{}}function t1(c,u){const g=new Map;for(const y of Object.keys(c)){const x=hn(y);g.has(x)||g.set(x,y)}if(u){const y=hn(u);g.set(y,u)}return g}function r1(c){return c<0||c>=_o?0:1-c/_o}function n1(c){if(c<0||c>=To)return 0;const u=c/To;return Math.pow(1-u,3)}function Nn(c){return[c[1],c[0]]}function o1({map:c,nodeCoordinates:u,packets:g,localHash:y,neighbors:x,meshTopology:C,enabled:T=!0}){const P=R.useRef(null),_=c&&"current"in c?c.current:c;R.useEffect(()=>{P.current=_},[_]);const E=R.useRef(!1),Q=R.useRef(null),O=R.useRef([]),H=R.useRef(0),V=R.useRef(!1),[K,uA]=R.useState(!1),J=R.useRef(null),eA=R.useRef([]),Z=R.useRef(new Map),cA=R.useRef(u);R.useEffect(()=>{cA.current=u},[u]),R.useEffect(()=>{Z.current=t1(x,y)},[x,y]),R.useEffect(()=>{if(!T){J.current&&(clearTimeout(J.current),J.current=null),eA.current=[],Q.current!==null&&(cancelAnimationFrame(Q.current),Q.current=null),O.current=[];const hA=P.current;if(hA&&E.current){const TA=hA.getSource(q0);TA&&TA.setData({type:"FeatureCollection",features:[]})}V.current=!1,H.current=0}},[T]),R.useEffect(()=>{const hA=_;if(!hA)return;let TA=null,BA=!1;const bA=()=>{if(!BA&&!E.current)try{hA.getLayer(yr)&&hA.removeLayer(yr),hA.getSource(q0)&&hA.removeSource(q0),hA.addSource(q0,{type:"geojson",data:{type:"FeatureCollection",features:[]}});const aA=hA.getLayer(Un)?Un:void 0;hA.addLayer({id:yr,type:"line",source:q0,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],q2,$2],"line-width":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],X2,J2],"line-opacity":["*",["get","opacityMult"],["interpolate",["linear"],["get","intensity"],0,0,.1,.8,.5,1,1,1]]}},aA),E.current=!0,uA(!0),TA&&(clearInterval(TA),TA=null)}catch{}};return hA.isStyleLoaded()&&bA(),hA.once("style.load",()=>{bA()}),E.current||(TA=setInterval(()=>{if(E.current){TA&&clearInterval(TA);return}bA()},100),setTimeout(()=>{TA&&(clearInterval(TA),TA=null)},5e3)),()=>{BA=!0,TA&&clearInterval(TA),Q.current!==null&&(cancelAnimationFrame(Q.current),Q.current=null);const aA=P.current;if(aA&&E.current){try{aA.getLayer(yr)&&aA.removeLayer(yr),aA.getSource(q0)&&aA.removeSource(q0)}catch{}E.current=!1,uA(!1)}}},[_]);const lA=R.useRef(()=>{});R.useEffect(()=>{lA.current=()=>{const hA=P.current;if(!hA)return;const TA=hA.getSource(q0);if(!TA)return;const BA=performance.now(),bA=O.current,aA=[],jA=[];for(const NA of bA){const FA=BA-NA.startTime-NA.delay,GA=NA.isSpeculative?To:_o;if(FA0&&aA.push({type:"Feature",properties:{intensity:oA,opacityMult:NA.isSpeculative?A1:1,isSpeculative:NA.isSpeculative??!1},geometry:{type:"LineString",coordinates:[NA.fromCoord,NA.toCoord]}})}}TA.setData({type:"FeatureCollection",features:aA}),O.current=jA,jA.length>0?Q.current=requestAnimationFrame(()=>lA.current()):Q.current=null}},[]);const kA=R.useCallback(()=>{const hA=P.current;hA&&e1(hA),Q.current===null&&(Q.current=requestAnimationFrame(()=>lA.current()))},[]),sA=R.useCallback(()=>{if(!P.current||!E.current)return;const TA=eA.current;if(eA.current=[],J.current=null,TA.length===0)return;const BA=Z.current,bA=cA.current;if(BA.size===0)return;const aA=performance.now();let jA=0,NA=!1;const FA=new Set;for(const GA of TA){const oA=Es(GA,y);if(!oA||oA.original.length<2)continue;const fA=oA.original;let dA=0,CA=null;for(let ZA=0;ZA0){ZA.sort((Pe,ue)=>ue.confidence-Pe.confidence);const VA=Math.max(1,Math.ceil(ZA.length*.25)),$A=ZA.slice(0,VA),Fe=jA+dA*yo;for(const{edgeKey:Pe,otherHash:ue}of $A){const ee=bA.get(CA),ke=bA.get(ue);O.current.push({edgeKey:Pe,fromCoord:Nn(ee),toCoord:Nn(ke),startTime:aA,delay:Fe,isSpeculative:!0}),FA.add(Pe),NA=!0}}}dA>0&&(jA+=dA*yo*.5)}NA&&kA()},[y,C,kA]);R.useEffect(()=>{const hA=P.current;if(!T||!hA||!K||g.length===0)return;const TA=Date.now(),BA=H.current;if(!V.current){V.current=!0;const jA=(TA-Z2)/1e3,NA=g.filter(GA=>(GA.timestamp??0)>=jA);let FA=0;for(const GA of g){const oA=GA.timestamp??0;oA>FA&&(FA=oA)}if(H.current=FA,NA.length>0){NA.sort((oA,fA)=>(oA.timestamp??0)-(fA.timestamp??0));const GA=NA.slice(-20);eA.current.push(...GA),sA()}return}const bA=g.filter(jA=>(jA.timestamp??0)>BA);if(bA.length===0)return;let aA=0;for(const jA of bA){const NA=jA.timestamp??0;NA>aA&&(aA=NA)}H.current=aA,eA.current.push(...bA),J.current&&clearTimeout(J.current),J.current=setTimeout(sA,K2)},[T,g,sA,K]),R.useEffect(()=>()=>{J.current&&clearTimeout(J.current)},[])}var J0={},gr={};/** + `,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(Ps,{className:"w-4 h-4 sm:w-3.5 sm:h-3.5 text-sys-green shrink-0"}),p.jsx(Or,{prefix:c.nodeA.prefix,name:H}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"↔"}),p.jsx(Or,{prefix:c.nodeB.prefix,name:V})]}),p.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[aA>0&&p.jsx("span",{className:"type-data-xs text-fg-muted",title:pi(aA),children:bs(aA)}),p.jsx(Ot,{plain:!0,color:"muted",onClick:u,className:"!p-1.5 sm:!p-0.5 !rounded-md min-w-[44px] min-h-[44px] sm:min-w-0 sm:min-h-0 flex items-center justify-center",children:p.jsx(dn,{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:`${c.nodeA.prefix}→${c.nodeB.prefix}: mean of ${((GA=c.aToB)==null?void 0:GA.count)??0} measurements`,children:[p.jsxs("span",{className:"flex items-center gap-1",children:[p.jsx(Or,{prefix:c.nodeA.prefix,name:H}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),p.jsx(Or,{prefix:c.nodeB.prefix,name:V})]}),c.aToB?p.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${fn(c.aToB.mean,E)}`,children:[c.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:`${c.nodeB.prefix}→${c.nodeA.prefix}: mean of ${((bA=c.bToA)==null?void 0:bA.count)??0} measurements`,children:[p.jsxs("span",{className:"flex items-center gap-1",children:[p.jsx(Or,{prefix:c.nodeB.prefix,name:V}),p.jsx("span",{className:"type-data-xs text-fg-muted",children:"→"}),p.jsx(Or,{prefix:c.nodeA.prefix,name:H})]}),c.bToA?p.jsxs("span",{className:`type-data-sm tabular-nums font-semibold ${fn(c.bToA.mean,E)}`,children:[c.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(Hi,{stats:c.aToB,direction:`${c.nodeA.prefix}→${c.nodeB.prefix}`,sf:E,noiseFloor:T})}),p.jsx("div",{className:"px-3 pt-2 pb-1",children:p.jsx(Hi,{stats:c.bToA,direction:`${c.nodeB.prefix}→${c.nodeA.prefix}`,sf:E,noiseFloor:T})})]})]}),p.jsxs("div",{className:"px-3 py-1.5 border-b border-edge-subtle",children:[K!=="insufficient"&&p.jsxs("div",{className:"flex items-center justify-between gap-2 py-[3px] cursor-help",title:eA,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:[uf(K),p.jsx("span",{className:"text-fg-secondary capitalize",children:K})]})})]}),J>0&&p.jsx(zn,{label:"Unique traces",value:J.toString(),tooltip:oA})]}),O.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 (",O.length,")"]}),p.jsx("div",{className:"overflow-y-auto flex-1 min-h-0 overscroll-contain",style:{scrollbarGutter:"stable"},children:O.map((cA,sA)=>{const TA=Ys(cA),MA=TA?Ks(cA,TA):null,WA=MA?Math.max(0,MA.length-1):0,ae=MA?MA.map(UA=>(g==null?void 0:g.get(UA))??UA).join(" → "):null,JA=P===sA,ZA=cA.id??`${cA.packet_hash}-${cA.timestamp}`;return p.jsxs("div",{className:"rounded-sm",style:sA%2===1?cf:void 0,children:[p.jsxs("button",{onClick:()=>_(JA?null:sA),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(ys,{className:"w-2.5 h-2.5 text-fg-muted shrink-0"}):p.jsx(lu,{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:pi(cA.timestamp)}),ae?p.jsx("span",{className:"text-fg-secondary truncate min-w-0",title:MA.join(" → "),children:ae}):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:[WA,"h"]}),cA.snr!=null&&p.jsx("span",{className:`shrink-0 tabular-nums ${fn(cA.snr,E)}`,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 ${fn(cA.snr,E)}`,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:ma(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:UA=>{UA.stopPropagation(),navigator.clipboard.writeText(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(Ho,{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})]}),MA&&MA.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:MA.join(" → "),children:MA.join(" → ")})]})]})]},ZA)})})]})]})})}const hf={getItem:c=>{try{return localStorage.getItem(c)}catch{return null}},setItem:(c,u)=>{try{localStorage.setItem(c,u)}catch{}},removeItem:c=>{try{localStorage.removeItem(c)}catch{}}},Zs=ws()(Au(c=>({isEnabled:!1,toggle:()=>c(u=>({isEnabled:!u.isEnabled})),setEnabled:u=>c({isEnabled:u})}),{name:"pymc-live-trace",storage:eu(()=>hf)})),df=()=>Zs(c=>c.isEnabled),mf=()=>Zs(c=>c.toggle);var Rt=(function(c){c=c||{};var u=typeof c<"u"?c:{},g={},y;for(y in u)u.hasOwnProperty(y)&&(g[y]=u[y]);var x="";function C(rA){return u.locateFile?u.locateFile(rA,x):x+rA}var T;typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),x.indexOf("blob:")!==0?x=x.substr(0,x.lastIndexOf("/")+1):x="",T=function(pA,IA,xA){var t=new XMLHttpRequest;t.open("GET",pA,!0),t.responseType="arraybuffer",t.onload=function(){if(t.status==200||t.status==0&&t.response){IA(t.response);return}var ge=c0(pA);if(ge){IA(ge.buffer);return}xA()},t.onerror=xA,t.send(null)};var P=u.print||console.log.bind(console),_=u.printErr||console.warn.bind(console);for(y in g)g.hasOwnProperty(y)&&(u[y]=g[y]);g=null,u.arguments&&u.arguments;var E=0,Q=function(rA){E=rA},O=function(){return E},H=8;function V(rA,pA,IA,xA){switch(IA=IA||"i8",IA.charAt(IA.length-1)==="*"&&(IA="i32"),IA){case"i1":kA[rA>>0]=pA;break;case"i8":kA[rA>>0]=pA;break;case"i16":NA[rA>>1]=pA;break;case"i32":GA[rA>>2]=pA;break;case"i64":st=[pA>>>0,(ze=pA,+Ce(ze)>=1?ze>0?(Ke(+pe(ze/4294967296),4294967295)|0)>>>0:~~+Se((ze-+(~~ze>>>0))/4294967296)>>>0:0)],GA[rA>>2]=st[0],GA[rA+4>>2]=st[1];break;case"float":bA[rA>>2]=pA;break;case"double":cA[rA>>3]=pA;break;default:dt("invalid type for setValue: "+IA)}}function K(rA,pA,IA){switch(pA=pA||"i8",pA.charAt(pA.length-1)==="*"&&(pA="i32"),pA){case"i1":return kA[rA>>0];case"i8":return kA[rA>>0];case"i16":return NA[rA>>1];case"i32":return GA[rA>>2];case"i64":return GA[rA>>2];case"float":return bA[rA>>2];case"double":return cA[rA>>3];default:dt("invalid type for getValue: "+pA)}return null}var aA=!1;function J(rA,pA){rA||dt("Assertion failed: "+pA)}function eA(rA){var pA=u["_"+rA];return J(pA,"Cannot call unknown function "+rA+", make sure it is exported"),pA}function Z(rA,pA,IA,xA,t){var b={string:function(ie){var et=0;if(ie!=null&&ie!==0){var Lt=(ie.length<<2)+1;et=at(Lt),jA(ie,et,Lt)}return et},array:function(ie){var et=at(ie.length);return DA(ie,et),et}};function ge(ie){return pA==="string"?iA(ie):pA==="boolean"?!!ie:ie}var De=eA(rA),He=[],$A=0;if(xA)for(var ye=0;ye=xA);)++t;if(t-pA>16&&rA.subarray&&oA)return oA.decode(rA.subarray(pA,t));for(var b="";pA>10,56320|$A&1023)}}return b}function iA(rA,pA){return rA?vA(LA,rA,pA):""}function fA(rA,pA,IA,xA){if(!(xA>0))return 0;for(var t=IA,b=IA+xA-1,ge=0;ge=55296&&De<=57343){var He=rA.charCodeAt(++ge);De=65536+((De&1023)<<10)|He&1023}if(De<=127){if(IA>=b)break;pA[IA++]=De}else if(De<=2047){if(IA+1>=b)break;pA[IA++]=192|De>>6,pA[IA++]=128|De&63}else if(De<=65535){if(IA+2>=b)break;pA[IA++]=224|De>>12,pA[IA++]=128|De>>6&63,pA[IA++]=128|De&63}else{if(IA+3>=b)break;pA[IA++]=240|De>>18,pA[IA++]=128|De>>12&63,pA[IA++]=128|De>>6&63,pA[IA++]=128|De&63}}return pA[IA]=0,IA-t}function jA(rA,pA,IA){return fA(rA,LA,pA,IA)}typeof TextDecoder<"u"&&new TextDecoder("utf-16le");function DA(rA,pA){kA.set(rA,pA)}function CA(rA,pA){return rA%pA>0&&(rA+=pA-rA%pA),rA}var yA,kA,LA,NA,GA,bA,cA;function sA(rA){yA=rA,u.HEAP8=kA=new Int8Array(rA),u.HEAP16=NA=new Int16Array(rA),u.HEAP32=GA=new Int32Array(rA),u.HEAPU8=LA=new Uint8Array(rA),u.HEAPU16=new Uint16Array(rA),u.HEAPU32=new Uint32Array(rA),u.HEAPF32=bA=new Float32Array(rA),u.HEAPF64=cA=new Float64Array(rA)}var TA=5271536,MA=28624,WA=u.TOTAL_MEMORY||33554432;u.buffer?yA=u.buffer:yA=new ArrayBuffer(WA),WA=yA.byteLength,sA(yA),GA[MA>>2]=TA;function ae(rA){for(;rA.length>0;){var pA=rA.shift();if(typeof pA=="function"){pA();continue}var IA=pA.func;typeof IA=="number"?pA.arg===void 0?u.dynCall_v(IA):u.dynCall_vi(IA,pA.arg):IA(pA.arg===void 0?null:pA.arg)}}var JA=[],ZA=[],UA=[],Ie=[];function Le(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)Ye(u.preRun.shift());ae(JA)}function oe(){ae(ZA)}function me(){ae(UA)}function ue(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)be(u.postRun.shift());ae(Ie)}function Ye(rA){JA.unshift(rA)}function be(rA){Ie.unshift(rA)}var Ce=Math.abs,Se=Math.ceil,pe=Math.floor,Ke=Math.min,$e=0,qe=null;function Xe(rA){$e++,u.monitorRunDependencies&&u.monitorRunDependencies($e)}function vt(rA){if($e--,u.monitorRunDependencies&&u.monitorRunDependencies($e),$e==0&&qe){var pA=qe;qe=null,pA()}}u.preloadedImages={},u.preloadedAudios={};var Qe=null,Je="data:application/octet-stream;base64,";function Be(rA){return String.prototype.startsWith?rA.startsWith(Je):rA.indexOf(Je)===0}var ze,st;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 jt=28640;function v0(rA,pA,IA,xA){dt("Assertion failed: "+iA(rA)+", at: "+[pA?iA(pA):"unknown filename",IA,xA?iA(xA):"unknown function"])}function Yt(){return kA.length}function Kt(rA,pA,IA){LA.set(LA.subarray(pA,pA+IA),rA)}function N0(rA){return u.___errno_location&&(GA[u.___errno_location()>>2]=rA),rA}function er(rA){dt("OOM")}function k0(rA){try{var pA=new ArrayBuffer(rA);return pA.byteLength!=rA?void 0:(new Int8Array(pA).set(kA),f0(pA),sA(pA),1)}catch{}}function zt(rA){var pA=Yt(),IA=16777216,xA=2147483648-IA;if(rA>xA)return!1;for(var t=16777216,b=Math.max(pA,t);b>4,t=(De&15)<<4|He>>2,b=(He&3)<<6|$A,IA=IA+String.fromCharCode(xA),He!==64&&(IA=IA+String.fromCharCode(t)),$A!==64&&(IA=IA+String.fromCharCode(b));while(ye13780509?(A=vn(15,A)|0,A|0):(r=((e|0)<0)<<31>>31,o=ft(e|0,r|0,3,0)|0,n=S()|0,r=KA(e|0,r|0,1,0)|0,r=ft(o|0,n|0,r|0,S()|0)|0,r=KA(r|0,S()|0,1,0)|0,e=S()|0,t[A>>2]=r,t[A+4>>2]=e,A=0,A|0)}function v(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,D(e,A,r,n,0)|0}function D(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0;if(a=k,k=k+16|0,s=a,!(F(e,A,r,n,o)|0))return n=0,k=a,n|0;do if((r|0)>=0){if((r|0)>13780509){if(i=vn(15,s)|0,i|0)break;l=s,s=t[l>>2]|0,l=t[l+4>>2]|0}else i=((r|0)<0)<<31>>31,f=ft(r|0,i|0,3,0)|0,l=S()|0,i=KA(r|0,i|0,1,0)|0,i=ft(f|0,l|0,i|0,S()|0)|0,i=KA(i|0,S()|0,1,0)|0,l=S()|0,t[s>>2]=i,t[s+4>>2]=l,s=i;if(Y0(n|0,0,s<<3|0)|0,o|0){Y0(o|0,0,s<<2|0)|0,i=X(e,A,r,n,o,s,l,0)|0;break}i=Qt(s,4)|0,i?(f=X(e,A,r,n,i,s,l,0)|0,qA(i),i=f):i=13}else i=2;while(!1);return f=i,k=a,f|0}function F(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0;if(G=k,k=k+16|0,I=G,L=G+8|0,j=I,t[j>>2]=e,t[j+4>>2]=A,(r|0)<0)return L=2,k=G,L|0;if(i=n,t[i>>2]=e,t[i+4>>2]=A,i=(o|0)!=0,i&&(t[o>>2]=0),Oe(e,A)|0)return L=9,k=G,L|0;t[L>>2]=0;A:do if((r|0)>=1)if(i)for(m=1,f=0,M=0,j=1,i=e;;){if(!(f|M)){if(i=Y(i,A,4,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,Oe(i,A)|0){i=9;break A}}if(i=Y(i,A,t[26800+(M<<2)>>2]|0,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(m<<3)|0,t[e>>2]=i,t[e+4>>2]=A,t[o+(m<<2)>>2]=j,e=f+1|0,s=(e|0)==(j|0),l=M+1|0,a=(l|0)==6,Oe(i,A)|0){i=9;break A}if(j=j+(a&s&1)|0,(j|0)>(r|0)){i=0;break}else m=m+1|0,f=s?0:e,M=s?a?0:l:M}else for(m=1,f=0,M=0,j=1,i=e;;){if(!(f|M)){if(i=Y(i,A,4,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,Oe(i,A)|0){i=9;break A}}if(i=Y(i,A,t[26800+(M<<2)>>2]|0,L,I)|0,i|0)break A;if(A=I,i=t[A>>2]|0,A=t[A+4>>2]|0,e=n+(m<<3)|0,t[e>>2]=i,t[e+4>>2]=A,e=f+1|0,s=(e|0)==(j|0),l=M+1|0,a=(l|0)==6,Oe(i,A)|0){i=9;break A}if(j=j+(a&s&1)|0,(j|0)>(r|0)){i=0;break}else m=m+1|0,f=s?0:e,M=s?a?0:l:M}else i=0;while(!1);return L=i,k=G,L|0}function X(e,A,r,n,o,i,s,l){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0,s=s|0,l=l|0;var a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0;if(G=k,k=k+16|0,I=G+8|0,L=G,a=jr(e|0,A|0,i|0,s|0)|0,m=S()|0,M=n+(a<<3)|0,W=M,nA=t[W>>2]|0,W=t[W+4>>2]|0,f=(nA|0)==(e|0)&(W|0)==(A|0),!((nA|0)==0&(W|0)==0|f))do a=KA(a|0,m|0,1,0)|0,a=Rr(a|0,S()|0,i|0,s|0)|0,m=S()|0,M=n+(a<<3)|0,nA=M,W=t[nA>>2]|0,nA=t[nA+4>>2]|0,f=(W|0)==(e|0)&(nA|0)==(A|0);while(!((W|0)==0&(nA|0)==0|f));if(a=o+(a<<2)|0,f&&(t[a>>2]|0)<=(l|0)||(nA=M,t[nA>>2]=e,t[nA+4>>2]=A,t[a>>2]=l,(l|0)>=(r|0)))return nA=0,k=G,nA|0;switch(f=l+1|0,t[I>>2]=0,a=Y(e,A,2,I,L)|0,a|0){case 9:{j=9;break}case 0:{a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a||(j=9);break}}A:do if((j|0)==9){switch(t[I>>2]=0,a=Y(e,A,3,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=Y(e,A,1,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=Y(e,A,5,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=Y(e,A,4,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}switch(t[I>>2]=0,a=Y(e,A,6,I,L)|0,a|0){case 9:break;case 0:{if(a=L,a=X(t[a>>2]|0,t[a+4>>2]|0,r,n,o,i,s,f)|0,a|0)break A;break}default:break A}return nA=0,k=G,nA|0}while(!1);return nA=a,k=G,nA|0}function Y(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0;if(r>>>0>6)return o=1,o|0;if(M=(t[n>>2]|0)%6|0,t[n>>2]=M,(M|0)>0){i=0;do r=Gt(r)|0,i=i+1|0;while((i|0)<(t[n>>2]|0))}if(M=wA(e|0,A|0,45)|0,S()|0,m=M&127,m>>>0>121)return o=5,o|0;a=Pt(e,A)|0,i=wA(e|0,A|0,52)|0,S()|0,i=i&15;A:do if(!i)f=8;else{for(;;){if(s=(15-i|0)*3|0,l=wA(e|0,A|0,s|0)|0,S()|0,l=l&7,(l|0)==7){A=5;break}if(L=(Jt(i)|0)==0,i=i+-1|0,j=EA(7,0,s|0)|0,A=A&~(S()|0),I=EA(t[(L?432:16)+(l*28|0)+(r<<2)>>2]|0,0,s|0)|0,s=S()|0,r=t[(L?640:224)+(l*28|0)+(r<<2)>>2]|0,e=I|e&~j,A=s|A,!r){r=0;break A}if(!i){f=8;break A}}return A|0}while(!1);(f|0)==8&&(L=t[848+(m*28|0)+(r<<2)>>2]|0,I=EA(L|0,0,45)|0,e=I|e,A=S()|0|A&-1040385,r=t[4272+(m*28|0)+(r<<2)>>2]|0,(L&127|0)==127&&(L=EA(t[848+(m*28|0)+20>>2]|0,0,45)|0,A=S()|0|A&-1040385,r=t[4272+(m*28|0)+20>>2]|0,e=lr(L|e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+1)),l=wA(e|0,A|0,45)|0,S()|0,l=l&127;A:do if(Re(l)|0){e:do if((Pt(e,A)|0)==1){if((m|0)!=(l|0))if(S0(l,t[7696+(m*28|0)>>2]|0)|0){e=Zn(e,A)|0,s=1,A=S()|0;break}else OA(27795,26864,533,26872);switch(a|0){case 3:{e=lr(e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+1,s=0;break e}case 5:{e=Zn(e,A)|0,A=S()|0,t[n>>2]=(t[n>>2]|0)+5,s=0;break e}case 0:return L=9,L|0;default:return L=1,L|0}}else s=0;while(!1);if((r|0)>0){i=0;do e=Kn(e,A)|0,A=S()|0,i=i+1|0;while((i|0)!=(r|0))}if((m|0)!=(l|0)){if(!(Et(l)|0)){if((s|0)!=0|(Pt(e,A)|0)!=5)break;t[n>>2]=(t[n>>2]|0)+1;break}switch(M&127){case 8:case 118:break A}(Pt(e,A)|0)!=3&&(t[n>>2]=(t[n>>2]|0)+1)}}else if((r|0)>0){i=0;do e=lr(e,A)|0,A=S()|0,i=i+1|0;while((i|0)!=(r|0))}while(!1);return t[n>>2]=((t[n>>2]|0)+r|0)%6|0,L=o,t[L>>2]=e,t[L+4>>2]=A,L=0,L|0}function hA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,RA(e,A,r,n)|0?(Y0(n|0,0,r*48|0)|0,n=XA(e,A,r,n)|0,n|0):(n=0,n|0)}function RA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0;if(L=k,k=k+16|0,j=L,I=L+8|0,M=j,t[M>>2]=e,t[M+4>>2]=A,(r|0)<0)return I=2,k=L,I|0;if(!r)return I=n,t[I>>2]=e,t[I+4>>2]=A,I=0,k=L,I|0;t[I>>2]=0;A:do if(Oe(e,A)|0)e=9;else{o=0,M=e;do{if(e=Y(M,A,4,I,j)|0,e|0)break A;if(A=j,M=t[A>>2]|0,A=t[A+4>>2]|0,o=o+1|0,Oe(M,A)|0){e=9;break A}}while((o|0)<(r|0));m=n,t[m>>2]=M,t[m+4>>2]=A,m=r+-1|0,f=0,e=1;do{if(o=26800+(f<<2)|0,(f|0)==5)for(s=t[o>>2]|0,i=0,o=e;;){if(e=j,e=Y(t[e>>2]|0,t[e+4>>2]|0,s,I,j)|0,e|0)break A;if((i|0)!=(m|0))if(a=j,l=t[a>>2]|0,a=t[a+4>>2]|0,e=n+(o<<3)|0,t[e>>2]=l,t[e+4>>2]=a,!(Oe(l,a)|0))e=o+1|0;else{e=9;break A}else e=o;if(i=i+1|0,(i|0)>=(r|0))break;o=e}else for(s=j,a=t[o>>2]|0,l=0,o=e,i=t[s>>2]|0,s=t[s+4>>2]|0;;){if(e=Y(i,s,a,I,j)|0,e|0)break A;if(s=j,i=t[s>>2]|0,s=t[s+4>>2]|0,e=n+(o<<3)|0,t[e>>2]=i,t[e+4>>2]=s,e=o+1|0,Oe(i,s)|0){e=9;break A}if(l=l+1|0,(l|0)>=(r|0))break;o=e}f=f+1|0}while(f>>>0<6);e=j,e=(M|0)==(t[e>>2]|0)&&(A|0)==(t[e+4>>2]|0)?0:9}while(!1);return I=e,k=L,I|0}function XA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;if(M=k,k=k+16|0,s=M,!r)return t[n>>2]=e,t[n+4>>2]=A,n=0,k=M,n|0;do if((r|0)>=0){if((r|0)>13780509){if(o=vn(15,s)|0,o|0)break;i=s,o=t[i>>2]|0,i=t[i+4>>2]|0}else o=((r|0)<0)<<31>>31,m=ft(r|0,o|0,3,0)|0,i=S()|0,o=KA(r|0,o|0,1,0)|0,o=ft(m|0,i|0,o|0,S()|0)|0,o=KA(o|0,S()|0,1,0)|0,i=S()|0,m=s,t[m>>2]=o,t[m+4>>2]=i;if(f=Qt(o,8)|0,!f)o=13;else{if(m=Qt(o,4)|0,!m){qA(f),o=13;break}if(o=X(e,A,r,f,m,o,i,0)|0,o|0){qA(f),qA(m);break}if(A=t[s>>2]|0,s=t[s+4>>2]|0,(s|0)>0|(s|0)==0&A>>>0>0){o=0,l=0,a=0;do e=f+(l<<3)|0,i=t[e>>2]|0,e=t[e+4>>2]|0,!((i|0)==0&(e|0)==0)&&(t[m+(l<<2)>>2]|0)==(r|0)&&(j=n+(o<<3)|0,t[j>>2]=i,t[j+4>>2]=e,o=o+1|0),l=KA(l|0,a|0,1,0)|0,a=S()|0;while((a|0)<(s|0)|(a|0)==(s|0)&l>>>0>>0)}qA(f),qA(m),o=0}}else o=2;while(!1);return j=o,k=M,j|0}function Ae(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;for(l=k,k=k+16|0,i=l,s=l+8|0,o=(Oe(e,A)|0)==0,o=o?1:2;;){if(t[s>>2]=0,f=(Y(e,A,o,s,i)|0)==0,a=i,f&((t[a>>2]|0)==(r|0)?(t[a+4>>2]|0)==(n|0):0)){e=4;break}if(o=o+1|0,o>>>0>=7){o=7,e=4;break}}return(e|0)==4?(k=l,o|0):0}function ce(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;if(l=k,k=k+48|0,o=l+16|0,i=l+8|0,s=l,r=on(r)|0,r|0)return s=r,k=l,s|0;if(f=e,a=t[f+4>>2]|0,r=i,t[r>>2]=t[f>>2],t[r+4>>2]=a,ei(i,o),r=mA(o,A,s)|0,!r){if(A=t[i>>2]|0,i=t[e+8>>2]|0,(i|0)>0){o=t[e+12>>2]|0,r=0;do A=(t[o+(r<<3)>>2]|0)+A|0,r=r+1|0;while((r|0)<(i|0))}r=s,o=t[r>>2]|0,r=t[r+4>>2]|0,i=((A|0)<0)<<31>>31,(r|0)<(i|0)|(r|0)==(i|0)&o>>>0>>0?(r=s,t[r>>2]=A,t[r+4>>2]=i,r=i):A=o,a=KA(A|0,r|0,12,0)|0,f=S()|0,r=s,t[r>>2]=a,t[r+4>>2]=f,r=n,t[r>>2]=a,t[r+4>>2]=f,r=0}return f=r,k=l,f|0}function Ge(e,A,r,n,o,i,s){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0,s=s|0;var l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,he=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,de=0,We=0,Tt=0,mi=0;if(Ve=k,k=k+64|0,ne=Ve+48|0,HA=Ve+32|0,SA=Ve+24|0,BA=Ve+8|0,zA=Ve,a=t[e>>2]|0,(a|0)<=0)return ve=0,k=Ve,ve|0;for(QA=e+4|0,fe=ne+8|0,he=HA+8|0,Ee=BA+8|0,l=0,$=0;;){f=t[QA>>2]|0,q=f+($<<4)|0,t[ne>>2]=t[q>>2],t[ne+4>>2]=t[q+4>>2],t[ne+8>>2]=t[q+8>>2],t[ne+12>>2]=t[q+12>>2],($|0)==(a+-1|0)?(t[HA>>2]=t[f>>2],t[HA+4>>2]=t[f+4>>2],t[HA+8>>2]=t[f+8>>2],t[HA+12>>2]=t[f+12>>2]):(q=f+($+1<<4)|0,t[HA>>2]=t[q>>2],t[HA+4>>2]=t[q+4>>2],t[HA+8>>2]=t[q+8>>2],t[HA+12>>2]=t[q+12>>2]),a=FA(ne,HA,n,SA)|0;A:do if(a)f=0,l=a;else if(a=SA,f=t[a>>2]|0,a=t[a+4>>2]|0,(a|0)>0|(a|0)==0&f>>>0>0){nA=0,q=0;e:for(;;){if(We=1/(+(f>>>0)+4294967296*+(a|0)),mi=+b[ne>>3],a=ct(f|0,a|0,nA|0,q|0)|0,Tt=+(a>>>0)+4294967296*+(S()|0),de=+(nA>>>0)+4294967296*+(q|0),b[BA>>3]=We*(mi*Tt)+We*(+b[HA>>3]*de),b[Ee>>3]=We*(+b[fe>>3]*Tt)+We*(+b[he>>3]*de),a=$n(BA,n,zA)|0,a|0){l=a;break}W=zA,G=t[W>>2]|0,W=t[W+4>>2]|0,j=jr(G|0,W|0,A|0,r|0)|0,m=S()|0,a=s+(j<<3)|0,M=a,f=t[M>>2]|0,M=t[M+4>>2]|0;t:do if((f|0)==0&(M|0)==0)U=a,ve=16;else for(I=0,L=0;;){if((I|0)>(r|0)|(I|0)==(r|0)&L>>>0>A>>>0){l=1;break e}if((f|0)==(G|0)&(M|0)==(W|0))break t;if(a=KA(j|0,m|0,1,0)|0,j=Rr(a|0,S()|0,A|0,r|0)|0,m=S()|0,L=KA(L|0,I|0,1,0)|0,I=S()|0,a=s+(j<<3)|0,M=a,f=t[M>>2]|0,M=t[M+4>>2]|0,(f|0)==0&(M|0)==0){U=a,ve=16;break}}while(!1);if((ve|0)==16&&(ve=0,!((G|0)==0&(W|0)==0))&&(L=U,t[L>>2]=G,t[L+4>>2]=W,L=i+(t[o>>2]<<3)|0,t[L>>2]=G,t[L+4>>2]=W,L=o,L=KA(t[L>>2]|0,t[L+4>>2]|0,1,0)|0,G=S()|0,W=o,t[W>>2]=L,t[W+4>>2]=G),nA=KA(nA|0,q|0,1,0)|0,q=S()|0,a=SA,f=t[a>>2]|0,a=t[a+4>>2]|0,!((a|0)>(q|0)|(a|0)==(q|0)&f>>>0>nA>>>0)){f=1;break A}}f=0}else f=1;while(!1);if($=$+1|0,!f){ve=21;break}if(a=t[e>>2]|0,($|0)>=(a|0)){l=0,ve=21;break}}return(ve|0)==21?(k=Ve,l|0):0}function bt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,he=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,de=0,We=0,Tt=0;if(Tt=k,k=k+112|0,ve=Tt+80|0,a=Tt+72|0,Ve=Tt,de=Tt+56|0,o=on(r)|0,o|0)return We=o,k=Tt,We|0;if(f=e+8|0,We=p0((t[f>>2]<<5)+32|0)|0,!We)return We=13,k=Tt,We|0;if(ro(e,We),o=on(r)|0,!o){if(HA=e,SA=t[HA+4>>2]|0,o=a,t[o>>2]=t[HA>>2],t[o+4>>2]=SA,ei(a,ve),o=mA(ve,A,Ve)|0,o)HA=0,SA=0;else{if(o=t[a>>2]|0,i=t[f>>2]|0,(i|0)>0){s=t[e+12>>2]|0,r=0;do o=(t[s+(r<<3)>>2]|0)+o|0,r=r+1|0;while((r|0)!=(i|0));r=o}else r=o;o=Ve,i=t[o>>2]|0,o=t[o+4>>2]|0,s=((r|0)<0)<<31>>31,(o|0)<(s|0)|(o|0)==(s|0)&i>>>0>>0?(o=Ve,t[o>>2]=r,t[o+4>>2]=s,o=s):r=i,HA=KA(r|0,o|0,12,0)|0,SA=S()|0,o=Ve,t[o>>2]=HA,t[o+4>>2]=SA,o=0}if(!o){if(r=Qt(HA,8)|0,!r)return qA(We),We=13,k=Tt,We|0;if(l=Qt(HA,8)|0,!l)return qA(We),qA(r),We=13,k=Tt,We|0;Ee=ve,t[Ee>>2]=0,t[Ee+4>>2]=0,Ee=e,ne=t[Ee+4>>2]|0,o=a,t[o>>2]=t[Ee>>2],t[o+4>>2]=ne,o=Ge(a,HA,SA,A,ve,r,l)|0;A:do if(o)qA(r),qA(l),qA(We);else{e:do if((t[f>>2]|0)>0){for(s=e+12|0,i=0;o=Ge((t[s>>2]|0)+(i<<3)|0,HA,SA,A,ve,r,l)|0,i=i+1|0,!(o|0);)if((i|0)>=(t[f>>2]|0))break e;qA(r),qA(l),qA(We);break A}while(!1);(SA|0)>0|(SA|0)==0&HA>>>0>0&&Y0(l|0,0,HA<<3|0)|0,ne=ve,Ee=t[ne+4>>2]|0;e:do if((Ee|0)>0|(Ee|0)==0&(t[ne>>2]|0)>>>0>0){QA=r,fe=l,he=r,Ee=l,ne=r,o=r,U=r,BA=l,zA=l,r=l;t:for(;;){for(W=0,nA=0,q=0,$=0,i=0,s=0;;){l=Ve,a=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));if(A=QA+(W<<3)|0,f=t[A>>2]|0,A=t[A+4>>2]|0,F(f,A,1,Ve,0)|0){l=Ve,a=l+56|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));l=Qt(7,4)|0,l|0&&(X(f,A,1,Ve,l,7,0,0)|0,qA(l))}for(G=0;;){L=Ve+(G<<3)|0,I=t[L>>2]|0,L=t[L+4>>2]|0;r:do if((I|0)==0&(L|0)==0)l=i,a=s;else{if(m=jr(I|0,L|0,HA|0,SA|0)|0,f=S()|0,l=n+(m<<3)|0,A=l,a=t[A>>2]|0,A=t[A+4>>2]|0,!((a|0)==0&(A|0)==0)){M=0,j=0;do{if((M|0)>(SA|0)|(M|0)==(SA|0)&j>>>0>HA>>>0)break t;if((a|0)==(I|0)&(A|0)==(L|0)){l=i,a=s;break r}l=KA(m|0,f|0,1,0)|0,m=Rr(l|0,S()|0,HA|0,SA|0)|0,f=S()|0,j=KA(j|0,M|0,1,0)|0,M=S()|0,l=n+(m<<3)|0,A=l,a=t[A>>2]|0,A=t[A+4>>2]|0}while(!((a|0)==0&(A|0)==0))}if((I|0)==0&(L|0)==0){l=i,a=s;break}ar(I,L,de)|0,no(e,We,de)|0&&(j=KA(i|0,s|0,1,0)|0,s=S()|0,M=l,t[M>>2]=I,t[M+4>>2]=L,i=fe+(i<<3)|0,t[i>>2]=I,t[i+4>>2]=L,i=j),l=i,a=s}while(!1);if(G=G+1|0,G>>>0>=7)break;i=l,s=a}if(W=KA(W|0,nA|0,1,0)|0,nA=S()|0,q=KA(q|0,$|0,1,0)|0,$=S()|0,s=ve,i=t[s>>2]|0,s=t[s+4>>2]|0,($|0)<(s|0)|($|0)==(s|0)&q>>>0>>0)i=l,s=a;else break}if((s|0)>0|(s|0)==0&i>>>0>0){i=0,s=0;do $=QA+(i<<3)|0,t[$>>2]=0,t[$+4>>2]=0,i=KA(i|0,s|0,1,0)|0,s=S()|0,$=ve,q=t[$+4>>2]|0;while((s|0)<(q|0)|((s|0)==(q|0)?i>>>0<(t[$>>2]|0)>>>0:0))}if($=ve,t[$>>2]=l,t[$+4>>2]=a,(a|0)>0|(a|0)==0&l>>>0>0)G=r,W=zA,nA=ne,q=BA,$=fe,r=U,zA=o,BA=he,U=G,o=W,ne=Ee,Ee=nA,he=q,fe=QA,QA=$;else break e}qA(he),qA(Ee),qA(We),o=1;break A}else o=l;while(!1);qA(We),qA(r),qA(o),o=0}while(!1);return We=o,k=Tt,We|0}}return qA(We),We=o,k=Tt,We|0}function Ct(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(m=k,k=k+176|0,a=m,(A|0)<1)return si(r,0,0),f=0,k=m,f|0;for(l=e,l=wA(t[l>>2]|0,t[l+4>>2]|0,52)|0,S()|0,si(r,(A|0)>6?A:6,l&15),l=0;n=e+(l<<3)|0,n=_r(t[n>>2]|0,t[n+4>>2]|0,a)|0,!(n|0);){if(n=t[a>>2]|0,(n|0)>0){s=0;do i=a+8+(s<<4)|0,s=s+1|0,n=a+8+(((s|0)%(n|0)|0)<<4)|0,o=Jl(r,n,i)|0,o?ui(r,o)|0:ql(r,i,n)|0,n=t[a>>2]|0;while((s|0)<(n|0))}if(l=l+1|0,(l|0)>=(A|0)){n=0,f=13;break}}return(f|0)==13?(k=m,n|0):(li(r),f=n,k=m,f|0)}function pt(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;if(i=k,k=k+32|0,n=i,o=i+16|0,e=Ct(e,A,o)|0,e|0)return r=e,k=i,r|0;if(t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,e=ai(o)|0,e|0)do{A=Ml(r)|0;do Bl(A,e)|0,s=e+16|0,t[n>>2]=t[s>>2],t[n+4>>2]=t[s+4>>2],t[n+8>>2]=t[s+8>>2],t[n+12>>2]=t[s+12>>2],ui(o,e)|0,e=Xl(o,n)|0;while((e|0)!=0);e=ai(o)|0}while((e|0)!=0);return li(o),e=Dl(r)|0,e?(qo(r),s=e,k=i,s|0):(s=0,k=i,s|0)}function Re(e){return e=e|0,e>>>0>121?(e=0,e|0):(e=t[7696+(e*28|0)+16>>2]|0,e|0)}function Et(e){return e=e|0,(e|0)==4|(e|0)==117|0}function m0(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 l0(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 H0(e,A){e=e|0,A=A|0,e=7696+(e*28|0)|0,t[A>>2]=t[e>>2],t[A+4>>2]=t[e+4>>2],t[A+8>>2]=t[e+8>>2],t[A+12>>2]=t[e+12>>2]}function qt(e,A){e=e|0,A=A|0;var r=0,n=0;if(A>>>0>20)return A=-1,A|0;do if((t[11120+(A*216|0)>>2]|0)!=(e|0))if((t[11120+(A*216|0)+8>>2]|0)!=(e|0))if((t[11120+(A*216|0)+16>>2]|0)!=(e|0))if((t[11120+(A*216|0)+24>>2]|0)!=(e|0))if((t[11120+(A*216|0)+32>>2]|0)!=(e|0))if((t[11120+(A*216|0)+40>>2]|0)!=(e|0))if((t[11120+(A*216|0)+48>>2]|0)!=(e|0))if((t[11120+(A*216|0)+56>>2]|0)!=(e|0))if((t[11120+(A*216|0)+64>>2]|0)!=(e|0))if((t[11120+(A*216|0)+72>>2]|0)!=(e|0))if((t[11120+(A*216|0)+80>>2]|0)!=(e|0))if((t[11120+(A*216|0)+88>>2]|0)!=(e|0))if((t[11120+(A*216|0)+96>>2]|0)!=(e|0))if((t[11120+(A*216|0)+104>>2]|0)!=(e|0))if((t[11120+(A*216|0)+112>>2]|0)!=(e|0))if((t[11120+(A*216|0)+120>>2]|0)!=(e|0))if((t[11120+(A*216|0)+128>>2]|0)!=(e|0))if((t[11120+(A*216|0)+136>>2]|0)==(e|0))e=2,r=1,n=2;else{if((t[11120+(A*216|0)+144>>2]|0)==(e|0)){e=0,r=2,n=0;break}if((t[11120+(A*216|0)+152>>2]|0)==(e|0)){e=0,r=2,n=1;break}if((t[11120+(A*216|0)+160>>2]|0)==(e|0)){e=0,r=2,n=2;break}if((t[11120+(A*216|0)+168>>2]|0)==(e|0)){e=1,r=2,n=0;break}if((t[11120+(A*216|0)+176>>2]|0)==(e|0)){e=1,r=2,n=1;break}if((t[11120+(A*216|0)+184>>2]|0)==(e|0)){e=1,r=2,n=2;break}if((t[11120+(A*216|0)+192>>2]|0)==(e|0)){e=2,r=2,n=0;break}if((t[11120+(A*216|0)+200>>2]|0)==(e|0)){e=2,r=2,n=1;break}if((t[11120+(A*216|0)+208>>2]|0)==(e|0)){e=2,r=2,n=2;break}else e=-1;return e|0}else e=2,r=1,n=1;else e=2,r=1,n=0;else e=1,r=1,n=2;else e=1,r=1,n=1;else e=1,r=1,n=0;else e=0,r=1,n=2;else e=0,r=1,n=1;else e=0,r=1,n=0;else e=2,r=0,n=2;else e=2,r=0,n=1;else e=2,r=0,n=0;else e=1,r=0,n=2;else e=1,r=0,n=1;else e=1,r=0,n=0;else e=0,r=0,n=2;else e=0,r=0,n=1;else e=0,r=0,n=0;while(!1);return A=t[11120+(A*216|0)+(r*72|0)+(e*24|0)+(n<<3)+4>>2]|0,A|0}function S0(e,A){return e=e|0,A=A|0,(t[7696+(e*28|0)+20>>2]|0)==(A|0)?(A=1,A|0):(A=(t[7696+(e*28|0)+24>>2]|0)==(A|0),A|0)}function nr(e,A){return e=e|0,A=A|0,t[848+(e*28|0)+(A<<2)>>2]|0}function or(e,A){return e=e|0,A=A|0,(t[848+(e*28|0)>>2]|0)==(A|0)?(A=0,A|0):(t[848+(e*28|0)+4>>2]|0)==(A|0)?(A=1,A|0):(t[848+(e*28|0)+8>>2]|0)==(A|0)?(A=2,A|0):(t[848+(e*28|0)+12>>2]|0)==(A|0)?(A=3,A|0):(t[848+(e*28|0)+16>>2]|0)==(A|0)?(A=4,A|0):(t[848+(e*28|0)+20>>2]|0)==(A|0)?(A=5,A|0):((t[848+(e*28|0)+24>>2]|0)==(A|0)?6:7)|0}function Vr(){return 122}function Wr(e){e=e|0;var A=0,r=0,n=0;A=0;do EA(A|0,0,45)|0,n=S()|0|134225919,r=e+(A<<3)|0,t[r>>2]=-1,t[r+4>>2]=n,A=A+1|0;while((A|0)!=122);return 0}function Yr(e){e=e|0;var A=0,r=0,n=0;return n=+b[e+16>>3],r=+b[e+24>>3],A=n-r,+(n>3]<+b[e+24>>3]|0}function ir(e){return e=e|0,+(+b[e>>3]-+b[e+8>>3])}function a0(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;return r=+b[A>>3],!(r>=+b[e+8>>3])||!(r<=+b[e>>3])?(A=0,A|0):(n=+b[e+16>>3],r=+b[e+24>>3],o=+b[A+8>>3],A=o>=r,e=o<=n&1,n>3]<+b[A+8>>3]||+b[e+8>>3]>+b[A>>3]?(n=0,n|0):(i=+b[e+16>>3],r=e+24|0,m=+b[r>>3],s=i>3],o=A+24|0,a=+b[o>>3],l=f>3],A)||(m=+Vt(+b[r>>3],e),m>+Vt(+b[n>>3],A))?(l=0,l|0):(l=1,l|0))}function M0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0;i=+b[e+16>>3],a=+b[e+24>>3],e=i>3],s=+b[A+24>>3],o=l>2]=e?o|A?1:2:0,t[n>>2]=o?e?1:A?2:1:0}function z(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;return+b[e>>3]<+b[A>>3]||+b[e+8>>3]>+b[A+8>>3]?(n=0,n|0):(n=e+16|0,a=+b[n>>3],i=+b[e+24>>3],s=a>3],o=A+24|0,f=+b[o>>3],l=m>3],A)?(m=+Vt(+b[n>>3],e),l=m>=+Vt(+b[r>>3],A),l|0):(l=0,l|0))}function lA(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0;o=k,k=k+176|0,n=o,t[n>>2]=4,l=+b[A>>3],b[n+8>>3]=l,i=+b[A+16>>3],b[n+16>>3]=i,b[n+24>>3]=l,l=+b[A+24>>3],b[n+32>>3]=l,s=+b[A+8>>3],b[n+40>>3]=s,b[n+48>>3]=l,b[n+56>>3]=s,b[n+64>>3]=i,A=n+72|0,r=A+96|0;do t[A>>2]=0,A=A+4|0;while((A|0)<(r|0));Ir(e|0,n|0,168)|0,k=o}function mA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0;L=k,k=k+288|0,m=L+264|0,M=L+96|0,f=L,l=f,a=l+96|0;do t[l>>2]=0,l=l+4|0;while((l|0)<(a|0));return A=Jn(A,f)|0,A|0?(I=A,k=L,I|0):(a=f,f=t[a>>2]|0,a=t[a+4>>2]|0,ar(f,a,m)|0,_r(f,a,M)|0,s=+rn(m,M+8|0),b[m>>3]=+b[e>>3],a=m+8|0,b[a>>3]=+b[e+16>>3],b[M>>3]=+b[e+8>>3],f=M+8|0,b[f>>3]=+b[e+24>>3],o=+rn(m,M),W=+b[a>>3]-+b[f>>3],i=+$A(+W),G=+b[m>>3]-+b[M>>3],n=+$A(+G),!(W==0|G==0)&&(W=+hi(+i,+n),W=+gt(+(o*o/+Cn(+(W/+Cn(+i,+n)),3)/(s*(s*2.59807621135)*.8))),b[ge>>3]=W,j=~~W>>>0,I=+$A(W)>=1?W>0?~~+At(+He(W/4294967296),4294967295)>>>0:~~+gt((W-+(~~W>>>0))/4294967296)>>>0:0,(t[ge+4>>2]&2146435072|0)!=2146435072)?(M=(j|0)==0&(I|0)==0,A=r,t[A>>2]=M?1:j,t[A+4>>2]=M?0:I,A=0):A=1,I=A,k=L,I|0)}function FA(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0;f=k,k=k+288|0,s=f+264|0,l=f+96|0,a=f,o=a,i=o+96|0;do t[o>>2]=0,o=o+4|0;while((o|0)<(i|0));return r=Jn(r,a)|0,r|0?(n=r,k=f,n|0):(r=a,o=t[r>>2]|0,r=t[r+4>>2]|0,ar(o,r,s)|0,_r(o,r,l)|0,m=+rn(s,l+8|0),m=+gt(+(+rn(e,A)/(m*2))),b[ge>>3]=m,r=~~m>>>0,o=+$A(m)>=1?m>0?~~+At(+He(m/4294967296),4294967295)>>>0:~~+gt((m-+(~~m>>>0))/4294967296)>>>0:0,(t[ge+4>>2]&2146435072|0)==2146435072?(n=1,k=f,n|0):(a=(r|0)==0&(o|0)==0,t[n>>2]=a?1:r,t[n+4>>2]=a?0:o,n=0,k=f,n|0))}function VA(e,A){e=e|0,A=+A;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;i=e+16|0,s=+b[i>>3],r=e+24|0,o=+b[r>>3],n=s-o,n=s>3],l=e+8|0,a=+b[l>>3],m=f-a,n=(n*A-n)*.5,A=(m*A-m)*.5,f=f+A,b[e>>3]=f>1.5707963267948966?1.5707963267948966:f,A=a-A,b[l>>3]=A<-1.5707963267948966?-1.5707963267948966:A,A=s+n,A=A>3.141592653589793?A+-6.283185307179586:A,b[i>>3]=A<-3.141592653589793?A+6.283185307179586:A,A=o-n,A=A>3.141592653589793?A+-6.283185307179586:A,b[r>>3]=A<-3.141592653589793?A+6.283185307179586:A}function xe(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0,t[e>>2]=A,t[e+4>>2]=r,t[e+8>>2]=n}function tt(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;M=A+8|0,t[M>>2]=0,a=+b[e>>3],s=+$A(+a),f=+b[e+8>>3],l=+$A(+f)*1.1547005383792515,s=s+l*.5,r=~~s,e=~~l,s=s-+(r|0),l=l-+(e|0);do if(s<.5)if(s<.3333333333333333)if(t[A>>2]=r,l<(s+1)*.5){t[A+4>>2]=e;break}else{e=e+1|0,t[A+4>>2]=e;break}else if(j=1-s,e=(!(l>2]=e,j<=l&l>2]=r;break}else{t[A>>2]=r;break}else{if(!(s<.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-s){if(t[A+4>>2]=e,s*2+-1>2]=r;break}}else e=e+1|0,t[A+4>>2]=e;r=r+1|0,t[A>>2]=r}while(!1);do if(a<0)if(e&1){m=(e+1|0)/2|0,m=ct(r|0,((r|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-((+(m>>>0)+4294967296*+(S()|0))*2+1)),t[A>>2]=r;break}else{m=(e|0)/2|0,m=ct(r|0,((r|0)<0)<<31>>31|0,m|0,((m|0)<0)<<31>>31|0)|0,r=~~(+(r|0)-(+(m>>>0)+4294967296*+(S()|0))*2),t[A>>2]=r;break}while(!1);m=A+4|0,f<0&&(r=r-((e<<1|1|0)/2|0)|0,t[A>>2]=r,e=0-e|0,t[m>>2]=e),n=e-r|0,(r|0)<0?(o=0-r|0,t[m>>2]=n,t[M>>2]=o,t[A>>2]=0,e=n,r=0):o=0,(e|0)<0&&(r=r-e|0,t[A>>2]=r,o=o-e|0,t[M>>2]=o,t[m>>2]=0,e=0),i=r-o|0,n=e-o|0,(o|0)<0&&(t[A>>2]=i,t[m>>2]=n,t[M>>2]=0,e=n,r=i,o=0),n=(e|0)<(r|0)?e:r,n=(o|0)<(n|0)?o:n,!((n|0)<=0)&&(t[A>>2]=r-n,t[m>>2]=e-n,t[M>>2]=o-n)}function Me(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0;A=t[e>>2]|0,s=e+4|0,r=t[s>>2]|0,(A|0)<0&&(r=r-A|0,t[s>>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,o=(t[i>>2]|0)-r|0,t[i>>2]=o,t[s>>2]=0,r=0):(o=e+8|0,i=o,o=t[o>>2]|0),(o|0)<0&&(A=A-o|0,t[e>>2]=A,r=r-o|0,t[s>>2]=r,t[i>>2]=0,o=0),n=(r|0)<(A|0)?r:A,n=(o|0)<(n|0)?o:n,!((n|0)<=0)&&(t[e>>2]=A-n,t[s>>2]=r-n,t[i>>2]=o-n)}function ut(e,A){e=e|0,A=A|0;var r=0,n=0;n=t[e+8>>2]|0,r=+((t[e+4>>2]|0)-n|0),b[A>>3]=+((t[e>>2]|0)-n|0)-r*.5,b[A+8>>3]=r*.8660254037844386}function Ze(e,A,r){e=e|0,A=A|0,r=r|0,t[r>>2]=(t[A>>2]|0)+(t[e>>2]|0),t[r+4>>2]=(t[A+4>>2]|0)+(t[e+4>>2]|0),t[r+8>>2]=(t[A+8>>2]|0)+(t[e+8>>2]|0)}function yt(e,A,r){e=e|0,A=A|0,r=r|0,t[r>>2]=(t[e>>2]|0)-(t[A>>2]|0),t[r+4>>2]=(t[e+4>>2]|0)-(t[A+4>>2]|0),t[r+8>>2]=(t[e+8>>2]|0)-(t[A+8>>2]|0)}function ot(e,A){e=e|0,A=A|0;var r=0,n=0;r=Pe(t[e>>2]|0,A)|0,t[e>>2]=r,r=e+4|0,n=Pe(t[r>>2]|0,A)|0,t[r>>2]=n,e=e+8|0,A=Pe(t[e>>2]|0,A)|0,t[e>>2]=A}function St(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;s=t[e>>2]|0,l=(s|0)<0,n=(t[e+4>>2]|0)-(l?s:0)|0,i=(n|0)<0,o=(i?0-n|0:0)+((t[e+8>>2]|0)-(l?s:0))|0,r=(o|0)<0,e=r?0:o,A=(i?0:n)-(r?o:0)|0,o=(l?0:s)-(i?n:0)-(r?o:0)|0,r=(A|0)<(o|0)?A:o,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(o-(n?r:0)|0){case 0:switch(A|0){case 0:return l=(e|0)==0?0:(e|0)==1?1:7,l|0;case 1:return l=(e|0)==0?2:(e|0)==1?3:7,l|0;default:break A}case 1:switch(A|0){case 0:return l=(e|0)==0?4:(e|0)==1?5:7,l|0;case 1:{if(!e)e=6;else break A;return e|0}default:break A}}while(!1);return l=7,l|0}function wr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0;if(a=e+8|0,s=t[a>>2]|0,l=(t[e>>2]|0)-s|0,f=e+4|0,s=(t[f>>2]|0)-s|0,l>>>0>715827881|s>>>0>715827881){if(n=(l|0)>0,o=2147483647-l|0,i=-2147483648-l|0,(n?(o|0)<(l|0):(i|0)>(l|0))||(r=l<<1,n?(2147483647-r|0)<(l|0):(-2147483648-r|0)>(l|0))||((s|0)>0?(2147483647-s|0)<(s|0):(-2147483648-s|0)>(s|0))||(A=l*3|0,r=s<<1,(n?(o|0)<(r|0):(i|0)>(r|0))||((l|0)>-1?(A|-2147483648|0)>=(s|0):(A^-2147483648|0)<(s|0))))return f=1,f|0}else r=s<<1,A=l*3|0;return n=V0(+(A-s|0)*.14285714285714285)|0,t[e>>2]=n,o=V0(+(r+l|0)*.14285714285714285)|0,t[f>>2]=o,t[a>>2]=0,r=(o|0)<(n|0),A=r?n:o,r=r?o: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=o-n|0,(n|0)<0?(r=0-n|0,t[f>>2]=A,t[a>>2]=r,t[e>>2]=0,n=0):(A=o,r=0),(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[a>>2]=r,t[f>>2]=0,A=0),i=n-r|0,o=A-r|0,(r|0)<0?(t[e>>2]=i,t[f>>2]=o,t[a>>2]=0,A=o,o=i,r=0):o=n,n=(A|0)<(o|0)?A:o,n=(r|0)<(n|0)?r:n,(n|0)<=0?(f=0,f|0):(t[e>>2]=o-n,t[f>>2]=A-n,t[a>>2]=r-n,f=0,f|0)}function mn(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(s=e+8|0,o=t[s>>2]|0,i=(t[e>>2]|0)-o|0,l=e+4|0,o=(t[l>>2]|0)-o|0,i>>>0>715827881|o>>>0>715827881){if(r=(i|0)>0,(r?(2147483647-i|0)<(i|0):(-2147483648-i|0)>(i|0))||(A=i<<1,n=(o|0)>0,n?(2147483647-o|0)<(o|0):(-2147483648-o|0)>(o|0)))return l=1,l|0;if(a=o<<1,(n?(2147483647-a|0)<(o|0):(-2147483648-a|0)>(o|0))||(r?(2147483647-A|0)<(o|0):(-2147483648-A|0)>(o|0))||(r=o*3|0,(o|0)>-1?(r|-2147483648|0)>=(i|0):(r^-2147483648|0)<(i|0)))return a=1,a|0}else r=o*3|0,A=i<<1;return n=V0(+(A+o|0)*.14285714285714285)|0,t[e>>2]=n,o=V0(+(r-i|0)*.14285714285714285)|0,t[l>>2]=o,t[s>>2]=0,r=(o|0)<(n|0),A=r?n:o,r=r?o: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=o-n|0,(n|0)<0?(r=0-n|0,t[l>>2]=A,t[s>>2]=r,t[e>>2]=0,n=0):(A=o,r=0),(A|0)<0&&(n=n-A|0,t[e>>2]=n,r=r-A|0,t[s>>2]=r,t[l>>2]=0,A=0),i=n-r|0,o=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=o,t[s>>2]=0,A=o,o=i,r=0):o=n,n=(A|0)<(o|0)?A:o,n=(r|0)<(n|0)?r:n,(n|0)<=0?(a=0,a|0):(t[e>>2]=o-n,t[l>>2]=A-n,t[s>>2]=r-n,a=0,a|0)}function vr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;s=e+8|0,r=t[s>>2]|0,A=(t[e>>2]|0)-r|0,l=e+4|0,r=(t[l>>2]|0)-r|0,n=V0(+((A*3|0)-r|0)*.14285714285714285)|0,t[e>>2]=n,A=V0(+((r<<1)+A|0)*.14285714285714285)|0,t[l>>2]=A,t[s>>2]=0,r=A-n|0,(n|0)<0?(i=0-n|0,t[l>>2]=r,t[s>>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[s>>2]=r,t[l>>2]=0,A=0),i=n-r|0,o=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=o,t[s>>2]=0,A=o,o=i,r=0):o=n,n=(A|0)<(o|0)?A:o,n=(r|0)<(n|0)?r:n,!((n|0)<=0)&&(t[e>>2]=o-n,t[l>>2]=A-n,t[s>>2]=r-n)}function kr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;s=e+8|0,r=t[s>>2]|0,A=(t[e>>2]|0)-r|0,l=e+4|0,r=(t[l>>2]|0)-r|0,n=V0(+((A<<1)+r|0)*.14285714285714285)|0,t[e>>2]=n,A=V0(+((r*3|0)-A|0)*.14285714285714285)|0,t[l>>2]=A,t[s>>2]=0,r=A-n|0,(n|0)<0?(i=0-n|0,t[l>>2]=r,t[s>>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[s>>2]=r,t[l>>2]=0,A=0),i=n-r|0,o=A-r|0,(r|0)<0?(t[e>>2]=i,t[l>>2]=o,t[s>>2]=0,A=o,o=i,r=0):o=n,n=(A|0)<(o|0)?A:o,n=(r|0)<(n|0)?r:n,!((n|0)<=0)&&(t[e>>2]=o-n,t[l>>2]=A-n,t[s>>2]=r-n)}function br(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;A=t[e>>2]|0,s=e+4|0,r=t[s>>2]|0,l=e+8|0,n=t[l>>2]|0,o=r+(A*3|0)|0,t[e>>2]=o,r=n+(r*3|0)|0,t[s>>2]=r,A=(n*3|0)+A|0,t[l>>2]=A,n=r-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=n,t[l>>2]=A,t[e>>2]=0,r=n,n=0):n=o,(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=o,t[l>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[s>>2]=o-r,t[l>>2]=A-r)}function Ht(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;o=t[e>>2]|0,s=e+4|0,A=t[s>>2]|0,l=e+8|0,r=t[l>>2]|0,n=(A*3|0)+o|0,o=r+(o*3|0)|0,t[e>>2]=o,t[s>>2]=n,A=(r*3|0)+A|0,t[l>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=r,t[l>>2]=A,t[e>>2]=0,o=0):r=n,(r|0)<0&&(o=o-r|0,t[e>>2]=o,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=o-A|0,n=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=n,t[l>>2]=0,o=i,A=0):n=r,r=(n|0)<(o|0)?n:o,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=o-r,t[s>>2]=n-r,t[l>>2]=A-r)}function gn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0;(A+-1|0)>>>0>=6||(o=(t[15440+(A*12|0)>>2]|0)+(t[e>>2]|0)|0,t[e>>2]=o,l=e+4|0,n=(t[15440+(A*12|0)+4>>2]|0)+(t[l>>2]|0)|0,t[l>>2]=n,s=e+8|0,A=(t[15440+(A*12|0)+8>>2]|0)+(t[s>>2]|0)|0,t[s>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[l>>2]=r,t[s>>2]=A,t[e>>2]=0,n=0):(r=n,n=o),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[s>>2]=A,t[l>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[l>>2]=o,t[s>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[l>>2]=o-r,t[s>>2]=A-r))}function Cr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;o=t[e>>2]|0,s=e+4|0,A=t[s>>2]|0,l=e+8|0,r=t[l>>2]|0,n=A+o|0,o=r+o|0,t[e>>2]=o,t[s>>2]=n,A=r+A|0,t[l>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=r,t[l>>2]=A,t[e>>2]=0,n=0):(r=n,n=o),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=o,t[l>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[s>>2]=o-r,t[l>>2]=A-r)}function B0(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;A=t[e>>2]|0,s=e+4|0,n=t[s>>2]|0,l=e+8|0,r=t[l>>2]|0,o=n+A|0,t[e>>2]=o,n=r+n|0,t[s>>2]=n,A=r+A|0,t[l>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=r,t[l>>2]=A,t[e>>2]=0,n=0):(r=n,n=o),(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=o,t[l>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[s>>2]=o-r,t[l>>2]=A-r)}function Gt(e){switch(e=e|0,e|0){case 1:{e=5;break}case 5:{e=4;break}case 4:{e=6;break}case 6:{e=2;break}case 2:{e=3;break}case 3:{e=1;break}}return e|0}function Ut(e){switch(e=e|0,e|0){case 1:{e=3;break}case 3:{e=2;break}case 2:{e=6;break}case 6:{e=4;break}case 4:{e=5;break}case 5:{e=1;break}}return e|0}function Kr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;A=t[e>>2]|0,s=e+4|0,r=t[s>>2]|0,l=e+8|0,n=t[l>>2]|0,o=r+(A<<1)|0,t[e>>2]=o,r=n+(r<<1)|0,t[s>>2]=r,A=(n<<1)+A|0,t[l>>2]=A,n=r-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=n,t[l>>2]=A,t[e>>2]=0,r=n,n=0):n=o,(r|0)<0&&(n=n-r|0,t[e>>2]=n,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=n-A|0,o=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=o,t[l>>2]=0,n=i,A=0):o=r,r=(o|0)<(n|0)?o:n,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=n-r,t[s>>2]=o-r,t[l>>2]=A-r)}function Zr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;o=t[e>>2]|0,s=e+4|0,A=t[s>>2]|0,l=e+8|0,r=t[l>>2]|0,n=(A<<1)+o|0,o=r+(o<<1)|0,t[e>>2]=o,t[s>>2]=n,A=(r<<1)+A|0,t[l>>2]=A,r=n-o|0,(o|0)<0?(A=A-o|0,t[s>>2]=r,t[l>>2]=A,t[e>>2]=0,o=0):r=n,(r|0)<0&&(o=o-r|0,t[e>>2]=o,A=A-r|0,t[l>>2]=A,t[s>>2]=0,r=0),i=o-A|0,n=r-A|0,(A|0)<0?(t[e>>2]=i,t[s>>2]=n,t[l>>2]=0,o=i,A=0):n=r,r=(n|0)<(o|0)?n:o,r=(A|0)<(r|0)?A:r,!((r|0)<=0)&&(t[e>>2]=o-r,t[s>>2]=n-r,t[l>>2]=A-r)}function Er(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0;return s=(t[e>>2]|0)-(t[A>>2]|0)|0,l=(s|0)<0,n=(t[e+4>>2]|0)-(t[A+4>>2]|0)-(l?s:0)|0,i=(n|0)<0,o=(l?0-s|0:0)+(t[e+8>>2]|0)-(t[A+8>>2]|0)+(i?0-n|0:0)|0,e=(o|0)<0,A=e?0:o,r=(i?0:n)-(e?o:0)|0,o=(l?0:s)-(i?n:0)-(e?o:0)|0,e=(r|0)<(o|0)?r:o,e=(A|0)<(e|0)?A:e,n=(e|0)>0,A=A-(n?e:0)|0,r=r-(n?e:0)|0,e=o-(n?e:0)|0,e=(e|0)>-1?e:0-e|0,r=(r|0)>-1?r:0-r|0,A=(A|0)>-1?A:0-A|0,A=(r|0)>(A|0)?r:A,((e|0)>(A|0)?e:A)|0}function $r(e,A){e=e|0,A=A|0;var r=0;r=t[e+8>>2]|0,t[A>>2]=(t[e>>2]|0)-r,t[A+4>>2]=(t[e+4>>2]|0)-r}function Mt(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0;return n=t[e>>2]|0,t[A>>2]=n,o=t[e+4>>2]|0,s=A+4|0,t[s>>2]=o,l=A+8|0,t[l>>2]=0,r=(o|0)<(n|0),e=r?n:o,r=r?o: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=o-n|0,(n|0)<0?(r=0-n|0,t[s>>2]=e,t[l>>2]=r,t[A>>2]=0,n=0):(e=o,r=0),(e|0)<0&&(n=n-e|0,t[A>>2]=n,r=r-e|0,t[l>>2]=r,t[s>>2]=0,e=0),i=n-r|0,o=e-r|0,(r|0)<0?(t[A>>2]=i,t[s>>2]=o,t[l>>2]=0,e=o,o=i,r=0):o=n,n=(e|0)<(o|0)?e:o,n=(r|0)<(n|0)?r:n,(n|0)<=0?(A=0,A|0):(t[A>>2]=o-n,t[s>>2]=e-n,t[l>>2]=r-n,A=0,A|0))}function qr(e){e=e|0;var A=0,r=0,n=0,o=0;A=e+8|0,o=t[A>>2]|0,r=o-(t[e>>2]|0)|0,t[e>>2]=r,n=e+4|0,e=(t[n>>2]|0)-o|0,t[n>>2]=e,t[A>>2]=0-(e+r)}function Jr(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;r=t[e>>2]|0,A=0-r|0,t[e>>2]=A,s=e+8|0,t[s>>2]=0,l=e+4|0,n=t[l>>2]|0,o=n+r|0,(r|0)>0?(t[l>>2]=o,t[s>>2]=r,t[e>>2]=0,A=0,n=o):r=0,(n|0)<0?(i=A-n|0,t[e>>2]=i,r=r-n|0,t[s>>2]=r,t[l>>2]=0,o=i-r|0,A=0-r|0,(r|0)<0?(t[e>>2]=o,t[l>>2]=A,t[s>>2]=0,n=A,r=0):(n=0,o=i)):o=A,A=(n|0)<(o|0)?n:o,A=(r|0)<(A|0)?r:A,!((A|0)<=0)&&(t[e>>2]=o-A,t[l>>2]=n-A,t[s>>2]=r-A)}function Yn(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0;if(M=k,k=k+64|0,m=M,l=M+56|0,!(!0&(A&2013265920|0)==134217728&(!0&(n&2013265920|0)==134217728)))return o=5,k=M,o|0;if((e|0)==(r|0)&(A|0)==(n|0))return t[o>>2]=0,o=0,k=M,o|0;if(s=wA(e|0,A|0,52)|0,S()|0,s=s&15,f=wA(r|0,n|0,52)|0,S()|0,(s|0)!=(f&15|0))return o=12,k=M,o|0;if(i=s+-1|0,s>>>0>1){_t(e,A,i,m)|0,_t(r,n,i,l)|0,f=m,a=t[f>>2]|0,f=t[f+4>>2]|0;A:do if((a|0)==(t[l>>2]|0)&&(f|0)==(t[l+4>>2]|0)){s=(s^15)*3|0,i=wA(e|0,A|0,s|0)|0,S()|0,i=i&7,s=wA(r|0,n|0,s|0)|0,S()|0,s=s&7;do if((i|0)==0|(s|0)==0)t[o>>2]=1,i=0;else if((i|0)==7)i=5;else{if((i|0)==1|(s|0)==1&&Oe(a,f)|0){i=5;break}if((t[15536+(i<<2)>>2]|0)!=(s|0)&&(t[15568+(i<<2)>>2]|0)!=(s|0))break A;t[o>>2]=1,i=0}while(!1);return o=i,k=M,o|0}while(!1)}i=m,s=i+56|0;do t[i>>2]=0,i=i+4|0;while((i|0)<(s|0));return v(e,A,1,m)|0,A=m,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0))&&(A=m+8|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+16|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+24|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+32|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))&&(A=m+40|0,!((t[A>>2]|0)==(r|0)&&(t[A+4>>2]|0)==(n|0)))?(i=m+48|0,i=((t[i>>2]|0)==(r|0)?(t[i+4>>2]|0)==(n|0):0)&1):i=1,t[o>>2]=i,o=0,k=M,o|0}function pn(e,A,r,n,o){return e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,r=Ae(e,A,r,n)|0,(r|0)==7?(o=11,o|0):(n=EA(r|0,0,56)|0,A=A&-2130706433|(S()|0)|268435456,t[o>>2]=e|n,t[o+4>>2]=A,o=0,o|0)}function Sr(e,A,r){return e=e|0,A=A|0,r=r|0,!0&(A&2013265920|0)==268435456?(t[r>>2]=e,t[r+4>>2]=A&-2130706433|134217728,r=0,r|0):(r=6,r|0)}function yn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;return o=k,k=k+16|0,n=o,t[n>>2]=0,!0&(A&2013265920|0)==268435456?(i=wA(e|0,A|0,56)|0,S()|0,n=Y(e,A&-2130706433|134217728,i&7,n,r)|0,k=o,n|0):(n=6,k=o,n|0)}function Xr(e,A){e=e|0,A=A|0;var r=0;switch(r=wA(e|0,A|0,56)|0,S()|0,r&7){case 0:case 7:return r=0,r|0}return r=A&-2130706433|134217728,!(!0&(A&2013265920|0)==268435456)||!0&(A&117440512|0)==16777216&(Oe(e,r)|0)!=0?(r=0,r|0):(r=Ue(e,r)|0,r|0)}function Mr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;return o=k,k=k+16|0,n=o,!0&(A&2013265920|0)==268435456?(i=A&-2130706433|134217728,s=r,t[s>>2]=e,t[s+4>>2]=i,t[n>>2]=0,A=wA(e|0,A|0,56)|0,S()|0,n=Y(e,i,A&7,n,r+8|0)|0,k=o,n|0):(n=6,k=o,n|0)}function Br(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;return o=(Oe(e,A)|0)==0,A=A&-2130706433,n=r,t[n>>2]=o?e:0,t[n+4>>2]=o?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 sr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;return s=k,k=k+16|0,o=s,i=A&-2130706433|134217728,!0&(A&2013265920|0)==268435456?(n=wA(e|0,A|0,56)|0,S()|0,n=Kl(e,i,n&7)|0,(n|0)==-1?(t[r>>2]=0,i=6,k=s,i|0):(Dr(e,i,o)|0&&OA(27795,26932,282,26947),A=wA(e|0,A|0,52)|0,S()|0,A=A&15,Oe(e,i)|0?w(o,A,n,2,r):AA(o,A,n,2,r),i=0,k=s,i|0)):(i=6,k=s,i|0)}function xn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;n=k,k=k+16|0,o=n,wn(e,A,r,o),tt(o,r+4|0),k=n}function wn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0;if(l=k,k=k+16|0,a=l,An(e,r,a),i=+Lt(+(1-+b[a>>3]*.5)),i<1e-16){t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,t[n+12>>2]=0,k=l;return}if(a=t[r>>2]|0,o=+b[15920+(a*24|0)>>3],o=+tn(o-+tn(+pl(15600+(a<<4)|0,e))),Jt(A)|0?s=+tn(o+-.3334731722518321):s=o,o=+et(+i)*2.618033988749896,(A|0)>0){e=0;do o=o*2.6457513110645907,e=e+1|0;while((e|0)!=(A|0))}i=+_e(+s)*o,b[n>>3]=i,s=+ie(+s)*o,b[n+8>>3]=s,k=l}function An(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if(i=k,k=k+32|0,o=i,Yl(e,o),t[A>>2]=0,b[r>>3]=5,n=+it(16400,o),n<+b[r>>3]&&(t[A>>2]=0,b[r>>3]=n),n=+it(16424,o),n<+b[r>>3]&&(t[A>>2]=1,b[r>>3]=n),n=+it(16448,o),n<+b[r>>3]&&(t[A>>2]=2,b[r>>3]=n),n=+it(16472,o),n<+b[r>>3]&&(t[A>>2]=3,b[r>>3]=n),n=+it(16496,o),n<+b[r>>3]&&(t[A>>2]=4,b[r>>3]=n),n=+it(16520,o),n<+b[r>>3]&&(t[A>>2]=5,b[r>>3]=n),n=+it(16544,o),n<+b[r>>3]&&(t[A>>2]=6,b[r>>3]=n),n=+it(16568,o),n<+b[r>>3]&&(t[A>>2]=7,b[r>>3]=n),n=+it(16592,o),n<+b[r>>3]&&(t[A>>2]=8,b[r>>3]=n),n=+it(16616,o),n<+b[r>>3]&&(t[A>>2]=9,b[r>>3]=n),n=+it(16640,o),n<+b[r>>3]&&(t[A>>2]=10,b[r>>3]=n),n=+it(16664,o),n<+b[r>>3]&&(t[A>>2]=11,b[r>>3]=n),n=+it(16688,o),n<+b[r>>3]&&(t[A>>2]=12,b[r>>3]=n),n=+it(16712,o),n<+b[r>>3]&&(t[A>>2]=13,b[r>>3]=n),n=+it(16736,o),n<+b[r>>3]&&(t[A>>2]=14,b[r>>3]=n),n=+it(16760,o),n<+b[r>>3]&&(t[A>>2]=15,b[r>>3]=n),n=+it(16784,o),n<+b[r>>3]&&(t[A>>2]=16,b[r>>3]=n),n=+it(16808,o),n<+b[r>>3]&&(t[A>>2]=17,b[r>>3]=n),n=+it(16832,o),n<+b[r>>3]&&(t[A>>2]=18,b[r>>3]=n),n=+it(16856,o),!(n<+b[r>>3])){k=i;return}t[A>>2]=19,b[r>>3]=n,k=i}function G0(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0;if(i=+Wl(e),i<1e-16){A=15600+(A<<4)|0,t[o>>2]=t[A>>2],t[o+4>>2]=t[A+4>>2],t[o+8>>2]=t[A+8>>2],t[o+12>>2]=t[A+12>>2];return}if(s=+Te(+ +b[e+8>>3],+ +b[e>>3]),(r|0)>0){e=0;do i=i*.37796447300922725,e=e+1|0;while((e|0)!=(r|0))}l=i*.3333333333333333,n?(r=(Jt(r)|0)==0,i=+mt(+((r?l:l*.37796447300922725)*.381966011250105))):(i=+mt(+(i*.381966011250105)),Jt(r)|0&&(s=+tn(s+.3334731722518321))),yl(15600+(A<<4)|0,+tn(+b[15920+(A*24|0)>>3]-s),i,o)}function d(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;n=k,k=k+16|0,o=n,ut(e+4|0,o),G0(o,t[e>>2]|0,A,0,r),k=n}function w(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,he=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,de=0;if(ve=k,k=k+272|0,i=ve+256|0,q=ve+240|0,ne=ve,HA=ve+224|0,SA=ve+208|0,$=ve+176|0,U=ve+160|0,BA=ve+192|0,zA=ve+144|0,QA=ve+128|0,fe=ve+112|0,he=ve+96|0,Ee=ve+80|0,t[i>>2]=A,t[q>>2]=t[e>>2],t[q+4>>2]=t[e+4>>2],t[q+8>>2]=t[e+8>>2],t[q+12>>2]=t[e+12>>2],B(q,i,ne),t[o>>2]=0,q=n+r+((n|0)==5&1)|0,(q|0)<=(r|0)){k=ve;return}a=t[i>>2]|0,f=HA+4|0,m=$+4|0,M=r+5|0,j=16880+(a<<2)|0,I=16960+(a<<2)|0,L=QA+8|0,G=fe+8|0,W=he+8|0,nA=SA+4|0,l=r;A:for(;;){s=ne+(((l|0)%5|0)<<4)|0,t[SA>>2]=t[s>>2],t[SA+4>>2]=t[s+4>>2],t[SA+8>>2]=t[s+8>>2],t[SA+12>>2]=t[s+12>>2];do;while((N(SA,a,0,1)|0)==2);if((l|0)>(r|0)&(Jt(A)|0)!=0){if(t[$>>2]=t[SA>>2],t[$+4>>2]=t[SA+4>>2],t[$+8>>2]=t[SA+8>>2],t[$+12>>2]=t[SA+12>>2],ut(f,U),n=t[$>>2]|0,i=t[17040+(n*80|0)+(t[HA>>2]<<2)>>2]|0,t[$>>2]=t[18640+(n*80|0)+(i*20|0)>>2],s=t[18640+(n*80|0)+(i*20|0)+16>>2]|0,(s|0)>0){e=0;do Cr(m),e=e+1|0;while((e|0)<(s|0))}switch(s=18640+(n*80|0)+(i*20|0)+4|0,t[BA>>2]=t[s>>2],t[BA+4>>2]=t[s+4>>2],t[BA+8>>2]=t[s+8>>2],ot(BA,(t[j>>2]|0)*3|0),Ze(m,BA,m),Me(m),ut(m,zA),Ve=+(t[I>>2]|0),b[QA>>3]=Ve*3,b[L>>3]=0,de=Ve*-1.5,b[fe>>3]=de,b[G>>3]=Ve*2.598076211353316,b[he>>3]=de,b[W>>3]=Ve*-2.598076211353316,t[17040+((t[$>>2]|0)*80|0)+(t[SA>>2]<<2)>>2]|0){case 1:{e=fe,n=QA;break}case 3:{e=he,n=fe;break}case 2:{e=QA,n=he;break}default:{e=12;break A}}ni(U,zA,n,e,Ee),G0(Ee,t[$>>2]|0,a,1,o+8+(t[o>>2]<<4)|0),t[o>>2]=(t[o>>2]|0)+1}if((l|0)<(M|0)&&(ut(nA,$),G0($,t[SA>>2]|0,a,1,o+8+(t[o>>2]<<4)|0),t[o>>2]=(t[o>>2]|0)+1),t[HA>>2]=t[SA>>2],t[HA+4>>2]=t[SA+4>>2],t[HA+8>>2]=t[SA+8>>2],t[HA+12>>2]=t[SA+12>>2],l=l+1|0,(l|0)>=(q|0)){e=3;break}}if((e|0)==3){k=ve;return}else(e|0)==12&&OA(26970,27017,572,27027)}function B(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0;a=k,k=k+128|0,n=a+64|0,o=a,i=n,s=20240,l=i+60|0;do t[i>>2]=t[s>>2],i=i+4|0,s=s+4|0;while((i|0)<(l|0));i=o,s=20304,l=i+60|0;do t[i>>2]=t[s>>2],i=i+4|0,s=s+4|0;while((i|0)<(l|0));l=(Jt(t[A>>2]|0)|0)==0,n=l?n:o,o=e+4|0,Kr(o),Zr(o),Jt(t[A>>2]|0)|0&&(Ht(o),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,Ze(o,n,A),Me(A),t[r+16>>2]=t[e>>2],A=r+20|0,Ze(o,n+12|0,A),Me(A),t[r+32>>2]=t[e>>2],A=r+36|0,Ze(o,n+24|0,A),Me(A),t[r+48>>2]=t[e>>2],A=r+52|0,Ze(o,n+36|0,A),Me(A),t[r+64>>2]=t[e>>2],r=r+68|0,Ze(o,n+48|0,r),Me(r),k=a}function N(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0;if(L=k,k=k+32|0,j=L+12|0,l=L,I=e+4|0,M=t[16960+(A<<2)>>2]|0,m=(n|0)!=0,M=m?M*3|0:M,o=t[I>>2]|0,f=e+8|0,s=t[f>>2]|0,m){if(i=e+12|0,n=t[i>>2]|0,o=s+o+n|0,(o|0)==(M|0))return I=1,k=L,I|0;a=i}else a=e+12|0,n=t[a>>2]|0,o=s+o+n|0;if((o|0)<=(M|0))return I=0,k=L,I|0;do if((n|0)>0){if(n=t[e>>2]|0,(s|0)>0){i=18640+(n*80|0)+60|0,n=e;break}n=18640+(n*80|0)+40|0,r?(xe(j,M,0,0),yt(I,j,l),B0(l),Ze(l,j,I),i=n,n=e):(i=n,n=e)}else i=18640+((t[e>>2]|0)*80|0)+20|0,n=e;while(!1);if(t[n>>2]=t[i>>2],o=i+16|0,(t[o>>2]|0)>0){n=0;do Cr(I),n=n+1|0;while((n|0)<(t[o>>2]|0))}return e=i+4|0,t[j>>2]=t[e>>2],t[j+4>>2]=t[e+4>>2],t[j+8>>2]=t[e+8>>2],A=t[16880+(A<<2)>>2]|0,ot(j,m?A*3|0:A),Ze(I,j,I),Me(I),m?n=((t[f>>2]|0)+(t[I>>2]|0)+(t[a>>2]|0)|0)==(M|0)?1:2:n=2,I=n,k=L,I|0}function tA(e,A){e=e|0,A=A|0;var r=0;do r=N(e,A,0,1)|0;while((r|0)==2);return r|0}function AA(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,he=0,Ee=0,ne=0;if(he=k,k=k+240|0,i=he+224|0,BA=he+208|0,zA=he,QA=he+192|0,fe=he+176|0,W=he+160|0,nA=he+144|0,q=he+128|0,$=he+112|0,U=he+96|0,t[i>>2]=A,t[BA>>2]=t[e>>2],t[BA+4>>2]=t[e+4>>2],t[BA+8>>2]=t[e+8>>2],t[BA+12>>2]=t[e+12>>2],dA(BA,i,zA),t[o>>2]=0,G=n+r+((n|0)==6&1)|0,(G|0)<=(r|0)){k=he;return}a=t[i>>2]|0,f=r+6|0,m=16960+(a<<2)|0,M=nA+8|0,j=q+8|0,I=$+8|0,L=QA+4|0,s=0,l=r,n=-1;A:for(;;){if(i=(l|0)%6|0,e=zA+(i<<4)|0,t[QA>>2]=t[e>>2],t[QA+4>>2]=t[e+4>>2],t[QA+8>>2]=t[e+8>>2],t[QA+12>>2]=t[e+12>>2],e=s,s=N(QA,a,0,1)|0,(l|0)>(r|0)&(Jt(A)|0)!=0&&(e|0)!=1&&(t[QA>>2]|0)!=(n|0)){switch(ut(zA+(((i+5|0)%6|0)<<4)+4|0,fe),ut(zA+(i<<4)+4|0,W),Ee=+(t[m>>2]|0),b[nA>>3]=Ee*3,b[M>>3]=0,ne=Ee*-1.5,b[q>>3]=ne,b[j>>3]=Ee*2.598076211353316,b[$>>3]=ne,b[I>>3]=Ee*-2.598076211353316,i=t[BA>>2]|0,t[17040+(i*80|0)+(((n|0)==(i|0)?t[QA>>2]|0:n)<<2)>>2]|0){case 1:{e=q,n=nA;break}case 3:{e=$,n=q;break}case 2:{e=nA,n=$;break}default:{e=8;break A}}ni(fe,W,n,e,U),!(oi(fe,U)|0)&&!(oi(W,U)|0)&&(G0(U,t[BA>>2]|0,a,1,o+8+(t[o>>2]<<4)|0),t[o>>2]=(t[o>>2]|0)+1)}if((l|0)<(f|0)&&(ut(L,fe),G0(fe,t[QA>>2]|0,a,1,o+8+(t[o>>2]<<4)|0),t[o>>2]=(t[o>>2]|0)+1),l=l+1|0,(l|0)>=(G|0)){e=3;break}else n=t[QA>>2]|0}if((e|0)==3){k=he;return}else(e|0)==8&&OA(27054,27017,737,27099)}function dA(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0;a=k,k=k+160|0,n=a+80|0,o=a,i=n,s=20368,l=i+72|0;do t[i>>2]=t[s>>2],i=i+4|0,s=s+4|0;while((i|0)<(l|0));i=o,s=20448,l=i+72|0;do t[i>>2]=t[s>>2],i=i+4|0,s=s+4|0;while((i|0)<(l|0));l=(Jt(t[A>>2]|0)|0)==0,n=l?n:o,o=e+4|0,Kr(o),Zr(o),Jt(t[A>>2]|0)|0&&(Ht(o),t[A>>2]=(t[A>>2]|0)+1),t[r>>2]=t[e>>2],A=r+4|0,Ze(o,n,A),Me(A),t[r+16>>2]=t[e>>2],A=r+20|0,Ze(o,n+12|0,A),Me(A),t[r+32>>2]=t[e>>2],A=r+36|0,Ze(o,n+24|0,A),Me(A),t[r+48>>2]=t[e>>2],A=r+52|0,Ze(o,n+36|0,A),Me(A),t[r+64>>2]=t[e>>2],A=r+68|0,Ze(o,n+48|0,A),Me(A),t[r+80>>2]=t[e>>2],r=r+84|0,Ze(o,n+60|0,r),Me(r),k=a}function _A(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,52)|0,S()|0,A&15|0}function te(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,45)|0,S()|0,A&127|0}function ke(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,(r+-1|0)>>>0>14?(n=4,n|0):(r=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,t[n>>2]=r&7,n=0,n|0)}function we(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;if(e>>>0>15)return n=4,n|0;if(A>>>0>121)return n=17,n|0;s=EA(e|0,0,52)|0,o=S()|0,l=EA(A|0,0,45)|0,o=o|(S()|0)|134225919;A:do if((e|0)>=1){for(l=1,s=(xA[20528+A>>0]|0)!=0,i=-1;;){if(A=t[r+(l+-1<<2)>>2]|0,A>>>0>6){o=18,A=10;break}if(!((A|0)==0|s^1))if((A|0)==1){o=19,A=10;break}else s=0;if(f=(15-l|0)*3|0,a=EA(7,0,f|0)|0,o=o&~(S()|0),A=EA(A|0,((A|0)<0)<<31>>31|0,f|0)|0,i=A|i&~a,o=S()|0|o,(l|0)<(e|0))l=l+1|0;else break A}if((A|0)==10)return o|0}else i=-1;while(!1);return f=n,t[f>>2]=i,t[f+4>>2]=o,f=0,f|0}function Ue(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;return!(!0&(A&-16777216|0)==134217728)||(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0,r=r&127,r>>>0>121)?(e=0,e|0):(s=(n^15)*3|0,o=wA(e|0,A|0,s|0)|0,s=EA(o|0,S()|0,s|0)|0,o=S()|0,i=ct(-1227133514,-1171,s|0,o|0)|0,!((s&613566756&i|0)==0&(o&4681&(S()|0)|0)==0)||(s=(n*3|0)+19|0,i=EA(~e|0,~A|0,s|0)|0,s=wA(i|0,S()|0,s|0)|0,!((n|0)==15|(s|0)==0&(S()|0)==0))?(s=0,s|0):!(xA[20528+r>>0]|0)||(A=A&8191,(e|0)==0&(A|0)==0)?(s=1,s|0):(s=io(e|0,A|0)|0,S()|0,((63-s|0)%3|0|0)!=0|0))}function Bt(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;return!0&(A&-16777216|0)==134217728&&(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0,r=r&127,r>>>0<=121)&&(s=(n^15)*3|0,o=wA(e|0,A|0,s|0)|0,s=EA(o|0,S()|0,s|0)|0,o=S()|0,i=ct(-1227133514,-1171,s|0,o|0)|0,(s&613566756&i|0)==0&(o&4681&(S()|0)|0)==0)&&(s=(n*3|0)+19|0,i=EA(~e|0,~A|0,s|0)|0,s=wA(i|0,S()|0,s|0)|0,(n|0)==15|(s|0)==0&(S()|0)==0)&&(!(xA[20528+r>>0]|0)||(r=A&8191,(e|0)==0&(r|0)==0)||(s=io(e|0,r|0)|0,S()|0,(63-s|0)%3|0|0))||Xr(e,A)|0?(s=1,s|0):(s=(ii(e,A)|0)!=0&1,s|0)}function Dt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0;if(o=EA(A|0,0,52)|0,i=S()|0,r=EA(r|0,0,45)|0,r=i|(S()|0)|134225919,(A|0)<1){i=-1,n=r,A=e,t[A>>2]=i,e=e+4|0,t[e>>2]=n;return}for(i=1,o=-1;s=(15-i|0)*3|0,l=EA(7,0,s|0)|0,r=r&~(S()|0),s=EA(n|0,0,s|0)|0,o=o&~l|s,r=r|(S()|0),(i|0)!=(A|0);)i=i+1|0;l=e,s=l,t[s>>2]=o,l=l+4|0,t[l>>2]=r}function _t(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0;if(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,r>>>0>15)return n=4,n|0;if((i|0)<(r|0))return n=12,n|0;if((i|0)==(r|0))return t[n>>2]=e,t[n+4>>2]=A,n=0,n|0;if(o=EA(r|0,0,52)|0,o=o|e,e=S()|0|A&-15728641,(i|0)>(r|0))do A=EA(7,0,(14-r|0)*3|0)|0,r=r+1|0,o=A|o,e=S()|0|e;while((r|0)<(i|0));return t[n>>2]=o,t[n+4>>2]=e,n=0,n|0}function g0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0;if(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,!((r|0)<16&(i|0)<=(r|0)))return n=4,n|0;o=r-i|0,r=wA(e|0,A|0,45)|0,S()|0;A:do if(!(Re(r&127)|0))r=U0(7,0,o,((o|0)<0)<<31>>31)|0,o=S()|0;else{e:do if(i|0){for(r=1;s=EA(7,0,(15-r|0)*3|0)|0,!!((s&e|0)==0&((S()|0)&A|0)==0);)if(r>>>0>>0)r=r+1|0;else break e;r=U0(7,0,o,((o|0)<0)<<31>>31)|0,o=S()|0;break A}while(!1);r=U0(7,0,o,((o|0)<0)<<31>>31)|0,r=ft(r|0,S()|0,5,0)|0,r=KA(r|0,S()|0,-5,-1)|0,r=W0(r|0,S()|0,6,0)|0,r=KA(r|0,S()|0,1,0)|0,o=S()|0}while(!1);return s=n,t[s>>2]=r,t[s+4>>2]=o,s=0,s|0}function Oe(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;if(o=wA(e|0,A|0,45)|0,S()|0,!(Re(o&127)|0))return o=0,o|0;o=wA(e|0,A|0,52)|0,S()|0,o=o&15;A:do if(!o)r=0;else for(n=1;;){if(r=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,r=r&7,r|0)break A;if(n>>>0>>0)n=n+1|0;else{r=0;break}}while(!1);return o=(r|0)==0&1,o|0}function en(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0;if(s=k,k=k+16|0,i=s,Xn(i,e,A,r),A=i,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0)return k=s,0;o=0,r=0;do l=n+(o<<3)|0,t[l>>2]=e,t[l+4>>2]=A,o=KA(o|0,r|0,1,0)|0,r=S()|0,Ao(i),l=i,e=t[l>>2]|0,A=t[l+4>>2]|0;while(!((e|0)==0&(A|0)==0));return k=s,0}function Vo(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,(n|0)<(r|0)?(r=A,n=e,YA(r|0),n|0):(r=EA(-1,-1,((n-r|0)*3|0)+3|0)|0,n=EA(~r|0,~(S()|0)|0,(15-n|0)*3|0)|0,r=~(S()|0)&A,n=~n&e,YA(r|0),n|0)}function Wo(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0;return o=wA(e|0,A|0,52)|0,S()|0,o=o&15,(r|0)<16&(o|0)<=(r|0)?((o|0)<(r|0)&&(o=EA(-1,-1,((r+-1-o|0)*3|0)+3|0)|0,o=EA(~o|0,~(S()|0)|0,(15-r|0)*3|0)|0,A=~(S()|0)&A,e=~o&e),o=EA(r|0,0,52)|0,r=A&-15728641|(S()|0),t[n>>2]=e|o,t[n+4>>2]=r,n=0,n|0):(n=4,n|0)}function ol(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,he=0,Ee=0,ne=0,HA=0,SA=0;if((r|0)==0&(n|0)==0)return SA=0,SA|0;if(o=e,i=t[o>>2]|0,o=t[o+4>>2]|0,!0&(o&15728640|0)==0){if(!((n|0)>0|(n|0)==0&r>>>0>0)||(SA=A,t[SA>>2]=i,t[SA+4>>2]=o,(r|0)==1&(n|0)==0))return SA=0,SA|0;o=1,i=0;do ne=e+(o<<3)|0,HA=t[ne+4>>2]|0,SA=A+(o<<3)|0,t[SA>>2]=t[ne>>2],t[SA+4>>2]=HA,o=KA(o|0,i|0,1,0)|0,i=S()|0;while((i|0)<(n|0)|(i|0)==(n|0)&o>>>0>>0);return o=0,o|0}if(Ee=r<<3,HA=p0(Ee)|0,!HA)return SA=13,SA|0;if(Ir(HA|0,e|0,Ee|0)|0,ne=Qt(r,8)|0,!ne)return qA(HA),SA=13,SA|0;A:for(;;){o=HA,f=t[o>>2]|0,o=t[o+4>>2]|0,fe=wA(f|0,o|0,52)|0,S()|0,fe=fe&15,he=fe+-1|0,QA=(fe|0)!=0,zA=(n|0)>0|(n|0)==0&r>>>0>0;e:do if(QA&zA){if(q=EA(he|0,0,52)|0,$=S()|0,he>>>0>15){if(!((f|0)==0&(o|0)==0)){SA=16;break A}for(i=0,e=0;;){if(i=KA(i|0,e|0,1,0)|0,e=S()|0,!((e|0)<(n|0)|(e|0)==(n|0)&i>>>0>>0))break e;if(s=HA+(i<<3)|0,BA=t[s>>2]|0,s=t[s+4>>2]|0,!((BA|0)==0&(s|0)==0)){o=s,SA=16;break A}}}for(l=f,e=o,i=0,s=0;;){if(!((l|0)==0&(e|0)==0)){if(!(!0&(e&117440512|0)==0)){SA=21;break A}if(m=wA(l|0,e|0,52)|0,S()|0,m=m&15,(m|0)<(he|0)){o=12,SA=27;break A}if((m|0)!=(he|0)&&(l=l|q,e=e&-15728641|$,m>>>0>=fe>>>0)){a=he;do BA=EA(7,0,(14-a|0)*3|0)|0,a=a+1|0,l=BA|l,e=S()|0|e;while(a>>>0>>0)}if(j=jr(l|0,e|0,r|0,n|0)|0,I=S()|0,a=ne+(j<<3)|0,m=a,M=t[m>>2]|0,m=t[m+4>>2]|0,!((M|0)==0&(m|0)==0)){W=0,nA=0;do{if((W|0)>(n|0)|(W|0)==(n|0)&nA>>>0>r>>>0){SA=31;break A}if((M|0)==(l|0)&(m&-117440513|0)==(e|0)){L=wA(M|0,m|0,56)|0,S()|0,L=L&7,G=L+1|0,BA=wA(M|0,m|0,45)|0,S()|0;t:do if(!(Re(BA&127)|0))m=7;else{if(M=wA(M|0,m|0,52)|0,S()|0,M=M&15,!M){m=6;break}for(m=1;;){if(BA=EA(7,0,(15-m|0)*3|0)|0,!((BA&l|0)==0&((S()|0)&e|0)==0)){m=7;break t}if(m>>>0>>0)m=m+1|0;else{m=6;break}}}while(!1);if((L+2|0)>>>0>m>>>0){SA=41;break A}BA=EA(G|0,0,56)|0,e=S()|0|e&-117440513,U=a,t[U>>2]=0,t[U+4>>2]=0,l=BA|l}else j=KA(j|0,I|0,1,0)|0,j=Rr(j|0,S()|0,r|0,n|0)|0,I=S()|0;nA=KA(nA|0,W|0,1,0)|0,W=S()|0,a=ne+(j<<3)|0,m=a,M=t[m>>2]|0,m=t[m+4>>2]|0}while(!((M|0)==0&(m|0)==0))}BA=a,t[BA>>2]=l,t[BA+4>>2]=e}if(i=KA(i|0,s|0,1,0)|0,s=S()|0,!((s|0)<(n|0)|(s|0)==(n|0)&i>>>0>>0))break e;e=HA+(i<<3)|0,l=t[e>>2]|0,e=t[e+4>>2]|0}}while(!1);if(BA=KA(r|0,n|0,5,0)|0,U=S()|0,U>>>0<0|(U|0)==0&BA>>>0<11){SA=85;break}if(BA=W0(r|0,n|0,6,0)|0,S()|0,BA=Qt(BA,8)|0,!BA){SA=48;break}do if(zA){for(G=0,e=0,L=0,W=0;;){if(m=ne+(G<<3)|0,s=m,i=t[s>>2]|0,s=t[s+4>>2]|0,(i|0)==0&(s|0)==0)U=L;else{M=wA(i|0,s|0,56)|0,S()|0,M=M&7,l=M+1|0,j=s&-117440513,U=wA(i|0,s|0,45)|0,S()|0;e:do if(Re(U&127)|0){if(I=wA(i|0,s|0,52)|0,S()|0,I=I&15,I|0)for(a=1;;){if(U=EA(7,0,(15-a|0)*3|0)|0,!((i&U|0)==0&(j&(S()|0)|0)==0))break e;if(a>>>0>>0)a=a+1|0;else break}s=EA(l|0,0,56)|0,i=s|i,s=S()|0|j,l=m,t[l>>2]=i,t[l+4>>2]=s,l=M+2|0}while(!1);(l|0)==7?(U=BA+(e<<3)|0,t[U>>2]=i,t[U+4>>2]=s&-117440513,e=KA(e|0,L|0,1,0)|0,U=S()|0):U=L}if(G=KA(G|0,W|0,1,0)|0,W=S()|0,(W|0)<(n|0)|(W|0)==(n|0)&G>>>0>>0)L=U;else break}if(zA){if(nA=he>>>0>15,q=EA(he|0,0,52)|0,$=S()|0,!QA){for(i=0,a=0,l=0,s=0;(f|0)==0&(o|0)==0||(he=A+(i<<3)|0,t[he>>2]=f,t[he+4>>2]=o,i=KA(i|0,a|0,1,0)|0,a=S()|0),l=KA(l|0,s|0,1,0)|0,s=S()|0,!!((s|0)<(n|0)|(s|0)==(n|0)&l>>>0>>0);)o=HA+(l<<3)|0,f=t[o>>2]|0,o=t[o+4>>2]|0;o=U;break}for(i=0,a=0,s=0,l=0;;){do if(!((f|0)==0&(o|0)==0)){if(I=wA(f|0,o|0,52)|0,S()|0,I=I&15,nA|(I|0)<(he|0)){SA=80;break A}if((I|0)!=(he|0)){if(m=f|q,M=o&-15728641|$,I>>>0>=fe>>>0){j=he;do QA=EA(7,0,(14-j|0)*3|0)|0,j=j+1|0,m=QA|m,M=S()|0|M;while(j>>>0>>0)}}else m=f,M=o;L=jr(m|0,M|0,r|0,n|0)|0,j=0,I=0,W=S()|0;do{if((j|0)>(n|0)|(j|0)==(n|0)&I>>>0>r>>>0){SA=81;break A}if(QA=ne+(L<<3)|0,G=t[QA+4>>2]|0,(G&-117440513|0)==(M|0)&&(t[QA>>2]|0)==(m|0)){SA=65;break}QA=KA(L|0,W|0,1,0)|0,L=Rr(QA|0,S()|0,r|0,n|0)|0,W=S()|0,I=KA(I|0,j|0,1,0)|0,j=S()|0,QA=ne+(L<<3)|0}while(!((t[QA>>2]|0)==(m|0)&&(t[QA+4>>2]|0)==(M|0)));if((SA|0)==65&&(SA=0,!0&(G&117440512|0)==100663296))break;QA=A+(i<<3)|0,t[QA>>2]=f,t[QA+4>>2]=o,i=KA(i|0,a|0,1,0)|0,a=S()|0}while(!1);if(s=KA(s|0,l|0,1,0)|0,l=S()|0,!((l|0)<(n|0)|(l|0)==(n|0)&s>>>0>>0))break;o=HA+(s<<3)|0,f=t[o>>2]|0,o=t[o+4>>2]|0}o=U}else i=0,o=U}else i=0,e=0,o=0;while(!1);if(Y0(ne|0,0,Ee|0)|0,Ir(HA|0,BA|0,e<<3|0)|0,qA(BA),(e|0)==0&(o|0)==0){SA=89;break}else A=A+(i<<3)|0,n=o,r=e}if((SA|0)==16)!0&(o&117440512|0)==0?(o=4,SA=27):SA=21;else if((SA|0)==31)OA(27795,27122,620,27132);else{if((SA|0)==41)return qA(HA),qA(ne),SA=10,SA|0;if((SA|0)==48)return qA(HA),qA(ne),SA=13,SA|0;(SA|0)==80?OA(27795,27122,711,27132):(SA|0)==81?OA(27795,27122,723,27132):(SA|0)==85&&(Ir(A|0,HA|0,r<<3|0)|0,SA=89)}return(SA|0)==21?(qA(HA),qA(ne),SA=5,SA|0):(SA|0)==27?(qA(HA),qA(ne),SA=o,SA|0):(SA|0)==89?(qA(HA),qA(ne),SA=0,SA|0):0}function il(e,A,r,n,o,i,s){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0,s=s|0;var l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0;if(G=k,k=k+16|0,L=G,!((r|0)>0|(r|0)==0&A>>>0>0))return L=0,k=G,L|0;if((s|0)>=16)return L=12,k=G,L|0;j=0,I=0,M=0,l=0;A:for(;;){if(f=e+(j<<3)|0,a=t[f>>2]|0,f=t[f+4>>2]|0,m=wA(a|0,f|0,52)|0,S()|0,(m&15|0)>(s|0)){l=12,a=11;break}if(Xn(L,a,f,s),m=L,f=t[m>>2]|0,m=t[m+4>>2]|0,(f|0)==0&(m|0)==0)a=M;else{a=M;do{if(!((l|0)<(i|0)|(l|0)==(i|0)&a>>>0>>0)){a=10;break A}M=n+(a<<3)|0,t[M>>2]=f,t[M+4>>2]=m,a=KA(a|0,l|0,1,0)|0,l=S()|0,Ao(L),M=L,f=t[M>>2]|0,m=t[M+4>>2]|0}while(!((f|0)==0&(m|0)==0))}if(j=KA(j|0,I|0,1,0)|0,I=S()|0,(I|0)<(r|0)|(I|0)==(r|0)&j>>>0>>0)M=a;else{l=0,a=11;break}}return(a|0)==10?(L=14,k=G,L|0):(a|0)==11?(k=G,l|0):0}function sl(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;j=k,k=k+16|0,M=j;A:do if((r|0)>0|(r|0)==0&A>>>0>0){for(f=0,s=0,i=0,m=0;;){if(a=e+(f<<3)|0,l=t[a>>2]|0,a=t[a+4>>2]|0,!((l|0)==0&(a|0)==0)&&(a=(g0(l,a,n,M)|0)==0,l=M,s=KA(t[l>>2]|0,t[l+4>>2]|0,s|0,i|0)|0,i=S()|0,!a)){i=12;break}if(f=KA(f|0,m|0,1,0)|0,m=S()|0,!((m|0)<(r|0)|(m|0)==(r|0)&f>>>0>>0))break A}return k=j,i|0}else s=0,i=0;while(!1);return t[o>>2]=s,t[o+4>>2]=i,o=0,k=j,o|0}function ll(e,A){return e=e|0,A=A|0,A=wA(e|0,A|0,52)|0,S()|0,A&1|0}function Pt(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;if(o=wA(e|0,A|0,52)|0,S()|0,o=o&15,!o)return o=0,o|0;for(n=1;;){if(r=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,r=r&7,r|0){n=5;break}if(n>>>0>>0)n=n+1|0;else{r=0,n=5;break}}return(n|0)==5?r|0:0}function Kn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(a=wA(e|0,A|0,52)|0,S()|0,a=a&15,!a)return l=A,a=e,YA(l|0),a|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=EA(7,0,i|0)|0,o=S()|0,s=wA(e|0,A|0,i|0)|0,S()|0,i=EA(Gt(s&7)|0,0,i|0)|0,s=S()|0,e=i|e&~n,A=s|A&~o;A:do if(!r)if((i&n|0)==0&(s&o|0)==0)r=0;else if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)r=1;else{r=1;e:for(;;){switch(s=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,s&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,o=wA(e|0,A|0,s|0)|0,S()|0,i=EA(7,0,s|0)|0,A=A&~(S()|0),s=EA(Gt(o&7)|0,0,s|0)|0,e=e&~i|s,A=A|(S()|0),r>>>0>>0)r=r+1|0;else{r=1;break}}while(!1);if(l>>>0>>0)l=l+1|0;else break}return YA(A|0),e|0}function lr(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)return r=A,n=e,YA(r|0),n|0;for(r=1;i=(15-r|0)*3|0,s=wA(e|0,A|0,i|0)|0,S()|0,o=EA(7,0,i|0)|0,A=A&~(S()|0),i=EA(Gt(s&7)|0,0,i|0)|0,e=i|e&~o,A=S()|0|A,r>>>0>>0;)r=r+1|0;return YA(A|0),e|0}function al(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(a=wA(e|0,A|0,52)|0,S()|0,a=a&15,!a)return l=A,a=e,YA(l|0),a|0;for(l=1,r=0;;){i=(15-l|0)*3|0,n=EA(7,0,i|0)|0,o=S()|0,s=wA(e|0,A|0,i|0)|0,S()|0,i=EA(Ut(s&7)|0,0,i|0)|0,s=S()|0,e=i|e&~n,A=s|A&~o;A:do if(!r)if((i&n|0)==0&(s&o|0)==0)r=0;else if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)r=1;else{r=1;e:for(;;){switch(s=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,s&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,i=EA(7,0,o|0)|0,s=A&~(S()|0),A=wA(e|0,A|0,o|0)|0,S()|0,A=EA(Ut(A&7)|0,0,o|0)|0,e=e&~i|A,A=s|(S()|0),r>>>0>>0)r=r+1|0;else{r=1;break}}while(!1);if(l>>>0>>0)l=l+1|0;else break}return YA(A|0),e|0}function Zn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;if(n=wA(e|0,A|0,52)|0,S()|0,n=n&15,!n)return r=A,n=e,YA(r|0),n|0;for(r=1;s=(15-r|0)*3|0,i=EA(7,0,s|0)|0,o=A&~(S()|0),A=wA(e|0,A|0,s|0)|0,S()|0,A=EA(Ut(A&7)|0,0,s|0)|0,e=A|e&~i,A=S()|0|o,r>>>0>>0;)r=r+1|0;return YA(A|0),e|0}function ul(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(a=k,k=k+64|0,l=a+40|0,n=a+24|0,o=a+12|0,i=a,EA(A|0,0,52)|0,r=S()|0|134225919,!A)return(t[e+4>>2]|0)>2||(t[e+8>>2]|0)>2||(t[e+12>>2]|0)>2?(s=0,l=0,YA(s|0),k=a,l|0):(EA(m0(e)|0,0,45)|0,s=S()|0|r,l=-1,YA(s|0),k=a,l|0);if(t[l>>2]=t[e>>2],t[l+4>>2]=t[e+4>>2],t[l+8>>2]=t[e+8>>2],t[l+12>>2]=t[e+12>>2],s=l+4|0,(A|0)>0)for(e=-1;t[n>>2]=t[s>>2],t[n+4>>2]=t[s+4>>2],t[n+8>>2]=t[s+8>>2],A&1?(vr(s),t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],t[o+8>>2]=t[s+8>>2],br(o)):(kr(s),t[o>>2]=t[s>>2],t[o+4>>2]=t[s+4>>2],t[o+8>>2]=t[s+8>>2],Ht(o)),yt(n,o,i),Me(i),m=(15-A|0)*3|0,f=EA(7,0,m|0)|0,r=r&~(S()|0),m=EA(St(i)|0,0,m|0)|0,e=m|e&~f,r=S()|0|r,(A|0)>1;)A=A+-1|0;else e=-1;A:do if((t[s>>2]|0)<=2&&(t[l+8>>2]|0)<=2&&(t[l+12>>2]|0)<=2){if(n=m0(l)|0,A=EA(n|0,0,45)|0,A=A|e,e=S()|0|r&-1040385,i=l0(l)|0,!(Re(n)|0)){if((i|0)<=0)break;for(o=0;;){if(n=wA(A|0,e|0,52)|0,S()|0,n=n&15,n)for(r=1;m=(15-r|0)*3|0,l=wA(A|0,e|0,m|0)|0,S()|0,f=EA(7,0,m|0)|0,e=e&~(S()|0),m=EA(Gt(l&7)|0,0,m|0)|0,A=A&~f|m,e=e|(S()|0),r>>>0>>0;)r=r+1|0;if(o=o+1|0,(o|0)==(i|0))break A}}o=wA(A|0,e|0,52)|0,S()|0,o=o&15;e:do if(o){r=1;t:for(;;){switch(m=wA(A|0,e|0,(15-r|0)*3|0)|0,S()|0,m&7){case 1:break t;case 0:break;default:break e}if(r>>>0>>0)r=r+1|0;else break e}if(S0(n,t[l>>2]|0)|0)for(r=1;l=(15-r|0)*3|0,f=EA(7,0,l|0)|0,m=e&~(S()|0),e=wA(A|0,e|0,l|0)|0,S()|0,e=EA(Ut(e&7)|0,0,l|0)|0,A=A&~f|e,e=m|(S()|0),r>>>0>>0;)r=r+1|0;else for(r=1;m=(15-r|0)*3|0,l=wA(A|0,e|0,m|0)|0,S()|0,f=EA(7,0,m|0)|0,e=e&~(S()|0),m=EA(Gt(l&7)|0,0,m|0)|0,A=A&~f|m,e=e|(S()|0),r>>>0>>0;)r=r+1|0}while(!1);if((i|0)>0){r=0;do A=Kn(A,e)|0,e=S()|0,r=r+1|0;while((r|0)!=(i|0))}}else A=0,e=0;while(!1);return f=e,m=A,YA(f|0),k=a,m|0}function Jt(e){return e=e|0,(e|0)%2|0|0}function $n(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;return o=k,k=k+16|0,n=o,A>>>0>15?(n=4,k=o,n|0):(t[e+4>>2]&2146435072|0)==2146435072||(t[e+8+4>>2]&2146435072|0)==2146435072?(n=3,k=o,n|0):(xn(e,A,n),A=ul(n,A)|0,n=S()|0,t[r>>2]=A,t[r+4>>2]=n,(A|0)==0&(n|0)==0&&OA(27795,27122,1050,27145),n=0,k=o,n|0)}function qn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;if(o=r+4|0,i=wA(e|0,A|0,52)|0,S()|0,i=i&15,s=wA(e|0,A|0,45)|0,S()|0,n=(i|0)==0,Re(s&127)|0){if(n)return s=1,s|0;n=1}else{if(n)return s=0,s|0;(t[o>>2]|0)==0&&(t[r+8>>2]|0)==0?n=(t[r+12>>2]|0)!=0&1:n=1}for(r=1;r&1?br(o):Ht(o),s=wA(e|0,A|0,(15-r|0)*3|0)|0,S()|0,gn(o,s&7),r>>>0>>0;)r=r+1|0;return n|0}function Dr(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(m=k,k=k+16|0,a=m,f=wA(e|0,A|0,45)|0,S()|0,f=f&127,f>>>0>121)return t[r>>2]=0,t[r+4>>2]=0,t[r+8>>2]=0,t[r+12>>2]=0,f=5,k=m,f|0;A:do if((Re(f)|0)!=0&&(i=wA(e|0,A|0,52)|0,S()|0,i=i&15,(i|0)!=0)){n=1;e:for(;;){switch(l=wA(e|0,A|0,(15-n|0)*3|0)|0,S()|0,l&7){case 5:break e;case 0:break;default:{n=A;break A}}if(n>>>0>>0)n=n+1|0;else{n=A;break A}}for(o=1,n=A;A=(15-o|0)*3|0,s=EA(7,0,A|0)|0,l=n&~(S()|0),n=wA(e|0,n|0,A|0)|0,S()|0,n=EA(Ut(n&7)|0,0,A|0)|0,e=e&~s|n,n=l|(S()|0),o>>>0>>0;)o=o+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],!(qn(e,n,r)|0))return f=0,k=m,f|0;if(s=r+4|0,t[a>>2]=t[s>>2],t[a+4>>2]=t[s+4>>2],t[a+8>>2]=t[s+8>>2],i=wA(e|0,n|0,52)|0,S()|0,l=i&15,i&1?(Ht(s),i=l+1|0):i=l,!(Re(f)|0))n=0;else{A:do if(!l)n=0;else for(A=1;;){if(o=wA(e|0,n|0,(15-A|0)*3|0)|0,S()|0,o=o&7,o|0){n=o;break A}if(A>>>0>>0)A=A+1|0;else{n=0;break}}while(!1);n=(n|0)==4&1}if(!(N(r,i,n,0)|0))(i|0)!=(l|0)&&(t[s>>2]=t[a>>2],t[s+4>>2]=t[a+4>>2],t[s+8>>2]=t[a+8>>2]);else{if(Re(f)|0)do;while((N(r,i,0,0)|0)!=0);(i|0)!=(l|0)&&kr(s)}return f=0,k=m,f|0}function ar(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;return i=k,k=k+16|0,n=i,o=Dr(e,A,n)|0,o|0?(k=i,o|0):(o=wA(e|0,A|0,52)|0,S()|0,d(n,o&15,r),o=0,k=i,o|0)}function _r(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0;if(s=k,k=k+16|0,i=s,n=Dr(e,A,i)|0,n|0)return i=n,k=s,i|0;n=wA(e|0,A|0,45)|0,S()|0,n=(Re(n&127)|0)==0,o=wA(e|0,A|0,52)|0,S()|0,o=o&15;A:do if(!n){if(o|0)for(n=1;;){if(l=EA(7,0,(15-n|0)*3|0)|0,!((l&e|0)==0&((S()|0)&A|0)==0))break A;if(n>>>0>>0)n=n+1|0;else break}return w(i,o,0,5,r),l=0,k=s,l|0}while(!1);return AA(i,o,0,6,r),l=0,k=s,l|0}function cl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if(o=wA(e|0,A|0,45)|0,S()|0,!(Re(o&127)|0))return o=2,t[r>>2]=o,0;if(o=wA(e|0,A|0,52)|0,S()|0,o=o&15,!o)return o=5,t[r>>2]=o,0;for(n=1;;){if(i=EA(7,0,(15-n|0)*3|0)|0,!((i&e|0)==0&((S()|0)&A|0)==0)){n=2,e=6;break}if(n>>>0>>0)n=n+1|0;else{n=5,e=6;break}}return(e|0)==6&&(t[r>>2]=n),0}function Yo(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0;M=k,k=k+128|0,f=M+112|0,i=M+96|0,m=M,o=wA(e|0,A|0,52)|0,S()|0,l=o&15,t[f>>2]=l,s=wA(e|0,A|0,45)|0,S()|0,s=s&127;A:do if(Re(s)|0){if(l|0)for(n=1;;){if(a=EA(7,0,(15-n|0)*3|0)|0,!((a&e|0)==0&((S()|0)&A|0)==0)){o=0;break A}if(n>>>0>>0)n=n+1|0;else break}if(o&1)o=1;else return a=EA(l+1|0,0,52)|0,m=S()|0|A&-15728641,f=EA(7,0,(14-l|0)*3|0)|0,m=Yo((a|e)&~f,m&~(S()|0),r)|0,k=M,m|0}else o=0;while(!1);if(n=Dr(e,A,i)|0,!n){o?(B(i,f,m),a=5):(dA(i,f,m),a=6);A:do if(Re(s)|0)if(!l)e=5;else for(n=1;;){if(s=EA(7,0,(15-n|0)*3|0)|0,!((s&e|0)==0&((S()|0)&A|0)==0)){e=2;break A}if(n>>>0>>0)n=n+1|0;else{e=5;break}}else e=2;while(!1);Y0(r|0,-1,e<<2|0)|0;A:do if(o)for(i=0;;){if(s=m+(i<<4)|0,tA(s,t[f>>2]|0)|0,s=t[s>>2]|0,l=t[r>>2]|0,(l|0)==-1|(l|0)==(s|0))n=r;else{o=0;do{if(o=o+1|0,o>>>0>=e>>>0){n=1;break A}n=r+(o<<2)|0,l=t[n>>2]|0}while(!((l|0)==-1|(l|0)==(s|0)))}if(t[n>>2]=s,i=i+1|0,i>>>0>=a>>>0){n=0;break}}else for(i=0;;){if(s=m+(i<<4)|0,N(s,t[f>>2]|0,0,1)|0,s=t[s>>2]|0,l=t[r>>2]|0,(l|0)==-1|(l|0)==(s|0))n=r;else{o=0;do{if(o=o+1|0,o>>>0>=e>>>0){n=1;break A}n=r+(o<<2)|0,l=t[n>>2]|0}while(!((l|0)==-1|(l|0)==(s|0)))}if(t[n>>2]=s,i=i+1|0,i>>>0>=a>>>0){n=0;break}}while(!1)}return m=n,k=M,m|0}function fl(){return 12}function Jn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(e>>>0>15)return l=4,l|0;if(EA(e|0,0,52)|0,l=S()|0|134225919,!e){r=0,n=0;do Re(n)|0&&(EA(n|0,0,45)|0,s=l|(S()|0),e=A+(r<<3)|0,t[e>>2]=-1,t[e+4>>2]=s,r=r+1|0),n=n+1|0;while((n|0)!=122);return r=0,r|0}r=0,s=0;do{if(Re(s)|0){for(EA(s|0,0,45)|0,n=1,o=-1,i=l|(S()|0);a=EA(7,0,(15-n|0)*3|0)|0,o=o&~a,i=i&~(S()|0),(n|0)!=(e|0);)n=n+1|0;a=A+(r<<3)|0,t[a>>2]=o,t[a+4>>2]=i,r=r+1|0}s=s+1|0}while((s|0)!=122);return r=0,r|0}function hl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0;if(q=k,k=k+16|0,W=q,nA=wA(e|0,A|0,52)|0,S()|0,nA=nA&15,r>>>0>15)return nA=4,k=q,nA|0;if((nA|0)<(r|0))return nA=12,k=q,nA|0;if((nA|0)!=(r|0))if(i=EA(r|0,0,52)|0,i=i|e,l=S()|0|A&-15728641,(nA|0)>(r|0)){a=r;do G=EA(7,0,(14-a|0)*3|0)|0,a=a+1|0,i=G|i,l=S()|0|l;while((a|0)<(nA|0));G=i}else G=i;else G=e,l=A;L=wA(G|0,l|0,45)|0,S()|0;A:do if(Re(L&127)|0){if(a=wA(G|0,l|0,52)|0,S()|0,a=a&15,a|0)for(i=1;;){if(L=EA(7,0,(15-i|0)*3|0)|0,!((L&G|0)==0&((S()|0)&l|0)==0)){f=33;break A}if(i>>>0>>0)i=i+1|0;else break}if(L=n,t[L>>2]=0,t[L+4>>2]=0,(nA|0)>(r|0)){for(L=A&-15728641,I=nA;;){if(j=I,I=I+-1|0,I>>>0>15|(nA|0)<(I|0)){f=19;break}if((nA|0)!=(I|0))if(i=EA(I|0,0,52)|0,i=i|e,a=S()|0|L,(nA|0)<(j|0))M=i;else{f=I;do M=EA(7,0,(14-f|0)*3|0)|0,f=f+1|0,i=M|i,a=S()|0|a;while((f|0)<(nA|0));M=i}else M=e,a=A;if(m=wA(M|0,a|0,45)|0,S()|0,!(Re(m&127)|0))i=0;else{m=wA(M|0,a|0,52)|0,S()|0,m=m&15;e:do if(!m)i=0;else for(f=1;;){if(i=wA(M|0,a|0,(15-f|0)*3|0)|0,S()|0,i=i&7,i|0)break e;if(f>>>0>>0)f=f+1|0;else{i=0;break}}while(!1);i=(i|0)==0&1}if(a=wA(e|0,A|0,(15-j|0)*3|0)|0,S()|0,a=a&7,(a|0)==7){o=5,f=42;break}if(i=(i|0)!=0,(a|0)==1&i){o=5,f=42;break}if(M=a+(((a|0)!=0&i)<<31>>31)|0,M|0&&(f=nA-j|0,f=U0(7,0,f,((f|0)<0)<<31>>31)|0,m=S()|0,i?(i=ft(f|0,m|0,5,0)|0,i=KA(i|0,S()|0,-5,-1)|0,i=W0(i|0,S()|0,6,0)|0,i=KA(i|0,S()|0,1,0)|0,a=S()|0):(i=f,a=m),j=M+-1|0,j=ft(f|0,m|0,j|0,((j|0)<0)<<31>>31|0)|0,j=KA(i|0,a|0,j|0,S()|0)|0,M=S()|0,m=n,m=KA(j|0,M|0,t[m>>2]|0,t[m+4>>2]|0)|0,M=S()|0,j=n,t[j>>2]=m,t[j+4>>2]=M),(I|0)<=(r|0)){f=37;break}}if((f|0)==19)OA(27795,27122,1367,27158);else if((f|0)==37){s=n,o=t[s+4>>2]|0,s=t[s>>2]|0;break}else if((f|0)==42)return k=q,o|0}else o=0,s=0}else f=33;while(!1);A:do if((f|0)==33)if(L=n,t[L>>2]=0,t[L+4>>2]=0,(nA|0)>(r|0)){for(i=nA;;){if(o=wA(e|0,A|0,(15-i|0)*3|0)|0,S()|0,o=o&7,(o|0)==7){o=5;break}if(s=nA-i|0,s=U0(7,0,s,((s|0)<0)<<31>>31)|0,o=ft(s|0,S()|0,o|0,0)|0,s=S()|0,L=n,s=KA(t[L>>2]|0,t[L+4>>2]|0,o|0,s|0)|0,o=S()|0,L=n,t[L>>2]=s,t[L+4>>2]=o,i=i+-1|0,(i|0)<=(r|0))break A}return k=q,o|0}else o=0,s=0;while(!1);return g0(G,l,nA,W)|0&&OA(27795,27122,1327,27173),nA=W,W=t[nA+4>>2]|0,((o|0)>-1|(o|0)==-1&s>>>0>4294967295)&((W|0)>(o|0)|((W|0)==(o|0)?(t[nA>>2]|0)>>>0>s>>>0:0))?(nA=0,k=q,nA|0):(OA(27795,27122,1407,27158),0)}function dl(e,A,r,n,o,i){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0;var s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0;if(M=k,k=k+16|0,s=M,o>>>0>15)return i=4,k=M,i|0;if(l=wA(r|0,n|0,52)|0,S()|0,l=l&15,(l|0)>(o|0))return i=12,k=M,i|0;if(g0(r,n,o,s)|0&&OA(27795,27122,1327,27173),m=s,f=t[m+4>>2]|0,!(((A|0)>-1|(A|0)==-1&e>>>0>4294967295)&((f|0)>(A|0)|((f|0)==(A|0)?(t[m>>2]|0)>>>0>e>>>0:0))))return i=2,k=M,i|0;m=o-l|0,o=EA(o|0,0,52)|0,a=S()|0|n&-15728641,f=i,t[f>>2]=o|r,t[f+4>>2]=a,f=wA(r|0,n|0,45)|0,S()|0;A:do if(Re(f&127)|0){if(l|0)for(s=1;;){if(f=EA(7,0,(15-s|0)*3|0)|0,!((f&r|0)==0&((S()|0)&n|0)==0))break A;if(s>>>0>>0)s=s+1|0;else break}if((m|0)<1)return i=0,k=M,i|0;for(f=l^15,n=-1,a=1,s=1;;){l=m-a|0,l=U0(7,0,l,((l|0)<0)<<31>>31)|0,r=S()|0;do if(s)if(s=ft(l|0,r|0,5,0)|0,s=KA(s|0,S()|0,-5,-1)|0,s=W0(s|0,S()|0,6,0)|0,o=S()|0,(A|0)>(o|0)|(A|0)==(o|0)&e>>>0>s>>>0){A=KA(e|0,A|0,-1,-1)|0,A=ct(A|0,S()|0,s|0,o|0)|0,s=S()|0,j=i,L=t[j>>2]|0,j=t[j+4>>2]|0,G=(f+n|0)*3|0,I=EA(7,0,G|0)|0,j=j&~(S()|0),n=W0(A|0,s|0,l|0,r|0)|0,e=S()|0,o=KA(n|0,e|0,2,0)|0,G=EA(o|0,S()|0,G|0)|0,j=S()|0|j,o=i,t[o>>2]=G|L&~I,t[o+4>>2]=j,e=ft(n|0,e|0,l|0,r|0)|0,e=ct(A|0,s|0,e|0,S()|0)|0,s=0,A=S()|0;break}else{G=i,I=t[G>>2]|0,G=t[G+4>>2]|0,L=EA(7,0,(f+n|0)*3|0)|0,G=G&~(S()|0),s=i,t[s>>2]=I&~L,t[s+4>>2]=G,s=1;break}else I=i,o=t[I>>2]|0,I=t[I+4>>2]|0,n=(f+n|0)*3|0,j=EA(7,0,n|0)|0,I=I&~(S()|0),G=W0(e|0,A|0,l|0,r|0)|0,s=S()|0,n=EA(G|0,s|0,n|0)|0,I=S()|0|I,L=i,t[L>>2]=n|o&~j,t[L+4>>2]=I,s=ft(G|0,s|0,l|0,r|0)|0,e=ct(e|0,A|0,s|0,S()|0)|0,s=0,A=S()|0;while(!1);if((m|0)>(a|0))n=~a,a=a+1|0;else{A=0;break}}return k=M,A|0}while(!1);if((m|0)<1)return G=0,k=M,G|0;for(o=l^15,s=1;;)if(L=m-s|0,L=U0(7,0,L,((L|0)<0)<<31>>31)|0,G=S()|0,a=i,r=t[a>>2]|0,a=t[a+4>>2]|0,l=(o-s|0)*3|0,n=EA(7,0,l|0)|0,a=a&~(S()|0),j=W0(e|0,A|0,L|0,G|0)|0,I=S()|0,l=EA(j|0,I|0,l|0)|0,a=S()|0|a,f=i,t[f>>2]=l|r&~n,t[f+4>>2]=a,G=ft(j|0,I|0,L|0,G|0)|0,e=ct(e|0,A|0,G|0,S()|0)|0,A=S()|0,(m|0)<=(s|0)){A=0;break}else s=s+1|0;return k=M,A|0}function Xn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0;o=wA(A|0,r|0,52)|0,S()|0,o=o&15,(A|0)==0&(r|0)==0|((n|0)>15|(o|0)>(n|0))?(i=-1,A=-1,r=0,o=0):(A=Vo(A,r,o+1|0,n)|0,s=(S()|0)&-15728641,r=EA(n|0,0,52)|0,r=A|r,s=s|(S()|0),A=(Oe(r,s)|0)==0,i=o,A=A?-1:n,o=s),s=e,t[s>>2]=r,t[s+4>>2]=o,t[e+8>>2]=i,t[e+12>>2]=A}function Ko(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0;if(o=wA(e|0,A|0,52)|0,S()|0,o=o&15,i=n+8|0,t[i>>2]=o,(e|0)==0&(A|0)==0|((r|0)>15|(o|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=Vo(e,A,o+1|0,r)|0,i=(S()|0)&-15728641,o=EA(r|0,0,52)|0,o=e|o,i=i|(S()|0),e=n,t[e>>2]=o,t[e+4>>2]=i,e=n+12|0,Oe(o,i)|0){t[e>>2]=r;return}else{t[e>>2]=-1;return}}function Ao(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0;if(r=e,A=t[r>>2]|0,r=t[r+4>>2]|0,!((A|0)==0&(r|0)==0)&&(n=wA(A|0,r|0,52)|0,S()|0,n=n&15,l=EA(1,0,(n^15)*3|0)|0,A=KA(l|0,S()|0,A|0,r|0)|0,r=S()|0,l=e,t[l>>2]=A,t[l+4>>2]=r,l=e+8|0,s=t[l>>2]|0,!((n|0)<(s|0)))){for(a=e+12|0,i=n;;){if((i|0)==(s|0)){n=5;break}if(f=(i|0)==(t[a>>2]|0),o=(15-i|0)*3|0,n=wA(A|0,r|0,o|0)|0,S()|0,n=n&7,f&((n|0)==1&!0)){n=7;break}if(!((n|0)==7&!0)){n=10;break}if(f=EA(1,0,o|0)|0,A=KA(A|0,r|0,f|0,S()|0)|0,r=S()|0,f=e,t[f>>2]=A,t[f+4>>2]=r,(i|0)>(s|0))i=i+-1|0;else{n=10;break}}if((n|0)==5){f=e,t[f>>2]=0,t[f+4>>2]=0,t[l>>2]=-1,t[a>>2]=-1;return}else if((n|0)==7){s=EA(1,0,o|0)|0,s=KA(A|0,r|0,s|0,S()|0)|0,l=S()|0,f=e,t[f>>2]=s,t[f+4>>2]=l,t[a>>2]=i+-1;return}else if((n|0)==10)return}}function tn(e){e=+e;var A=0;return A=e<0?e+6.283185307179586:e,+(e>=6.283185307179586?A+-6.283185307179586:A)}function Tr(e,A){return e=e|0,A=A|0,+$A(+(+b[e>>3]-+b[A>>3]))<17453292519943298e-27?(A=+$A(+(+b[e+8>>3]-+b[A+8>>3]))<17453292519943298e-27,A|0):(A=0,A|0)}function Vt(e,A){switch(e=+e,A=A|0,A|0){case 1:{e=e<0?e+6.283185307179586:e;break}case 2:{e=e>0?e+-6.283185307179586:e;break}}return+e}function ml(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return o=+b[A>>3],n=+b[e>>3],i=+ie(+((o-n)*.5)),r=+ie(+((+b[A+8>>3]-+b[e+8>>3])*.5)),r=i*i+r*(+_e(+o)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2)}function rn(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return o=+b[A>>3],n=+b[e>>3],i=+ie(+((o-n)*.5)),r=+ie(+((+b[A+8>>3]-+b[e+8>>3])*.5)),r=i*i+r*(+_e(+o)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2*6371.007180918475)}function gl(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return o=+b[A>>3],n=+b[e>>3],i=+ie(+((o-n)*.5)),r=+ie(+((+b[A+8>>3]-+b[e+8>>3])*.5)),r=i*i+r*(+_e(+o)*+_e(+n)*r),+(+Te(+ +ye(+r),+ +ye(+(1-r)))*2*6371.007180918475*1e3)}function pl(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0;return i=+b[A>>3],n=+_e(+i),o=+b[A+8>>3]-+b[e+8>>3],s=n*+ie(+o),r=+b[e>>3],+ +Te(+s,+(+ie(+i)*+_e(+r)-+_e(+o)*(n*+ie(+r))))}function yl(e,A,r,n){e=e|0,A=+A,r=+r,n=n|0;var o=0,i=0,s=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=+b[e>>3]+r,b[n>>3]=A,o=n;else{if(o=+$A(+(i+-3.141592653589793))<1e-16,A=+b[e>>3],o){A=A-r,b[n>>3]=A,o=n;break}if(s=+_e(+r),r=+ie(+r),A=s*+ie(+A)+ +_e(+i)*(r*+_e(+A)),A=A>1?1:A,A=+h0(+(A<-1?-1:A)),b[n>>3]=A,+$A(+(A+-1.5707963267948966))<1e-16){b[n>>3]=1.5707963267948966,b[n+8>>3]=0;return}if(+$A(+(A+1.5707963267948966))<1e-16){b[n>>3]=-1.5707963267948966,b[n+8>>3]=0;return}if(l=1/+_e(+A),i=r*+ie(+i)*l,r=+b[e>>3],A=l*((s-+ie(+A)*+ie(+r))/+_e(+r)),s=i>1?1:i,A=A>1?1:A,A=+b[e+8>>3]+ +Te(+(s<-1?-1:s),+(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);b[n+8>>3]=A;return}while(!1);if(+$A(+(A+-1.5707963267948966))<1e-16){b[o>>3]=1.5707963267948966,b[n+8>>3]=0;return}if(+$A(+(A+1.5707963267948966))<1e-16){b[o>>3]=-1.5707963267948966,b[n+8>>3]=0;return}if(A=+b[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);b[n+8>>3]=A}function Zo(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(b[A>>3]=+b[20656+(e<<3)>>3],A=0,A|0)}function xl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(b[A>>3]=+b[20784+(e<<3)>>3],A=0,A|0)}function wl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(b[A>>3]=+b[20912+(e<<3)>>3],A=0,A|0)}function vl(e,A){return e=e|0,A=A|0,e>>>0>15?(A=4,A|0):(b[A>>3]=+b[21040+(e<<3)>>3],A=0,A|0)}function vn(e,A){e=e|0,A=A|0;var r=0;return e>>>0>15?(A=4,A|0):(r=U0(7,0,e,((e|0)<0)<<31>>31)|0,r=ft(r|0,S()|0,120,0)|0,e=S()|0,t[A>>2]=r|2,t[A+4>>2]=e,A=0,A|0)}function $o(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;return j=+b[A>>3],m=+b[e>>3],a=+ie(+((j-m)*.5)),i=+b[A+8>>3],f=+b[e+8>>3],s=+ie(+((i-f)*.5)),l=+_e(+m),M=+_e(+j),s=a*a+s*(M*l*s),s=+Te(+ +ye(+s),+ +ye(+(1-s)))*2,a=+b[r>>3],j=+ie(+((a-j)*.5)),n=+b[r+8>>3],i=+ie(+((n-i)*.5)),o=+_e(+a),i=j*j+i*(M*o*i),i=+Te(+ +ye(+i),+ +ye(+(1-i)))*2,a=+ie(+((m-a)*.5)),n=+ie(+((f-n)*.5)),n=a*a+n*(l*o*n),n=+Te(+ +ye(+n),+ +ye(+(1-n)))*2,o=(s+i+n)*.5,+(+mt(+ +ye(+(+et(+(o*.5))*+et(+((o-s)*.5))*+et(+((o-i)*.5))*+et(+((o-n)*.5)))))*4)}function eo(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0;if(l=k,k=k+192|0,i=l+168|0,s=l,o=ar(e,A,i)|0,o|0)return r=o,k=l,r|0;if(_r(e,A,s)|0&&OA(27795,27190,415,27199),A=t[s>>2]|0,(A|0)>0){if(n=+$o(s+8|0,s+8+(((A|0)!=1&1)<<4)|0,i)+0,(A|0)!=1){e=1;do o=e,e=e+1|0,n=n+ +$o(s+8+(o<<4)|0,s+8+(((e|0)%(A|0)|0)<<4)|0,i);while((e|0)<(A|0))}}else n=0;return b[r>>3]=n,r=0,k=l,r|0}function kl(e,A,r){return e=e|0,A=A|0,r=r|0,e=eo(e,A,r)|0,e|0||(b[r>>3]=+b[r>>3]*6371.007180918475*6371.007180918475),e|0}function bl(e,A,r){return e=e|0,A=A|0,r=r|0,e=eo(e,A,r)|0,e|0||(b[r>>3]=+b[r>>3]*6371.007180918475*6371.007180918475*1e3*1e3),e|0}function Cl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(l=k,k=k+176|0,s=l,e=sr(e,A,s)|0,e|0)return s=e,k=l,s|0;if(b[r>>3]=0,e=t[s>>2]|0,(e|0)<=1)return s=0,k=l,s|0;A=e+-1|0,e=0,n=+b[s+8>>3],o=+b[s+16>>3],i=0;do e=e+1|0,f=n,n=+b[s+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=o,o=+b[s+8+(e<<4)+8>>3],a=+ie(+((o-a)*.5)),a=m*m+a*(+_e(+n)*+_e(+f)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)<(A|0));return b[r>>3]=i,s=0,k=l,s|0}function El(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(l=k,k=k+176|0,s=l,e=sr(e,A,s)|0,e|0)return s=e,i=+b[r>>3],i=i*6371.007180918475,b[r>>3]=i,k=l,s|0;if(b[r>>3]=0,e=t[s>>2]|0,(e|0)<=1)return s=0,i=0,i=i*6371.007180918475,b[r>>3]=i,k=l,s|0;A=e+-1|0,e=0,n=+b[s+8>>3],o=+b[s+16>>3],i=0;do e=e+1|0,f=n,n=+b[s+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=o,o=+b[s+8+(e<<4)+8>>3],a=+ie(+((o-a)*.5)),a=m*m+a*(+_e(+f)*+_e(+n)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)!=(A|0));return b[r>>3]=i,s=0,m=i,m=m*6371.007180918475,b[r>>3]=m,k=l,s|0}function Sl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(l=k,k=k+176|0,s=l,e=sr(e,A,s)|0,e|0)return s=e,i=+b[r>>3],i=i*6371.007180918475,i=i*1e3,b[r>>3]=i,k=l,s|0;if(b[r>>3]=0,e=t[s>>2]|0,(e|0)<=1)return s=0,i=0,i=i*6371.007180918475,i=i*1e3,b[r>>3]=i,k=l,s|0;A=e+-1|0,e=0,n=+b[s+8>>3],o=+b[s+16>>3],i=0;do e=e+1|0,f=n,n=+b[s+8+(e<<4)>>3],m=+ie(+((n-f)*.5)),a=o,o=+b[s+8+(e<<4)+8>>3],a=+ie(+((o-a)*.5)),a=m*m+a*(+_e(+f)*+_e(+n)*a),i=i+ +Te(+ +ye(+a),+ +ye(+(1-a)))*2;while((e|0)!=(A|0));return b[r>>3]=i,s=0,m=i,m=m*6371.007180918475,m=m*1e3,b[r>>3]=m,k=l,s|0}function Ml(e){e=e|0;var A=0,r=0,n=0;return A=Qt(1,12)|0,A||OA(27280,27235,49,27293),r=e+4|0,n=t[r>>2]|0,n|0?(n=n+8|0,t[n>>2]=A,t[r>>2]=A,A|0):(t[e>>2]|0&&OA(27310,27235,61,27333),n=e,t[n>>2]=A,t[r>>2]=A,A|0)}function Bl(e,A){e=e|0,A=A|0;var r=0,n=0;return n=p0(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 qo(e){e=e|0;var A=0,r=0,n=0,o=0;if(e)for(n=1;;){if(A=t[e>>2]|0,A|0)do{if(r=t[A>>2]|0,r|0)do o=r,r=t[r+16>>2]|0,qA(o);while((r|0)!=0);o=A,A=t[A+8>>2]|0,qA(o)}while((A|0)!=0);if(A=e,e=t[e+8>>2]|0,n||qA(A),e)n=0;else break}}function Dl(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0,he=0,Ee=0,ne=0,HA=0,SA=0,ve=0,Ve=0,de=0;if(o=e+8|0,t[o>>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;ve=p0(r<<2)|0,ve||OA(27396,27235,317,27415),SA=p0(r<<5)|0,SA||OA(27437,27235,321,27415),t[e>>2]=0,zA=e+4|0,t[zA>>2]=0,t[o>>2]=0,r=0,HA=0,BA=0,M=0;A:for(;;){if(m=t[n>>2]|0,m){i=0,s=m;do{if(a=+b[s+8>>3],A=s,s=t[s+16>>2]|0,f=(s|0)==0,o=f?m:s,l=+b[o+8>>3],+$A(+(a-l))>3.141592653589793){de=14;break}i=i+(l-a)*(+b[A>>3]+ +b[o>>3])}while(!f);if((de|0)==14){de=0,i=0,A=m;do U=+b[A+8>>3],ne=A+16|0,Ee=t[ne>>2]|0,Ee=(Ee|0)==0?m:Ee,$=+b[Ee+8>>3],i=i+(+b[A>>3]+ +b[Ee>>3])*(($<0?$+6.283185307179586:$)-(U<0?U+6.283185307179586:U)),A=t[((A|0)==0?n:ne)>>2]|0;while((A|0)!=0)}i>0?(t[ve+(HA<<2)>>2]=n,HA=HA+1|0,o=BA,A=M):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=Qt(1,12)|0,!r){de=23;break A}t[A>>2]=r,o=r+4|0,s=r,A=M}else if(M){o=zA,s=M+8|0,A=n,r=e;break}else if(t[e>>2]|0){de=27;break A}else{o=zA,s=e,A=n,r=e;break}while(!1);if(t[s>>2]=n,t[o>>2]=n,s=SA+(BA<<5)|0,f=t[n>>2]|0,f){for(m=SA+(BA<<5)+8|0,b[m>>3]=17976931348623157e292,M=SA+(BA<<5)+24|0,b[M>>3]=17976931348623157e292,b[s>>3]=-17976931348623157e292,j=SA+(BA<<5)+16|0,b[j>>3]=-17976931348623157e292,nA=17976931348623157e292,q=-17976931348623157e292,o=0,I=f,a=17976931348623157e292,G=17976931348623157e292,W=-17976931348623157e292,l=-17976931348623157e292;i=+b[I>>3],U=+b[I+8>>3],I=t[I+16>>2]|0,L=(I|0)==0,$=+b[(L?f:I)+8>>3],i>3]=i,a=i),U>3]=U,G=U),i>W?b[s>>3]=i:i=W,U>l&&(b[j>>3]=U,l=U),nA=U>0&Uq?U:q,o=o|+$A(+(U-$))>3.141592653589793,!L;)W=i;o&&(b[j>>3]=q,b[M>>3]=nA)}else t[s>>2]=0,t[s+4>>2]=0,t[s+8>>2]=0,t[s+12>>2]=0,t[s+16>>2]=0,t[s+20>>2]=0,t[s+24>>2]=0,t[s+28>>2]=0;o=BA+1|0}if(ne=n+8|0,n=t[ne>>2]|0,t[ne>>2]=0,n)BA=o,M=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((HA|0)>0){for(ne=(o|0)==0,he=o<<2,Ee=(e|0)==0,fe=0,A=0;;){if(QA=t[ve+(fe<<2)>>2]|0,ne)de=73;else{if(BA=p0(he)|0,!BA){de=50;break}if(zA=p0(he)|0,!zA){de=52;break}e:do if(Ee)r=0;else{for(o=0,r=0,s=e;n=SA+(o<<5)|0,Jo(t[s>>2]|0,n,t[QA>>2]|0)|0?(t[BA+(r<<2)>>2]=s,t[zA+(r<<2)>>2]=n,L=r+1|0):L=r,s=t[s+8>>2]|0,s;)o=o+1|0,r=L;if((L|0)>0)if(n=t[BA>>2]|0,(L|0)==1)r=n;else for(j=0,I=-1,r=n,M=n;;){for(f=t[M>>2]|0,n=0,s=0;o=t[t[BA+(s<<2)>>2]>>2]|0,(o|0)==(f|0)?m=n:m=n+((Jo(o,t[zA+(s<<2)>>2]|0,t[f>>2]|0)|0)&1)|0,s=s+1|0,(s|0)!=(L|0);)n=m;if(o=(m|0)>(I|0),r=o?M:r,n=j+1|0,(n|0)==(L|0))break e;j=n,I=o?m:I,M=t[BA+(n<<2)>>2]|0}else r=0}while(!1);if(qA(BA),qA(zA),r){if(o=r+4|0,n=t[o>>2]|0,n)r=n+8|0;else if(t[r>>2]|0){de=70;break}t[r>>2]=QA,t[o>>2]=QA}else de=73}if((de|0)==73){if(de=0,A=t[QA>>2]|0,A|0)do zA=A,A=t[A+16>>2]|0,qA(zA);while((A|0)!=0);qA(QA),A=1}if(fe=fe+1|0,(fe|0)>=(HA|0)){Ve=A;break A}}(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 Ve=0;while(!1);return qA(ve),qA(SA),de=Ve,de|0}return 0}function Jo(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(!(a0(A,r)|0)||(A=Ft(A)|0,n=+b[r>>3],o=+b[r+8>>3],o=A&o<0?o+6.283185307179586:o,e=t[e>>2]|0,!e))return e=0,e|0;if(A){A=0,f=o,r=e;A:for(;;){for(;s=+b[r>>3],o=+b[r+8>>3],r=r+16|0,m=t[r>>2]|0,m=(m|0)==0?e:m,i=+b[m>>3],l=+b[m+8>>3],s>i?(a=s,s=l):(a=i,i=s,s=o,o=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=t[r>>2]|0,!r){r=22;break A}if(l=s<0?s+6.283185307179586:s,s=o<0?o+6.283185307179586:o,f=l==f|s==f?f+-2220446049250313e-31:f,a=l+(s-l)*((n-i)/(a-i)),(a<0?a+6.283185307179586:a)>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}else{A=0,f=o,r=e;A:for(;;){for(;s=+b[r>>3],o=+b[r+8>>3],r=r+16|0,m=t[r>>2]|0,m=(m|0)==0?e:m,i=+b[m>>3],l=+b[m+8>>3],s>i?(a=s,s=l):(a=i,i=s,s=o,o=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=t[r>>2]|0,!r){r=22;break A}if(f=s==f|o==f?f+-2220446049250313e-31:f,s+(o-s)*((n-i)/(a-i))>f&&(A=A^1),r=t[r>>2]|0,!r){r=22;break}}if((r|0)==22)return A|0}return 0}function D0(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0;if(q=k,k=k+32|0,nA=q+16|0,W=q,i=wA(e|0,A|0,52)|0,S()|0,i=i&15,I=wA(r|0,n|0,52)|0,S()|0,(i|0)!=(I&15|0))return nA=12,k=q,nA|0;if(f=wA(e|0,A|0,45)|0,S()|0,f=f&127,m=wA(r|0,n|0,45)|0,S()|0,m=m&127,f>>>0>121|m>>>0>121)return nA=5,k=q,nA|0;if(I=(f|0)!=(m|0),I){if(l=or(f,m)|0,(l|0)==7)return nA=1,k=q,nA|0;a=or(m,f)|0,(a|0)==7?OA(27514,27538,161,27548):(L=l,s=a)}else L=0,s=0;M=Re(f)|0,j=Re(m)|0,t[nA>>2]=0,t[nA+4>>2]=0,t[nA+8>>2]=0,t[nA+12>>2]=0;do if(L){if(m=t[4272+(f*28|0)+(L<<2)>>2]|0,l=(m|0)>0,j)if(l){f=0,a=r,l=n;do a=al(a,l)|0,l=S()|0,s=Ut(s)|0,(s|0)==1&&(s=Ut(1)|0),f=f+1|0;while((f|0)!=(m|0));m=s,f=a,a=l}else m=s,f=r,a=n;else if(l){f=0,a=r,l=n;do a=Zn(a,l)|0,l=S()|0,s=Ut(s)|0,f=f+1|0;while((f|0)!=(m|0));m=s,f=a,a=l}else m=s,f=r,a=n;if(qn(f,a,nA)|0,I||OA(27563,27538,191,27548),l=(M|0)!=0,s=(j|0)!=0,l&s&&OA(27590,27538,192,27548),l){if(s=Pt(e,A)|0,(s|0)==7){i=5;break}if(xA[22e3+(s*7|0)+L>>0]|0){i=1;break}a=t[21168+(s*28|0)+(L<<2)>>2]|0,f=a}else if(s){if(s=Pt(f,a)|0,(s|0)==7){i=5;break}if(xA[22e3+(s*7|0)+m>>0]|0){i=1;break}f=0,a=t[21168+(m*28|0)+(s<<2)>>2]|0}else f=0,a=0;if((f|a|0)<0)i=5;else{if((a|0)>0){l=nA+4|0,s=0;do B0(l),s=s+1|0;while((s|0)!=(a|0))}if(t[W>>2]=0,t[W+4>>2]=0,t[W+8>>2]=0,gn(W,L),i|0)for(;Jt(i)|0?br(W):Ht(W),(i|0)>1;)i=i+-1|0;if((f|0)>0){i=0;do B0(W),i=i+1|0;while((i|0)!=(f|0))}G=nA+4|0,Ze(G,W,G),Me(G),G=51}}else if(qn(r,n,nA)|0,(M|0)!=0&(j|0)!=0)if((m|0)!=(f|0)&&OA(27621,27538,261,27548),s=Pt(e,A)|0,i=Pt(r,n)|0,(s|0)==7|(i|0)==7)i=5;else if(xA[22e3+(s*7|0)+i>>0]|0)i=1;else if(s=t[21168+(s*28|0)+(i<<2)>>2]|0,(s|0)>0){l=nA+4|0,i=0;do B0(l),i=i+1|0;while((i|0)!=(s|0));G=51}else G=51;else G=51;while(!1);return(G|0)==51&&(i=nA+4|0,t[o>>2]=t[i>>2],t[o+4>>2]=t[i+4>>2],t[o+8>>2]=t[i+8>>2],i=0),nA=i,k=q,nA|0}function Xo(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0;if(G=k,k=k+48|0,f=G+36|0,s=G+24|0,l=G+12|0,a=G,o=wA(e|0,A|0,52)|0,S()|0,o=o&15,j=wA(e|0,A|0,45)|0,S()|0,j=j&127,j>>>0>121)return n=5,k=G,n|0;if(m=Re(j)|0,EA(o|0,0,52)|0,W=S()|0|134225919,i=n,t[i>>2]=-1,t[i+4>>2]=W,!o)return o=St(r)|0,(o|0)==7||(o=nr(j,o)|0,(o|0)==127)?(W=1,k=G,W|0):(I=EA(o|0,0,45)|0,L=S()|0,j=n,L=t[j+4>>2]&-1040385|L,W=n,t[W>>2]=t[j>>2]|I,t[W+4>>2]=L,W=0,k=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=o;;){if(i=r,r=r+-1|0,t[s>>2]=t[f>>2],t[s+4>>2]=t[f+4>>2],t[s+8>>2]=t[f+8>>2],Jt(i)|0){if(o=wr(f)|0,o|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],br(l)}else{if(o=mn(f)|0,o|0){r=13;break}t[l>>2]=t[f>>2],t[l+4>>2]=t[f+4>>2],t[l+8>>2]=t[f+8>>2],Ht(l)}if(yt(s,l,a),Me(a),o=n,q=t[o>>2]|0,o=t[o+4>>2]|0,$=(15-i|0)*3|0,nA=EA(7,0,$|0)|0,o=o&~(S()|0),$=EA(St(a)|0,0,$|0)|0,o=S()|0|o,W=n,t[W>>2]=$|q&~nA,t[W+4>>2]=o,(i|0)<=1){r=14;break}}A:do if((r|0)!=13&&(r|0)==14)if((t[f>>2]|0)<=1&&(t[f+4>>2]|0)<=1&&(t[f+8>>2]|0)<=1){r=St(f)|0,o=nr(j,r)|0,(o|0)==127?a=0:a=Re(o)|0;e:do if(r){if(m){if(o=Pt(e,A)|0,(o|0)==7){o=5;break A}if(i=t[21376+(o*28|0)+(r<<2)>>2]|0,(i|0)>0){o=r,r=0;do o=Gt(o)|0,r=r+1|0;while((r|0)!=(i|0))}else o=r;if((o|0)==1){o=9;break A}r=nr(j,o)|0,(r|0)==127&&OA(27648,27538,411,27678),Re(r)|0?OA(27693,27538,412,27678):(L=r,I=i,M=o)}else L=o,I=0,M=r;if(l=t[4272+(j*28|0)+(M<<2)>>2]|0,(l|0)<=-1&&OA(27724,27538,419,27678),!a){if((I|0)<0){o=5;break A}if(I|0){i=n,o=0,r=t[i>>2]|0,i=t[i+4>>2]|0;do r=lr(r,i)|0,i=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=i,o=o+1|0;while((o|0)<(I|0))}if((l|0)<=0){o=L,r=58;break}for(i=n,o=0,r=t[i>>2]|0,i=t[i+4>>2]|0;;)if(r=lr(r,i)|0,i=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=i,o=o+1|0,(o|0)==(l|0)){o=L,r=58;break e}}if(s=or(L,j)|0,(s|0)==7&&OA(27514,27538,428,27678),o=n,r=t[o>>2]|0,o=t[o+4>>2]|0,(l|0)>0){i=0;do r=lr(r,o)|0,o=S()|0,$=n,t[$>>2]=r,t[$+4>>2]=o,i=i+1|0;while((i|0)!=(l|0))}if(o=Pt(r,o)|0,(o|0)==7&&OA(27795,27538,440,27678),r=Et(L)|0,r=t[(r?21792:21584)+(s*28|0)+(o<<2)>>2]|0,(r|0)<0&&OA(27795,27538,454,27678),!r)o=L,r=58;else{s=n,o=0,i=t[s>>2]|0,s=t[s+4>>2]|0;do i=Kn(i,s)|0,s=S()|0,$=n,t[$>>2]=i,t[$+4>>2]=s,o=o+1|0;while((o|0)<(r|0));o=L,r=58}}else if((m|0)!=0&(a|0)!=0){if(r=Pt(e,A)|0,i=n,i=Pt(t[i>>2]|0,t[i+4>>2]|0)|0,(r|0)==7|(i|0)==7){o=5;break A}if(i=t[21376+(r*28|0)+(i<<2)>>2]|0,(i|0)<0){o=5;break A}if(!i)r=59;else{l=n,r=0,s=t[l>>2]|0,l=t[l+4>>2]|0;do s=lr(s,l)|0,l=S()|0,$=n,t[$>>2]=s,t[$+4>>2]=l,r=r+1|0;while((r|0)<(i|0));r=58}}else r=58;while(!1);if((r|0)==58&&a&&(r=59),(r|0)==59&&($=n,(Pt(t[$>>2]|0,t[$+4>>2]|0)|0)==1)){o=9;break}$=n,nA=t[$>>2]|0,$=t[$+4>>2]&-1040385,q=EA(o|0,0,45)|0,$=$|(S()|0),o=n,t[o>>2]=nA|q,t[o+4>>2]=$,o=0}else o=1;while(!1);return $=o,k=G,$|0}function _l(e,A,r,n,o,i){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0;var s=0,l=0;return l=k,k=k+16|0,s=l,o?e=15:(e=D0(e,A,r,n,s)|0,e||($r(s,i),e=0)),k=l,e|0}function Tl(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0;return s=k,k=k+16|0,i=s,n?r=15:(r=Mt(r,i)|0,r||(r=Xo(e,A,i,o)|0)),k=s,r|0}function Rl(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0;return a=k,k=k+32|0,s=a+12|0,l=a,i=D0(e,A,e,A,s)|0,i|0?(l=i,k=a,l|0):(e=D0(e,A,r,n,l)|0,e|0?(l=e,k=a,l|0):(s=Er(s,l)|0,l=o,t[l>>2]=s,t[l+4>>2]=((s|0)<0)<<31>>31,l=0,k=a,l|0))}function jl(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0;return a=k,k=k+32|0,s=a+12|0,l=a,i=D0(e,A,e,A,s)|0,!i&&(i=D0(e,A,r,n,l)|0,!i)?(n=Er(s,l)|0,n=KA(n|0,((n|0)<0)<<31>>31|0,1,0)|0,s=S()|0,l=o,t[l>>2]=n,t[l+4>>2]=s,l=0,k=a,l|0):(l=i,k=a,l|0)}function Il(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0;if(QA=k,k=k+48|0,BA=QA+24|0,s=QA+12|0,zA=QA,i=D0(e,A,e,A,BA)|0,!i&&(i=D0(e,A,r,n,s)|0,!i)){$=Er(BA,s)|0,U=(($|0)<0)<<31>>31,t[BA>>2]=0,t[BA+4>>2]=0,t[BA+8>>2]=0,t[s>>2]=0,t[s+4>>2]=0,t[s+8>>2]=0,D0(e,A,e,A,BA)|0&&OA(27795,27538,692,27747),D0(e,A,r,n,s)|0&&OA(27795,27538,697,27747),qr(BA),qr(s),m=($|0)==0?0:1/+($|0),r=t[BA>>2]|0,G=m*+((t[s>>2]|0)-r|0),W=BA+4|0,n=t[W>>2]|0,nA=m*+((t[s+4>>2]|0)-n|0),q=BA+8|0,i=t[q>>2]|0,m=m*+((t[s+8>>2]|0)-i|0),t[zA>>2]=r,M=zA+4|0,t[M>>2]=n,j=zA+8|0,t[j>>2]=i;A:do if(($|0)<0)i=0;else for(I=0,L=0;;){a=+(L>>>0)+4294967296*+(I|0),fe=G*a+ +(r|0),l=nA*a+ +(n|0),a=m*a+ +(i|0),r=~~+En(+fe),s=~~+En(+l),i=~~+En(+a),fe=+$A(+(+(r|0)-fe)),l=+$A(+(+(s|0)-l)),a=+$A(+(+(i|0)-a));do if(fe>l&fe>a)r=0-(s+i)|0,n=s;else if(f=0-r|0,l>a){n=f-i|0;break}else{n=s,i=f-s|0;break}while(!1);if(t[zA>>2]=r,t[M>>2]=n,t[j>>2]=i,Jr(zA),i=Xo(e,A,zA,o+(L<<3)|0)|0,i|0)break A;if(!((I|0)<(U|0)|(I|0)==(U|0)&L>>>0<$>>>0)){i=0;break A}r=KA(L|0,I|0,1,0)|0,n=S()|0,I=n,L=r,r=t[BA>>2]|0,n=t[W>>2]|0,i=t[q>>2]|0}while(!1);return zA=i,k=QA,zA|0}return zA=i,k=QA,zA|0}function U0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0;if((r|0)==0&(n|0)==0)return o=0,i=1,YA(o|0),i|0;i=e,o=A,e=1,A=0;do s=(r&1|0)==0&!0,e=ft((s?1:i)|0,(s?0:o)|0,e|0,A|0)|0,A=S()|0,r=fi(r|0,n|0,1)|0,n=S()|0,i=ft(i|0,o|0,i|0,o|0)|0,o=S()|0;while(!((r|0)==0&(n|0)==0));return YA(A|0),e|0}function to(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0;l=k,k=k+16|0,i=l,s=wA(e|0,A|0,52)|0,S()|0,s=s&15;do if(s){if(o=ar(e,A,i)|0,!o){f=+b[i>>3],a=1/+_e(+f),m=+b[25968+(s<<3)>>3],b[r>>3]=f+m,b[r+8>>3]=f-m,f=+b[i+8>>3],a=m*a,b[r+16>>3]=a+f,b[r+24>>3]=f-a;break}return s=o,k=l,s|0}else{if(o=wA(e|0,A|0,45)|0,S()|0,o=o&127,o>>>0>121)return s=5,k=l,s|0;i=22064+(o<<5)|0,t[r>>2]=t[i>>2],t[r+4>>2]=t[i+4>>2],t[r+8>>2]=t[i+8>>2],t[r+12>>2]=t[i+12>>2],t[r+16>>2]=t[i+16>>2],t[r+20>>2]=t[i+20>>2],t[r+24>>2]=t[i+24>>2],t[r+28>>2]=t[i+28>>2];break}while(!1);return VA(r,n?1.4:1.1),n=26096+(s<<3)|0,(t[n>>2]|0)==(e|0)&&(t[n+4>>2]|0)==(A|0)&&(b[r>>3]=1.5707963267948966),s=26224+(s<<3)|0,(t[s>>2]|0)==(e|0)&&(t[s+4>>2]|0)==(A|0)&&(b[r+8>>3]=-1.5707963267948966),+b[r>>3]!=1.5707963267948966&&+b[r+8>>3]!=-1.5707963267948966?(s=0,k=l,s|0):(b[r+16>>3]=3.141592653589793,b[r+24>>3]=-3.141592653589793,s=0,k=l,s|0)}function Ll(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0;f=k,k=k+48|0,s=f+32|0,i=f+40|0,l=f,Dt(s,0,0,0),a=t[s>>2]|0,s=t[s+4>>2]|0;do if(r>>>0<=15){if(o=on(n)|0,o|0){n=l,t[n>>2]=0,t[n+4>>2]=0,t[l+8>>2]=o,t[l+12>>2]=-1,n=l+16|0,a=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,xA[n+12>>0]=0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}if(o=Qt((t[A+8>>2]|0)+1|0,32)|0,o){ro(A,o),m=l,t[m>>2]=a,t[m+4>>2]=s,t[l+8>>2]=0,t[l+12>>2]=r,t[l+16>>2]=n,t[l+20>>2]=A,t[l+24>>2]=o,xA[l+28>>0]=0,a=l+29|0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}else{n=l,t[n>>2]=0,t[n+4>>2]=0,t[l+8>>2]=13,t[l+12>>2]=-1,n=l+16|0,a=l+29|0,t[n>>2]=0,t[n+4>>2]=0,t[n+8>>2]=0,xA[n+12>>0]=0,xA[a>>0]=xA[i>>0]|0,xA[a+1>>0]=xA[i+1>>0]|0,xA[a+2>>0]=xA[i+2>>0]|0;break}}else a=l,t[a>>2]=0,t[a+4>>2]=0,t[l+8>>2]=4,t[l+12>>2]=-1,a=l+16|0,m=l+29|0,t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,xA[a+12>>0]=0,xA[m>>0]=xA[i>>0]|0,xA[m+1>>0]=xA[i+1>>0]|0,xA[m+2>>0]=xA[i+2>>0]|0;while(!1);kn(l),t[e>>2]=t[l>>2],t[e+4>>2]=t[l+4>>2],t[e+8>>2]=t[l+8>>2],t[e+12>>2]=t[l+12>>2],t[e+16>>2]=t[l+16>>2],t[e+20>>2]=t[l+20>>2],t[e+24>>2]=t[l+24>>2],t[e+28>>2]=t[l+28>>2],k=f}function kn(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0;if(U=k,k=k+336|0,I=U+168|0,L=U,n=e,r=t[n>>2]|0,n=t[n+4>>2]|0,(r|0)==0&(n|0)==0){k=U;return}if(A=e+28|0,xA[A>>0]|0?(r=Ai(r,n)|0,n=S()|0):xA[A>>0]=1,$=e+20|0,!(t[t[$>>2]>>2]|0)){A=e+24|0,r=t[A>>2]|0,r|0&&qA(r),q=e,t[q>>2]=0,t[q+4>>2]=0,t[e+8>>2]=0,t[$>>2]=0,t[e+12>>2]=-1,t[e+16>>2]=0,t[A>>2]=0,k=U;return}q=e+16|0,A=t[q>>2]|0,o=A&15;A:do if((r|0)==0&(n|0)==0)nA=e+24|0;else{G=e+12|0,M=(o|0)==3,m=A&255,a=(o|1|0)==3,j=e+24|0,f=(o+-1|0)>>>0<3,s=(o|2|0)==3,l=L+8|0;e:for(;;){if(i=wA(r|0,n|0,52)|0,S()|0,i=i&15,(i|0)==(t[G>>2]|0)){switch(m&15){case 0:case 2:case 3:{if(o=ar(r,n,I)|0,o|0){W=15;break e}if(no(t[$>>2]|0,t[j>>2]|0,I)|0){W=19;break e}break}}if(a&&(o=t[(t[$>>2]|0)+4>>2]|0,t[I>>2]=t[o>>2],t[I+4>>2]=t[o+4>>2],t[I+8>>2]=t[o+8>>2],t[I+12>>2]=t[o+12>>2],a0(26832,I)|0)){if($n(t[(t[$>>2]|0)+4>>2]|0,i,L)|0){W=25;break}if(o=L,(t[o>>2]|0)==(r|0)&&(t[o+4>>2]|0)==(n|0)){W=29;break}}if(f){if(o=_r(r,n,I)|0,o|0){W=32;break}if(to(r,n,L,0)|0){W=36;break}if(s&&ti(t[$>>2]|0,t[j>>2]|0,I,L)|0){W=42;break}if(a&&ri(t[$>>2]|0,t[j>>2]|0,I,L)|0){W=42;break}}if(M){if(A=to(r,n,I,1)|0,o=t[j>>2]|0,A|0){W=45;break}if(Ne(o,I)|0){if(lA(L,I),z(I,t[j>>2]|0)|0){W=53;break}if(no(t[$>>2]|0,t[j>>2]|0,l)|0){W=53;break}if(ri(t[$>>2]|0,t[j>>2]|0,L,I)|0){W=53;break}}}}do if((i|0)<(t[G>>2]|0)){if(A=to(r,n,I,1)|0,o=t[j>>2]|0,A|0){W=58;break e}if(!(Ne(o,I)|0)){W=73;break}if(z(t[j>>2]|0,I)|0&&(lA(L,I),ti(t[$>>2]|0,t[j>>2]|0,L,I)|0)){W=65;break e}if(r=Wo(r,n,i+1|0,L)|0,r|0){W=67;break e}n=L,r=t[n>>2]|0,n=t[n+4>>2]|0}else W=73;while(!1);if((W|0)==73&&(W=0,r=Ai(r,n)|0,n=S()|0),(r|0)==0&(n|0)==0){nA=j;break A}}switch(W|0){case 15:{A=t[j>>2]|0,A|0&&qA(A),W=e,t[W>>2]=0,t[W+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>2]=0,t[e+8>>2]=o,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,k=U;return}case 32:{A=t[j>>2]|0,A|0&&qA(A),nA=e,t[nA>>2]=0,t[nA+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>2]=0,t[e+8>>2]=o,k=U;return}case 36:{OA(27795,27761,493,27772);break}case 42:{t[e>>2]=r,t[e+4>>2]=n,k=U;return}case 45:{o|0&&qA(o),W=e,t[W>>2]=0,t[W+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>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:{o|0&&qA(o),W=e,t[W>>2]=0,t[W+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>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[j>>2]|0,A|0&&qA(A),nA=e,t[nA>>2]=0,t[nA+4>>2]=0,t[$>>2]=0,t[G>>2]=-1,t[q>>2]=0,t[j>>2]=0,t[e+8>>2]=r,k=U;return}}if((W|0)==20){k=U;return}else if((W|0)==55){k=U;return}else if((W|0)==71){k=U;return}}while(!1);A=t[nA>>2]|0,A|0&&qA(A),W=e,t[W>>2]=0,t[W+4>>2]=0,t[e+8>>2]=0,t[$>>2]=0,t[e+12>>2]=-1,t[q>>2]=0,t[nA>>2]=0,k=U}function Ai(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0;M=k,k=k+16|0,m=M,n=wA(e|0,A|0,52)|0,S()|0,n=n&15,r=wA(e|0,A|0,45)|0,S()|0;do if(n){for(;r=EA(n+4095|0,0,52)|0,o=S()|0|A&-15728641,i=(15-n|0)*3|0,s=EA(7,0,i|0)|0,l=S()|0,r=r|e|s,o=o|l,a=wA(e|0,A|0,i|0)|0,S()|0,a=a&7,n=n+-1|0,!(a>>>0<6);)if(n)A=o,e=r;else{f=4;break}if((f|0)==4){r=wA(r|0,o|0,45)|0,S()|0;break}return m=(a|0)==0&(Oe(r,o)|0)!=0,m=EA((m?2:1)+a|0,0,i|0)|0,f=S()|0|A&~l,m=m|e&~s,YA(f|0),k=M,m|0}while(!1);return r=r&127,r>>>0>120?(f=0,m=0,YA(f|0),k=M,m|0):(Dt(m,0,r+1|0,0),f=t[m+4>>2]|0,m=t[m>>2]|0,YA(f|0),k=M,m|0)}function Nl(e,A,r,n,o,i){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0,i=i|0;var s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0;W=k,k=k+160|0,M=W+80|0,l=W+64|0,j=W+112|0,G=W,Ll(M,e,A,r),f=M,Xn(l,t[f>>2]|0,t[f+4>>2]|0,A),f=l,a=t[f>>2]|0,f=t[f+4>>2]|0,s=t[M+8>>2]|0,I=j+4|0,t[I>>2]=t[M>>2],t[I+4>>2]=t[M+4>>2],t[I+8>>2]=t[M+8>>2],t[I+12>>2]=t[M+12>>2],t[I+16>>2]=t[M+16>>2],t[I+20>>2]=t[M+20>>2],t[I+24>>2]=t[M+24>>2],t[I+28>>2]=t[M+28>>2],I=G,t[I>>2]=a,t[I+4>>2]=f,I=G+8|0,t[I>>2]=s,e=G+12|0,A=j,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(j=G+48|0,t[j>>2]=t[l>>2],t[j+4>>2]=t[l+4>>2],t[j+8>>2]=t[l+8>>2],t[j+12>>2]=t[l+12>>2],(a|0)==0&(f|0)==0)return G=s,k=W,G|0;r=G+16|0,m=G+24|0,M=G+28|0,s=0,l=0,A=a,e=f;do{if(!((s|0)<(o|0)|(s|0)==(o|0)&l>>>0>>0)){L=4;break}if(f=l,l=KA(l|0,s|0,1,0)|0,s=S()|0,f=i+(f<<3)|0,t[f>>2]=A,t[f+4>>2]=e,Ao(j),e=j,A=t[e>>2]|0,e=t[e+4>>2]|0,(A|0)==0&(e|0)==0){if(kn(r),A=r,e=t[A>>2]|0,A=t[A+4>>2]|0,(e|0)==0&(A|0)==0){L=10;break}Ko(e,A,t[M>>2]|0,j),e=j,A=t[e>>2]|0,e=t[e+4>>2]|0}f=G,t[f>>2]=A,t[f+4>>2]=e}while(!((A|0)==0&(e|0)==0));return(L|0)==4?(e=G+40|0,A=t[e>>2]|0,A|0&&qA(A),L=G+16|0,t[L>>2]=0,t[L+4>>2]=0,t[m>>2]=0,t[G+36>>2]=0,t[M>>2]=-1,t[G+32>>2]=0,t[e>>2]=0,Ko(0,0,0,j),t[G>>2]=0,t[G+4>>2]=0,t[I>>2]=0,G=14,k=W,G|0):((L|0)==10&&(t[G>>2]=0,t[G+4>>2]=0,t[I>>2]=t[m>>2]),G=t[I>>2]|0,k=W,G|0)}function Fl(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0;if(M=k,k=k+48|0,a=M+32|0,l=M+40|0,f=M,!(t[e>>2]|0))return m=n,t[m>>2]=0,t[m+4>>2]=0,m=0,k=M,m|0;Dt(a,0,0,0),s=a,o=t[s>>2]|0,s=t[s+4>>2]|0;do if(A>>>0>15)m=f,t[m>>2]=0,t[m+4>>2]=0,t[f+8>>2]=4,t[f+12>>2]=-1,m=f+16|0,r=f+29|0,t[m>>2]=0,t[m+4>>2]=0,t[m+8>>2]=0,xA[m+12>>0]=0,xA[r>>0]=xA[l>>0]|0,xA[r+1>>0]=xA[l+1>>0]|0,xA[r+2>>0]=xA[l+2>>0]|0,r=4,m=9;else{if(r=on(r)|0,r|0){a=f,t[a>>2]=0,t[a+4>>2]=0,t[f+8>>2]=r,t[f+12>>2]=-1,a=f+16|0,m=f+29|0,t[a>>2]=0,t[a+4>>2]=0,t[a+8>>2]=0,xA[a+12>>0]=0,xA[m>>0]=xA[l>>0]|0,xA[m+1>>0]=xA[l+1>>0]|0,xA[m+2>>0]=xA[l+2>>0]|0,m=9;break}if(r=Qt((t[e+8>>2]|0)+1|0,32)|0,!r){m=f,t[m>>2]=0,t[m+4>>2]=0,t[f+8>>2]=13,t[f+12>>2]=-1,m=f+16|0,r=f+29|0,t[m>>2]=0,t[m+4>>2]=0,t[m+8>>2]=0,xA[m+12>>0]=0,xA[r>>0]=xA[l>>0]|0,xA[r+1>>0]=xA[l+1>>0]|0,xA[r+2>>0]=xA[l+2>>0]|0,r=13,m=9;break}ro(e,r),I=f,t[I>>2]=o,t[I+4>>2]=s,s=f+8|0,t[s>>2]=0,t[f+12>>2]=A,t[f+20>>2]=e,t[f+24>>2]=r,xA[f+28>>0]=0,o=f+29|0,xA[o>>0]=xA[l>>0]|0,xA[o+1>>0]=xA[l+1>>0]|0,xA[o+2>>0]=xA[l+2>>0]|0,t[f+16>>2]=3,j=+ir(r),j=j*+Yr(r),i=+$A(+ +b[r>>3]),i=j/+_e(+ +Cn(+i,+ +$A(+ +b[r+8>>3])))*6371.007180918475*6371.007180918475,o=f+12|0,r=t[o>>2]|0;A:do if((r|0)>0)do{if(Zo(r+-1|0,a)|0,!(i/+b[a>>3]>10))break A;I=t[o>>2]|0,r=I+-1|0,t[o>>2]=r}while((I|0)>1);while(!1);if(kn(f),o=n,t[o>>2]=0,t[o+4>>2]=0,o=f,r=t[o>>2]|0,o=t[o+4>>2]|0,!((r|0)==0&(o|0)==0))do g0(r,o,A,a)|0,l=a,e=n,l=KA(t[e>>2]|0,t[e+4>>2]|0,t[l>>2]|0,t[l+4>>2]|0)|0,e=S()|0,I=n,t[I>>2]=l,t[I+4>>2]=e,kn(f),I=f,r=t[I>>2]|0,o=t[I+4>>2]|0;while(!((r|0)==0&(o|0)==0));r=t[s>>2]|0}while(!1);return I=r,k=M,I|0}function nn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;if(!(a0(A,r)|0)||(A=Ft(A)|0,n=+b[r>>3],o=+b[r+8>>3],o=A&o<0?o+6.283185307179586:o,j=t[e>>2]|0,(j|0)<=0))return j=0,j|0;if(M=t[e+4>>2]|0,A){A=0,m=o,r=-1,e=0;A:for(;;){for(f=e;s=+b[M+(f<<4)>>3],o=+b[M+(f<<4)+8>>3],e=(r+2|0)%(j|0)|0,i=+b[M+(e<<4)>>3],l=+b[M+(e<<4)+8>>3],s>i?(a=s,s=l):(a=i,i=s,s=o,o=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=f+1|0,(r|0)>=(j|0)){r=22;break A}else e=f,f=r,r=e;if(l=s<0?s+6.283185307179586:s,s=o<0?o+6.283185307179586:o,m=l==m|s==m?m+-2220446049250313e-31:m,a=l+(s-l)*((n-i)/(a-i)),(a<0?a+6.283185307179586:a)>m&&(A=A^1),e=f+1|0,(e|0)>=(j|0)){r=22;break}else r=f}if((r|0)==22)return A|0}else{A=0,m=o,r=-1,e=0;A:for(;;){for(f=e;s=+b[M+(f<<4)>>3],o=+b[M+(f<<4)+8>>3],e=(r+2|0)%(j|0)|0,i=+b[M+(e<<4)>>3],l=+b[M+(e<<4)+8>>3],s>i?(a=s,s=l):(a=i,i=s,s=o,o=l),n=n==i|n==a?n+2220446049250313e-31:n,!!(na);)if(r=f+1|0,(r|0)>=(j|0)){r=22;break A}else e=f,f=r,r=e;if(m=s==m|o==m?m+-2220446049250313e-31:m,s+(o-s)*((n-i)/(a-i))>m&&(A=A^1),e=f+1|0,(e|0)>=(j|0)){r=22;break}else r=f}if((r|0)==22)return A|0}return 0}function ei(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0;if(L=t[e>>2]|0,!L){t[A>>2]=0,t[A+4>>2]=0,t[A+8>>2]=0,t[A+12>>2]=0,t[A+16>>2]=0,t[A+20>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0;return}if(G=A+8|0,b[G>>3]=17976931348623157e292,W=A+24|0,b[W>>3]=17976931348623157e292,b[A>>3]=-17976931348623157e292,nA=A+16|0,b[nA>>3]=-17976931348623157e292,!((L|0)<=0)){for(j=t[e+4>>2]|0,f=17976931348623157e292,m=-17976931348623157e292,M=0,e=-1,i=17976931348623157e292,s=17976931348623157e292,a=-17976931348623157e292,n=-17976931348623157e292,I=0;r=+b[j+(I<<4)>>3],l=+b[j+(I<<4)+8>>3],e=e+2|0,o=+b[j+(((e|0)==(L|0)?0:e)<<4)+8>>3],r>3]=r,i=r),l>3]=l,s=l),r>a?b[A>>3]=r:r=a,l>n&&(b[nA>>3]=l,n=l),f=l>0&lm?l:m,M=M|+$A(+(l-o))>3.141592653589793,e=I+1|0,(e|0)!=(L|0);)q=I,a=r,I=e,e=q;M&&(b[nA>>3]=m,b[W>>3]=f)}}function on(e){return e=e|0,(e>>>0<4?0:15)|0}function ro(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0;if(L=t[e>>2]|0,L){if(G=A+8|0,b[G>>3]=17976931348623157e292,W=A+24|0,b[W>>3]=17976931348623157e292,b[A>>3]=-17976931348623157e292,nA=A+16|0,b[nA>>3]=-17976931348623157e292,(L|0)>0){for(o=t[e+4>>2]|0,j=17976931348623157e292,I=-17976931348623157e292,n=0,r=-1,a=17976931348623157e292,f=17976931348623157e292,M=-17976931348623157e292,s=-17976931348623157e292,q=0;i=+b[o+(q<<4)>>3],m=+b[o+(q<<4)+8>>3],zA=r+2|0,l=+b[o+(((zA|0)==(L|0)?0:zA)<<4)+8>>3],i>3]=i,a=i),m>3]=m,f=m),i>M?b[A>>3]=i:i=M,m>s&&(b[nA>>3]=m,s=m),j=m>0&mI?m:I,n=n|+$A(+(m-l))>3.141592653589793,r=q+1|0,(r|0)!=(L|0);)zA=q,M=i,q=r,r=zA;n&&(b[nA>>3]=I,b[W>>3]=j)}}else t[A>>2]=0,t[A+4>>2]=0,t[A+8>>2]=0,t[A+12>>2]=0,t[A+16>>2]=0,t[A+20>>2]=0,t[A+24>>2]=0,t[A+28>>2]=0;if(zA=e+8|0,r=t[zA>>2]|0,!((r|0)<=0)){BA=e+12|0,U=0;do if(o=t[BA>>2]|0,n=U,U=U+1|0,W=A+(U<<5)|0,nA=t[o+(n<<3)>>2]|0,nA){if(q=A+(U<<5)+8|0,b[q>>3]=17976931348623157e292,e=A+(U<<5)+24|0,b[e>>3]=17976931348623157e292,b[W>>3]=-17976931348623157e292,$=A+(U<<5)+16|0,b[$>>3]=-17976931348623157e292,(nA|0)>0){for(L=t[o+(n<<3)+4>>2]|0,j=17976931348623157e292,I=-17976931348623157e292,o=0,n=-1,G=0,a=17976931348623157e292,f=17976931348623157e292,m=-17976931348623157e292,s=-17976931348623157e292;i=+b[L+(G<<4)>>3],M=+b[L+(G<<4)+8>>3],n=n+2|0,l=+b[L+(((n|0)==(nA|0)?0:n)<<4)+8>>3],i>3]=i,a=i),M>3]=M,f=M),i>m?b[W>>3]=i:i=m,M>s&&(b[$>>3]=M,s=M),j=M>0&MI?M:I,o=o|+$A(+(M-l))>3.141592653589793,n=G+1|0,(n|0)!=(nA|0);)QA=G,G=n,m=i,n=QA;o&&(b[$>>3]=I,b[e>>3]=j)}}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[zA>>2]|0;while((U|0)<(r|0))}}function no(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if(!(nn(e,A,r)|0))return o=0,o|0;if(o=e+8|0,(t[o>>2]|0)<=0)return o=1,o|0;for(n=e+12|0,e=0;;){if(i=e,e=e+1|0,nn((t[n>>2]|0)+(i<<3)|0,A+(e<<5)|0,r)|0){e=0,n=6;break}if((e|0)>=(t[o>>2]|0)){e=1,n=6;break}}return(n|0)==6?e|0:0}function ti(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(f=k,k=k+16|0,l=f,s=r+8|0,!(nn(e,A,s)|0))return a=0,k=f,a|0;a=e+8|0;A:do if((t[a>>2]|0)>0){for(i=e+12|0,o=0;;){if(m=o,o=o+1|0,nn((t[i>>2]|0)+(m<<3)|0,A+(o<<5)|0,s)|0){o=0;break}if((o|0)>=(t[a>>2]|0))break A}return k=f,o|0}while(!1);if(bn(e,A,r,n)|0)return m=0,k=f,m|0;t[l>>2]=t[r>>2],t[l+4>>2]=s,o=t[a>>2]|0;A:do if((o|0)>0)for(e=e+12|0,s=0,i=o;;){if(o=t[e>>2]|0,(t[o+(s<<3)>>2]|0)>0){if(nn(l,n,t[o+(s<<3)+4>>2]|0)|0){o=0;break A}if(o=s+1|0,bn((t[e>>2]|0)+(s<<3)|0,A+(o<<5)|0,r,n)|0){o=0;break A}i=t[a>>2]|0}else o=s+1|0;if((o|0)<(i|0))s=o;else{o=1;break}}else o=1;while(!1);return m=o,k=f,m|0}function bn(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0,zA=0,QA=0,fe=0;if(zA=k,k=k+176|0,q=zA+172|0,o=zA+168|0,$=zA,!(Ne(A,n)|0))return e=0,k=zA,e|0;if(M0(A,n,q,o),Ir($|0,r|0,168)|0,(t[r>>2]|0)>0){A=0;do QA=$+8+(A<<4)+8|0,nA=+Vt(+b[QA>>3],t[o>>2]|0),b[QA>>3]=nA,A=A+1|0;while((A|0)<(t[r>>2]|0))}G=+b[n>>3],W=+b[n+8>>3],nA=+Vt(+b[n+16>>3],t[o>>2]|0),I=+Vt(+b[n+24>>3],t[o>>2]|0);A:do if((t[e>>2]|0)>0){if(n=e+4|0,o=t[$>>2]|0,(o|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,j=+b[A+(r<<4)>>3],L=+Vt(+b[A+(r<<4)+8>>3],t[q>>2]|0),A=t[n>>2]|0,r=r+1|0,QA=(r|0)%(t[e>>2]|0)|0,i=+b[A+(QA<<4)>>3],s=+Vt(+b[A+(QA<<4)+8>>3],t[q>>2]|0),!(j>=G)|!(i>=G)&&!(j<=W)|!(i<=W)&&!(L<=I)|!(s<=I)&&!(L>=nA)|!(s>=nA)){M=i-j,f=s-L,A=0;do if(fe=A,A=A+1|0,QA=(A|0)==(o|0)?0:A,i=+b[$+8+(fe<<4)+8>>3],s=+b[$+8+(QA<<4)+8>>3]-i,l=+b[$+8+(fe<<4)>>3],a=+b[$+8+(QA<<4)>>3]-l,m=M*s-f*a,m!=0&&(U=L-i,BA=j-l,a=(U*a-s*BA)/m,!(a<0|a>1))&&(m=(M*U-f*BA)/m,m>=0&m<=1)){A=1;break A}while((A|0)<(o|0))}if((r|0)>=(t[e>>2]|0)){A=0;break}}}else A=0;while(!1);return fe=A,k=zA,fe|0}function ri(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0;if(bn(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(o=e+12|0,e=0;;){if(s=e,e=e+1|0,bn((t[o>>2]|0)+(s<<3)|0,A+(e<<5)|0,r,n)|0){e=1,o=6;break}if((e|0)>=(t[i>>2]|0)){e=0,o=6;break}}return(o|0)==6?e|0:0}function Pl(){return 8}function Ql(){return 16}function Ol(){return 168}function zl(){return 8}function Hl(){return 16}function Gl(){return 12}function Ul(){return 8}function Vl(e){return e=e|0,+(+((t[e>>2]|0)>>>0)+4294967296*+(t[e+4>>2]|0))}function Wl(e){e=e|0;var A=0,r=0;return r=+b[e>>3],A=+b[e+8>>3],+ +ye(+(r*r+A*A))}function ni(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0;f=+b[e>>3],a=+b[A>>3]-f,l=+b[e+8>>3],s=+b[A+8>>3]-l,M=+b[r>>3],i=+b[n>>3]-M,j=+b[r+8>>3],m=+b[n+8>>3]-j,i=(i*(l-j)-(f-M)*m)/(a*m-s*i),b[o>>3]=f+a*i,b[o+8>>3]=l+s*i}function oi(e,A){return e=e|0,A=A|0,+$A(+(+b[e>>3]-+b[A>>3]))<11920928955078125e-23?(A=+$A(+(+b[e+8>>3]-+b[A+8>>3]))<11920928955078125e-23,A|0):(A=0,A|0)}function it(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;return o=+b[e>>3]-+b[A>>3],n=+b[e+8>>3]-+b[A+8>>3],r=+b[e+16>>3]-+b[A+16>>3],+(o*o+n*n+r*r)}function Yl(e,A){e=e|0,A=A|0;var r=0,n=0,o=0;r=+b[e>>3],n=+_e(+r),r=+ie(+r),b[A+16>>3]=r,r=+b[e+8>>3],o=n*+_e(+r),b[A>>3]=o,r=n*+ie(+r),b[A+8>>3]=r}function Kl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if(i=k,k=k+16|0,o=i,n=Oe(e,A)|0,(r+-1|0)>>>0>5||(n=(n|0)!=0,(r|0)==1&n))return o=-1,k=i,o|0;do if(sn(e,A,o)|0)n=-1;else if(n){n=((t[26352+(r<<2)>>2]|0)+5-(t[o>>2]|0)|0)%5|0;break}else{n=((t[26384+(r<<2)>>2]|0)+6-(t[o>>2]|0)|0)%6|0;break}while(!1);return o=n,k=i,o|0}function sn(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0;if(m=k,k=k+32|0,l=m+16|0,a=m,n=Dr(e,A,l)|0,n|0)return r=n,k=m,r|0;i=te(e,A)|0,f=Pt(e,A)|0,H0(i,a),n=qt(i,t[l>>2]|0)|0;do if(Re(i)|0){do switch(i|0){case 4:{o=0;break}case 14:{o=1;break}case 24:{o=2;break}case 38:{o=3;break}case 49:{o=4;break}case 58:{o=5;break}case 63:{o=6;break}case 72:{o=7;break}case 83:{o=8;break}case 97:{o=9;break}case 107:{o=10;break}case 117:{o=11;break}default:OA(27795,27797,75,27806)}while(!1);if(s=t[26416+(o*24|0)+8>>2]|0,A=t[26416+(o*24|0)+16>>2]|0,e=t[l>>2]|0,(e|0)!=(t[a>>2]|0)&&(a=Et(i)|0,e=t[l>>2]|0,a|(e|0)==(A|0)&&(n=(n+1|0)%6|0)),(f|0)==3&(e|0)==(A|0)){n=(n+5|0)%6|0;break}(f|0)==5&(e|0)==(s|0)&&(n=(n+1|0)%6|0)}while(!1);return t[r>>2]=n,r=0,k=m,r|0}function Xt(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0;if($=k,k=k+32|0,q=$+24|0,W=$+20|0,L=$+8|0,I=$+16|0,j=$,a=(Oe(e,A)|0)==0,a=a?6:5,m=wA(e|0,A|0,52)|0,S()|0,m=m&15,a>>>0<=r>>>0)return n=2,k=$,n|0;M=(m|0)==0,!M&&(G=EA(7,0,(m^15)*3|0)|0,(G&e|0)==0&((S()|0)&A|0)==0)?o=r:i=4;A:do if((i|0)==4){if(o=(Oe(e,A)|0)!=0,((o?4:5)|0)<(r|0)||sn(e,A,q)|0||(i=(t[q>>2]|0)+r|0,o?o=26704+(((i|0)%5|0)<<2)|0:o=26736+(((i|0)%6|0)<<2)|0,G=t[o>>2]|0,(G|0)==7))return n=1,k=$,n|0;t[W>>2]=0,o=Y(e,A,G,W,L)|0;do if(!o){if(l=L,f=t[l>>2]|0,l=t[l+4>>2]|0,s=l>>>0>>0|(l|0)==(A|0)&f>>>0>>0,i=s?f:e,s=s?l:A,!M&&(M=EA(7,0,(m^15)*3|0)|0,(f&M|0)==0&(l&(S()|0)|0)==0))o=r;else{if(l=(r+-1+a|0)%(a|0)|0,o=Oe(e,A)|0,(l|0)<0&&OA(27795,27797,248,27822),a=(o|0)!=0,((a?4:5)|0)<(l|0)&&OA(27795,27797,248,27822),sn(e,A,q)|0&&OA(27795,27797,248,27822),o=(t[q>>2]|0)+l|0,a?o=26704+(((o|0)%5|0)<<2)|0:o=26736+(((o|0)%6|0)<<2)|0,l=t[o>>2]|0,(l|0)==7&&OA(27795,27797,248,27822),t[I>>2]=0,o=Y(e,A,l,I,j)|0,o|0)break;f=j,a=t[f>>2]|0,f=t[f+4>>2]|0;do if(f>>>0>>0|(f|0)==(s|0)&a>>>0>>0){if(Oe(a,f)|0?i=Ae(a,f,e,A)|0:i=t[26800+((((t[I>>2]|0)+(t[26768+(l<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,o=Oe(a,f)|0,(i+-1|0)>>>0>5){o=-1,i=a,s=f;break}if(o=(o|0)!=0,(i|0)==1&o){o=-1,i=a,s=f;break}do if(sn(a,f,q)|0)o=-1;else if(o){o=((t[26352+(i<<2)>>2]|0)+5-(t[q>>2]|0)|0)%5|0;break}else{o=((t[26384+(i<<2)>>2]|0)+6-(t[q>>2]|0)|0)%6|0;break}while(!1);i=a,s=f}else o=r;while(!1);l=L,f=t[l>>2]|0,l=t[l+4>>2]|0}if((i|0)==(f|0)&(s|0)==(l|0)){if(a=(Oe(f,l)|0)!=0,a?e=Ae(f,l,e,A)|0:e=t[26800+((((t[W>>2]|0)+(t[26768+(G<<2)>>2]|0)|0)%6|0)<<2)>>2]|0,o=Oe(f,l)|0,(e+-1|0)>>>0<=5&&(nA=(o|0)!=0,!((e|0)==1&nA)))do if(sn(f,l,q)|0)o=-1;else if(nA){o=((t[26352+(e<<2)>>2]|0)+5-(t[q>>2]|0)|0)%5|0;break}else{o=((t[26384+(e<<2)>>2]|0)+6-(t[q>>2]|0)|0)%6|0;break}while(!1);else o=-1;o=o+1|0,o=(o|0)==6|a&(o|0)==5?0:o}A=s,e=i;break A}while(!1);return n=o,k=$,n|0}while(!1);return nA=EA(o|0,0,56)|0,q=S()|0|A&-2130706433|536870912,t[n>>2]=nA|e,t[n+4>>2]=q,n=0,k=$,n|0}function Zl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;return i=(Oe(e,A)|0)==0,n=Xt(e,A,0,r)|0,o=(n|0)==0,i?!o||(n=Xt(e,A,1,r+8|0)|0,n|0)||(n=Xt(e,A,2,r+16|0)|0,n|0)||(n=Xt(e,A,3,r+24|0)|0,n|0)||(n=Xt(e,A,4,r+32|0)|0,n)?(i=n,i|0):Xt(e,A,5,r+40|0)|0:!o||(n=Xt(e,A,1,r+8|0)|0,n|0)||(n=Xt(e,A,2,r+16|0)|0,n|0)||(n=Xt(e,A,3,r+24|0)|0,n|0)||(n=Xt(e,A,4,r+32|0)|0,n|0)?(i=n,i|0):(i=r+40|0,t[i>>2]=0,t[i+4>>2]=0,i=0,i|0)}function $l(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0,l=0,a=0;return a=k,k=k+192|0,o=a,i=a+168|0,s=wA(e|0,A|0,56)|0,S()|0,s=s&7,l=A&-2130706433|134217728,n=Dr(e,l,i)|0,n|0?(l=n,k=a,l|0):(A=wA(e|0,A|0,52)|0,S()|0,A=A&15,Oe(e,l)|0?w(i,A,s,1,o):AA(i,A,s,1,o),l=o+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,k=a,l|0)}function ii(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return o=k,k=k+16|0,r=o,!(!0&(A&2013265920|0)==536870912)||(n=A&-2130706433|134217728,!(Ue(e,n)|0))?(n=0,k=o,n|0):(i=wA(e|0,A|0,56)|0,S()|0,i=(Xt(e,n,i&7,r)|0)==0,n=r,n=i&((t[n>>2]|0)==(e|0)?(t[n+4>>2]|0)==(A|0):0)&1,k=o,n|0)}function si(e,A,r){e=e|0,A=A|0,r=r|0;var n=0;(A|0)>0?(n=Qt(A,4)|0,t[e>>2]=n,n||OA(27835,27858,40,27872)):t[e>>2]=0,t[e+4>>2]=A,t[e+8>>2]=0,t[e+12>>2]=r}function li(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0;o=e+4|0,i=e+12|0,s=e+8|0;A:for(;;){for(r=t[o>>2]|0,A=0;;){if((A|0)>=(r|0))break A;if(n=t[e>>2]|0,l=t[n+(A<<2)>>2]|0,!l)A=A+1|0;else break}A=n+(~~(+$A(+(+lt(10,+ +(15-(t[i>>2]|0)|0))*(+b[l>>3]+ +b[l+8>>3])))%+(r|0))>>>0<<2)|0,r=t[A>>2]|0;e:do if(r|0){if(n=l+32|0,(r|0)==(l|0))t[A>>2]=t[n>>2];else{if(r=r+32|0,A=t[r>>2]|0,!A)break;for(;(A|0)!=(l|0);)if(r=A+32|0,A=t[r>>2]|0,!A)break e;t[r>>2]=t[n>>2]}qA(l),t[s>>2]=(t[s>>2]|0)+-1}while(!1)}qA(t[e>>2]|0)}function ai(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 ui(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;if(r=~~(+$A(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+b[A>>3]+ +b[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(o=r;;){if((o|0)==(A|0)){o=8;break}if(r=t[o+32>>2]|0,r)n=o,o=r;else{r=1,o=10;break}}if((o|0)==8){t[n+32>>2]=t[i>>2];break}else if((o|0)==10)return r|0}else t[r>>2]=t[i>>2];while(!1);return qA(A),i=e+8|0,t[i>>2]=(t[i>>2]|0)+-1,i=0,i|0}function ql(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=0;i=p0(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],o=i+16|0,t[o>>2]=t[r>>2],t[o+4>>2]=t[r+4>>2],t[o+8>>2]=t[r+8>>2],t[o+12>>2]=t[r+12>>2],t[i+32>>2]=0,o=~~(+$A(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+b[A>>3]+ +b[A+8>>3])))%+(t[e+4>>2]|0))>>>0,o=(t[e>>2]|0)+(o<<2)|0,n=t[o>>2]|0;do if(!n)t[o>>2]=i;else{for(;!(Tr(n,A)|0&&Tr(n+16|0,r)|0);)if(o=t[n+32>>2]|0,n=(o|0)==0?n:o,!(t[n+32>>2]|0)){s=10;break}if((s|0)==10){t[n+32>>2]=i;break}return qA(i),s=n,s|0}while(!1);return s=e+8|0,t[s>>2]=(t[s>>2]|0)+1,s=i,s|0}function Jl(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0;if(o=~~(+$A(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+b[A>>3]+ +b[A+8>>3])))%+(t[e+4>>2]|0))>>>0,o=t[(t[e>>2]|0)+(o<<2)>>2]|0,!o)return r=0,r|0;if(!r){for(e=o;;){if(Tr(e,A)|0){n=10;break}if(e=t[e+32>>2]|0,!e){e=0,n=10;break}}if((n|0)==10)return e|0}for(e=o;;){if(Tr(e,A)|0&&Tr(e+16|0,r)|0){n=10;break}if(e=t[e+32>>2]|0,!e){e=0,n=10;break}}return(n|0)==10?e|0:0}function Xl(e,A){e=e|0,A=A|0;var r=0;if(r=~~(+$A(+(+lt(10,+ +(15-(t[e+12>>2]|0)|0))*(+b[A>>3]+ +b[A+8>>3])))%+(t[e+4>>2]|0))>>>0,e=t[(t[e>>2]|0)+(r<<2)>>2]|0,!e)return r=0,r|0;for(;;){if(Tr(e,A)|0){A=5;break}if(e=t[e+32>>2]|0,!e){e=0,A=5;break}}return(A|0)==5?e|0:0}function Aa(){return 27920}function V0(e){return e=+e,~~+di(+e)|0}function p0(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0,G=0,W=0,nA=0,q=0,$=0,U=0,BA=0;BA=k,k=k+16|0,j=BA;do if(e>>>0<245){if(f=e>>>0<11?16:e+11&-8,e=f>>>3,M=t[6981]|0,r=M>>>e,r&3|0)return A=(r&1^1)+e|0,e=27964+(A<<1<<2)|0,r=e+8|0,n=t[r>>2]|0,o=n+8|0,i=t[o>>2]|0,(i|0)==(e|0)?t[6981]=M&~(1<>2]=e,t[r>>2]=i),U=A<<3,t[n+4>>2]=U|3,U=n+U+4|0,t[U>>2]=t[U>>2]|1,U=o,k=BA,U|0;if(m=t[6983]|0,f>>>0>m>>>0){if(r|0)return A=2<>>12&16,A=A>>>l,r=A>>>5&8,A=A>>>r,i=A>>>2&4,A=A>>>i,e=A>>>1&2,A=A>>>e,n=A>>>1&1,n=(r|l|i|e|n)+(A>>>n)|0,A=27964+(n<<1<<2)|0,e=A+8|0,i=t[e>>2]|0,l=i+8|0,r=t[l>>2]|0,(r|0)==(A|0)?(e=M&~(1<>2]=A,t[e>>2]=r,e=M),U=n<<3,s=U-f|0,t[i+4>>2]=f|3,o=i+f|0,t[o+4>>2]=s|1,t[i+U>>2]=s,m|0&&(n=t[6986]|0,A=m>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=n,t[A+12>>2]=n,t[n+8>>2]=A,t[n+12>>2]=r),t[6983]=s,t[6986]=o,U=l,k=BA,U|0;if(i=t[6982]|0,i){for(r=(i&0-i)+-1|0,o=r>>>12&16,r=r>>>o,n=r>>>5&8,r=r>>>n,s=r>>>2&4,r=r>>>s,l=r>>>1&2,r=r>>>l,a=r>>>1&1,a=t[28228+((n|o|s|l|a)+(r>>>a)<<2)>>2]|0,r=a,l=a,a=(t[a+4>>2]&-8)-f|0;e=t[r+16>>2]|0,!(!e&&(e=t[r+20>>2]|0,!e));)s=(t[e+4>>2]&-8)-f|0,o=s>>>0>>0,r=e,l=o?e:l,a=o?s:a;if(s=l+f|0,s>>>0>l>>>0){o=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(o|0){if(A=t[l+28>>2]|0,e=28228+(A<<2)|0,(l|0)==(t[e>>2]|0)){if(t[e>>2]=r,!r){t[6982]=i&~(1<>2]|0)==(l|0)?U:o+20|0)>>2]=r,!r)break;t[r+24>>2]=o,A=t[l+16>>2]|0,A|0&&(t[r+16>>2]=A,t[A+24>>2]=r),A=t[l+20>>2]|0,A|0&&(t[r+20>>2]=A,t[A+24>>2]=r)}while(!1);return a>>>0<16?(U=a+f|0,t[l+4>>2]=U|3,U=l+U+4|0,t[U>>2]=t[U>>2]|1):(t[l+4>>2]=f|3,t[s+4>>2]=a|1,t[s+a>>2]=a,m|0&&(n=t[6986]|0,A=m>>>3,r=27964+(A<<1<<2)|0,A=1<>2]|0):(t[6981]=A|M,A=r,e=r+8|0),t[e>>2]=n,t[A+12>>2]=n,t[n+8>>2]=A,t[n+12>>2]=r),t[6983]=a,t[6986]=s),U=l+8|0,k=BA,U|0}else M=f}else M=f}else M=f}else if(e>>>0<=4294967231)if(e=e+11|0,f=e&-8,n=t[6982]|0,n){o=0-f|0,e=e>>>8,e?f>>>0>16777215?a=31:(M=(e+1048320|0)>>>16&8,G=e<>>16&4,G=G<>>16&2,a=14-(l|M|a)+(G<>>15)|0,a=f>>>(a+7|0)&1|a<<1):a=0,r=t[28228+(a<<2)>>2]|0;A:do if(!r)r=0,e=0,G=61;else for(e=0,l=f<<((a|0)==31?0:25-(a>>>1)|0),i=0;;){if(s=(t[r+4>>2]&-8)-f|0,s>>>0>>0)if(s)e=r,o=s;else{e=r,o=0,G=65;break A}if(G=t[r+20>>2]|0,r=t[r+16+(l>>>31<<2)>>2]|0,i=(G|0)==0|(G|0)==(r|0)?i:G,r)l=l<<1;else{r=i,G=61;break}}while(!1);if((G|0)==61){if((r|0)==0&(e|0)==0){if(e=2<>>12&16,M=M>>>s,i=M>>>5&8,M=M>>>i,l=M>>>2&4,M=M>>>l,a=M>>>1&2,M=M>>>a,r=M>>>1&1,e=0,r=t[28228+((i|s|l|a|r)+(M>>>r)<<2)>>2]|0}r?G=65:(l=e,s=o)}if((G|0)==65)for(i=r;;)if(M=(t[i+4>>2]&-8)-f|0,r=M>>>0>>0,o=r?M:o,e=r?i:e,r=t[i+16>>2]|0,r||(r=t[i+20>>2]|0),r)i=r;else{l=e,s=o;break}if((l|0)!=0&&s>>>0<((t[6983]|0)-f|0)>>>0&&(m=l+f|0,m>>>0>l>>>0)){i=t[l+24>>2]|0,A=t[l+12>>2]|0;do if((A|0)==(l|0)){if(e=l+20|0,A=t[e>>2]|0,!A&&(e=l+16|0,A=t[e>>2]|0,!A)){A=0;break}for(;;)if(o=A+20|0,r=t[o>>2]|0,r)A=r,e=o;else if(o=A+16|0,r=t[o>>2]|0,r)A=r,e=o;else break;t[e>>2]=0}else U=t[l+8>>2]|0,t[U+12>>2]=A,t[A+8>>2]=U;while(!1);do if(i){if(e=t[l+28>>2]|0,r=28228+(e<<2)|0,(l|0)==(t[r>>2]|0)){if(t[r>>2]=A,!A){n=n&~(1<>2]|0)==(l|0)?U:i+20|0)>>2]=A,!A)break;t[A+24>>2]=i,e=t[l+16>>2]|0,e|0&&(t[A+16>>2]=e,t[e+24>>2]=A),e=t[l+20>>2]|0,e&&(t[A+20>>2]=e,t[e+24>>2]=A)}while(!1);A:do if(s>>>0<16)U=s+f|0,t[l+4>>2]=U|3,U=l+U+4|0,t[U>>2]=t[U>>2]|1;else{if(t[l+4>>2]=f|3,t[m+4>>2]=s|1,t[m+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]=m,t[A+12>>2]=m,t[m+8>>2]=A,t[m+12>>2]=r;break}if(A=s>>>8,A?s>>>0>16777215?r=31:($=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,r=14-(q|$|r)+(U<>>15)|0,r=s>>>(r+7|0)&1|r<<1):r=0,A=28228+(r<<2)|0,t[m+28>>2]=r,e=m+16|0,t[e+4>>2]=0,t[e>>2]=0,e=1<>2]=m,t[m+24>>2]=A,t[m+12>>2]=m,t[m+8>>2]=m;break}A=t[A>>2]|0;e:do if((t[A+4>>2]&-8|0)!=(s|0)){for(n=s<<((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)==(s|0)){A=e;break e}else n=n<<1,A=e;t[r>>2]=m,t[m+24>>2]=A,t[m+12>>2]=m,t[m+8>>2]=m;break A}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=m,t[$>>2]=m,t[m+8>>2]=U,t[m+12>>2]=A,t[m+24>>2]=0}while(!1);return U=l+8|0,k=BA,U|0}else M=f}else M=f;else M=-1;while(!1);if(r=t[6983]|0,r>>>0>=M>>>0)return A=r-M|0,e=t[6986]|0,A>>>0>15?(U=e+M|0,t[6986]=U,t[6983]=A,t[U+4>>2]=A|1,t[e+r>>2]=A,t[e+4>>2]=M|3):(t[6983]=0,t[6986]=0,t[e+4>>2]=r|3,U=e+r+4|0,t[U>>2]=t[U>>2]|1),U=e+8|0,k=BA,U|0;if(s=t[6984]|0,s>>>0>M>>>0)return q=s-M|0,t[6984]=q,U=t[6987]|0,$=U+M|0,t[6987]=$,t[$+4>>2]=q|1,t[U+4>>2]=M|3,U=U+8|0,k=BA,U|0;if(t[7099]|0?e=t[7101]|0:(t[7101]=4096,t[7100]=4096,t[7102]=-1,t[7103]=-1,t[7104]=0,t[7092]=0,t[7099]=j&-16^1431655768,e=4096),l=M+48|0,a=M+47|0,i=e+a|0,o=0-e|0,f=i&o,f>>>0<=M>>>0||(e=t[7091]|0,e|0&&(m=t[7089]|0,j=m+f|0,j>>>0<=m>>>0|j>>>0>e>>>0)))return U=0,k=BA,U|0;A:do if(t[7092]&4)A=0,G=143;else{r=t[6987]|0;e:do if(r){for(n=28372;j=t[n>>2]|0,!(j>>>0<=r>>>0&&(j+(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-s&o,A>>>0<2147483647)if(e=K0(A|0)|0,(e|0)==((t[n>>2]|0)+(t[n+4>>2]|0)|0)){if((e|0)!=-1){s=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=K0(0)|0,(r|0)!=-1&&(A=r,I=t[7100]|0,L=I+-1|0,A=((L&A|0)==0?0:(L+A&0-I)-A|0)+f|0,I=t[7089]|0,L=A+I|0,A>>>0>M>>>0&A>>>0<2147483647)){if(j=t[7091]|0,j|0&&L>>>0<=I>>>0|L>>>0>j>>>0){A=0;break}if(e=K0(A|0)|0,(e|0)==(r|0)){s=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{s=A,i=n,G=145;break A}if(e=t[7101]|0,e=a-A+e&0-e,e>>>0>=2147483647){s=A,i=n,G=145;break A}if((K0(e|0)|0)==-1){K0(r|0)|0,A=0;break}else{s=e+A|0,i=n,G=145;break A}}while(!1);t[7092]=t[7092]|4,G=143}while(!1);if((G|0)==143&&f>>>0<2147483647&&(q=K0(f|0)|0,L=K0(0)|0,W=L-q|0,nA=W>>>0>(M+40|0)>>>0,!((q|0)==-1|nA^1|q>>>0>>0&((q|0)!=-1&(L|0)!=-1)^1))&&(s=nA?W:A,i=q,G=145),(G|0)==145){A=(t[7089]|0)+s|0,t[7089]=A,A>>>0>(t[7090]|0)>>>0&&(t[7090]=A),a=t[6987]|0;A:do if(a){for(A=28372;;){if(e=t[A>>2]|0,r=t[A+4>>2]|0,(i|0)==(e+r|0)){G=154;break}if(n=t[A+8>>2]|0,n)A=n;else break}if((G|0)==154&&($=A+4|0,(t[A+12>>2]&8|0)==0)&&i>>>0>a>>>0&e>>>0<=a>>>0){t[$>>2]=r+s,U=(t[6984]|0)+s|0,q=a+8|0,q=(q&7|0)==0?0:0-q&7,$=a+q|0,q=U-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[a+U+4>>2]=40,t[6988]=t[7103];break}for(i>>>0<(t[6985]|0)>>>0&&(t[6985]=i),r=i+s|0,A=28372;;){if((t[A>>2]|0)==(r|0)){G=162;break}if(e=t[A+8>>2]|0,e)A=e;else break}if((G|0)==162&&(t[A+12>>2]&8|0)==0){t[A>>2]=i,m=A+4|0,t[m>>2]=(t[m>>2]|0)+s,m=i+8|0,m=i+((m&7|0)==0?0:0-m&7)|0,A=r+8|0,A=r+((A&7|0)==0?0:0-A&7)|0,f=m+M|0,l=A-m-M|0,t[m+4>>2]=M|3;e:do if((a|0)==(A|0))U=(t[6984]|0)+l|0,t[6984]=U,t[6987]=f,t[f+4>>2]=U|1;else{if((t[6986]|0)==(A|0)){U=(t[6983]|0)+l|0,t[6983]=U,t[6986]=f,t[f+4>>2]=U|1,t[f+U>>2]=U;break}if(e=t[A+4>>2]|0,(e&3|0)==1){s=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(o=e+20|0,n=t[o>>2]|0,n)e=n,r=o;else if(o=e+16|0,n=t[o>>2]|0,n)e=n,r=o;else break;t[r>>2]=0}else U=t[A+8>>2]|0,t[U+12>>2]=e,t[e+8>>2]=U;while(!1);if(!i)break;r=t[A+28>>2]|0,n=28228+(r<<2)|0;do if((t[n>>2]|0)!=(A|0)){if(U=i+16|0,t[((t[U>>2]|0)==(A|0)?U:i+20|0)>>2]=e,!e)break t}else{if(t[n>>2]=e,e|0)break;t[6982]=t[6982]&~(1<>2]=i,r=A+16|0,n=t[r>>2]|0,n|0&&(t[e+16>>2]=n,t[n+24>>2]=e),r=t[r+4>>2]|0,!r)break;t[e+20>>2]=r,t[r+24>>2]=e}while(!1);A=A+s|0,o=s+l|0}else o=l;if(A=A+4|0,t[A>>2]=t[A>>2]&-2,t[f+4>>2]=o|1,t[f+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]=f,t[A+12>>2]=f,t[f+8>>2]=A,t[f+12>>2]=r;break}A=o>>>8;do if(!A)n=0;else{if(o>>>0>16777215){n=31;break}$=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,n=14-(q|$|n)+(U<>>15)|0,n=o>>>(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)!=(o|0)){for(n=o<<((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)==(o|0)){A=e;break t}else n=n<<1,A=e;t[r>>2]=f,t[f+24>>2]=A,t[f+12>>2]=f,t[f+8>>2]=f;break e}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=f,t[$>>2]=f,t[f+8>>2]=U,t[f+12>>2]=A,t[f+24>>2]=0}while(!1);return U=m+8|0,k=BA,U|0}for(A=28372;e=t[A>>2]|0,!(e>>>0<=a>>>0&&(U=e+(t[A+4>>2]|0)|0,U>>>0>a>>>0));)A=t[A+8>>2]|0;o=U+-47|0,e=o+8|0,e=o+((e&7|0)==0?0:0-e&7)|0,o=a+16|0,e=e>>>0>>0?a:e,A=e+8|0,r=s+-40|0,q=i+8|0,q=(q&7|0)==0?0:0-q&7,$=i+q|0,q=r-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[i+r+4>>2]=40,t[6988]=t[7103],r=e+4|0,t[r>>2]=27,t[A>>2]=t[7093],t[A+4>>2]=t[7094],t[A+8>>2]=t[7095],t[A+12>>2]=t[7096],t[7093]=i,t[7094]=s,t[7096]=0,t[7095]=A,A=e+24|0;do $=A,A=A+4|0,t[A>>2]=7;while(($+8|0)>>>0>>0);if((e|0)!=(a|0)){if(i=e-a|0,t[r>>2]=t[r>>2]&-2,t[a+4>>2]=i|1,t[e>>2]=i,A=i>>>3,i>>>0<256){r=27964+(A<<1<<2)|0,e=t[6981]|0,A=1<>2]|0):(t[6981]=e|A,A=r,e=r+8|0),t[e>>2]=a,t[A+12>>2]=a,t[a+8>>2]=A,t[a+12>>2]=r;break}if(A=i>>>8,A?i>>>0>16777215?n=31:($=(A+1048320|0)>>>16&8,U=A<<$,q=(U+520192|0)>>>16&4,U=U<>>16&2,n=14-(q|$|n)+(U<>>15)|0,n=i>>>(n+7|0)&1|n<<1):n=0,r=28228+(n<<2)|0,t[a+28>>2]=n,t[a+20>>2]=0,t[o>>2]=0,A=t[6982]|0,e=1<>2]=a,t[a+24>>2]=r,t[a+12>>2]=a,t[a+8>>2]=a;break}A=t[r>>2]|0;e:do if((t[A+4>>2]&-8|0)!=(i|0)){for(n=i<<((n|0)==31?0:25-(n>>>1)|0);r=A+16+(n>>>31<<2)|0,e=t[r>>2]|0,!!e;)if((t[e+4>>2]&-8|0)==(i|0)){A=e;break e}else n=n<<1,A=e;t[r>>2]=a,t[a+24>>2]=A,t[a+12>>2]=a,t[a+8>>2]=a;break A}while(!1);$=A+8|0,U=t[$>>2]|0,t[U+12>>2]=a,t[$>>2]=a,t[a+8>>2]=U,t[a+12>>2]=A,t[a+24>>2]=0}}else U=t[6985]|0,(U|0)==0|i>>>0>>0&&(t[6985]=i),t[7093]=i,t[7094]=s,t[7096]=0,t[6990]=t[7099],t[6989]=-1,t[6994]=27964,t[6993]=27964,t[6996]=27972,t[6995]=27972,t[6998]=27980,t[6997]=27980,t[7e3]=27988,t[6999]=27988,t[7002]=27996,t[7001]=27996,t[7004]=28004,t[7003]=28004,t[7006]=28012,t[7005]=28012,t[7008]=28020,t[7007]=28020,t[7010]=28028,t[7009]=28028,t[7012]=28036,t[7011]=28036,t[7014]=28044,t[7013]=28044,t[7016]=28052,t[7015]=28052,t[7018]=28060,t[7017]=28060,t[7020]=28068,t[7019]=28068,t[7022]=28076,t[7021]=28076,t[7024]=28084,t[7023]=28084,t[7026]=28092,t[7025]=28092,t[7028]=28100,t[7027]=28100,t[7030]=28108,t[7029]=28108,t[7032]=28116,t[7031]=28116,t[7034]=28124,t[7033]=28124,t[7036]=28132,t[7035]=28132,t[7038]=28140,t[7037]=28140,t[7040]=28148,t[7039]=28148,t[7042]=28156,t[7041]=28156,t[7044]=28164,t[7043]=28164,t[7046]=28172,t[7045]=28172,t[7048]=28180,t[7047]=28180,t[7050]=28188,t[7049]=28188,t[7052]=28196,t[7051]=28196,t[7054]=28204,t[7053]=28204,t[7056]=28212,t[7055]=28212,U=s+-40|0,q=i+8|0,q=(q&7|0)==0?0:0-q&7,$=i+q|0,q=U-q|0,t[6987]=$,t[6984]=q,t[$+4>>2]=q|1,t[i+U+4>>2]=40,t[6988]=t[7103];while(!1);if(A=t[6984]|0,A>>>0>M>>>0)return q=A-M|0,t[6984]=q,U=t[6987]|0,$=U+M|0,t[6987]=$,t[$+4>>2]=q|1,t[U+4>>2]=M|3,U=U+8|0,k=BA,U|0}return U=Aa()|0,t[U>>2]=12,U=0,k=BA,U|0}function qA(e){e=e|0;var A=0,r=0,n=0,o=0,i=0,s=0,l=0,a=0;if(e){r=e+-8|0,o=t[6985]|0,e=t[e+-4>>2]|0,A=e&-8,a=r+A|0;do if(e&1)l=r,s=r;else{if(n=t[r>>2]|0,!(e&3)||(s=r+(0-n)|0,i=n+A|0,s>>>0>>0))return;if((t[6986]|0)==(s|0)){if(e=a+4|0,A=t[e>>2]|0,(A&3|0)!=3){l=s,A=i;break}t[6983]=i,t[e>>2]=A&-2,t[s+4>>2]=i|1,t[s+i>>2]=i;return}if(r=n>>>3,n>>>0<256)if(e=t[s+8>>2]|0,A=t[s+12>>2]|0,(A|0)==(e|0)){t[6981]=t[6981]&~(1<>2]=A,t[A+8>>2]=e,l=s,A=i;break}o=t[s+24>>2]|0,e=t[s+12>>2]|0;do if((e|0)==(s|0)){if(A=s+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[s+8>>2]|0,t[l+12>>2]=e,t[e+8>>2]=l;while(!1);if(o){if(A=t[s+28>>2]|0,r=28228+(A<<2)|0,(t[r>>2]|0)==(s|0)){if(t[r>>2]=e,!e){t[6982]=t[6982]&~(1<>2]|0)==(s|0)?l:o+20|0)>>2]=e,!e){l=s,A=i;break}t[e+24>>2]=o,A=s+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=s,A=i):(l=s,A=i)}else l=s,A=i}while(!1);if(!(s>>>0>=a>>>0)&&(e=a+4|0,n=t[e>>2]|0,!!(n&1))){if(n&2)t[e>>2]=n&-2,t[l+4>>2]=A|1,t[s+A>>2]=A,o=A;else{if((t[6987]|0)==(a|0)){if(a=(t[6984]|0)+A|0,t[6984]=a,t[6987]=l,t[l+4>>2]=a|1,(l|0)!=(t[6986]|0))return;t[6986]=0,t[6983]=0;return}if((t[6986]|0)==(a|0)){a=(t[6983]|0)+A|0,t[6983]=a,t[6986]=s,t[l+4>>2]=a|1,t[s+a>>2]=a;return}o=(n&-8)+A|0,r=n>>>3;do if(n>>>0<256)if(A=t[a+8>>2]|0,e=t[a+12>>2]|0,(e|0)==(A|0)){t[6981]=t[6981]&~(1<>2]=e,t[e+8>>2]=A;break}else{i=t[a+24>>2]|0,e=t[a+12>>2]|0;do if((e|0)==(a|0)){if(A=a+16|0,r=A+4|0,e=t[r>>2]|0,e)A=r;else if(e=t[A>>2]|0,!e){r=0;break}for(;;)if(n=e+20|0,r=t[n>>2]|0,r)e=r,A=n;else if(n=e+16|0,r=t[n>>2]|0,r)e=r,A=n;else break;t[A>>2]=0,r=e}else r=t[a+8>>2]|0,t[r+12>>2]=e,t[e+8>>2]=r,r=e;while(!1);if(i|0){if(e=t[a+28>>2]|0,A=28228+(e<<2)|0,(t[A>>2]|0)==(a|0)){if(t[A>>2]=r,!r){t[6982]=t[6982]&~(1<>2]|0)==(a|0)?n:i+20|0)>>2]=r,!r)break;t[r+24>>2]=i,e=a+16|0,A=t[e>>2]|0,A|0&&(t[r+16>>2]=A,t[A+24>>2]=r),e=t[e+4>>2]|0,e|0&&(t[r+20>>2]=e,t[e+24>>2]=r)}}while(!1);if(t[l+4>>2]=o|1,t[s+o>>2]=o,(l|0)==(t[6986]|0)){t[6983]=o;return}}if(e=o>>>3,o>>>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=o>>>8,e?o>>>0>16777215?n=31:(s=(e+1048320|0)>>>16&8,a=e<>>16&4,a=a<>>16&2,n=14-(i|s|n)+(a<>>15)|0,n=o>>>(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)!=(o|0)){for(n=o<<((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)==(o|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);s=e+8|0,a=t[s>>2]|0,t[a+12>>2]=l,t[s>>2]=l,t[l+8>>2]=a,t[l+12>>2]=e,t[l+24>>2]=0}while(!1);if(a=(t[6989]|0)+-1|0,t[6989]=a,!(a|0)){for(e=28380;e=t[e>>2]|0,e;)e=e+8|0;t[6989]=-1}}}}function Qt(e,A){e=e|0,A=A|0;var r=0;return e?(r=Pe(A,e)|0,(A|e)>>>0>65535&&(r=((r>>>0)/(e>>>0)|0|0)==(A|0)?r:-1)):r=0,e=p0(r)|0,!e||!(t[e+-4>>2]&3)||Y0(e|0,0,r|0)|0,e|0}function KA(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,r=e+r>>>0,YA(A+n+(r>>>0>>0|0)>>>0|0),r|0|0}function ct(e,A,r,n){return e=e|0,A=A|0,r=r|0,n=n|0,n=A-n-(r>>>0>e>>>0|0)>>>0,YA(n|0),e-r>>>0|0|0}function ci(e){return e=e|0,(e?31-(nt(e^e-1)|0)|0:32)|0}function oo(e,A,r,n,o){e=e|0,A=A|0,r=r|0,n=n|0,o=o|0;var i=0,s=0,l=0,a=0,f=0,m=0,M=0,j=0,I=0,L=0;if(m=e,a=A,f=a,s=r,j=n,l=j,!f)return i=(o|0)!=0,l?i?(t[o>>2]=e|0,t[o+4>>2]=A&0,j=0,o=0,YA(j|0),o|0):(j=0,o=0,YA(j|0),o|0):(i&&(t[o>>2]=(m>>>0)%(s>>>0),t[o+4>>2]=0),j=0,o=(m>>>0)/(s>>>0)>>>0,YA(j|0),o|0);i=(l|0)==0;do if(s){if(!i){if(i=(nt(l|0)|0)-(nt(f|0)|0)|0,i>>>0<=31){M=i+1|0,l=31-i|0,A=i-31>>31,s=M,e=m>>>(M>>>0)&A|f<>>(M>>>0)&A,i=0,l=m<>2]=e|0,t[o+4>>2]=a|A&0,j=0,o=0,YA(j|0),o|0):(j=0,o=0,YA(j|0),o|0)}if(i=s-1|0,i&s|0){l=(nt(s|0)|0)+33-(nt(f|0)|0)|0,L=64-l|0,M=32-l|0,a=M>>31,I=l-32|0,A=I>>31,s=l,e=M-1>>31&f>>>(I>>>0)|(f<>>(l>>>0))&A,A=A&f>>>(l>>>0),i=m<>>(I>>>0))&a|m<>31;break}return o|0&&(t[o>>2]=i&m,t[o+4>>2]=0),(s|0)==1?(I=a|A&0,L=e|0|0,YA(I|0),L|0):(L=ci(s|0)|0,I=f>>>(L>>>0)|0,L=f<<32-L|m>>>(L>>>0)|0,YA(I|0),L|0)}else{if(i)return o|0&&(t[o>>2]=(f>>>0)%(s>>>0),t[o+4>>2]=0),I=0,L=(f>>>0)/(s>>>0)>>>0,YA(I|0),L|0;if(!m)return o|0&&(t[o>>2]=0,t[o+4>>2]=(f>>>0)%(l>>>0)),I=0,L=(f>>>0)/(l>>>0)>>>0,YA(I|0),L|0;if(i=l-1|0,!(i&l))return o|0&&(t[o>>2]=e|0,t[o+4>>2]=i&f|A&0),I=0,L=f>>>((ci(l|0)|0)>>>0),YA(I|0),L|0;if(i=(nt(l|0)|0)-(nt(f|0)|0)|0,i>>>0<=30){A=i+1|0,l=31-i|0,s=A,e=f<>>(A>>>0),A=f>>>(A>>>0),i=0,l=m<>2]=e|0,t[o+4>>2]=a|A&0,I=0,L=0,YA(I|0),L|0):(I=0,L=0,YA(I|0),L|0)}while(!1);if(!s)f=l,a=0,l=0;else{M=r|0|0,m=j|n&0,f=KA(M|0,m|0,-1,-1)|0,r=S()|0,a=l,l=0;do n=a,a=i>>>31|a<<1,i=l|i<<1,n=e<<1|n>>>31|0,j=e>>>31|A<<1|0,ct(f|0,r|0,n|0,j|0)|0,L=S()|0,I=L>>31|((L|0)<0?-1:0)<<1,l=I&1,e=ct(n|0,j|0,I&M|0,(((L|0)<0?-1:0)>>31|((L|0)<0?-1:0)<<1)&m|0)|0,A=S()|0,s=s-1|0;while((s|0)!=0);f=a,a=0}return s=0,o|0&&(t[o>>2]=e,t[o+4>>2]=A),I=(i|0)>>>31|(f|s)<<1|(s<<1|i>>>31)&0|a,L=(i<<1|0)&-2|l,YA(I|0),L|0}function W0(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;return f=A>>31|((A|0)<0?-1:0)<<1,a=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,i=n>>31|((n|0)<0?-1:0)<<1,o=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,l=ct(f^e|0,a^A|0,f|0,a|0)|0,s=S()|0,e=i^f,A=o^a,ct((oo(l,s,ct(i^r|0,o^n|0,i|0,o|0)|0,S()|0,0)|0)^e|0,(S()|0)^A|0,e|0,A|0)|0}function ea(e,A){e=e|0,A=A|0;var r=0,n=0,o=0,i=0;return i=e&65535,o=A&65535,r=Pe(o,i)|0,n=e>>>16,e=(r>>>16)+(Pe(o,n)|0)|0,o=A>>>16,A=Pe(o,i)|0,YA((e>>>16)+(Pe(o,n)|0)+(((e&65535)+A|0)>>>16)|0),e+A<<16|r&65535|0|0}function ft(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0;return o=e,i=r,r=ea(o,i)|0,e=S()|0,YA((Pe(A,i)|0)+(Pe(n,o)|0)+e|e&0|0),r|0|0|0}function Rr(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0,s=0,l=0,a=0,f=0;return o=k,k=k+16|0,l=o|0,s=A>>31|((A|0)<0?-1:0)<<1,i=((A|0)<0?-1:0)>>31|((A|0)<0?-1:0)<<1,f=n>>31|((n|0)<0?-1:0)<<1,a=((n|0)<0?-1:0)>>31|((n|0)<0?-1:0)<<1,e=ct(s^e|0,i^A|0,s|0,i|0)|0,A=S()|0,oo(e,A,ct(f^r|0,a^n|0,f|0,a|0)|0,S()|0,l)|0,n=ct(t[l>>2]^s|0,t[l+4>>2]^i|0,s|0,i|0)|0,r=S()|0,k=o,YA(r|0),n|0}function jr(e,A,r,n){e=e|0,A=A|0,r=r|0,n=n|0;var o=0,i=0;return i=k,k=k+16|0,o=i|0,oo(e,A,r,n,o)|0,k=i,YA(t[o+4>>2]|0),t[o>>2]|0|0}function fi(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A>>r|0),e>>>r|(A&(1<>r-32|0)}function wA(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A>>>r|0),e>>>r|(A&(1<>>r-32|0)}function EA(e,A,r){return e=e|0,A=A|0,r=r|0,(r|0)<32?(YA(A<>>32-r|0),e<=0?+He(e+.5):+gt(e-.5)}function Ir(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0;if((r|0)>=8192)return i0(e|0,A|0,r|0)|0,e|0;if(i=e|0,o=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=o&-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=o-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)<(o|0);)xA[e>>0]=xA[A>>0]|0,e=e+1|0,A=A+1|0;return i|0}function Y0(e,A,r){e=e|0,A=A|0,r=r|0;var n=0,o=0,i=0,s=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,s=A|A<<8|A<<16|A<<24,o=n-64|0;(e|0)<=(o|0);)t[e>>2]=s,t[e+4>>2]=s,t[e+8>>2]=s,t[e+12>>2]=s,t[e+16>>2]=s,t[e+20>>2]=s,t[e+24>>2]=s,t[e+28>>2]=s,t[e+32>>2]=s,t[e+36>>2]=s,t[e+40>>2]=s,t[e+44>>2]=s,t[e+48>>2]=s,t[e+52>>2]=s,t[e+56>>2]=s,t[e+60>>2]=s,e=e+64|0;for(;(e|0)<(n|0);)t[e>>2]=s,e=e+4|0}for(;(e|0)<(i|0);)xA[e>>0]=A,e=e+1|0;return i-r|0}function di(e){return e=+e,e>=0?+He(e+.5):+gt(e-.5)}function K0(e){e=e|0;var A=0,r=0,n=0;return n=Q0()|0,r=t[De>>2]|0,A=r+e|0,(e|0)>0&(A|0)<(r|0)|(A|0)<0?(d0(A|0)|0,Nt(12),-1):(A|0)>(n|0)&&!(s0(A|0)|0)?(Nt(12),-1):(t[De>>2]=A,r|0)}return{___divdi3:W0,___muldi3:ft,___remdi3:Rr,___uremdi3:jr,_areNeighborCells:Yn,_bitshift64Ashr:fi,_bitshift64Lshr:wA,_bitshift64Shl:EA,_calloc:Qt,_cellAreaKm2:kl,_cellAreaM2:bl,_cellAreaRads2:eo,_cellToBoundary:_r,_cellToCenterChild:Wo,_cellToChildPos:hl,_cellToChildren:en,_cellToChildrenSize:g0,_cellToLatLng:ar,_cellToLocalIj:_l,_cellToParent:_t,_cellToVertex:Xt,_cellToVertexes:Zl,_cellsToDirectedEdge:pn,_cellsToLinkedMultiPolygon:pt,_childPosToCell:dl,_compactCells:ol,_constructCell:we,_destroyLinkedMultiPolygon:qo,_directedEdgeToBoundary:sr,_directedEdgeToCells:Mr,_edgeLengthKm:El,_edgeLengthM:Sl,_edgeLengthRads:Cl,_emscripten_replace_memory:C0,_free:qA,_getBaseCellNumber:te,_getDirectedEdgeDestination:yn,_getDirectedEdgeOrigin:Sr,_getHexagonAreaAvgKm2:Zo,_getHexagonAreaAvgM2:xl,_getHexagonEdgeLengthAvgKm:wl,_getHexagonEdgeLengthAvgM:vl,_getIcosahedronFaces:Yo,_getIndexDigit:ke,_getNumCells:vn,_getPentagons:Jn,_getRes0Cells:Wr,_getResolution:_A,_greatCircleDistanceKm:rn,_greatCircleDistanceM:gl,_greatCircleDistanceRads:ml,_gridDisk:v,_gridDiskDistances:D,_gridDistance:Rl,_gridPathCells:Il,_gridPathCellsSize:jl,_gridRing:hA,_gridRingUnsafe:RA,_i64Add:KA,_i64Subtract:ct,_isPentagon:Oe,_isResClassIII:ll,_isValidCell:Ue,_isValidDirectedEdge:Xr,_isValidIndex:Bt,_isValidVertex:ii,_latLngToCell:$n,_llvm_ctlz_i64:io,_llvm_maxnum_f64:hi,_llvm_minnum_f64:Cn,_llvm_round_f64:En,_localIjToCell:Tl,_malloc:p0,_maxFaceCount:cl,_maxGridDiskSize:h,_maxPolygonToCellsSize:ce,_maxPolygonToCellsSizeExperimental:Fl,_memcpy:Ir,_memset:Y0,_originToDirectedEdges:Br,_pentagonCount:fl,_polygonToCells:bt,_polygonToCellsExperimental:Nl,_readInt64AsDoubleFromPointer:Vl,_res0CellCount:Vr,_round:di,_sbrk:K0,_sizeOfCellBoundary:Ol,_sizeOfCoordIJ:Ul,_sizeOfGeoLoop:zl,_sizeOfGeoPolygon:Hl,_sizeOfH3Index:Pl,_sizeOfLatLng:Ql,_sizeOfLinkedGeoPolygon:Gl,_uncompactCells:il,_uncompactCellsSize:sl,_vertexToLatLng:$l,establishStackSpace:E0,stackAlloc:$t,stackRestore:z0,stackSave:O0}})(rr,F0,yA);u.___divdi3=gA.___divdi3,u.___muldi3=gA.___muldi3,u.___remdi3=gA.___remdi3,u.___uremdi3=gA.___uremdi3,u._areNeighborCells=gA._areNeighborCells,u._bitshift64Ashr=gA._bitshift64Ashr,u._bitshift64Lshr=gA._bitshift64Lshr,u._bitshift64Shl=gA._bitshift64Shl,u._calloc=gA._calloc,u._cellAreaKm2=gA._cellAreaKm2,u._cellAreaM2=gA._cellAreaM2,u._cellAreaRads2=gA._cellAreaRads2,u._cellToBoundary=gA._cellToBoundary,u._cellToCenterChild=gA._cellToCenterChild,u._cellToChildPos=gA._cellToChildPos,u._cellToChildren=gA._cellToChildren,u._cellToChildrenSize=gA._cellToChildrenSize,u._cellToLatLng=gA._cellToLatLng,u._cellToLocalIj=gA._cellToLocalIj,u._cellToParent=gA._cellToParent,u._cellToVertex=gA._cellToVertex,u._cellToVertexes=gA._cellToVertexes,u._cellsToDirectedEdge=gA._cellsToDirectedEdge,u._cellsToLinkedMultiPolygon=gA._cellsToLinkedMultiPolygon,u._childPosToCell=gA._childPosToCell,u._compactCells=gA._compactCells,u._constructCell=gA._constructCell,u._destroyLinkedMultiPolygon=gA._destroyLinkedMultiPolygon,u._directedEdgeToBoundary=gA._directedEdgeToBoundary,u._directedEdgeToCells=gA._directedEdgeToCells,u._edgeLengthKm=gA._edgeLengthKm,u._edgeLengthM=gA._edgeLengthM,u._edgeLengthRads=gA._edgeLengthRads;var f0=u._emscripten_replace_memory=gA._emscripten_replace_memory;u._free=gA._free,u._getBaseCellNumber=gA._getBaseCellNumber,u._getDirectedEdgeDestination=gA._getDirectedEdgeDestination,u._getDirectedEdgeOrigin=gA._getDirectedEdgeOrigin,u._getHexagonAreaAvgKm2=gA._getHexagonAreaAvgKm2,u._getHexagonAreaAvgM2=gA._getHexagonAreaAvgM2,u._getHexagonEdgeLengthAvgKm=gA._getHexagonEdgeLengthAvgKm,u._getHexagonEdgeLengthAvgM=gA._getHexagonEdgeLengthAvgM,u._getIcosahedronFaces=gA._getIcosahedronFaces,u._getIndexDigit=gA._getIndexDigit,u._getNumCells=gA._getNumCells,u._getPentagons=gA._getPentagons,u._getRes0Cells=gA._getRes0Cells,u._getResolution=gA._getResolution,u._greatCircleDistanceKm=gA._greatCircleDistanceKm,u._greatCircleDistanceM=gA._greatCircleDistanceM,u._greatCircleDistanceRads=gA._greatCircleDistanceRads,u._gridDisk=gA._gridDisk,u._gridDiskDistances=gA._gridDiskDistances,u._gridDistance=gA._gridDistance,u._gridPathCells=gA._gridPathCells,u._gridPathCellsSize=gA._gridPathCellsSize,u._gridRing=gA._gridRing,u._gridRingUnsafe=gA._gridRingUnsafe,u._i64Add=gA._i64Add,u._i64Subtract=gA._i64Subtract,u._isPentagon=gA._isPentagon,u._isResClassIII=gA._isResClassIII,u._isValidCell=gA._isValidCell,u._isValidDirectedEdge=gA._isValidDirectedEdge,u._isValidIndex=gA._isValidIndex,u._isValidVertex=gA._isValidVertex,u._latLngToCell=gA._latLngToCell,u._llvm_ctlz_i64=gA._llvm_ctlz_i64,u._llvm_maxnum_f64=gA._llvm_maxnum_f64,u._llvm_minnum_f64=gA._llvm_minnum_f64,u._llvm_round_f64=gA._llvm_round_f64,u._localIjToCell=gA._localIjToCell,u._malloc=gA._malloc,u._maxFaceCount=gA._maxFaceCount,u._maxGridDiskSize=gA._maxGridDiskSize,u._maxPolygonToCellsSize=gA._maxPolygonToCellsSize,u._maxPolygonToCellsSizeExperimental=gA._maxPolygonToCellsSizeExperimental,u._memcpy=gA._memcpy,u._memset=gA._memset,u._originToDirectedEdges=gA._originToDirectedEdges,u._pentagonCount=gA._pentagonCount,u._polygonToCells=gA._polygonToCells,u._polygonToCellsExperimental=gA._polygonToCellsExperimental,u._readInt64AsDoubleFromPointer=gA._readInt64AsDoubleFromPointer,u._res0CellCount=gA._res0CellCount,u._round=gA._round,u._sbrk=gA._sbrk,u._sizeOfCellBoundary=gA._sizeOfCellBoundary,u._sizeOfCoordIJ=gA._sizeOfCoordIJ,u._sizeOfGeoLoop=gA._sizeOfGeoLoop,u._sizeOfGeoPolygon=gA._sizeOfGeoPolygon,u._sizeOfH3Index=gA._sizeOfH3Index,u._sizeOfLatLng=gA._sizeOfLatLng,u._sizeOfLinkedGeoPolygon=gA._sizeOfLinkedGeoPolygon,u._uncompactCells=gA._uncompactCells,u._uncompactCellsSize=gA._uncompactCellsSize,u._vertexToLatLng=gA._vertexToLatLng,u.establishStackSpace=gA.establishStackSpace;var at=u.stackAlloc=gA.stackAlloc,Fe=u.stackRestore=gA.stackRestore,n0=u.stackSave=gA.stackSave;if(u.asm=gA,u.cwrap=uA,u.setValue=V,u.getValue=K,Qe){Be(Qe)||(Qe=C(Qe));{Xe();var Zt=function(rA){rA.byteLength&&(rA=new Uint8Array(rA)),LA.set(rA,H),u.memoryInitializerRequest&&delete u.memoryInitializerRequest.response,vt()},xt=function(){T(Qe,Zt,function(){throw"could not load memory initializer "+Qe})},kt=c0(Qe);if(kt)Zt(kt.buffer);else if(u.memoryInitializerRequest){var o0=function(){var rA=u.memoryInitializerRequest,pA=rA.response;if(rA.status!==200&&rA.status!==0){var IA=c0(u.memoryInitializerRequestURL);if(IA)pA=IA.buffer;else{console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+rA.status+", retrying "+Qe),xt();return}}Zt(pA)};u.memoryInitializerRequest.response?setTimeout(o0,0):u.memoryInitializerRequest.addEventListener("load",o0)}else xt()}}var wt;qe=function rA(){wt||It(),wt||(qe=rA)};function It(rA){if($e>0||(Le(),$e>0))return;function pA(){wt||(wt=!0,!aA&&(oe(),me(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),ue()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),pA()},1)):pA()}u.run=It;function dt(rA){throw u.onAbort&&u.onAbort(rA),rA+="",P(rA),_(rA),aA=!0,"abort("+rA+"). Build with -s ASSERTIONS=1 for more info."}if(u.abort=dt,u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();return It(),c})(typeof Rt=="object"?Rt:{}),re="number",ee=re,zr=re,se=re,le=re,ht=re,PA=re,gf=[["sizeOfH3Index",re],["sizeOfLatLng",re],["sizeOfCellBoundary",re],["sizeOfGeoLoop",re],["sizeOfGeoPolygon",re],["sizeOfLinkedGeoPolygon",re],["sizeOfCoordIJ",re],["readInt64AsDoubleFromPointer",re],["isValidCell",zr,[se,le]],["isValidIndex",zr,[se,le]],["latLngToCell",ee,[re,re,ht,PA]],["cellToLatLng",ee,[se,le,PA]],["cellToBoundary",ee,[se,le,PA]],["maxGridDiskSize",ee,[re,PA]],["gridDisk",ee,[se,le,re,PA]],["gridDiskDistances",ee,[se,le,re,PA,PA]],["gridRing",ee,[se,le,re,PA]],["gridRingUnsafe",ee,[se,le,re,PA]],["maxPolygonToCellsSize",ee,[PA,ht,re,PA]],["polygonToCells",ee,[PA,ht,re,PA]],["maxPolygonToCellsSizeExperimental",ee,[PA,ht,re,PA]],["polygonToCellsExperimental",ee,[PA,ht,re,re,re,PA]],["cellsToLinkedMultiPolygon",ee,[PA,re,PA]],["destroyLinkedMultiPolygon",null,[PA]],["compactCells",ee,[PA,PA,re,re]],["uncompactCells",ee,[PA,re,re,PA,re,ht]],["uncompactCellsSize",ee,[PA,re,re,ht,PA]],["isPentagon",zr,[se,le]],["isResClassIII",zr,[se,le]],["getBaseCellNumber",re,[se,le]],["getResolution",re,[se,le]],["getIndexDigit",re,[se,le,re]],["constructCell",ee,[re,re,PA,PA]],["maxFaceCount",ee,[se,le,PA]],["getIcosahedronFaces",ee,[se,le,PA]],["cellToParent",ee,[se,le,ht,PA]],["cellToChildren",ee,[se,le,ht,PA]],["cellToCenterChild",ee,[se,le,ht,PA]],["cellToChildrenSize",ee,[se,le,ht,PA]],["cellToChildPos",ee,[se,le,ht,PA]],["childPosToCell",ee,[re,re,se,le,ht,PA]],["areNeighborCells",ee,[se,le,se,le,PA]],["cellsToDirectedEdge",ee,[se,le,se,le,PA]],["getDirectedEdgeOrigin",ee,[se,le,PA]],["getDirectedEdgeDestination",ee,[se,le,PA]],["isValidDirectedEdge",zr,[se,le]],["directedEdgeToCells",ee,[se,le,PA]],["originToDirectedEdges",ee,[se,le,PA]],["directedEdgeToBoundary",ee,[se,le,PA]],["gridDistance",ee,[se,le,se,le,PA]],["gridPathCells",ee,[se,le,se,le,PA]],["gridPathCellsSize",ee,[se,le,se,le,PA]],["cellToLocalIj",ee,[se,le,se,le,re,PA]],["localIjToCell",ee,[se,le,PA,re,PA]],["getHexagonAreaAvgM2",ee,[ht,PA]],["getHexagonAreaAvgKm2",ee,[ht,PA]],["getHexagonEdgeLengthAvgM",ee,[ht,PA]],["getHexagonEdgeLengthAvgKm",ee,[ht,PA]],["greatCircleDistanceM",re,[PA,PA]],["greatCircleDistanceKm",re,[PA,PA]],["greatCircleDistanceRads",re,[PA,PA]],["cellAreaM2",ee,[se,le,PA]],["cellAreaKm2",ee,[se,le,PA]],["cellAreaRads2",ee,[se,le,PA]],["edgeLengthM",ee,[se,le,PA]],["edgeLengthKm",ee,[se,le,PA]],["edgeLengthRads",ee,[se,le,PA]],["getNumCells",ee,[ht,PA]],["getRes0Cells",ee,[PA]],["res0CellCount",re],["getPentagons",ee,[re,PA]],["pentagonCount",re],["cellToVertex",ee,[se,le,re,PA]],["cellToVertexes",ee,[se,le,PA]],["vertexToLatLng",ee,[se,le,PA]],["isValidVertex",zr,[se,le]]],pf=0,yf=1,xf=2,wf=3,vf=4,kf=5,bf=6,Cf=7,Ef=8,Sf=9,Mf=10,Bf=11,Df=12,_f=13,Tf=14,Rf=15,jf=16,If=17,Lf=18,Nf=19,rt={};rt[pf]="Success";rt[yf]="The operation failed but a more specific error is not available";rt[xf]="Argument was outside of acceptable range";rt[wf]="Latitude or longitude arguments were outside of acceptable range";rt[vf]="Resolution argument was outside of acceptable range";rt[kf]="Cell argument was not valid";rt[bf]="Directed edge argument was not valid";rt[Cf]="Undirected edge argument was not valid";rt[Ef]="Vertex argument was not valid";rt[Sf]="Pentagon distortion was encountered";rt[Mf]="Duplicate input";rt[Bf]="Cell arguments were not neighbors";rt[Df]="Cell arguments had incompatible resolutions";rt[_f]="Memory allocation failed";rt[Tf]="Bounds of provided memory were insufficient";rt[Rf]="Mode or flags argument was not valid";rt[jf]="Index argument was not valid";rt[If]="Base cell number was outside of acceptable range";rt[Lf]="Child indexing digits invalid";rt[Nf]="Child indexing digits refer to a deleted subsequence";var Ff=1e3,Pf=1001,$s=1002,Wn={};Wn[Ff]="Unknown unit";Wn[Pf]="Array length out of bounds";Wn[$s]="Got unexpected null value for H3 index";var Qf="Unknown error";function qs(c,u,g){var y=g&&"value"in g,x=new Error((c[u]||Qf)+" (code: "+u+(y?", value: "+g.value:"")+")");return x.code=u,x}function Of(c,u){var g=arguments.length===2?{value:u}:{};return qs(rt,c,g)}function zf(c,u){var g=arguments.length===2?{value:u}:{};return qs(Wn,c,g)}function Js(c){if(c!==0)throw Of(c)}var w0={};gf.forEach(function(u){w0[u[0]]=Rt.cwrap.apply(Rt,u)});var Gr=16,Hf=4,Gn=8,Do=w0.sizeOfH3Index(),Gf=w0.sizeOfLatLng(),Uf=w0.sizeOfCellBoundary();w0.sizeOfGeoPolygon();w0.sizeOfGeoLoop();w0.sizeOfLinkedGeoPolygon();w0.sizeOfCoordIJ();function Vf(c){if(!c)throw zf($s);return c}var Wf=/[^0-9a-fA-F]/;function Yf(c){if(Array.isArray(c)&&c.length===2&&Number.isInteger(c[0])&&Number.isInteger(c[1]))return c;if(typeof c!="string"||Wf.test(c))return[0,0];var u=parseInt(c.substring(0,c.length-8),Gr),g=parseInt(c.substring(c.length-8),Gr);return[g,u]}function Gi(c){if(c>=0)return c.toString(Gr);c=c&2147483647;var u=Xs(8,c.toString(Gr)),g=(parseInt(u[0],Gr)+8).toString(Gr);return u=g+u.substring(1),u}function Kf(c,u){return Gi(u)+Xs(8,Gi(c))}function Xs(c,u){for(var g=c-u.length,y="",x=0;x.85?.9+(c-.85)/.15*.1:.1+(c-.15)/.7*.8}function tl(c,u,g,y){const x=g-u;if(x<.001)return Vi(y[12]);const C=Math.max(0,Math.min(1,(c-u)/x)),T=s2(C),P=Math.min(23,Math.floor(T*24));return Vi(y[P])}function l2(c){const u=new Map;for(const C of c){if(typeof C.lat!="number"||typeof C.lon!="number"||isNaN(C.lat)||isNaN(C.lon))continue;const T=Jf(C.lat,C.lon,e2),P=u.get(T),_=C.weight;P?(P.count++,P.qualitySum+=_):u.set(T,{count:1,qualitySum:_})}const g=[];let y=1/0,x=-1/0;for(const[C,T]of u.entries()){const P=T.qualitySum/T.count;g.push({hexId:C,count:T.count,avgQuality:P}),y=Math.min(y,P),x=Math.max(x,P)}return{cells:g,minQuality:g.length>0?y:0,maxQuality:g.length>0?x:0}}function a2(c,u,g,y){const x=[];for(const C of c){const P=Al(C.hexId).map(([E,Q])=>[Q,E]);P.push(P[0]);const _=tl(C.avgQuality,u,g,y);x.push({type:"Feature",properties:{color:_,quality:C.avgQuality,count:C.count},geometry:{type:"Polygon",coordinates:[P]}})}return{type:"FeatureCollection",features:x}}async function u2(c,u,g,y,x){const C=[];let T=0;for(;T[V,H]);Q.push(Q[0]);const O=tl(_.avgQuality,u,g,y);C.push({type:"Feature",properties:{color:O,quality:_.avgQuality,count:_.count},geometry:{type:"Polygon",coordinates:[Q]}})}TrequestAnimationFrame(_))}return{type:"FeatureCollection",features:C}}function c2(c,u){const[g,y]=R.useState(c);return R.useEffect(()=>{const x=setTimeout(()=>y(c),u);return()=>clearTimeout(x)},[c,u]),g}function f2({coveragePoints:c,visible:u,terrainEnabled:g=!1,brightness:y=t2,basemapMode:x="dark"}){const{current:C}=Ar(),[T,P]=R.useState(null);R.useEffect(()=>{const Z=()=>{var iA;const vA=(iA=C==null?void 0:C.getMap)==null?void 0:iA.call(C);vA&&!T&&P(vA)};Z();const uA=setInterval(Z,50),oA=setTimeout(()=>clearInterval(uA),5e3);return()=>{clearInterval(uA),clearTimeout(oA)}},[C,T]);const[_,E]=R.useState(null),[Q,O]=R.useState(!1),H=R.useRef({aborted:!1}),V=R.useRef(0),K=R.useRef(x),aA=c2(c,r2),J=R.useMemo(()=>i2(x),[x]);R.useEffect(()=>{if(!aA||!Array.isArray(aA)||aA.length===0){queueMicrotask(()=>{E(null),V.current=0});return}const Z=K.current!==x;if(aA.length===V.current&&_&&!Z)return;V.current=aA.length,K.current=x,H.current.aborted=!0,H.current={aborted:!1};const uA=H.current;O(!0);const{cells:oA,minQuality:vA,maxQuality:iA}=l2(aA);if(oA.length===0){E(null),O(!1);return}if(oA.length{!uA.aborted&&fA&&E(fA)}).finally(()=>{uA.aborted||O(!1)}),()=>{uA.aborted=!0}},[aA,J]),R.useEffect(()=>{if(!T)return;const Z=()=>{var uA,oA;try{const vA=T.getLayer(dr),iA=T.getSource(hr);if(u&&_&&_.features.length>0){if(iA?T.getSource(hr).setData(_):T.addSource(hr,{type:"geojson",data:_}),!vA){const fA=T.getLayer("topology-weak-edges-native"),jA=(oA=(uA=T.getStyle())==null?void 0:uA.layers)==null?void 0:oA.find(CA=>CA.type==="symbol"),DA=fA?"topology-weak-edges-native":jA==null?void 0:jA.id;T.addLayer({id:dr,type:"fill",source:hr,paint:{"fill-color":["get","color"],"fill-opacity":y}},DA)}}else vA&&T.removeLayer(dr),iA&&T.removeSource(hr)}catch(vA){console.warn("[WardrivingHexLayerMapLibre] Layer update error:",vA)}};T.isStyleLoaded()?Z():T.once("style.load",Z)},[T,u,_,g]),R.useEffect(()=>{if(!(!T||!u))try{T.getLayer(dr)&&T.setPaintProperty(dr,"fill-opacity",y)}catch{}},[T,y,u]),R.useEffect(()=>()=>{if(T)try{T.getLayer(dr)&&T.removeLayer(dr),T.getSource(hr)&&T.removeSource(hr)}catch{}},[T]);const eA=(_==null?void 0:_.features.length)??0;return eA>0&&u?p.jsx("div",{"data-testid":"wardriving-hexlayer-maplibre-active","data-point-count":(c==null?void 0:c.length)||0,"data-cell-count":eA,"data-terrain-enabled":g,"data-is-processing":Q,style:{display:"none"}}):null}const Wi="https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png",Yi="terrarium",Ki=256,Zi=14,ln={shadowColor:"rgba(10, 10, 10, 0.6)",highlightColor:"rgba(245, 240, 230, 0.4)",accentColor:"rgba(90, 75, 65, 0.3)",illuminationDirection:315,exaggeration:.35},Z0="terrain-dem",Hr="hillshade-dem",Ln="terrain-hillshade";function h2({enabled:c,exaggeration:u=4}){const{current:g}=Ar(),[y,x]=R.useState(null),C=R.useRef(null);return R.useEffect(()=>{const T=()=>{var Q;const E=(Q=g==null?void 0:g.getMap)==null?void 0:Q.call(g);E&&!y&&x(E)};T();const P=setInterval(T,50),_=setTimeout(()=>clearInterval(P),5e3);return()=>{clearInterval(P),clearTimeout(_)}},[g,y]),R.useEffect(()=>{if(!y)return;let T=!0;const P=()=>{var _,E;if(T)try{if(y.getSource(Hr)||y.addSource(Hr,{type:"raster-dem",tiles:[Wi],encoding:Yi,tileSize:Ki,maxzoom:Zi}),!y.getLayer(Ln)){const Q=(E=(_=y.getStyle())==null?void 0:_.layers)==null?void 0:E.find(O=>O.type==="symbol");y.addLayer({id:Ln,type:"hillshade",source:Hr,paint:{"hillshade-shadow-color":ln.shadowColor,"hillshade-highlight-color":ln.highlightColor,"hillshade-accent-color":ln.accentColor,"hillshade-illumination-direction":ln.illuminationDirection,"hillshade-exaggeration":ln.exaggeration}},Q==null?void 0:Q.id)}y.getSource(Z0)||y.addSource(Z0,{type:"raster-dem",tiles:[Wi],encoding:Yi,tileSize:Ki,maxzoom:Zi})}catch(Q){console.error("[TerrainLayer] Source/layer setup error:",Q)}};return y.isStyleLoaded()?P():(y.once("style.load",P),y.once("load",()=>{T&&!y.getSource(Hr)&&P()})),()=>{T=!1}},[y]),R.useEffect(()=>{if(!y)return;let T=!0,P=!1;const _=()=>{if(!(!T||!y.getSource(Z0)))try{c?(y.setCenterClampedToGround(!1),y.setTerrain({source:Z0,exaggeration:u}),y.setMaxPitch(70),!P&&y.getPitch()<30&&!y.isMoving()&&(P=!0,C.current!==null&&clearTimeout(C.current),C.current=window.setTimeout(()=>{C.current=null,T&&!y.isMoving()&&y.getPitch()<30&&y.easeTo({pitch:45,duration:1e3})},200))):(y.setTerrain(null),y.setCenterClampedToGround(!0),y.getPitch()>0&&!y.isMoving()&&y.easeTo({pitch:0,duration:800}),y.setMaxPitch(60))}catch(E){console.error("[TerrainLayer] Terrain state error:",E)}};if(y.isStyleLoaded()&&y.getSource(Z0))_();else{const E=()=>{y.getSource(Z0)&&_()};y.once("idle",E)}return()=>{T=!1,C.current!==null&&(clearTimeout(C.current),C.current=null)}},[y,c,u]),R.useEffect(()=>()=>{var T;try{(T=y==null?void 0:y.getStyle)!=null&&T.call(y)&&y.isStyleLoaded()&&(y.setTerrain(null),y.getLayer(Ln)&&y.removeLayer(Ln),y.getSource(Hr)&&y.removeSource(Hr),y.getSource(Z0)&&y.removeSource(Z0))}catch{}},[y]),null}const d2=.03,m2=.1,g2=2,p2=3,y2=.02,x2=3;function w2(c,u=x2){if(c.length<3||u<=0)return c;let g=c;for(let y=0;y0&&x.push([x[0][0],x[0][1]]),g=x}return g}function v2(c,u){let g=1/0,y=-1/0,x=1/0,C=-1/0;for(const[T,P]of c)Ty&&(y=T),PC&&(C=P);return g-=u,y+=u,x-=u,C+=u,{minX:g,minY:x,maxX:y,maxY:C,width:y-g,height:C-x}}function k2(c,u={}){if(c.length(eA-C.minX)/C.width*Q,V=eA=>(eA-C.minY)/C.height*O,K=eA=>eA/Q*C.width+C.minX,aA=eA=>eA/O*C.height+C.minY,J=g/C.width*Q;try{const Z=rc().x(DA=>H(DA[0])).y(DA=>V(DA[1])).size([Q,O]).bandwidth(Math.max(5,J)).cellSize(x)(c);if(Z.length===0)return{coordinates:[],valid:!1};const oA=Math.max(...Z.map(DA=>DA.value))*y;let vA=Z[0],iA=1/0;for(const DA of Z){const CA=Math.abs(DA.value-oA);CA0){const LA=kA[0],NA=kA[kA.length-1];(LA[0]!==NA[0]||LA[1]!==NA[1])&&kA.push([LA[0],LA[1]])}if(kA.length>=4){const LA=w2(kA);CA.push(LA)}}CA.length>0&&fA.push(CA)}const jA=[];for(const DA of fA)for(const CA of DA)jA.push(CA);return{coordinates:fA,valid:fA.length>0}}catch(eA){return console.warn("[KDE Contour] Failed to generate contour:",eA),{coordinates:[],valid:!1}}}function b2(c,u={}){const g=k2(c,u);return!g.valid||g.coordinates.length===0?null:g.coordinates.length===1?{type:"Polygon",coordinates:g.coordinates[0]}:{type:"MultiPolygon",coordinates:g.coordinates}}const C2="mincut-partition",E2="mincut-partition-fill",S2="mincut-partition-stroke",M2=3,B2=.05,D2=.15,_2=.008,$i=12;function qi(c,u,g){return(u[0]-c[0])*(g[1]-c[1])-(u[1]-c[1])*(g[0]-c[0])}function T2(c){if(c.length<3)return c;const u=[...c].sort((x,C)=>x[0]-C[0]||x[1]-C[1]),g=[];for(const x of u){for(;g.length>=2&&qi(g[g.length-2],g[g.length-1],x)<=0;)g.pop();g.push(x)}const y=[];for(let x=u.length-1;x>=0;x--){const C=u[x];for(;y.length>=2&&qi(y[y.length-2],y[y.length-1],C)<=0;)y.pop();y.push(C)}return g.pop(),y.pop(),g.concat(y)}function R2(c,u){if(c.length<3)return c;let g=0,y=0;for(const[x,C]of c)g+=x,y+=C;return g/=c.length,y/=c.length,c.map(([x,C])=>{const T=x-g,P=C-y,_=Math.sqrt(T*T+P*P);if(_<1e-4)return[x,C];const E=(_+u)/_;return[g+T*E,y+P*E]})}function j2(c,u,g,y,x){const C=x*x,T=C*x;return[.5*(2*u[0]+(-c[0]+g[0])*x+(2*c[0]-5*u[0]+4*g[0]-y[0])*C+(-c[0]+3*u[0]-3*g[0]+y[0])*T),.5*(2*u[1]+(-c[1]+g[1])*x+(2*c[1]-5*u[1]+4*g[1]-y[1])*C+(-c[1]+3*u[1]-3*g[1]+y[1])*T)]}function I2(c){if(c.length<3)return c;const u=[],g=c.length;for(let y=0;yc?N2(c,u,x,C):{type:"FeatureCollection",features:[]},[c,u,x,C]),_=g?y:0,E={"fill-color":["get","color"],"fill-opacity":_},Q={"line-color":["get","borderColor"],"line-width":T,"line-opacity":_};return p.jsxs(X0,{id:C2,type:"geojson",data:P,children:[p.jsx(t0,{id:E2,type:"fill",paint:E}),p.jsx(t0,{id:S2,type:"line",paint:Q})]})}function P2(c,u=!1,g=!1,y=!1,x=.7,C){const T=gs(C);return y?x>=.75?T.restBright:T.rest:x>=.85?T.rest:(x>=.7,T.restDim)}function Ji(c){return[c[1],c[0]]}function Q2(c,u,g,y=12){const[x,C]=c,[T,P]=u,_=[];for(let E=0;E<=y;E++){const Q=E/y,O=C+(P-C)*Q,H=x+(T-x)*Q,V=4*g*Q*(1-Q);_.push([O,H,V])}return _}function Xi(c,u,g,y,x,C,T,P,_,E,Q,O="dark"){const H=Uo(),V=[];let K=1/0,aA=-1/0;const J=[];for(const Z of c){const uA=Z.edge.avgConfidence??(u?.7:.5),oA=Z.edge.certainCount/Math.max(T,1),vA=uA*.7+oA*.3+(u?.5:0);J.push({polyline:Z,brightnessScore:vA}),K=Math.min(K,vA),aA=Math.max(aA,vA)}if(J.length===0)return{type:"FeatureCollection",features:[]};const eA=aA-K||1;J.sort((Z,uA)=>Z.brightnessScore-uA.brightnessScore);for(const{polyline:Z,brightnessScore:uA}of J){const{from:oA,to:vA,edge:iA}=Z,fA=g.get(iA.key)??0;if(fA<=0)continue;const jA=P.has(iA.key),DA=_.has(iA.key),CA=iA.avgConfidence??(u?.7:.5),yA=E===iA.key,kA=Q[iA.fromHash],LA=Q[iA.toHash],NA=(kA==null?void 0:kA.node_name)||(kA==null?void 0:kA.name)||iA.fromHash.slice(0,8),GA=(LA==null?void 0:LA.node_name)||(LA==null?void 0:LA.name)||iA.toHash.slice(0,8),bA=[oA[0]+(vA[0]-oA[0])*fA,oA[1]+(vA[1]-oA[1])*fA];let cA;if(!u)cA=1.5;else{const ae=C.get(iA.key)??Co(iA.certainCount),JA=x.get(iA.key)??ae;cA=JA+(ae-JA)*y,yA?cA=Math.max(cA*1.6,4.5):DA&&(cA=cA*1.3)}let sA;yA?sA=H.edges.highlight:sA=P2(!1,iA.isDirectPathEdge??!1,jA,DA,CA,O);let TA;yA?TA=H.edges.highlight:iA.isDirectPathEdge?TA=H.edges.hoverDirect:jA?TA=H.edges.hoverLoop:TA=H.edges.hoverStandard;let MA;if(!u)MA=(.3+CA*.3)*fA;else{const ae=Math.min(fA*1.5,1)*H.edgeOpacity;MA=DA?ae*1.15:ae}yA&&(MA=.95);const WA=(uA-K)/eA;V.push({type:"Feature",properties:{key:iA.key,baseColor:sA,hoverColor:TA,baseWidth:cA,baseOpacity:MA,brightnessScore:WA,isLoopEdge:jA,isBackbone:DA,isDirectPath:iA.isDirectPathEdge??!1,isHubConnection:iA.isHubConnection??!1,isZeroHop:iA.isZeroHop??!1,isValidated:u,certainCount:iA.certainCount,confidence:CA,symmetryRatio:iA.symmetryRatio??1,dominantDirection:iA.dominantDirection??"balanced",fromName:NA,toName:GA,fromHash:iA.fromHash,toHash:iA.toHash},geometry:{type:"LineString",coordinates:[Ji(oA),Ji(bA)]}})}return{type:"FeatureCollection",features:V}}const O2=150,z2=8;function As(c,u){const g=Uo(),y=[];let x=0;for(const C of c){const T=u.get(C.hash);T&&T.blendedScore>x&&(x=T.blendedScore)}for(const C of c){const{from:T,to:P,hash:_,neighbor:E,lastHopData:Q}=C,O=`neighbor-${_}`,H=(Q==null?void 0:Q.avgRssi)??E.rssi??null,V=(Q==null?void 0:Q.avgSnr)??E.snr??null,K=(Q==null?void 0:Q.count)??0,aA=(Q==null?void 0:Q.confidence)??1,J=u.get(_),eA=(J==null?void 0:J.listenerScore)??0,Z=(J==null?void 0:J.loudScore)??0,uA=(J==null?void 0:J.blendedScore)??0,oA=x>0?uA/x:0,vA=C.rxAdvertCount??0,iA=C.txProxyCount??0,fA=vA+iA,jA=fA>0?(iA-vA)/fA:0,DA=Q2(T,P,O2,z2);y.push({type:"Feature",properties:{key:O,hash:_,name:E.node_name||E.name||_.slice(0,8),prefix:_.slice(2,4).toUpperCase(),color:g.neighborColor,width:2.5,opacity:.85,rssi:H,snr:V,packetCount:K,confidence:aA,hasAvgRssi:(Q==null?void 0:Q.avgRssi)!==void 0,hasAvgSnr:(Q==null?void 0:Q.avgSnr)!==void 0,isNeighborEdge:!0,listenerScore:eA,loudScore:Z,blendedScore:uA,trafficWeight:oA,linkAsymmetry:jA,rxAdvertCount:vA,txProxyCount:iA},geometry:{type:"LineString",coordinates:DA}})}return{type:"FeatureCollection",features:y}}function H2({map:c,showTopology:u,validatedPolylines:g,weakPolylines:y,maxCertainCount:x,loopEdgeKeys:C,backboneEdgeKeys:T,highlightedEdgeKey:P,neighbors:_,validatedSourceId:E,weakSourceId:Q,neighborPolylines:O=[],showNeighborLines:H=!0,neighborSourceId:V,neighborLinkScores:K=new Map,basemapMode:aA}){const J=R.useRef(null);R.useEffect(()=>{const oe=c&&"current"in c?c.current:c;J.current=oe});const eA=R.useRef(new Map),Z=R.useRef(1),uA=R.useRef(new Map),oA=R.useRef(new Map),vA=R.useRef(!1),iA=R.useRef(null),fA=R.useRef(u),jA=R.useRef(new Set),DA=R.useRef(""),CA=R.useRef(new Map),yA=R.useRef(""),kA=R.useRef(""),LA=R.useRef(""),NA=R.useRef(g),GA=R.useRef(y),bA=R.useRef(x),cA=R.useRef(C),sA=R.useRef(T),TA=R.useRef(P),MA=R.useRef(_),WA=R.useRef(O),ae=R.useRef(H),JA=R.useRef(K),ZA=R.useRef(aA);R.useEffect(()=>{NA.current=g,GA.current=y,bA.current=x,cA.current=C,sA.current=T,TA.current=P,MA.current=_,WA.current=O,ae.current=H,JA.current=K,ZA.current=aA},[g,y,x,C,T,P,_,O,H,K,aA]);const UA=R.useCallback((oe=!1)=>{var Ce,Se,pe,Ke,$e,qe,Xe,vt,Qe,Je;const me=J.current;if(!me)return;const ue=me.getSource(E),Ye=me.getSource(Q),be=me.getSource(V);if(ue){const Be=Xi(NA.current,!0,eA.current,Z.current,uA.current,oA.current,bA.current,cA.current,sA.current,TA.current,MA.current,ZA.current),ze=`${Be.features.length}:${((Se=(Ce=Be.features[0])==null?void 0:Ce.properties)==null?void 0:Se.key)??""}:${((Ke=(pe=Be.features[Be.features.length-1])==null?void 0:pe.properties)==null?void 0:Ke.key)??""}:${Array.from(eA.current.values()).reduce((st,jt)=>st+jt,0).toFixed(2)}`;(oe||ze!==yA.current)&&(ue.setData(Be),yA.current=ze)}if(Ye){const Be=Xi(GA.current,!1,eA.current,Z.current,uA.current,oA.current,bA.current,cA.current,sA.current,TA.current,MA.current,ZA.current),ze=`${Be.features.length}:${((qe=($e=Be.features[0])==null?void 0:$e.properties)==null?void 0:qe.key)??""}:${((vt=(Xe=Be.features[Be.features.length-1])==null?void 0:Xe.properties)==null?void 0:vt.key)??""}`;(oe||ze!==kA.current)&&(Ye.setData(Be),kA.current=ze)}if(be&&WA.current.length>0){const Be=As(WA.current,JA.current),ze=`${Be.features.length}:${((Je=(Qe=Be.features[0])==null?void 0:Qe.properties)==null?void 0:Je.hash)??""}`;(oe||ze!==LA.current)&&(be.setData(Be),LA.current=ze)}},[E,Q,V]),Ie=R.useCallback(()=>{iA.current&&(cancelAnimationFrame(iA.current),iA.current=null),eA.current=new Map,Z.current=1,uA.current=new Map,oA.current=new Map,vA.current=!1,jA.current=new Set,DA.current="",CA.current=new Map},[]);R.useEffect(()=>{const oe=fA.current,me=u;if(fA.current=u,!!J.current){if(iA.current&&(cancelAnimationFrame(iA.current),iA.current=null),oe&&!me&&!vA.current){vA.current=!0;const Ye=new Map(eA.current);let be=null;const Ce=Se=>{be||(be=Se);const pe=Se-be,Ke=Math.min(pe/ic,1),$e=Ls(Ke);for(const[qe,Xe]of Ye)eA.current.set(qe,Xe*(1-$e));UA(!0),Ke<1?iA.current=requestAnimationFrame(Ce):(vA.current=!1,eA.current=new Map,jA.current=new Set,DA.current="",uA.current=new Map,oA.current=new Map,iA.current=null,UA(!0))};iA.current=requestAnimationFrame(Ce)}!oe&&me&&(eA.current=new Map,jA.current=new Set,DA.current="")}},[u,UA]),R.useEffect(()=>{const oe=J.current;if(!u||vA.current||!oe)return;const me=[...g,...y],ue=me.map(pe=>`${pe.edge.key}:${pe.edge.certainCount}`).sort().join(","),Ye=jA.current.size===0,be=DA.current!==""&&DA.current!==ue;if(!Ye&&!be){UA();return}const Ce=[],Se=[];for(const{edge:pe}of me)jA.current.has(pe.key)?Se.push(pe.key):Ce.push(pe.key);be&&Se.length>0&&(uA.current=new Map(CA.current),Z.current=0),oA.current=new Map;for(const{edge:pe}of g){const Ke=Co(pe.certainCount);oA.current.set(pe.key,Ke)}for(const pe of Ce)eA.current.set(pe,0);for(const pe of Se)eA.current.has(pe)||eA.current.set(pe,1);if(Ce.length>0||be&&Se.length>0){iA.current&&(cancelAnimationFrame(iA.current),iA.current=null);let pe=null;const Ke=Math.min(100,Mn/Math.max(Ce.length,1)/2),$e=qe=>{pe||(pe=qe);const Xe=qe-pe;for(let Qe=0;Qe0){const Qe=Math.min(Xe/Mn,1);Z.current=ko(Qe)}UA(!0);const vt=Mn+(Ce.length-1)*Ke;Xe{const oe=J.current;if(!oe||!V)return;const me=()=>{const be=oe.getSource(V);if(!be)return!1;if(O.length>0){const Ce=As(O,K);be.setData(Ce)}else be.setData({type:"FeatureCollection",features:[]});return!0};if(me())return;const ue=be=>{be.sourceId===V&&me()&&oe.off("sourcedata",ue)};oe.on("sourcedata",ue);const Ye=()=>{me()&&(oe.off("styledata",Ye),oe.off("sourcedata",ue))};return oe.on("styledata",Ye),()=>{oe.off("sourcedata",ue),oe.off("styledata",Ye)}},[V,O,K]);const Le=R.useRef(aA);return R.useEffect(()=>{aA!==Le.current&&(Le.current=aA,yA.current="",kA.current="",LA.current="",UA(!0))},[aA,UA]),R.useEffect(()=>()=>{iA.current&&(cancelAnimationFrame(iA.current),iA.current=null)},[]),{isExiting:vA.current,isAnimating:iA.current!==null,resetAnimationState:Ie,weightAnimProgress:Z.current,animStartWeights:uA.current,animTargetWeights:oA.current}}function G2({activeFilters:c,neighborHashes:u,hubConnectedNodes:g,directNodeSet:y,localConnectedNodes:x,nodeTypeMap:C,showTopology:T}){const[P,_]=R.useState(new Map),E=R.useMemo(()=>[...c].sort().join(","),[c]),Q=R.useRef(E),O=R.useRef(!1),H=R.useRef(new Map),V=R.useRef(null),K=R.useRef(g),aA=R.useRef(y),J=R.useRef(x),eA=R.useRef(C),Z=R.useRef(T);return R.useEffect(()=>{K.current=g,aA.current=y,J.current=x,eA.current=C,Z.current=T},[g,y,x,C,T]),R.useEffect(()=>{const oA=Q.current,vA=E;if(Q.current=E,oA===vA)return;V.current&&(cancelAnimationFrame(V.current),V.current=null);const iA=new Set(oA?oA.split(",").filter(Boolean):[]),fA=c,jA=K.current,DA=aA.current,CA=eA.current;for(const bA of u)H.current.has(bA)||H.current.set(bA,Math.random());const yA=(bA,cA)=>{if(cA.size===0)return!1;const sA=CA.get(bA)??"unknown";return!!(cA.has("repeater")&&sA==="repeater"||cA.has("companion")&&(sA==="companion"||sA==="unknown")||cA.has("room_server")&&sA==="room_server"||cA.has("direct")&&DA.has(bA)||cA.has("hubs")&&jA.has(bA))},kA=[];for(const bA of u){const cA=yA(bA,iA),sA=yA(bA,fA);cA!==sA&&kA.push({hash:bA,startOpacity:cA?1:0,targetOpacity:sA?1:0})}if(kA.length===0)return;O.current=!0,_(bA=>{const cA=new Map(bA);for(const{hash:sA,startOpacity:TA}of kA)cA.set(sA,TA);return cA});const LA=kA;let NA=null;const GA=bA=>{NA||(NA=bA);const cA=bA-NA;let sA=!0;_(()=>{const MA=new Map;for(const{hash:WA,startOpacity:ae,targetOpacity:JA}of LA){const ZA=(H.current.get(WA)??0)*Mi,UA=Math.max(0,cA-ZA),Ie=Math.min(UA/Si,1),Le=ko(Ie),oe=ae+(JA-ae)*Le;MA.set(WA,oe),Ie<1&&(sA=!1)}return MA});const TA=Si+Mi;cA{V.current&&(cancelAnimationFrame(V.current),V.current=null),O.current=!1}},[E,c,u]),{nodeOpacities:P,getNodeOpacity:(oA,vA)=>O.current&&P.has(oA)?P.get(oA):vA?1:0}}const po=240,es=240;function U2(c,u){if(c{T.current=C},[C]);const P=R.useRef(0),_=R.useRef(null),E=R.useRef(new Map),Q=R.useRef(new Map);R.useEffect(()=>{Q.current=V2(c)},[c]);const O=R.useRef(null);return R.useEffect(()=>{const H=()=>{const V=performance.now(),K=E.current;if(K.size===0){_.current=null,x(new Map);return}const aA=new Map,J=[];for(const[eA,{startTime:Z,staggerDelay:uA}]of K){const oA=V-Z-uA;if(!(oA<0))if(oA>=Bn)J.push(eA);else{const vA=U2(oA,Bn);vA>0&&aA.set(eA,vA)}}for(const eA of J)K.delete(eA);x(aA),K.size>0&&O.current?_.current=requestAnimationFrame(O.current):_.current=null};O.current=H},[]),R.useEffect(()=>{if(!g)return;const H=T.current;if(H.length===0)return;const V=P.current,K=H.filter(Z=>(Z.timestamp??0)>V);if(V===0){const Z=H.reduce((uA,oA)=>Math.max(uA,oA.timestamp??0),0);P.current=Z;return}if(K.length===0)return;const aA=K.reduce((Z,uA)=>Math.max(Z,uA.timestamp??0),0);P.current=aA;const J=performance.now();let eA=0;for(const Z of K){const uA=Es(Z,u);if(!uA||uA.original.length===0)continue;const oA=W2(uA.original,Q.current,u);if(oA.length===0)continue;const vA=Bn*.5;for(let iA=0;iA()=>{_.current!==null&&(cancelAnimationFrame(_.current),_.current=null)},[]),{blinkingNodes:y,blinkColor:oc}}const $0="edge-blink-source",pr="edge-blink-layer",_o=1e3,To=1e3,yo=150,K2=175,Z2=3e4,$2=e0.teal,q2="#8B7BAD",J2=2.5,X2=1.875,A1=.5,Un="node-markers-layer";function e1(c){if(!c.getLayer(pr))return;const u=c.getLayer(Un)?Un:void 0;try{c.moveLayer(pr,u)}catch{}}function t1(c,u){const g=new Map;for(const y of Object.keys(c)){const x=hn(y);g.has(x)||g.set(x,y)}if(u){const y=hn(u);g.set(y,u)}return g}function r1(c){return c<0||c>=_o?0:1-c/_o}function n1(c){if(c<0||c>=To)return 0;const u=c/To;return Math.pow(1-u,3)}function Nn(c){return[c[1],c[0]]}function o1({map:c,nodeCoordinates:u,packets:g,localHash:y,neighbors:x,meshTopology:C,enabled:T=!0}){const P=R.useRef(null),_=c&&"current"in c?c.current:c;R.useEffect(()=>{P.current=_},[_]);const E=R.useRef(!1),Q=R.useRef(null),O=R.useRef([]),H=R.useRef(0),V=R.useRef(!1),[K,aA]=R.useState(!1),J=R.useRef(null),eA=R.useRef([]),Z=R.useRef(new Map),uA=R.useRef(u);R.useEffect(()=>{uA.current=u},[u]),R.useEffect(()=>{Z.current=t1(x,y)},[x,y]),R.useEffect(()=>{if(!T){J.current&&(clearTimeout(J.current),J.current=null),eA.current=[],Q.current!==null&&(cancelAnimationFrame(Q.current),Q.current=null),O.current=[];const fA=P.current;if(fA&&E.current){const jA=fA.getSource($0);jA&&jA.setData({type:"FeatureCollection",features:[]})}V.current=!1,H.current=0}},[T]),R.useEffect(()=>{const fA=_;if(!fA)return;let jA=null,DA=!1;const CA=()=>{if(!DA&&!E.current)try{fA.getLayer(pr)&&fA.removeLayer(pr),fA.getSource($0)&&fA.removeSource($0),fA.addSource($0,{type:"geojson",data:{type:"FeatureCollection",features:[]}});const yA=fA.getLayer(Un)?Un:void 0;fA.addLayer({id:pr,type:"line",source:$0,layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],q2,$2],"line-width":["case",["any",["==",["get","isSpeculative"],!0],["==",["get","isSpeculative"],"true"]],X2,J2],"line-opacity":["*",["get","opacityMult"],["interpolate",["linear"],["get","intensity"],0,0,.1,.8,.5,1,1,1]]}},yA),E.current=!0,aA(!0),jA&&(clearInterval(jA),jA=null)}catch{}};return fA.isStyleLoaded()&&CA(),fA.once("style.load",()=>{CA()}),E.current||(jA=setInterval(()=>{if(E.current){jA&&clearInterval(jA);return}CA()},100),setTimeout(()=>{jA&&(clearInterval(jA),jA=null)},5e3)),()=>{DA=!0,jA&&clearInterval(jA),Q.current!==null&&(cancelAnimationFrame(Q.current),Q.current=null);const yA=P.current;if(yA&&E.current){try{yA.getLayer(pr)&&yA.removeLayer(pr),yA.getSource($0)&&yA.removeSource($0)}catch{}E.current=!1,aA(!1)}}},[_]);const oA=R.useRef(()=>{});R.useEffect(()=>{oA.current=()=>{const fA=P.current;if(!fA)return;const jA=fA.getSource($0);if(!jA)return;const DA=performance.now(),CA=O.current,yA=[],kA=[];for(const LA of CA){const NA=DA-LA.startTime-LA.delay,GA=LA.isSpeculative?To:_o;if(NA0&&yA.push({type:"Feature",properties:{intensity:bA,opacityMult:LA.isSpeculative?A1:1,isSpeculative:LA.isSpeculative??!1},geometry:{type:"LineString",coordinates:[LA.fromCoord,LA.toCoord]}})}}jA.setData({type:"FeatureCollection",features:yA}),O.current=kA,kA.length>0?Q.current=requestAnimationFrame(()=>oA.current()):Q.current=null}},[]);const vA=R.useCallback(()=>{const fA=P.current;fA&&e1(fA),Q.current===null&&(Q.current=requestAnimationFrame(()=>oA.current()))},[]),iA=R.useCallback(()=>{if(!P.current||!E.current)return;const jA=eA.current;if(eA.current=[],J.current=null,jA.length===0)return;const DA=Z.current,CA=uA.current;if(DA.size===0)return;const yA=performance.now();let kA=0,LA=!1;const NA=new Set;for(const GA of jA){const bA=Es(GA,y);if(!bA||bA.original.length<2)continue;const cA=bA.original;let sA=0,TA=null;for(let JA=0;JA0){JA.sort((Le,oe)=>oe.confidence-Le.confidence);const ZA=Math.max(1,Math.ceil(JA.length*.25)),UA=JA.slice(0,ZA),Ie=kA+sA*yo;for(const{edgeKey:Le,otherHash:oe}of UA){const me=CA.get(TA),ue=CA.get(oe);O.current.push({edgeKey:Le,fromCoord:Nn(me),toCoord:Nn(ue),startTime:yA,delay:Ie,isSpeculative:!0}),NA.add(Le),LA=!0}}}sA>0&&(kA+=sA*yo*.5)}LA&&vA()},[y,C,vA]);R.useEffect(()=>{const fA=P.current;if(!T||!fA||!K||g.length===0)return;const jA=Date.now(),DA=H.current;if(!V.current){V.current=!0;const kA=(jA-Z2)/1e3,LA=g.filter(GA=>(GA.timestamp??0)>=kA);let NA=0;for(const GA of g){const bA=GA.timestamp??0;bA>NA&&(NA=bA)}if(H.current=NA,LA.length>0){LA.sort((bA,cA)=>(bA.timestamp??0)-(cA.timestamp??0));const GA=LA.slice(-20);eA.current.push(...GA),iA()}return}const CA=g.filter(kA=>(kA.timestamp??0)>DA);if(CA.length===0)return;let yA=0;for(const kA of CA){const LA=kA.timestamp??0;LA>yA&&(yA=LA)}H.current=yA,eA.current.push(...CA),J.current&&clearTimeout(J.current),J.current=setTimeout(iA,K2)},[T,g,iA,K]),R.useEffect(()=>()=>{J.current&&clearTimeout(J.current)},[])}var q0={},mr={};/** * @license React * react-dom-server-legacy.browser.production.min.js * @@ -104,13 +104,13 @@ Compares older measurements to newer ones.`,Z=((NA=Q.forward)==null?void 0:NA.un * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var ts;function i1(){if(ts)return gr;ts=1;var c=Ss();function u(h){for(var v="https://reactjs.org/docs/error-decoder.html?invariant="+h,D=1;D